Merge remote-tracking branch 'parent/main' into upstream-20240618
This commit is contained in:
commit
aa2cdc898a
271 changed files with 1839 additions and 1397 deletions
10
app/lib/access_grant_extension.rb
Normal file
10
app/lib/access_grant_extension.rb
Normal file
|
@ -0,0 +1,10 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module AccessGrantExtension
|
||||
extend ActiveSupport::Concern
|
||||
|
||||
included do
|
||||
scope :expired, -> { where.not(expires_in: nil).where('created_at + MAKE_INTERVAL(secs => expires_in) < NOW()') }
|
||||
scope :revoked, -> { where.not(revoked_at: nil).where(revoked_at: ...Time.now.utc) }
|
||||
end
|
||||
end
|
|
@ -9,6 +9,10 @@ module AccessTokenExtension
|
|||
has_many :web_push_subscriptions, class_name: 'Web::PushSubscription', inverse_of: :access_token
|
||||
|
||||
after_commit :push_to_streaming_api
|
||||
|
||||
scope :expired, -> { where.not(expires_in: nil).where('created_at + MAKE_INTERVAL(secs => expires_in) < NOW()') }
|
||||
scope :not_revoked, -> { where(revoked_at: nil) }
|
||||
scope :revoked, -> { where.not(revoked_at: nil).where(revoked_at: ...Time.now.utc) }
|
||||
end
|
||||
|
||||
def revoke(clock = Time)
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class ActivityPub::Activity::Flag < ActivityPub::Activity
|
||||
COMMENT_SIZE_LIMIT = 5000
|
||||
|
||||
def perform
|
||||
return if skip_reports?
|
||||
|
||||
|
@ -38,6 +40,6 @@ class ActivityPub::Activity::Flag < ActivityPub::Activity
|
|||
end
|
||||
|
||||
def report_comment
|
||||
(@json['content'] || '')[0...5000]
|
||||
(@json['content'] || '')[0...COMMENT_SIZE_LIMIT]
|
||||
end
|
||||
end
|
||||
|
|
|
@ -10,7 +10,7 @@ class Admin::Metrics::Dimension::SoftwareVersionsDimension < Admin::Metrics::Dim
|
|||
protected
|
||||
|
||||
def perform_query
|
||||
[mastodon_version, ruby_version, postgresql_version, redis_version, elasticsearch_version, libvips_version].compact
|
||||
[mastodon_version, ruby_version, postgresql_version, redis_version, elasticsearch_version, libvips_version, imagemagick_version, ffmpeg_version].compact
|
||||
end
|
||||
|
||||
def mastodon_version
|
||||
|
@ -28,8 +28,8 @@ class Admin::Metrics::Dimension::SoftwareVersionsDimension < Admin::Metrics::Dim
|
|||
{
|
||||
key: 'ruby',
|
||||
human_key: 'Ruby',
|
||||
value: "#{RUBY_VERSION}p#{RUBY_PATCHLEVEL}",
|
||||
human_value: RUBY_DESCRIPTION,
|
||||
value: RUBY_DESCRIPTION,
|
||||
human_value: "#{RUBY_VERSION}p#{RUBY_PATCHLEVEL}",
|
||||
}
|
||||
end
|
||||
|
||||
|
@ -82,6 +82,34 @@ class Admin::Metrics::Dimension::SoftwareVersionsDimension < Admin::Metrics::Dim
|
|||
}
|
||||
end
|
||||
|
||||
def imagemagick_version
|
||||
return if Rails.configuration.x.use_vips
|
||||
|
||||
version = `convert -version`.match(/Version: ImageMagick ([\d\.]+)/)[1]
|
||||
|
||||
{
|
||||
key: 'imagemagick',
|
||||
human_key: 'ImageMagick',
|
||||
value: version,
|
||||
human_value: version,
|
||||
}
|
||||
rescue Errno::ENOENT
|
||||
nil
|
||||
end
|
||||
|
||||
def ffmpeg_version
|
||||
version = `ffmpeg -version`.match(/ffmpeg version ([\d\.]+)/)[1]
|
||||
|
||||
{
|
||||
key: 'ffmpeg',
|
||||
human_key: 'FFmpeg',
|
||||
value: version,
|
||||
human_value: version,
|
||||
}
|
||||
rescue Errno::ENOENT
|
||||
nil
|
||||
end
|
||||
|
||||
def redis_info
|
||||
@redis_info ||= if redis.is_a?(Redis::Namespace)
|
||||
redis.redis.info
|
||||
|
|
|
@ -43,7 +43,7 @@ class Admin::Metrics::Measure::InstanceAccountsMeasure < Admin::Metrics::Measure
|
|||
SELECT count(*) FROM new_accounts
|
||||
) AS value
|
||||
FROM (
|
||||
SELECT generate_series(date_trunc('day', :start_at::timestamp)::date, date_trunc('day', :end_at::timestamp)::date, interval '1 day') AS period
|
||||
#{generated_series_days}
|
||||
) AS axis
|
||||
SQL
|
||||
end
|
||||
|
|
|
@ -44,7 +44,7 @@ class Admin::Metrics::Measure::InstanceFollowersMeasure < Admin::Metrics::Measur
|
|||
SELECT count(*) FROM new_followers
|
||||
) AS value
|
||||
FROM (
|
||||
SELECT generate_series(date_trunc('day', :start_at::timestamp)::date, date_trunc('day', :end_at::timestamp)::date, interval '1 day') AS period
|
||||
#{generated_series_days}
|
||||
) AS axis
|
||||
SQL
|
||||
end
|
||||
|
|
|
@ -44,7 +44,7 @@ class Admin::Metrics::Measure::InstanceFollowsMeasure < Admin::Metrics::Measure:
|
|||
SELECT count(*) FROM new_follows
|
||||
) AS value
|
||||
FROM (
|
||||
SELECT generate_series(date_trunc('day', :start_at::timestamp)::date, date_trunc('day', :end_at::timestamp)::date, interval '1 day') AS period
|
||||
#{generated_series_days}
|
||||
) AS axis
|
||||
SQL
|
||||
end
|
||||
|
|
|
@ -53,7 +53,7 @@ class Admin::Metrics::Measure::InstanceMediaAttachmentsMeasure < Admin::Metrics:
|
|||
SELECT COALESCE(SUM(size), 0) FROM new_media_attachments
|
||||
) AS value
|
||||
FROM (
|
||||
SELECT generate_series(date_trunc('day', :start_at::timestamp)::date, date_trunc('day', :end_at::timestamp)::date, interval '1 day') AS period
|
||||
#{generated_series_days}
|
||||
) AS axis
|
||||
SQL
|
||||
end
|
||||
|
|
|
@ -44,7 +44,7 @@ class Admin::Metrics::Measure::InstanceReportsMeasure < Admin::Metrics::Measure:
|
|||
SELECT count(*) FROM new_reports
|
||||
) AS value
|
||||
FROM (
|
||||
SELECT generate_series(date_trunc('day', :start_at::timestamp)::date, date_trunc('day', :end_at::timestamp)::date, interval '1 day') AS period
|
||||
#{generated_series_days}
|
||||
) AS axis
|
||||
SQL
|
||||
end
|
||||
|
|
|
@ -45,7 +45,7 @@ class Admin::Metrics::Measure::InstanceStatusesMeasure < Admin::Metrics::Measure
|
|||
SELECT count(*) FROM new_statuses
|
||||
) AS value
|
||||
FROM (
|
||||
SELECT generate_series(date_trunc('day', :start_at::timestamp)::date, date_trunc('day', :end_at::timestamp)::date, interval '1 day') AS period
|
||||
#{generated_series_days}
|
||||
) AS axis
|
||||
SQL
|
||||
end
|
||||
|
|
|
@ -32,7 +32,7 @@ class Admin::Metrics::Measure::NewUsersMeasure < Admin::Metrics::Measure::BaseMe
|
|||
SELECT count(*) FROM new_users
|
||||
) AS value
|
||||
FROM (
|
||||
SELECT generate_series(date_trunc('day', :start_at::timestamp)::date, date_trunc('day', :end_at::timestamp)::date, interval '1 day') AS period
|
||||
#{generated_series_days}
|
||||
) AS axis
|
||||
SQL
|
||||
end
|
||||
|
|
|
@ -32,7 +32,7 @@ class Admin::Metrics::Measure::OpenedReportsMeasure < Admin::Metrics::Measure::B
|
|||
SELECT count(*) FROM new_reports
|
||||
) AS value
|
||||
FROM (
|
||||
SELECT generate_series(date_trunc('day', :start_at::timestamp)::date, date_trunc('day', :end_at::timestamp)::date, interval '1 day') AS period
|
||||
#{generated_series_days}
|
||||
) AS axis
|
||||
SQL
|
||||
end
|
||||
|
|
|
@ -15,6 +15,14 @@ module Admin::Metrics::Measure::QueryHelper
|
|||
ActiveRecord::Base.sanitize_sql_array(sql_array)
|
||||
end
|
||||
|
||||
def generated_series_days
|
||||
Arel.sql(
|
||||
<<~SQL.squish
|
||||
SELECT generate_series(timestamp :start_at, :end_at, '1 day')::date AS period
|
||||
SQL
|
||||
)
|
||||
end
|
||||
|
||||
def account_domain_sql(include_subdomains)
|
||||
if include_subdomains
|
||||
"accounts.domain IN (SELECT domain FROM instances WHERE reverse('.' || domain) LIKE reverse('.' || :domain::text))"
|
||||
|
|
|
@ -32,7 +32,7 @@ class Admin::Metrics::Measure::ResolvedReportsMeasure < Admin::Metrics::Measure:
|
|||
SELECT count(*) FROM resolved_reports
|
||||
) AS value
|
||||
FROM (
|
||||
SELECT generate_series(date_trunc('day', :start_at::timestamp)::date, date_trunc('day', :end_at::timestamp)::date, interval '1 day') AS period
|
||||
#{generated_series_days}
|
||||
) AS axis
|
||||
SQL
|
||||
end
|
||||
|
|
|
@ -40,7 +40,7 @@ class Admin::Metrics::Measure::TagServersMeasure < Admin::Metrics::Measure::Base
|
|||
SELECT COUNT(*) FROM tag_servers
|
||||
) AS value
|
||||
FROM (
|
||||
SELECT generate_series(date_trunc('day', :start_at::timestamp)::date, date_trunc('day', :end_at::timestamp)::date, interval '1 day') AS period
|
||||
#{generated_series_days}
|
||||
) as axis
|
||||
SQL
|
||||
end
|
||||
|
|
|
@ -458,10 +458,7 @@ class FeedManager
|
|||
check_for_blocks = status.active_mentions.pluck(:account_id)
|
||||
check_for_blocks.push(status.in_reply_to_account) if status.reply? && !status.in_reply_to_account_id.nil?
|
||||
|
||||
should_filter = blocks_or_mutes?(receiver_id, check_for_blocks, :mentions) # Filter if it's from someone I blocked, in reply to someone I blocked, or mentioning someone I blocked (or muted)
|
||||
should_filter ||= status.account.silenced? && !Follow.exists?(account_id: receiver_id, target_account_id: status.account_id) # Filter if the account is silenced and I'm not following them
|
||||
|
||||
should_filter
|
||||
blocks_or_mutes?(receiver_id, check_for_blocks, :mentions) # Filter if it's from someone I blocked, in reply to someone I blocked, or mentioning someone I blocked (or muted)
|
||||
end
|
||||
|
||||
# Check if status should not be added to the list feed
|
||||
|
|
|
@ -42,9 +42,13 @@ class RedisConfiguration
|
|||
ENV['REDIS_URL']
|
||||
end
|
||||
|
||||
def redis_driver
|
||||
ENV.fetch('REDIS_DRIVER', 'hiredis') == 'ruby' ? :ruby : :hiredis
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def raw_connection
|
||||
Redis.new(url: url, driver: :hiredis)
|
||||
Redis.new(url: url, driver: redis_driver)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -9,12 +9,12 @@ class Vacuum::AccessTokensVacuum
|
|||
private
|
||||
|
||||
def vacuum_revoked_access_tokens!
|
||||
Doorkeeper::AccessToken.where.not(expires_in: nil).where('created_at + make_interval(secs => expires_in) < NOW()').in_batches.delete_all
|
||||
Doorkeeper::AccessToken.where.not(revoked_at: nil).where('revoked_at < NOW()').in_batches.delete_all
|
||||
Doorkeeper::AccessToken.expired.in_batches.delete_all
|
||||
Doorkeeper::AccessToken.revoked.in_batches.delete_all
|
||||
end
|
||||
|
||||
def vacuum_revoked_access_grants!
|
||||
Doorkeeper::AccessGrant.where.not(expires_in: nil).where('created_at + make_interval(secs => expires_in) < NOW()').in_batches.delete_all
|
||||
Doorkeeper::AccessGrant.where.not(revoked_at: nil).where('revoked_at < NOW()').in_batches.delete_all
|
||||
Doorkeeper::AccessGrant.expired.in_batches.delete_all
|
||||
Doorkeeper::AccessGrant.revoked.in_batches.delete_all
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue