@@ -5,11 +5,13 @@ aliases: | |||
docker: | |||
- image: circleci/ruby:2.7-buster-node | |||
environment: &ruby_environment | |||
BUNDLE_JOBS: 3 | |||
BUNDLE_RETRY: 3 | |||
BUNDLE_APP_CONFIG: ./.bundle/ | |||
BUNDLE_PATH: ./vendor/bundle/ | |||
DB_HOST: localhost | |||
DB_USER: root | |||
RAILS_ENV: test | |||
PARALLEL_TEST_PROCESSORS: 4 | |||
ALLOW_NOPAM: true | |||
CONTINUOUS_INTEGRATION: true | |||
DISABLE_SIMPLECOV: true | |||
@@ -31,9 +33,9 @@ aliases: | |||
- &restore_ruby_dependencies | |||
restore_cache: | |||
keys: | |||
- v2-ruby-dependencies-{{ checksum "/tmp/.ruby-version" }}-{{ checksum "Gemfile.lock" }} | |||
- v2-ruby-dependencies-{{ checksum "/tmp/.ruby-version" }}- | |||
- v2-ruby-dependencies- | |||
- v3-ruby-dependencies-{{ checksum "/tmp/.ruby-version" }}-{{ checksum "Gemfile.lock" }} | |||
- v3-ruby-dependencies-{{ checksum "/tmp/.ruby-version" }}- | |||
- v3-ruby-dependencies- | |||
- &install_steps | |||
steps: | |||
@@ -41,11 +43,13 @@ aliases: | |||
- *attach_workspace | |||
- restore_cache: | |||
keys: | |||
- v1-node-dependencies-{{ checksum "yarn.lock" }} | |||
- v1-node-dependencies- | |||
- run: yarn install --frozen-lockfile | |||
- v2-node-dependencies-{{ checksum "yarn.lock" }} | |||
- v2-node-dependencies- | |||
- run: | |||
name: Install yarn dependencies | |||
command: yarn install --frozen-lockfile | |||
- save_cache: | |||
key: v1-node-dependencies-{{ checksum "yarn.lock" }} | |||
key: v2-node-dependencies-{{ checksum "yarn.lock" }} | |||
paths: | |||
- ./node_modules/ | |||
- *persist_to_workspace | |||
@@ -56,27 +60,28 @@ aliases: | |||
command: | | |||
sudo apt-get update | |||
sudo apt-get install -y libicu-dev libidn11-dev libprotobuf-dev protobuf-compiler | |||
## TODO: FIX THESE BUSTER DEPENDANCES | |||
sudo wget http://ftp.au.debian.org/debian/pool/main/i/icu/libicu57_57.1-6+deb9u3_amd64.deb | |||
sudo dpkg -i libicu57_57.1-6+deb9u3_amd64.deb | |||
sudo wget http://ftp.au.debian.org/debian/pool/main/p/protobuf/libprotobuf10_3.0.0-9_amd64.deb | |||
sudo dpkg -i libprotobuf10_3.0.0-9_amd64.deb | |||
- &install_ruby_dependencies | |||
steps: | |||
- *attach_workspace | |||
- *install_system_dependencies | |||
- run: ruby -e 'puts RUBY_VERSION' | tee /tmp/.ruby-version | |||
- run: | |||
name: Set Ruby version | |||
command: ruby -e 'puts RUBY_VERSION' | tee /tmp/.ruby-version | |||
- *restore_ruby_dependencies | |||
- run: bundle config set clean 'true' | |||
- run: bundle config set deployment 'true' | |||
- run: bundle config set with 'pam_authentication' | |||
- run: bundle config set without 'development production' | |||
- run: bundle config set frozen 'true' | |||
- run: bundle install --jobs 16 --retry 3 && bundle clean | |||
- run: | |||
name: Set bundler settings | |||
command: | | |||
bundle config clean 'true' | |||
bundle config deployment 'true' | |||
bundle config with 'pam_authentication' | |||
bundle config without 'development production' | |||
bundle config frozen 'true' | |||
- run: | |||
name: Install bundler dependencies | |||
command: bundle check || (bundle install && bundle clean) | |||
- save_cache: | |||
key: v2-ruby-dependencies-{{ checksum "/tmp/.ruby-version" }}-{{ checksum "Gemfile.lock" }} | |||
key: v3-ruby-dependencies-{{ checksum "/tmp/.ruby-version" }}-{{ checksum "Gemfile.lock" }} | |||
paths: | |||
- ./.bundle/ | |||
- ./vendor/bundle/ | |||
@@ -87,17 +92,26 @@ aliases: | |||
- ./mastodon/vendor/bundle/ | |||
- &test_steps | |||
parallelism: 4 | |||
steps: | |||
- *attach_workspace | |||
- *install_system_dependencies | |||
- run: sudo apt-get install -y ffmpeg | |||
- run: | |||
name: Prepare Tests | |||
command: ./bin/rails parallel:create parallel:load_schema parallel:prepare | |||
name: Install FFMPEG | |||
command: sudo apt-get install -y ffmpeg | |||
- run: | |||
name: Run Tests | |||
command: ./bin/retry bundle exec parallel_test ./spec/ --group-by filesize --type rspec | |||
name: Load database schema | |||
command: ./bin/rails db:create db:schema:load db:seed | |||
- run: | |||
name: Run rspec in parallel | |||
command: | | |||
bundle exec rspec --profile 10 \ | |||
--format RspecJunitFormatter \ | |||
--out test_results/rspec.xml \ | |||
--format progress \ | |||
$(circleci tests glob "spec/**/*_spec.rb" | circleci tests split --split-by=timings) | |||
- store_test_results: | |||
path: test_results | |||
jobs: | |||
install: | |||
<<: *defaults | |||
@@ -114,19 +128,14 @@ jobs: | |||
environment: *ruby_environment | |||
<<: *install_ruby_dependencies | |||
install-ruby2.5: | |||
<<: *defaults | |||
docker: | |||
- image: circleci/ruby:2.5-buster-node | |||
environment: *ruby_environment | |||
<<: *install_ruby_dependencies | |||
build: | |||
<<: *defaults | |||
steps: | |||
- *attach_workspace | |||
- *install_system_dependencies | |||
- run: ./bin/rails assets:precompile | |||
- run: | |||
name: Precompile assets | |||
command: ./bin/rails assets:precompile | |||
- persist_to_workspace: | |||
root: ~/projects/ | |||
paths: | |||
@@ -138,28 +147,30 @@ jobs: | |||
docker: | |||
- image: circleci/ruby:2.7-buster-node | |||
environment: *ruby_environment | |||
- image: circleci/postgres:10.6-alpine | |||
- image: circleci/postgres:12.2 | |||
environment: | |||
POSTGRES_USER: root | |||
POSTGRES_HOST_AUTH_METHOD: trust | |||
- image: circleci/redis:5-alpine | |||
steps: | |||
- *attach_workspace | |||
- *install_system_dependencies | |||
- run: | |||
name: Create database | |||
command: ./bin/rails parallel:create | |||
command: ./bin/rails db:create | |||
- run: | |||
name: Run migrations | |||
command: ./bin/rails parallel:migrate | |||
command: ./bin/rails db:migrate | |||
test-ruby2.7: | |||
<<: *defaults | |||
docker: | |||
- image: circleci/ruby:2.7-buster-node | |||
environment: *ruby_environment | |||
- image: circleci/postgres:10.6-alpine | |||
- image: circleci/postgres:12.2 | |||
environment: | |||
POSTGRES_USER: root | |||
POSTGRES_HOST_AUTH_METHOD: trust | |||
- image: circleci/redis:5-alpine | |||
<<: *test_steps | |||
@@ -168,20 +179,10 @@ jobs: | |||
docker: | |||
- image: circleci/ruby:2.6-buster-node | |||
environment: *ruby_environment | |||
- image: circleci/postgres:10.6-alpine | |||
environment: | |||
POSTGRES_USER: root | |||
- image: circleci/redis:5-alpine | |||
<<: *test_steps | |||
test-ruby2.5: | |||
<<: *defaults | |||
docker: | |||
- image: circleci/ruby:2.5-buster-node | |||
environment: *ruby_environment | |||
- image: circleci/postgres:10.6-alpine | |||
- image: circleci/postgres:12.2 | |||
environment: | |||
POSTGRES_USER: root | |||
POSTGRES_HOST_AUTH_METHOD: trust | |||
- image: circleci/redis:5-alpine | |||
<<: *test_steps | |||
@@ -191,17 +192,27 @@ jobs: | |||
- image: circleci/node:12-buster | |||
steps: | |||
- *attach_workspace | |||
- run: ./bin/retry yarn test:jest | |||
- run: | |||
name: Run jest | |||
command: yarn test:jest | |||
check-i18n: | |||
<<: *defaults | |||
steps: | |||
- *attach_workspace | |||
- *install_system_dependencies | |||
- run: bundle exec i18n-tasks check-normalized | |||
- run: bundle exec i18n-tasks unused -l en | |||
- run: bundle exec i18n-tasks check-consistent-interpolations | |||
- run: bundle exec rake repo:check_locales_files | |||
- run: | |||
name: Check locale file normalization | |||
command: bundle exec i18n-tasks check-normalized | |||
- run: | |||
name: Check for unused strings | |||
command: bundle exec i18n-tasks unused -l en | |||
- run: | |||
name: Check for wrong string interpolations | |||
command: bundle exec i18n-tasks check-consistent-interpolations | |||
- run: | |||
name: Check that all required locale files exist | |||
command: bundle exec rake repo:check_locales_files | |||
workflows: | |||
version: 2 | |||
@@ -215,10 +226,6 @@ workflows: | |||
requires: | |||
- install | |||
- install-ruby2.7 | |||
- install-ruby2.5: | |||
requires: | |||
- install | |||
- install-ruby2.7 | |||
- build: | |||
requires: | |||
- install-ruby2.7 | |||
@@ -233,10 +240,6 @@ workflows: | |||
requires: | |||
- install-ruby2.6 | |||
- build | |||
- test-ruby2.5: | |||
requires: | |||
- install-ruby2.5 | |||
- build | |||
- test-webui: | |||
requires: | |||
- install | |||
@@ -4,7 +4,25 @@ update_configs: | |||
- package_manager: "ruby:bundler" | |||
directory: "/" | |||
update_schedule: "weekly" | |||
# Supported update schedule: live daily weekly monthly | |||
version_requirement_updates: "auto" | |||
# Supported version requirements: auto widen_ranges increase_versions increase_versions_if_necessary | |||
allowed_updates: | |||
- match: | |||
dependency_type: "all" | |||
# Supported dependency types: all indirect direct production development | |||
update_type: "all" | |||
# Supported update types: all security | |||
- package_manager: "javascript" | |||
directory: "/" | |||
update_schedule: "weekly" | |||
# Supported update schedule: live daily weekly monthly | |||
version_requirement_updates: "auto" | |||
# Supported version requirements: auto widen_ranges increase_versions increase_versions_if_necessary | |||
allowed_updates: | |||
- match: | |||
dependency_type: "all" | |||
# Supported dependency types: all indirect direct production development | |||
update_type: "all" | |||
# Supported update types: all security |
@@ -58,7 +58,7 @@ yarn-error.log | |||
yarn-debug.log | |||
# Ignore vagrant log files | |||
ubuntu-xenial-16.04-cloudimg-console.log | |||
*-cloudimg-console.log | |||
# Ignore Docker option files | |||
docker-compose.override.yml |
@@ -1 +1 @@ | |||
2.6.5 | |||
2.6.6 |
@@ -3,6 +3,110 @@ Changelog | |||
All notable changes to this project will be documented in this file. | |||
## [v3.1.3] - 2020-04-05 | |||
### Added | |||
- Add ability to filter audit log in admin UI ([Gargron](https://github.com/tootsuite/mastodon/pull/13381)) | |||
- Add titles to warning presets in admin UI ([Gargron](https://github.com/tootsuite/mastodon/pull/13252)) | |||
- Add option to include resolved DNS records when blacklisting e-mail domains in admin UI ([Gargron](https://github.com/tootsuite/mastodon/pull/13254)) | |||
- Add ability to delete files uploaded for settings in admin UI ([ThibG](https://github.com/tootsuite/mastodon/pull/13192)) | |||
- Add sorting by username, creation and last activity in admin UI ([ThibG](https://github.com/tootsuite/mastodon/pull/13076)) | |||
- Add explanation as to why unlocked accounts may have follow requests in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/13385)) | |||
- Add link to bookmarks to dropdown in web UI ([mayaeh](https://github.com/tootsuite/mastodon/pull/13273)) | |||
- Add support for links to statuses in announcements to be opened in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/13212), [ThibG](https://github.com/tootsuite/mastodon/pull/13250)) | |||
- Add tooltips to audio/video player buttons in web UI ([ariasuni](https://github.com/tootsuite/mastodon/pull/13203)) | |||
- Add submit button to the top of preferences pages ([guigeekz](https://github.com/tootsuite/mastodon/pull/13068)) | |||
- Add specific rate limits for posting, following and reporting ([Gargron](https://github.com/tootsuite/mastodon/pull/13172), [Gargron](https://github.com/tootsuite/mastodon/pull/13390)) | |||
- 300 posts every 3 hours | |||
- 400 follows or follow requests every 24 hours | |||
- 400 reports every 24 hours | |||
- Add federation support for the "hide network" preference ([ThibG](https://github.com/tootsuite/mastodon/pull/11673)) | |||
- Add `--skip-media-remove` option to `tootctl statuses remove` ([tateisu](https://github.com/tootsuite/mastodon/pull/13080)) | |||
### Changed | |||
- **Change design of polls in web UI** ([Sasha-Sorokin](https://github.com/tootsuite/mastodon/pull/13257), [ThibG](https://github.com/tootsuite/mastodon/pull/13313)) | |||
- Change status click areas in web UI to be bigger ([ariasuni](https://github.com/tootsuite/mastodon/pull/13327)) | |||
- **Change `tootctl media remove-orphans` to work for all classes** ([Gargron](https://github.com/tootsuite/mastodon/pull/13316)) | |||
- **Change local media attachments to perform heavy processing asynchronously** ([Gargron](https://github.com/tootsuite/mastodon/pull/13210)) | |||
- Change video uploads to always be converted to H264/MP4 ([Gargron](https://github.com/tootsuite/mastodon/pull/13220), [ThibG](https://github.com/tootsuite/mastodon/pull/13239), [ThibG](https://github.com/tootsuite/mastodon/pull/13242)) | |||
- Change video uploads to enforce certain limits ([Gargron](https://github.com/tootsuite/mastodon/pull/13218)) | |||
- Dimensions smaller than 1920x1200px | |||
- Frame rate at most 60fps | |||
- Change the tooltip "Toggle visibility" to "Hide media" in web UI ([ariasuni](https://github.com/tootsuite/mastodon/pull/13199)) | |||
- Change description of privacy levels to be more intuitive in web UI ([ariasuni](https://github.com/tootsuite/mastodon/pull/13197)) | |||
- Change GIF label to be displayed even when autoplay is enabled in web UI ([koyuawsmbrtn](https://github.com/tootsuite/mastodon/pull/13209)) | |||
- Change the string "Hide everything from โฆ" to "Block domain โฆ" in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/13178), [mayaeh](https://github.com/tootsuite/mastodon/pull/13221)) | |||
- Change wording of media display preferences to be more intuitive ([ariasuni](https://github.com/tootsuite/mastodon/pull/13198)) | |||
### Deprecated | |||
- `POST /api/v1/media` โ `POST /api/v2/media` ([Gargron](https://github.com/tootsuite/mastodon/pull/13210)) | |||
### Fixed | |||
- Fix `tootctl media remove-orphans` ignoring `PAPERCLIP_ROOT_PATH` ([Gargron](https://github.com/tootsuite/mastodon/pull/13375)) | |||
- Fix returning results when searching for URL with non-zero offset ([Gargron](https://github.com/tootsuite/mastodon/pull/13377)) | |||
- Fix pinning a column in web UI sometimes redirecting out of web UI ([Gargron](https://github.com/tootsuite/mastodon/pull/13376)) | |||
- Fix background jobs not using locks like they are supposed to ([Gargron](https://github.com/tootsuite/mastodon/pull/13361)) | |||
- Fix content warning being unnecessarily cleared when hiding content warning input in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/13348)) | |||
- Fix "Show more" not switching to "Show less" on public pages ([ThibG](https://github.com/tootsuite/mastodon/pull/13174)) | |||
- Fix import overwrite option not being selectable ([noellabo](https://github.com/tootsuite/mastodon/pull/13347)) | |||
- Fix wrong color for ellipsis in boost confirmation dialog in web UI ([ariasuni](https://github.com/tootsuite/mastodon/pull/13355)) | |||
- Fix unnecessary unfollowing when importing follows with overwrite option ([noellabo](https://github.com/tootsuite/mastodon/pull/13350)) | |||
- Fix 404 and 410 API errors being silently discarded in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/13279)) | |||
- Fix OCR not working on Safari because of unsupported worker-src CSP ([ThibG](https://github.com/tootsuite/mastodon/pull/13323)) | |||
- Fix media not being marked sensitive when a content warning is set with no text ([ThibG](https://github.com/tootsuite/mastodon/pull/13277)) | |||
- Fix crash after deleting announcements in web UI ([codesections](https://github.com/tootsuite/mastodon/pull/13283), [ThibG](https://github.com/tootsuite/mastodon/pull/13312)) | |||
- Fix bookmarks not being searchable ([Kjwon15](https://github.com/tootsuite/mastodon/pull/13271), [noellabo](https://github.com/tootsuite/mastodon/pull/13293)) | |||
- Fix reported accounts not being whitelisted from further spam checks when resolving a spam check report ([ThibG](https://github.com/tootsuite/mastodon/pull/13289)) | |||
- Fix web UI crash in single-column mode on prehistoric browsers ([ThibG](https://github.com/tootsuite/mastodon/pull/13267)) | |||
- Fix some timeouts when searching for URLs ([ThibG](https://github.com/tootsuite/mastodon/pull/13253)) | |||
- Fix detailed view of direct messages displaying a 0 boost count in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/13244)) | |||
- Fix regression in โEdit mediaโ modal in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/13243)) | |||
- Fix public posts from silenced accounts not being changed to unlisted visibility ([ThibG](https://github.com/tootsuite/mastodon/pull/13096)) | |||
- Fix error when searching for URLs that contain the mention syntax ([ThibG](https://github.com/tootsuite/mastodon/pull/13151)) | |||
- Fix text area above/right of emoji picker being accidentally clickable in web UI ([ariasuni](https://github.com/tootsuite/mastodon/pull/13148)) | |||
- Fix too large announcements not being scrollable in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/13211)) | |||
- Fix `tootctl media remove-orphans` crashing when encountering invalid media ([ThibG](https://github.com/tootsuite/mastodon/pull/13170)) | |||
- Fix installation failing when Redis password contains special characters ([ThibG](https://github.com/tootsuite/mastodon/pull/13156)) | |||
- Fix announcements with fully-qualified mentions to local users crashing web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/13164)) | |||
### Security | |||
- Fix re-sending of e-mail confirmation not being rate limited ([Gargron](https://github.com/tootsuite/mastodon/pull/13360)) | |||
## [v3.1.2] - 2020-02-27 | |||
### Added | |||
- Add `--reset-password` option to `tootctl accounts modify` ([ThibG](https://github.com/tootsuite/mastodon/pull/13126)) | |||
- Add source-mapped stacktrace to error message in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/13082)) | |||
### Fixed | |||
- Fix dismissing an announcement twice raising an obscure error ([ThibG](https://github.com/tootsuite/mastodon/pull/13124)) | |||
- Fix misleading error when attempting to re-send a pending follow request ([ThibG](https://github.com/tootsuite/mastodon/pull/13133)) | |||
- Fix backups failing when files are missing from media attachments ([ThibG](https://github.com/tootsuite/mastodon/pull/13146)) | |||
- Fix duplicate accounts being created when fetching an account for its key only ([ThibG](https://github.com/tootsuite/mastodon/pull/13147)) | |||
- Fix `/web` redirecting to `/web/web` in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/13128)) | |||
- Fix previously OStatus-based accounts not being detected as ActivityPub ([ThibG](https://github.com/tootsuite/mastodon/pull/13129)) | |||
- Fix account JSON/RSS not being cacheable due to wrong mime type comparison ([ThibG](https://github.com/tootsuite/mastodon/pull/13116)) | |||
- Fix old browsers crashing because of missing `finally` polyfill in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/13115)) | |||
- Fix account's bio not being shown if there are no proofs/fields in admin UI ([ThibG](https://github.com/tootsuite/mastodon/pull/13075)) | |||
- Fix sign-ups without checked user agreement being accepted through the web form ([ThibG](https://github.com/tootsuite/mastodon/pull/13088)) | |||
- Fix non-x64 architectures not being able to build Docker image because of hardcoded Node.js architecture ([SaraSmiseth](https://github.com/tootsuite/mastodon/pull/13081)) | |||
- Fix invite request input not being shown on sign-up error if left empty ([ThibG](https://github.com/tootsuite/mastodon/pull/13089)) | |||
- Fix some migration hints mentioning GitLab instead of Mastodon ([saper](https://github.com/tootsuite/mastodon/pull/13084)) | |||
### Security | |||
- Fix leak of arbitrary statuses through unfavourite action in REST API ([Gargron](https://github.com/tootsuite/mastodon/pull/13161)) | |||
## [3.1.1] - 2020-02-10 | |||
### Fixed | |||
- Fix yanked dependency preventing installation ([mayaeh](https://github.com/tootsuite/mastodon/pull/13059)) | |||
## [3.1.0] - 2020-02-09 | |||
### Added | |||
@@ -4,15 +4,26 @@ FROM ubuntu:18.04 as build-dep | |||
SHELL ["bash", "-c"] | |||
# Install Node v12 (LTS) | |||
ENV NODE_VER="12.14.0" | |||
RUN echo "Etc/UTC" > /etc/localtime && \ | |||
ENV NODE_VER="12.16.1" | |||
RUN ARCH= && \ | |||
dpkgArch="$(dpkg --print-architecture)" && \ | |||
case "${dpkgArch##*-}" in \ | |||
amd64) ARCH='x64';; \ | |||
ppc64el) ARCH='ppc64le';; \ | |||
s390x) ARCH='s390x';; \ | |||
arm64) ARCH='arm64';; \ | |||
armhf) ARCH='armv7l';; \ | |||
i386) ARCH='x86';; \ | |||
*) echo "unsupported architecture"; exit 1 ;; \ | |||
esac && \ | |||
echo "Etc/UTC" > /etc/localtime && \ | |||
apt update && \ | |||
apt -y install wget python && \ | |||
cd ~ && \ | |||
wget https://nodejs.org/download/release/v$NODE_VER/node-v$NODE_VER-linux-x64.tar.gz && \ | |||
tar xf node-v$NODE_VER-linux-x64.tar.gz && \ | |||
rm node-v$NODE_VER-linux-x64.tar.gz && \ | |||
mv node-v$NODE_VER-linux-x64 /opt/node | |||
wget https://nodejs.org/download/release/v$NODE_VER/node-v$NODE_VER-linux-$ARCH.tar.gz && \ | |||
tar xf node-v$NODE_VER-linux-$ARCH.tar.gz && \ | |||
rm node-v$NODE_VER-linux-$ARCH.tar.gz && \ | |||
mv node-v$NODE_VER-linux-$ARCH /opt/node | |||
# Install jemalloc | |||
ENV JE_VER="5.2.1" | |||
@@ -27,8 +38,8 @@ RUN apt update && \ | |||
make -j$(nproc) > /dev/null && \ | |||
make install_bin install_include install_lib | |||
# Install ruby | |||
ENV RUBY_VER="2.6.5" | |||
# Install Ruby | |||
ENV RUBY_VER="2.6.6" | |||
ENV CPPFLAGS="-I/opt/jemalloc/include" | |||
ENV LDFLAGS="-L/opt/jemalloc/lib/" | |||
RUN apt update && \ | |||
@@ -1,15 +1,15 @@ | |||
# frozen_string_literal: true | |||
source 'https://rubygems.org' | |||
ruby '>= 2.4.0', '< 3.0.0' | |||
ruby '>= 2.5.0', '< 3.0.0' | |||
gem 'pkg-config', '~> 1.4' | |||
gem 'puma', '~> 4.3' | |||
gem 'rails', '~> 5.2.4' | |||
gem 'rails', '~> 5.2.4.2' | |||
gem 'sprockets', '~> 3.7.2' | |||
gem 'thor', '~> 0.20' | |||
gem 'rack', '~> 2.1.2' | |||
gem 'rack', '~> 2.2.2' | |||
gem 'thwait', '~> 0.1.0' | |||
gem 'e2mmap', '~> 0.1.0' | |||
@@ -20,7 +20,7 @@ gem 'makara', '~> 0.4' | |||
gem 'pghero', '~> 2.4' | |||
gem 'dotenv-rails', '~> 2.7' | |||
gem 'aws-sdk-s3', '~> 1.60', require: false | |||
gem 'aws-sdk-s3', '~> 1.63', require: false | |||
gem 'fog-core', '<= 2.1.0' | |||
gem 'fog-openstack', '~> 0.3', require: false | |||
gem 'paperclip', '~> 6.0' | |||
@@ -35,7 +35,7 @@ gem 'browser' | |||
gem 'charlock_holmes', '~> 0.7.7' | |||
gem 'iso-639' | |||
gem 'chewy', '~> 5.1' | |||
gem 'cld3', '~> 3.2.6' | |||
gem 'cld3', '~> 3.3.0' | |||
gem 'devise', '~> 4.7' | |||
gem 'devise-two-factor', '~> 3.1' | |||
@@ -48,15 +48,14 @@ gem 'omniauth-cas', '~> 1.1' | |||
gem 'omniauth-saml', '~> 1.10' | |||
gem 'omniauth', '~> 1.9' | |||
gem 'discard', '~> 1.1' | |||
gem 'doorkeeper', '~> 5.2' | |||
gem 'discard', '~> 1.2' | |||
gem 'doorkeeper', '~> 5.3' | |||
gem 'fast_blank', '~> 1.0' | |||
gem 'fastimage' | |||
gem 'goldfinger', '~> 2.1' | |||
gem 'hiredis', '~> 0.6' | |||
gem 'redis-namespace', '~> 1.7' | |||
gem 'health_check', git: 'https://github.com/ianheggie/health_check', ref: '0b799ead604f900ed50685e9b2d469cd2befba5b' | |||
gem 'html2text' | |||
gem 'htmlentities', '~> 4.3' | |||
gem 'http', '~> 4.3' | |||
gem 'http_accept_language', '~> 2.1' | |||
@@ -70,7 +69,7 @@ gem 'nilsimsa', git: 'https://github.com/witgo/nilsimsa', ref: 'fd184883048b922b | |||
gem 'nokogiri', '~> 1.10' | |||
gem 'nsa', '~> 0.2' | |||
gem 'oj', '~> 3.10' | |||
gem 'ox', '~> 2.12' | |||
gem 'ox', '~> 2.13' | |||
gem 'parslet' | |||
gem 'parallel', '~> 1.19' | |||
gem 'posix-spawn', git: 'https://github.com/rtomayko/posix-spawn', ref: '58465d2e213991f8afb13b984854a49fcdcc980c' | |||
@@ -85,7 +84,7 @@ gem 'mario-redis-lock', '~> 1.2', require: 'redis_lock' | |||
gem 'rqrcode', '~> 1.1' | |||
gem 'ruby-progressbar', '~> 1.10' | |||
gem 'sanitize', '~> 5.1' | |||
gem 'sidekiq', '~> 5.2' | |||
gem 'sidekiq', '~> 6.0' | |||
gem 'sidekiq-scheduler', '~> 3.0' | |||
gem 'sidekiq-unique-jobs', '~> 6.0' | |||
gem 'sidekiq-bulk', '~>0.2.0' | |||
@@ -93,16 +92,16 @@ gem 'simple-navigation', '~> 4.1' | |||
gem 'simple_form', '~> 5.0' | |||
gem 'sprockets-rails', '~> 3.2', require: 'sprockets/railtie' | |||
gem 'stoplight', '~> 2.2.0' | |||
gem 'strong_migrations', '~> 0.5' | |||
gem 'strong_migrations', '~> 0.6' | |||
gem 'tty-command', '~> 0.9', require: false | |||
gem 'tty-prompt', '~> 0.20', require: false | |||
gem 'tty-prompt', '~> 0.21', require: false | |||
gem 'twitter-text', '~> 1.14' | |||
gem 'tzinfo-data', '~> 1.2019' | |||
gem 'webpacker', '~> 4.2' | |||
gem 'webpush' | |||
gem 'json-ld' | |||
gem 'json-ld-preloaded', '~> 3.0' | |||
gem 'json-ld-preloaded', '~> 3.1' | |||
gem 'rdf-normalize', '~> 0.4' | |||
gem 'redcarpet', '~> 3.4' | |||
@@ -111,9 +110,9 @@ group :development, :test do | |||
gem 'fabrication', '~> 2.21' | |||
gem 'fuubar', '~> 2.5' | |||
gem 'i18n-tasks', '~> 0.9', require: false | |||
gem 'pry-byebug', '~> 3.7' | |||
gem 'pry-byebug', '~> 3.8' | |||
gem 'pry-rails', '~> 0.3' | |||
gem 'rspec-rails', '~> 3.9' | |||
gem 'rspec-rails', '~> 4.0' | |||
end | |||
group :production, :test do | |||
@@ -121,32 +120,33 @@ group :production, :test do | |||
end | |||
group :test do | |||
gem 'capybara', '~> 3.30' | |||
gem 'capybara', '~> 3.31' | |||
gem 'climate_control', '~> 0.2' | |||
gem 'faker', '~> 2.10' | |||
gem 'faker', '~> 2.11' | |||
gem 'microformats', '~> 4.2' | |||
gem 'rails-controller-testing', '~> 1.0' | |||
gem 'rspec-sidekiq', '~> 3.0' | |||
gem 'simplecov', '~> 0.17', require: false | |||
gem 'simplecov', '~> 0.18', require: false | |||
gem 'webmock', '~> 3.8' | |||
gem 'parallel_tests', '~> 2.30' | |||
gem 'parallel_tests', '~> 2.32' | |||
gem 'rspec_junit_formatter', '~> 0.4' | |||
end | |||
group :development do | |||
gem 'active_record_query_trace', '~> 1.7' | |||
gem 'annotate', '~> 3.0' | |||
gem 'better_errors', '~> 2.5' | |||
gem 'annotate', '~> 3.1' | |||
gem 'better_errors', '~> 2.6' | |||
gem 'binding_of_caller', '~> 0.7' | |||
gem 'bullet', '~> 6.1' | |||
gem 'letter_opener', '~> 1.7' | |||
gem 'letter_opener_web', '~> 1.3' | |||
gem 'letter_opener_web', '~> 1.4' | |||
gem 'memory_profiler' | |||
gem 'rubocop', '~> 0.79', require: false | |||
gem 'rubocop-rails', '~> 2.4', require: false | |||
gem 'brakeman', '~> 4.7', require: false | |||
gem 'rubocop-rails', '~> 2.5', require: false | |||
gem 'brakeman', '~> 4.8', require: false | |||
gem 'bundler-audit', '~> 0.6', require: false | |||
gem 'capistrano', '~> 3.11' | |||
gem 'capistrano', '~> 3.13' | |||
gem 'capistrano-rails', '~> 1.4' | |||
gem 'capistrano-rbenv', '~> 2.1' | |||
gem 'capistrano-yarn', '~> 2.0' | |||
@@ -31,25 +31,25 @@ GIT | |||
GEM | |||
remote: https://rubygems.org/ | |||
specs: | |||
actioncable (5.2.4.1) | |||
actionpack (= 5.2.4.1) | |||
actioncable (5.2.4.2) | |||
actionpack (= 5.2.4.2) | |||
nio4r (~> 2.0) | |||
websocket-driver (>= 0.6.1) | |||
actionmailer (5.2.4.1) | |||
actionpack (= 5.2.4.1) | |||
actionview (= 5.2.4.1) | |||
activejob (= 5.2.4.1) | |||
actionmailer (5.2.4.2) | |||
actionpack (= 5.2.4.2) | |||
actionview (= 5.2.4.2) | |||
activejob (= 5.2.4.2) | |||
mail (~> 2.5, >= 2.5.4) | |||
rails-dom-testing (~> 2.0) | |||
actionpack (5.2.4.1) | |||
actionview (= 5.2.4.1) | |||
activesupport (= 5.2.4.1) | |||
actionpack (5.2.4.2) | |||
actionview (= 5.2.4.2) | |||
activesupport (= 5.2.4.2) | |||
rack (~> 2.0, >= 2.0.8) | |||
rack-test (>= 0.6.3) | |||
rails-dom-testing (~> 2.0) | |||
rails-html-sanitizer (~> 1.0, >= 1.0.2) | |||
actionview (5.2.4.1) | |||
activesupport (= 5.2.4.1) | |||
actionview (5.2.4.2) | |||
activesupport (= 5.2.4.2) | |||
builder (~> 3.1) | |||
erubi (~> 1.4) | |||
rails-dom-testing (~> 2.0) | |||
@@ -60,20 +60,20 @@ GEM | |||
case_transform (>= 0.2) | |||
jsonapi-renderer (>= 0.1.1.beta1, < 0.3) | |||
active_record_query_trace (1.7) | |||
activejob (5.2.4.1) | |||
activesupport (= 5.2.4.1) | |||
activejob (5.2.4.2) | |||
activesupport (= 5.2.4.2) | |||
globalid (>= 0.3.6) | |||
activemodel (5.2.4.1) | |||
activesupport (= 5.2.4.1) | |||
activerecord (5.2.4.1) | |||
activemodel (= 5.2.4.1) | |||
activesupport (= 5.2.4.1) | |||
activemodel (5.2.4.2) | |||
activesupport (= 5.2.4.2) | |||
activerecord (5.2.4.2) | |||
activemodel (= 5.2.4.2) | |||
activesupport (= 5.2.4.2) | |||
arel (>= 9.0) | |||
activestorage (5.2.4.1) | |||
actionpack (= 5.2.4.1) | |||
activerecord (= 5.2.4.1) | |||
activestorage (5.2.4.2) | |||
actionpack (= 5.2.4.2) | |||
activerecord (= 5.2.4.2) | |||
marcel (~> 0.3.1) | |||
activesupport (5.2.4.1) | |||
activesupport (5.2.4.2) | |||
concurrent-ruby (~> 1.0, >= 1.0.2) | |||
i18n (>= 0.7, < 2) | |||
minitest (~> 5.1) | |||
@@ -82,7 +82,7 @@ GEM | |||
public_suffix (>= 2.0.2, < 5.0) | |||
airbrussh (1.4.0) | |||
sshkit (>= 1.6.1, != 1.7.0) | |||
annotate (3.0.3) | |||
annotate (3.1.1) | |||
activerecord (>= 3.2, < 7.0) | |||
rake (>= 10.4, < 14.0) | |||
arel (9.0.0) | |||
@@ -91,24 +91,24 @@ GEM | |||
encryptor (~> 3.0.0) | |||
av (0.9.0) | |||
cocaine (~> 0.5.3) | |||
aws-eventstream (1.0.3) | |||
aws-partitions (1.261.0) | |||
aws-sdk-core (3.86.0) | |||
aws-eventstream (~> 1.0, >= 1.0.2) | |||
aws-eventstream (1.1.0) | |||
aws-partitions (1.303.0) | |||
aws-sdk-core (3.94.0) | |||
aws-eventstream (~> 1, >= 1.0.2) | |||
aws-partitions (~> 1, >= 1.239.0) | |||
aws-sigv4 (~> 1.1) | |||
jmespath (~> 1.0) | |||
aws-sdk-kms (1.27.0) | |||
aws-sdk-kms (1.30.0) | |||
aws-sdk-core (~> 3, >= 3.71.0) | |||
aws-sigv4 (~> 1.1) | |||
aws-sdk-s3 (1.60.1) | |||
aws-sdk-s3 (1.63.0) | |||
aws-sdk-core (~> 3, >= 3.83.0) | |||
aws-sdk-kms (~> 1) | |||
aws-sigv4 (~> 1.1) | |||
aws-sigv4 (1.1.0) | |||
aws-sigv4 (1.1.2) | |||
aws-eventstream (~> 1.0, >= 1.0.2) | |||
bcrypt (3.1.12) | |||
better_errors (2.5.1) | |||
bcrypt (3.1.13) | |||
better_errors (2.6.0) | |||
coderay (>= 1.0.0) | |||
erubi (>= 1.0.0) | |||
rack (>= 0.9.0) | |||
@@ -116,10 +116,10 @@ GEM | |||
debug_inspector (>= 0.0.1) | |||
blurhash (0.1.4) | |||
ffi (~> 1.10.0) | |||
bootsnap (1.4.5) | |||
bootsnap (1.4.6) | |||
msgpack (~> 1.0) | |||
brakeman (4.7.2) | |||
browser (3.0.3) | |||
brakeman (4.8.0) | |||
browser (4.0.0) | |||
builder (3.2.4) | |||
bullet (6.1.0) | |||
activesupport (>= 3.0.0) | |||
@@ -127,15 +127,14 @@ GEM | |||
bundler-audit (0.6.1) | |||
bundler (>= 1.2.0, < 3) | |||
thor (~> 0.18) | |||
byebug (11.0.0) | |||
capistrano (3.11.2) | |||
byebug (11.1.1) | |||
capistrano (3.13.0) | |||
airbrussh (>= 1.0.0) | |||
i18n | |||
rake (>= 10.0.0) | |||
sshkit (>= 1.9.0) | |||
capistrano-bundler (1.3.0) | |||
capistrano-bundler (1.6.0) | |||
capistrano (~> 3.1) | |||
sshkit (~> 1.2) | |||
capistrano-rails (1.4.0) | |||
capistrano (~> 3.1) | |||
capistrano-bundler (~> 1.1) | |||
@@ -144,7 +143,7 @@ GEM | |||
sshkit (~> 1.3) | |||
capistrano-yarn (2.0.2) | |||
capistrano (~> 3.0) | |||
capybara (3.30.0) | |||
capybara (3.31.0) | |||
addressable | |||
mini_mime (>= 0.1.3) | |||
nokogiri (~> 1.8) | |||
@@ -160,13 +159,13 @@ GEM | |||
elasticsearch (>= 2.0.0) | |||
elasticsearch-dsl | |||
chunky_png (1.3.11) | |||
cld3 (3.2.6) | |||
cld3 (3.3.0) | |||
ffi (>= 1.1.0, < 1.12.0) | |||
climate_control (0.2.0) | |||
cocaine (0.5.8) | |||
climate_control (>= 0.0.3, < 1.0) | |||
coderay (1.1.2) | |||
concurrent-ruby (1.1.5) | |||
concurrent-ruby (1.1.6) | |||
connection_pool (2.2.2) | |||
crack (0.4.3) | |||
safe_yaml (~> 1.0.0) | |||
@@ -190,37 +189,37 @@ GEM | |||
devise (>= 4.0.0) | |||
rpam2 (~> 4.0) | |||
diff-lcs (1.3) | |||
discard (1.1.0) | |||
discard (1.2.0) | |||
activerecord (>= 4.2, < 7) | |||
docile (1.3.2) | |||
domain_name (0.5.20190701) | |||
unf (>= 0.0.5, < 1.0.0) | |||
doorkeeper (5.2.3) | |||
doorkeeper (5.3.1) | |||
railties (>= 5) | |||
dotenv (2.7.5) | |||
dotenv-rails (2.7.5) | |||
dotenv (= 2.7.5) | |||
railties (>= 3.2, < 6.1) | |||
e2mmap (0.1.0) | |||
elasticsearch (7.3.0) | |||
elasticsearch-api (= 7.3.0) | |||
elasticsearch-transport (= 7.3.0) | |||
elasticsearch-api (7.3.0) | |||
elasticsearch (7.6.0) | |||
elasticsearch-api (= 7.6.0) | |||
elasticsearch-transport (= 7.6.0) | |||
elasticsearch-api (7.6.0) | |||
multi_json | |||
elasticsearch-dsl (0.1.8) | |||
elasticsearch-transport (7.3.0) | |||
faraday | |||
elasticsearch-dsl (0.1.9) | |||
elasticsearch-transport (7.6.0) | |||
faraday (~> 1) | |||
multi_json | |||
encryptor (3.0.0) | |||
equatable (0.6.1) | |||
erubi (1.9.0) | |||
et-orbi (1.1.6) | |||
et-orbi (1.2.3) | |||
tzinfo | |||
excon (0.71.0) | |||
fabrication (2.21.0) | |||
faker (2.10.1) | |||
excon (0.73.0) | |||
fabrication (2.21.1) | |||
faker (2.11.0) | |||
i18n (>= 1.6, < 2) | |||
faraday (1.0.0) | |||
faraday (1.0.1) | |||
multipart-post (>= 1.2, < 3) | |||
fast_blank (1.0.0) | |||
fastimage (2.1.7) | |||
@@ -241,8 +240,8 @@ GEM | |||
fog-json (>= 1.0) | |||
ipaddress (>= 0.8) | |||
formatador (0.2.5) | |||
fugit (1.1.6) | |||
et-orbi (~> 1.1, >= 1.1.6) | |||
fugit (1.3.3) | |||
et-orbi (~> 1.1, >= 1.1.8) | |||
raabro (~> 1.1) | |||
fuubar (2.5.0) | |||
rspec-core (~> 3.0) | |||
@@ -265,13 +264,11 @@ GEM | |||
railties (>= 4.0.1) | |||
hamster (3.0.0) | |||
concurrent-ruby (~> 1.0) | |||
hashdiff (1.0.0) | |||
hashie (3.6.0) | |||
hashdiff (1.0.1) | |||
hashie (4.1.0) | |||
highline (2.0.3) | |||
hiredis (0.6.3) | |||
hkdf (0.3.0) | |||
html2text (0.2.1) | |||
nokogiri (~> 1.6) | |||
htmlentities (4.3.4) | |||
http (4.3.0) | |||
addressable (~> 2.3) | |||
@@ -280,7 +277,7 @@ GEM | |||
http-parser (~> 1.2.0) | |||
http-cookie (1.0.3) | |||
domain_name (~> 0.5) | |||
http-form_data (2.2.0) | |||
http-form_data (2.3.0) | |||
http-parser (1.2.1) | |||
ffi-compiler (>= 1.0, < 2.0) | |||
http_accept_language (2.1.1) | |||
@@ -289,7 +286,7 @@ GEM | |||
rainbow (>= 2.0.0) | |||
i18n (1.8.2) | |||
concurrent-ruby (~> 1.0) | |||
i18n-tasks (0.9.30) | |||
i18n-tasks (0.9.31) | |||
activesupport (>= 4.0.2) | |||
ast (>= 2.1.0) | |||
erubi | |||
@@ -301,22 +298,21 @@ GEM | |||
terminal-table (>= 1.5.1) | |||
idn-ruby (0.1.0) | |||
ipaddress (0.8.3) | |||
iso-639 (0.2.8) | |||
iso-639 (0.3.5) | |||
jaro_winkler (1.5.4) | |||
jmespath (1.4.0) | |||
json (2.3.0) | |||
json-canonicalization (0.2.0) | |||
json-ld (3.1.0) | |||
json-ld (3.1.3) | |||
htmlentities (~> 4.3) | |||
json-canonicalization (~> 0.1) | |||
json-canonicalization (~> 0.2) | |||
link_header (~> 0.0, >= 0.0.8) | |||
multi_json (~> 1.14) | |||
rack (~> 2.0) | |||
rdf (~> 3.1) | |||
json-ld-preloaded (3.0.6) | |||
json-ld (~> 3.0) | |||
multi_json (~> 1.12) | |||
rdf (~> 3.0) | |||
json-ld-preloaded (3.1.2) | |||
json-ld (~> 3.1) | |||
rdf (~> 3.1) | |||
jsonapi-renderer (0.2.2) | |||
jwt (2.1.0) | |||
kaminari (1.1.1) | |||
@@ -335,7 +331,7 @@ GEM | |||
addressable (~> 2.3) | |||
letter_opener (1.7.0) | |||
launchy (~> 2.2) | |||
letter_opener_web (1.3.4) | |||
letter_opener_web (1.4.0) | |||
actionmailer (>= 3.2) | |||
letter_opener (~> 1.0) | |||
railties (>= 3.2) | |||
@@ -345,7 +341,7 @@ GEM | |||
activesupport (>= 4) | |||
railties (>= 4) | |||
request_store (~> 1.0) | |||
loofah (2.4.0) | |||
loofah (2.5.0) | |||
crass (~> 1.0.2) | |||
nokogiri (>= 1.5.9) | |||
mail (2.7.1) | |||
@@ -363,12 +359,12 @@ GEM | |||
nokogiri (~> 1.10) | |||
mime-types (3.3.1) | |||
mime-types-data (~> 3.2015) | |||
mime-types-data (3.2019.1009) | |||
mimemagic (0.3.3) | |||
mime-types-data (3.2020.0425) | |||
mimemagic (0.3.4) | |||
mini_mime (1.0.2) | |||
mini_portile2 (2.4.0) | |||
minitest (5.14.0) | |||
msgpack (1.3.1) | |||
msgpack (1.3.3) | |||
multi_json (1.14.1) | |||
multipart-post (2.1.1) | |||
necromancer (0.5.1) | |||
@@ -377,18 +373,18 @@ GEM | |||
net-ssh (>= 2.6.5, < 6.0.0) | |||
net-ssh (5.2.0) | |||
nio4r (2.5.2) | |||
nokogiri (1.10.7) | |||
nokogiri (1.10.9) | |||
mini_portile2 (~> 2.4.0) | |||
nokogumbo (2.0.1) | |||
nokogumbo (2.0.2) | |||
nokogiri (~> 1.8, >= 1.8.4) | |||
nsa (0.2.7) | |||
activesupport (>= 4.2, < 6) | |||
concurrent-ruby (~> 1.0, >= 1.0.2) | |||
sidekiq (>= 3.5) | |||
statsd-ruby (~> 1.4, >= 1.4.0) | |||
oj (3.10.1) | |||
omniauth (1.9.0) | |||
hashie (>= 3.4.6, < 3.7.0) | |||
oj (3.10.6) | |||
omniauth (1.9.1) | |||
hashie (>= 3.4.6) | |||
rack (>= 1.6.2, < 3) | |||
omniauth-cas (1.1.1) | |||
addressable (~> 2.3) | |||
@@ -398,7 +394,7 @@ GEM | |||
omniauth (~> 1.3, >= 1.3.2) | |||
ruby-saml (~> 1.7) | |||
orm_adapter (0.5.0) | |||
ox (2.12.1) | |||
ox (2.13.2) | |||
paperclip (6.0.0) | |||
activemodel (>= 4.2.0) | |||
activesupport (>= 4.2.0) | |||
@@ -409,18 +405,18 @@ GEM | |||
av (~> 0.9.0) | |||
paperclip (>= 2.5.2) | |||
parallel (1.19.1) | |||
parallel_tests (2.30.1) | |||
parallel_tests (2.32.0) | |||
parallel | |||
parser (2.7.0.2) | |||
parser (2.7.1.1) | |||
ast (~> 2.4.0) | |||
parslet (1.8.2) | |||
parslet (2.0.0) | |||
pastel (0.7.3) | |||
equatable (~> 0.6) | |||
tty-color (~> 0.5) | |||
pg (1.2.2) | |||
pg (1.2.3) | |||
pghero (2.4.1) | |||
activerecord (>= 5) | |||
pkg-config (1.4.0) | |||
pkg-config (1.4.1) | |||
premailer (1.11.1) | |||
addressable | |||
css_parser (>= 1.6.0) | |||
@@ -432,40 +428,40 @@ GEM | |||
pry (0.12.2) | |||
coderay (~> 1.1.0) | |||
method_source (~> 0.9.0) | |||
pry-byebug (3.7.0) | |||
pry-byebug (3.8.0) | |||
byebug (~> 11.0) | |||
pry (~> 0.10) | |||
pry-rails (0.3.9) | |||
pry (>= 0.10.4) | |||
public_suffix (4.0.3) | |||
puma (4.3.1) | |||
public_suffix (4.0.4) | |||
puma (4.3.3) | |||
nio4r (~> 2.0) | |||
pundit (2.1.0) | |||
activesupport (>= 3.0.0) | |||
raabro (1.1.6) | |||
rack (2.1.2) | |||
rack (2.2.2) | |||
rack-attack (6.2.2) | |||
rack (>= 1.0, < 3) | |||
rack-cors (1.1.1) | |||
rack (>= 2.0.0) | |||
rack-protection (2.0.7) | |||
rack-protection (2.0.8.1) | |||
rack | |||
rack-proxy (0.6.5) | |||
rack | |||
rack-test (1.1.0) | |||
rack (>= 1.0, < 3) | |||
rails (5.2.4.1) | |||
actioncable (= 5.2.4.1) | |||
actionmailer (= 5.2.4.1) | |||
actionpack (= 5.2.4.1) | |||
actionview (= 5.2.4.1) | |||
activejob (= 5.2.4.1) | |||
activemodel (= 5.2.4.1) | |||
activerecord (= 5.2.4.1) | |||
activestorage (= 5.2.4.1) | |||
activesupport (= 5.2.4.1) | |||
rails (5.2.4.2) | |||
actioncable (= 5.2.4.2) | |||
actionmailer (= 5.2.4.2) | |||
actionpack (= 5.2.4.2) | |||
actionview (= 5.2.4.2) | |||
activejob (= 5.2.4.2) | |||
activemodel (= 5.2.4.2) | |||
activerecord (= 5.2.4.2) | |||
activestorage (= 5.2.4.2) | |||
activesupport (= 5.2.4.2) | |||
bundler (>= 1.3.0) | |||
railties (= 5.2.4.1) | |||
railties (= 5.2.4.2) | |||
sprockets-rails (>= 2.0.0) | |||
rails-controller-testing (1.0.4) | |||
actionpack (>= 5.0.1.x) | |||
@@ -481,9 +477,9 @@ GEM | |||
railties (>= 5.0, < 6) | |||
rails-settings-cached (0.6.6) | |||
rails (>= 4.2.0) | |||
railties (5.2.4.1) | |||
actionpack (= 5.2.4.1) | |||
activesupport (= 5.2.4.1) | |||
railties (5.2.4.2) | |||
actionpack (= 5.2.4.2) | |||
activesupport (= 5.2.4.2) | |||
method_source | |||
rake (>= 0.8.7) | |||
thor (>= 0.19.0, < 2.0) | |||
@@ -494,27 +490,27 @@ GEM | |||
link_header (~> 0.0, >= 0.0.8) | |||
rdf-normalize (0.4.0) | |||
rdf (~> 3.1) | |||
redcarpet (3.4.0) | |||
redcarpet (3.5.0) | |||
redis (4.1.3) | |||
redis-actionpack (5.0.2) | |||
actionpack (>= 4.0, < 6) | |||
redis-rack (>= 1, < 3) | |||
redis-actionpack (5.2.0) | |||
actionpack (>= 5, < 7) | |||
redis-rack (>= 2.1.0, < 3) | |||
redis-store (>= 1.1.0, < 2) | |||
redis-activesupport (5.0.4) | |||
activesupport (>= 3, < 6) | |||
redis-store (>= 1.3, < 2) | |||
redis-namespace (1.7.0) | |||
redis (>= 3.0.4) | |||
redis-rack (2.0.4) | |||
rack (>= 1.5, < 3) | |||
redis-rack (2.1.2) | |||
rack (>= 2.0.8, < 3) | |||
redis-store (>= 1.2, < 2) | |||
redis-rails (5.0.2) | |||
redis-actionpack (>= 5.0, < 6) | |||
redis-activesupport (>= 5.0, < 6) | |||
redis-store (>= 1.2, < 2) | |||
redis-store (1.5.0) | |||
redis (>= 2.2, < 5) | |||
regexp_parser (1.6.0) | |||
redis-store (1.8.2) | |||
redis (>= 4, < 5) | |||
regexp_parser (1.7.0) | |||
request_store (1.5.0) | |||
rack (>= 1.4) | |||
responders (3.0.0) | |||
@@ -525,27 +521,29 @@ GEM | |||
rqrcode (1.1.2) | |||
chunky_png (~> 1.0) | |||
rqrcode_core (~> 0.1) | |||
rqrcode_core (0.1.1) | |||
rspec-core (3.9.0) | |||
rspec-support (~> 3.9.0) | |||
rspec-expectations (3.9.0) | |||
rqrcode_core (0.1.2) | |||
rspec-core (3.9.1) | |||
rspec-support (~> 3.9.1) | |||
rspec-expectations (3.9.1) | |||
diff-lcs (>= 1.2.0, < 2.0) | |||
rspec-support (~> 3.9.0) | |||
rspec-mocks (3.9.0) | |||
rspec-mocks (3.9.1) | |||
diff-lcs (>= 1.2.0, < 2.0) | |||
rspec-support (~> 3.9.0) | |||
rspec-rails (3.9.0) | |||
actionpack (>= 3.0) | |||
activesupport (>= 3.0) | |||
railties (>= 3.0) | |||
rspec-core (~> 3.9.0) | |||
rspec-expectations (~> 3.9.0) | |||
rspec-mocks (~> 3.9.0) | |||
rspec-support (~> 3.9.0) | |||
rspec-rails (4.0.0) | |||
actionpack (>= 4.2) | |||
activesupport (>= 4.2) | |||
railties (>= 4.2) | |||
rspec-core (~> 3.9) | |||
rspec-expectations (~> 3.9) | |||
rspec-mocks (~> 3.9) | |||
rspec-support (~> 3.9) | |||
rspec-sidekiq (3.0.3) | |||
rspec-core (~> 3.0, >= 3.0.0) | |||
sidekiq (>= 2.4.0) | |||
rspec-support (3.9.0) | |||
rspec-support (3.9.2) | |||
rspec_junit_formatter (0.4.1) | |||
rspec-core (>= 2, < 4, != 2.12.0) | |||
rubocop (0.79.0) | |||
jaro_winkler (~> 1.5.1) | |||
parallel (~> 1.10) | |||
@@ -553,45 +551,47 @@ GEM | |||
rainbow (>= 2.2.2, < 4.0) | |||
ruby-progressbar (~> 1.7) | |||
unicode-display_width (>= 1.4.0, < 1.7) | |||
rubocop-rails (2.4.1) | |||
rubocop-rails (2.5.2) | |||
activesupport | |||
rack (>= 1.1) | |||
rubocop (>= 0.72.0) | |||
ruby-progressbar (1.10.1) | |||
ruby-saml (1.9.0) | |||
ruby-saml (1.11.0) | |||
nokogiri (>= 1.5.10) | |||
rufus-scheduler (3.5.2) | |||
fugit (~> 1.1, >= 1.1.5) | |||
rufus-scheduler (3.6.0) | |||
fugit (~> 1.1, >= 1.1.6) | |||
safe_yaml (1.0.5) | |||
sanitize (5.1.0) | |||
crass (~> 1.0.2) | |||
nokogiri (>= 1.8.0) | |||
nokogumbo (~> 2.0) | |||
sidekiq (5.2.7) | |||
connection_pool (~> 2.2, >= 2.2.2) | |||
rack (>= 1.5.0) | |||
rack-protection (>= 1.5.0) | |||
redis (>= 3.3.5, < 5) | |||
sidekiq (6.0.4) | |||
connection_pool (>= 2.2.2) | |||
rack (>= 2.0.0) | |||
rack-protection (>= 2.0.0) | |||
redis (>= 4.1.0) | |||
sidekiq-bulk (0.2.0) | |||
sidekiq | |||
sidekiq-scheduler (3.0.0) | |||
sidekiq-scheduler (3.0.1) | |||
e2mmap | |||
redis (>= 3, < 5) | |||
rufus-scheduler (~> 3.2) | |||
sidekiq (>= 3) | |||
thwait | |||
tilt (>= 1.4.0) | |||
sidekiq-unique-jobs (6.0.18) | |||
sidekiq-unique-jobs (6.0.21) | |||
concurrent-ruby (~> 1.0, >= 1.0.5) | |||
sidekiq (>= 4.0, < 7.0) | |||
thor (~> 0) | |||
simple-navigation (4.1.0) | |||
activesupport (>= 2.3.2) | |||
simple_form (5.0.1) | |||
simple_form (5.0.2) | |||
actionpack (>= 5.0) | |||
activemodel (>= 5.0) | |||
simplecov (0.17.1) | |||
simplecov (0.18.5) | |||
docile (~> 1.1) | |||
json (>= 1.8, < 3) | |||
simplecov-html (~> 0.10.0) | |||
simplecov-html (0.10.2) | |||
simplecov-html (~> 0.11) | |||
simplecov-html (0.12.2) | |||
sprockets (3.7.2) | |||
concurrent-ruby (~> 1.0) | |||
rack (> 1, < 3) | |||
@@ -599,7 +599,7 @@ GEM | |||
actionpack (>= 4.0) | |||
activesupport (>= 4.0) | |||
sprockets (>= 3.0.0) | |||
sshkit (1.20.0) | |||
sshkit (1.21.0) | |||
net-scp (>= 1.1.2) | |||
net-ssh (>= 2.8.0) | |||
stackprof (0.2.15) | |||
@@ -607,7 +607,7 @@ GEM | |||
stoplight (2.2.0) | |||
streamio-ffmpeg (3.0.2) | |||
multi_json (~> 1.8) | |||
strong_migrations (0.5.1) | |||
strong_migrations (0.6.2) | |||
activerecord (>= 5) | |||
temple (0.8.2) | |||
terminal-table (1.8.0) | |||
@@ -618,11 +618,11 @@ GEM | |||
thread_safe (0.3.6) | |||
thwait (0.1.0) | |||
tilt (2.0.10) | |||
tty-color (0.5.0) | |||
tty-color (0.5.1) | |||
tty-command (0.9.0) | |||
pastel (~> 0.7.0) | |||
tty-cursor (0.7.0) | |||
tty-prompt (0.20.0) | |||
tty-cursor (0.7.1) | |||
tty-prompt (0.21.0) | |||
necromancer (~> 0.5.0) | |||
pastel (~> 0.7.0) | |||
tty-reader (~> 0.7.0) | |||
@@ -630,10 +630,10 @@ GEM | |||
tty-cursor (~> 0.7) | |||
tty-screen (~> 0.7) | |||
wisper (~> 2.0.0) | |||
tty-screen (0.7.0) | |||
tty-screen (0.7.1) | |||
twitter-text (1.14.7) | |||
unf (~> 0.1.0) | |||
tzinfo (1.2.6) | |||
tzinfo (1.2.7) | |||
thread_safe (~> 0.1) | |||
tzinfo-data (1.2019.3) | |||
tzinfo (>= 1.0.0) | |||
@@ -644,7 +644,7 @@ GEM | |||
uniform_notifier (1.13.0) | |||
warden (1.2.8) | |||
rack (>= 2.0.6) | |||
webmock (3.8.0) | |||
webmock (3.8.3) | |||
addressable (>= 2.3.6) | |||
crack (>= 0.3.2) | |||
hashdiff (>= 0.4.0, < 2.0.0) | |||
@@ -669,36 +669,36 @@ DEPENDENCIES | |||
active_model_serializers (~> 0.10) | |||
active_record_query_trace (~> 1.7) | |||
addressable (~> 2.7) | |||
annotate (~> 3.0) | |||
aws-sdk-s3 (~> 1.60) | |||
better_errors (~> 2.5) | |||
annotate (~> 3.1) | |||
aws-sdk-s3 (~> 1.63) | |||
better_errors (~> 2.6) | |||
binding_of_caller (~> 0.7) | |||
blurhash (~> 0.1) | |||
bootsnap (~> 1.4) | |||
brakeman (~> 4.7) | |||
brakeman (~> 4.8) | |||
browser | |||
bullet (~> 6.1) | |||
bundler-audit (~> 0.6) | |||
capistrano (~> 3.11) | |||
capistrano (~> 3.13) | |||
capistrano-rails (~> 1.4) | |||
capistrano-rbenv (~> 2.1) | |||
capistrano-yarn (~> 2.0) | |||
capybara (~> 3.30) | |||
capybara (~> 3.31) | |||
charlock_holmes (~> 0.7.7) | |||
chewy (~> 5.1) | |||
cld3 (~> 3.2.6) | |||
cld3 (~> 3.3.0) | |||
climate_control (~> 0.2) | |||
concurrent-ruby | |||
connection_pool | |||
devise (~> 4.7) | |||
devise-two-factor (~> 3.1) | |||
devise_pam_authenticatable2 (~> 9.2) | |||
discard (~> 1.1) | |||
doorkeeper (~> 5.2) | |||
discard (~> 1.2) | |||
doorkeeper (~> 5.3) | |||
dotenv-rails (~> 2.7) | |||
e2mmap (~> 0.1.0) | |||
fabrication (~> 2.21) | |||
faker (~> 2.10) | |||
faker (~> 2.11) | |||
fast_blank (~> 1.0) | |||
fastimage | |||
fog-core (<= 2.1.0) | |||
@@ -708,7 +708,6 @@ DEPENDENCIES | |||
hamlit-rails (~> 0.2) | |||
health_check! | |||
hiredis (~> 0.6) | |||
html2text | |||
htmlentities (~> 4.3) | |||
http (~> 4.3) | |||
http_accept_language (~> 2.1) | |||
@@ -718,10 +717,10 @@ DEPENDENCIES | |||
idn-ruby | |||
iso-639 | |||
json-ld | |||
json-ld-preloaded (~> 3.0) | |||
json-ld-preloaded (~> 3.1) | |||
kaminari (~> 1.1) | |||
letter_opener (~> 1.7) | |||
letter_opener_web (~> 1.3) | |||
letter_opener_web (~> 1.4) | |||
link_header (~> 0.0) | |||
lograge (~> 0.11) | |||
makara (~> 0.4) | |||
@@ -737,11 +736,11 @@ DEPENDENCIES | |||
omniauth (~> 1.9) | |||
omniauth-cas (~> 1.1) | |||
omniauth-saml (~> 1.10) | |||
ox (~> 2.12) | |||
ox (~> 2.13) | |||
paperclip (~> 6.0) | |||
paperclip-av-transcoder (~> 0.6) | |||
parallel (~> 1.19) | |||
parallel_tests (~> 2.30) | |||
parallel_tests (~> 2.32) | |||
parslet | |||
pg (~> 1.2) | |||
pghero (~> 2.4) | |||
@@ -749,14 +748,14 @@ DEPENDENCIES | |||
posix-spawn! | |||
premailer-rails | |||
private_address_check (~> 0.5) | |||
pry-byebug (~> 3.7) | |||
pry-byebug (~> 3.8) | |||
pry-rails (~> 0.3) | |||
puma (~> 4.3) | |||
pundit (~> 2.1) | |||
rack (~> 2.1.2) | |||
rack (~> 2.2.2) | |||
rack-attack (~> 6.2) | |||
rack-cors (~> 1.1) | |||
rails (~> 5.2.4) | |||
rails (~> 5.2.4.2) | |||
rails-controller-testing (~> 1.0) | |||
rails-i18n (~> 5.1) | |||
rails-settings-cached (~> 0.6) | |||
@@ -766,29 +765,30 @@ DEPENDENCIES | |||
redis-namespace (~> 1.7) | |||
redis-rails (~> 5.0) | |||
rqrcode (~> 1.1) | |||
rspec-rails (~> 3.9) | |||
rspec-rails (~> 4.0) | |||
rspec-sidekiq (~> 3.0) | |||
rspec_junit_formatter (~> 0.4) | |||
rubocop (~> 0.79) | |||
rubocop-rails (~> 2.4) | |||
rubocop-rails (~> 2.5) | |||
ruby-progressbar (~> 1.10) | |||
sanitize (~> 5.1) | |||
sidekiq (~> 5.2) | |||
sidekiq (~> 6.0) | |||
sidekiq-bulk (~> 0.2.0) | |||
sidekiq-scheduler (~> 3.0) | |||
sidekiq-unique-jobs (~> 6.0) | |||
simple-navigation (~> 4.1) | |||
simple_form (~> 5.0) | |||
simplecov (~> 0.17) | |||
simplecov (~> 0.18) | |||
sprockets (~> 3.7.2) | |||
sprockets-rails (~> 3.2) | |||
stackprof | |||
stoplight (~> 2.2.0) | |||
streamio-ffmpeg (~> 3.0) | |||
strong_migrations (~> 0.5) | |||
strong_migrations (~> 0.6) | |||
thor (~> 0.20) | |||
thwait (~> 0.1.0) | |||
tty-command (~> 0.9) | |||
tty-prompt (~> 0.20) | |||
tty-prompt (~> 0.21) | |||
twitter-text (~> 1.14) | |||
tzinfo-data (~> 1.2019) | |||
webmock (~> 3.8) | |||
@@ -91,7 +91,7 @@ VAGRANTFILE_API_VERSION = "2" | |||
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| | |||
config.vm.box = "ubuntu/xenial64" | |||
config.vm.box = "ubuntu/bionic64" | |||
config.vm.provider :virtualbox do |vb| | |||
vb.name = "mastodon" | |||
@@ -47,6 +47,11 @@ class StatusesIndex < Chewy::Index | |||
data.each.with_object({}) { |(id, name), result| (result[id] ||= []).push(name) } | |||
end | |||
crutch :bookmarks do |collection| | |||
data = ::Bookmark.where(status_id: collection.map(&:id)).where(account: Account.local).pluck(:status_id, :account_id) | |||
data.each.with_object({}) { |(id, name), result| (result[id] ||= []).push(name) } | |||
end | |||
root date_detection: false do | |||
field :id, type: 'long' | |||
field :account_id, type: 'long' | |||
@@ -6,7 +6,7 @@ class AccountFollowController < ApplicationController | |||
before_action :authenticate_user! | |||
def create | |||
FollowService.new.call(current_user.account, @account.acct) | |||
FollowService.new.call(current_user.account, @account, with_rate_limit: true) | |||
redirect_to account_path(@account) | |||
end | |||
end |
@@ -9,7 +9,7 @@ class AccountsController < ApplicationController | |||
before_action :set_cache_headers | |||
before_action :set_body_classes | |||
skip_around_action :set_locale, if: -> { [:json, :rss].include?(request.format) } | |||
skip_around_action :set_locale, if: -> { [:json, :rss].include?(request.format&.to_sym) } | |||
skip_before_action :require_functional! | |||
def show | |||
@@ -28,7 +28,7 @@ class AccountsController < ApplicationController | |||
end | |||
@pinned_statuses = cache_collection(@account.pinned_statuses, Status) if show_pinned_statuses? | |||
@statuses = filtered_status_page(params) | |||
@statuses = filtered_status_page | |||
@statuses = cache_collection(@statuses, Status) | |||
@rss_url = rss_url | |||
@@ -141,12 +141,12 @@ class AccountsController < ApplicationController | |||
request.path.split('.').first.ends_with?(Addressable::URI.parse("/tagged/#{params[:tag]}").normalize) | |||
end | |||
def filtered_status_page(params) | |||
if params[:min_id].present? | |||
filtered_statuses.paginate_by_min_id(PAGE_SIZE, params[:min_id]).reverse | |||
else | |||
filtered_statuses.paginate_by_max_id(PAGE_SIZE, params[:max_id], params[:since_id]).to_a | |||
end | |||
def filtered_status_page | |||
filtered_statuses.paginate_by_id(PAGE_SIZE, params_slice(:max_id, :min_id, :since_id)) | |||
end | |||
def params_slice(*keys) | |||
params.slice(*keys).permit(*keys) | |||
end | |||
def restrict_fields_to | |||
@@ -24,20 +24,23 @@ class ActivityPub::CollectionsController < ActivityPub::BaseController | |||
def set_size | |||
case params[:id] | |||
when 'featured' | |||
@account.pinned_statuses.count | |||
@size = @account.pinned_statuses.count | |||
else | |||
raise ActiveRecord::RecordNotFound | |||
not_found | |||
end | |||
end | |||
def scope_for_collection | |||
case params[:id] | |||
when 'featured' | |||
return Status.none if @account.blocking?(signed_request_account) | |||
@account.pinned_statuses | |||
else | |||
raise ActiveRecord::RecordNotFound | |||
# Because in public fetch mode we cache the response, there would be no | |||
# benefit from performing the check below, since a blocked account or domain | |||
# would likely be served the cache from the reverse proxy anyway | |||
if authorized_fetch_mode? && !signed_request_account.nil? && (@account.blocking?(signed_request_account) || (!signed_request_account.domain.nil? && @account.domain_blocking?(signed_request_account.domain))) | |||
Status.none | |||
else | |||
@account.pinned_statuses | |||
end | |||
end | |||
end | |||
@@ -49,7 +49,7 @@ class ActivityPub::InboxesController < ActivityPub::BaseController | |||
ResolveAccountWorker.perform_async(signed_request_account.acct) | |||
end | |||
DeliveryFailureTracker.track_inverse_success!(signed_request_account) | |||
DeliveryFailureTracker.reset!(signed_request_account.inbox_url) | |||
end | |||
def process_payload | |||
@@ -11,7 +11,7 @@ class ActivityPub::OutboxesController < ActivityPub::BaseController | |||
before_action :set_cache_headers | |||
def show | |||
expires_in(page_requested? ? 0 : 3.minutes, public: public_fetch_mode?) | |||
expires_in(page_requested? ? 0 : 3.minutes, public: public_fetch_mode? && !(signed_request_account.present? && page_requested?)) | |||
render json: outbox_presenter, serializer: ActivityPub::OutboxSerializer, adapter: ActivityPub::Adapter, content_type: 'application/activity+json' | |||
end | |||
@@ -50,12 +50,12 @@ class ActivityPub::OutboxesController < ActivityPub::BaseController | |||
return unless page_requested? | |||
@statuses = @account.statuses.permitted_for(@account, signed_request_account) | |||
@statuses = params[:min_id].present? ? @statuses.paginate_by_min_id(LIMIT, params[:min_id]).reverse : @statuses.paginate_by_max_id(LIMIT, params[:max_id]) | |||
@statuses = @statuses.paginate_by_id(LIMIT, params_slice(:max_id, :min_id, :since_id)) | |||
@statuses = cache_collection(@statuses, Status) | |||
end | |||
def page_requested? | |||
params[:page] == 'true' | |||
truthy_param?(:page) | |||
end | |||
def page_params | |||
@@ -1,7 +1,7 @@ | |||
# frozen_string_literal: true | |||
class ActivityPub::RepliesController < ActivityPub::BaseController | |||
include SignatureAuthentication | |||
include SignatureVerification | |||
include Authorization | |||
include AccountOwnedConcern | |||
@@ -19,15 +19,19 @@ class ActivityPub::RepliesController < ActivityPub::BaseController | |||
private | |||
def pundit_user | |||
signed_request_account | |||
end | |||
def set_status | |||
@status = @account.statuses.find(params[:status_id]) | |||
authorize @status, :show? | |||
rescue Mastodon::NotPermittedError | |||
raise ActiveRecord::RecordNotFound | |||
not_found | |||
end | |||
def set_replies | |||
@replies = page_params[:only_other_accounts] ? Status.where.not(account_id: @account.id) : @account.statuses | |||
@replies = only_other_accounts? ? Status.where.not(account_id: @account.id) : @account.statuses | |||
@replies = @replies.where(in_reply_to_id: @status.id, visibility: [:public, :unlisted]) | |||
@replies = @replies.paginate_by_min_id(DESCENDANTS_LIMIT, params[:min_id]) | |||
end | |||
@@ -38,7 +42,7 @@ class ActivityPub::RepliesController < ActivityPub::BaseController | |||
type: :unordered, | |||
part_of: account_status_replies_url(@account, @status), | |||
next: next_page, | |||
items: @replies.map { |status| status.local ? status : status.uri } | |||
items: @replies.map { |status| status.local? ? status : status.uri } | |||
) | |||
return page if page_requested? | |||
@@ -51,16 +55,21 @@ class ActivityPub::RepliesController < ActivityPub::BaseController | |||
end | |||
def page_requested? | |||
params[:page] == 'true' | |||
truthy_param?(:page) | |||
end | |||
def only_other_accounts? | |||
truthy_param?(:only_other_accounts) | |||
end | |||
def next_page | |||
only_other_accounts = !(@replies&.last&.account_id == @account.id && @replies.size == DESCENDANTS_LIMIT) | |||
account_status_replies_url( | |||
@account, | |||
@status, | |||
page: true, | |||
min_id: only_other_accounts && !page_params[:only_other_accounts] ? nil : @replies&.last&.id, | |||
min_id: only_other_accounts && !only_other_accounts? ? nil : @replies&.last&.id, | |||
only_other_accounts: only_other_accounts | |||
) | |||
end | |||
@@ -2,8 +2,18 @@ | |||
module Admin | |||
class ActionLogsController < BaseController | |||
def index | |||
@action_logs = Admin::ActionLog.page(params[:page]) | |||
before_action :set_action_logs | |||
def index; end | |||
private | |||
def set_action_logs | |||
@action_logs = Admin::ActionLogFilter.new(filter_params).results.page(params[:page]) | |||
end | |||
def filter_params | |||
params.slice(:page, *Admin::ActionLogFilter::KEYS).permit(:page, *Admin::ActionLogFilter::KEYS) | |||
end | |||
end | |||
end |
@@ -6,12 +6,12 @@ module Admin | |||
def index | |||
authorize :email_domain_block, :index? | |||
@email_domain_blocks = EmailDomainBlock.page(params[:page]) | |||
@email_domain_blocks = EmailDomainBlock.where(parent_id: nil).includes(:children).order(id: :desc).page(params[:page]) | |||
end | |||
def new | |||
authorize :email_domain_block, :create? | |||
@email_domain_block = EmailDomainBlock.new | |||
@email_domain_block = EmailDomainBlock.new(domain: params[:_domain]) | |||
end | |||
def create | |||
@@ -21,6 +21,28 @@ module Admin | |||
if @email_domain_block.save | |||
log_action :create, @email_domain_block | |||
if @email_domain_block.with_dns_records? | |||
hostnames = [] | |||
ips = [] | |||
Resolv::DNS.open do |dns| | |||
dns.timeouts = 1 | |||
hostnames = dns.getresources(@email_domain_block.domain, Resolv::DNS::Resource::IN::MX).to_a.map { |e| e.exchange.to_s } | |||
([@email_domain_block.domain] + hostnames).uniq.each do |hostname| | |||
ips.concat(dns.getresources(hostname, Resolv::DNS::Resource::IN::A).to_a.map { |e| e.address.to_s }) | |||
ips.concat(dns.getresources(hostname, Resolv::DNS::Resource::IN::AAAA).to_a.map { |e| e.address.to_s }) | |||
end | |||
end | |||
(hostnames + ips).each do |hostname| | |||
another_email_domain_block = EmailDomainBlock.new(domain: hostname, parent: @email_domain_block) | |||
log_action :create, another_email_domain_block if another_email_domain_block.save | |||
end | |||
end | |||
redirect_to admin_email_domain_blocks_path, notice: I18n.t('admin.email_domain_blocks.created_msg') | |||
else | |||
render :new | |||
@@ -41,7 +63,7 @@ module Admin | |||
end | |||
def resource_params | |||
params.require(:email_domain_block).permit(:domain) | |||
params.require(:email_domain_block).permit(:domain, :with_dns_records) | |||
end | |||
end | |||
end |
@@ -19,7 +19,7 @@ module Admin | |||
@followers_count = Follow.where(target_account: Account.where(domain: params[:id])).count | |||
@reports_count = Report.where(target_account: Account.where(domain: params[:id])).count | |||
@blocks_count = Block.where(target_account: Account.where(domain: params[:id])).count | |||
@available = DeliveryFailureTracker.available?(Account.select(:shared_inbox_url).where(domain: params[:id]).first&.shared_inbox_url) | |||
@available = DeliveryFailureTracker.available?(params[:id]) | |||
@media_storage = MediaAttachment.where(account: Account.where(domain: params[:id])).sum(:file_file_size) | |||
@private_comment = @domain_block&.private_comment | |||
@public_comment = @domain_block&.public_comment | |||
@@ -0,0 +1,21 @@ | |||
# frozen_string_literal: true | |||
module Admin | |||
class SiteUploadsController < BaseController | |||
before_action :set_site_upload | |||
def destroy | |||
authorize :settings, :destroy? | |||
@site_upload.destroy! | |||
redirect_to edit_admin_settings_path, notice: I18n.t('admin.site_uploads.destroyed_msg') | |||
end | |||
private | |||
def set_site_upload | |||
@site_upload = SiteUpload.find(params[:id]) | |||
end | |||
end | |||
end |
@@ -7,7 +7,7 @@ module Admin | |||
def index | |||
authorize :account_warning_preset, :index? | |||
@warning_presets = AccountWarningPreset.all | |||
@warning_presets = AccountWarningPreset.alphabetic | |||
@warning_preset = AccountWarningPreset.new | |||
end | |||
@@ -19,7 +19,7 @@ module Admin | |||
if @warning_preset.save | |||
redirect_to admin_warning_presets_path | |||
else | |||
@warning_presets = AccountWarningPreset.all | |||
@warning_presets = AccountWarningPreset.alphabetic | |||
render :index | |||
end | |||
end | |||
@@ -52,7 +52,7 @@ module Admin | |||
end | |||
def warning_preset_params | |||
params.require(:account_warning_preset).permit(:text) | |||
params.require(:account_warning_preset).permit(:title, :text) | |||
end | |||
end | |||
end |
@@ -44,6 +44,10 @@ class Api::BaseController < ApplicationController | |||
render json: { error: 'There was a temporary problem serving your request, please try again' }, status: 503 | |||
end | |||
rescue_from Mastodon::RateLimitExceededError do | |||
render json: { error: I18n.t('errors.429') }, status: 429 | |||
end | |||
rescue_from ActionController::ParameterMissing do |e| | |||
render json: { error: e.to_s }, status: 400 | |||
end | |||
@@ -5,8 +5,6 @@ class Api::V1::Accounts::FollowerAccountsController < Api::BaseController | |||
before_action :set_account | |||
after_action :insert_pagination_headers | |||
respond_to :json | |||
def index | |||
@accounts = load_accounts | |||
render json: @accounts, each_serializer: REST::AccountSerializer | |||
@@ -27,7 +25,7 @@ class Api::V1::Accounts::FollowerAccountsController < Api::BaseController | |||
end | |||
def hide_results? | |||
(@account.user_hides_network? && current_account&.id != @account.id) || (current_account && @account.blocking?(current_account)) | |||
(@account.hides_followers? && current_account&.id != @account.id) || (current_account && @account.blocking?(current_account)) | |||
end | |||
def default_accounts | |||
@@ -5,8 +5,6 @@ class Api::V1::Accounts::FollowingAccountsController < Api::BaseController | |||
before_action :set_account | |||
after_action :insert_pagination_headers | |||
respond_to :json | |||
def index | |||
@accounts = load_accounts | |||
render json: @accounts, each_serializer: REST::AccountSerializer | |||
@@ -27,7 +25,7 @@ class Api::V1::Accounts::FollowingAccountsController < Api::BaseController | |||
end | |||
def hide_results? | |||
(@account.user_hides_network? && current_account&.id != @account.id) || (current_account && @account.blocking?(current_account)) | |||
(@account.hides_following? && current_account&.id != @account.id) || (current_account && @account.blocking?(current_account)) | |||
end | |||
def default_accounts | |||
@@ -4,8 +4,6 @@ class Api::V1::Accounts::IdentityProofsController < Api::BaseController | |||
before_action :require_user! | |||
before_action :set_account | |||
respond_to :json | |||
def index | |||
@proofs = @account.identity_proofs.active | |||
render json: @proofs, each_serializer: REST::IdentityProofSerializer | |||
@@ -5,8 +5,6 @@ class Api::V1::Accounts::ListsController < Api::BaseController | |||
before_action :require_user! | |||
before_action :set_account | |||
respond_to :json | |||
def index | |||
@lists = @account.lists.where(account: current_account) | |||
render json: @lists, each_serializer: REST::ListSerializer | |||
@@ -7,8 +7,6 @@ class Api::V1::Accounts::PinsController < Api::BaseController | |||
before_action :require_user! | |||
before_action :set_account | |||
respond_to :json | |||
def create | |||
AccountPin.create!(account: current_account, target_account: @account) | |||
render json: @account, serializer: REST::RelationshipSerializer, relationships: relationships_presenter | |||
@@ -4,8 +4,6 @@ class Api::V1::Accounts::RelationshipsController < Api::BaseController | |||
before_action -> { doorkeeper_authorize! :read, :'read:follows' } | |||
before_action :require_user! | |||
respond_to :json | |||
def inde |