Merge pull request #835 from ThibG/glitch-soc/merge-upstream
Merge upstream changes
This commit is contained in:
		
						commit
						b65daa25fa
					
				
							
								
								
									
										2
									
								
								Gemfile
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								Gemfile
									
									
									
									
									
								
							| @ -15,7 +15,7 @@ gem 'makara', '~> 0.4' | |||||||
| gem 'pghero', '~> 2.2' | gem 'pghero', '~> 2.2' | ||||||
| gem 'dotenv-rails', '~> 2.5' | gem 'dotenv-rails', '~> 2.5' | ||||||
| 
 | 
 | ||||||
| gem 'aws-sdk-s3', '~> 1.25', require: false | gem 'aws-sdk-s3', '~> 1.27', require: false | ||||||
| gem 'fog-core', '<= 2.1.0' | gem 'fog-core', '<= 2.1.0' | ||||||
| gem 'fog-openstack', '~> 0.3', require: false | gem 'fog-openstack', '~> 0.3', require: false | ||||||
| gem 'paperclip', '~> 6.0' | gem 'paperclip', '~> 6.0' | ||||||
|  | |||||||
							
								
								
									
										88
									
								
								Gemfile.lock
									
									
									
									
									
								
							
							
						
						
									
										88
									
								
								Gemfile.lock
									
									
									
									
									
								
							| @ -15,25 +15,25 @@ GIT | |||||||
| GEM | GEM | ||||||
|   remote: https://rubygems.org/ |   remote: https://rubygems.org/ | ||||||
|   specs: |   specs: | ||||||
|     actioncable (5.2.1) |     actioncable (5.2.1.1) | ||||||
|       actionpack (= 5.2.1) |       actionpack (= 5.2.1.1) | ||||||
|       nio4r (~> 2.0) |       nio4r (~> 2.0) | ||||||
|       websocket-driver (>= 0.6.1) |       websocket-driver (>= 0.6.1) | ||||||
|     actionmailer (5.2.1) |     actionmailer (5.2.1.1) | ||||||
|       actionpack (= 5.2.1) |       actionpack (= 5.2.1.1) | ||||||
|       actionview (= 5.2.1) |       actionview (= 5.2.1.1) | ||||||
|       activejob (= 5.2.1) |       activejob (= 5.2.1.1) | ||||||
|       mail (~> 2.5, >= 2.5.4) |       mail (~> 2.5, >= 2.5.4) | ||||||
|       rails-dom-testing (~> 2.0) |       rails-dom-testing (~> 2.0) | ||||||
|     actionpack (5.2.1) |     actionpack (5.2.1.1) | ||||||
|       actionview (= 5.2.1) |       actionview (= 5.2.1.1) | ||||||
|       activesupport (= 5.2.1) |       activesupport (= 5.2.1.1) | ||||||
|       rack (~> 2.0) |       rack (~> 2.0) | ||||||
|       rack-test (>= 0.6.3) |       rack-test (>= 0.6.3) | ||||||
|       rails-dom-testing (~> 2.0) |       rails-dom-testing (~> 2.0) | ||||||
|       rails-html-sanitizer (~> 1.0, >= 1.0.2) |       rails-html-sanitizer (~> 1.0, >= 1.0.2) | ||||||
|     actionview (5.2.1) |     actionview (5.2.1.1) | ||||||
|       activesupport (= 5.2.1) |       activesupport (= 5.2.1.1) | ||||||
|       builder (~> 3.1) |       builder (~> 3.1) | ||||||
|       erubi (~> 1.4) |       erubi (~> 1.4) | ||||||
|       rails-dom-testing (~> 2.0) |       rails-dom-testing (~> 2.0) | ||||||
| @ -44,20 +44,20 @@ GEM | |||||||
|       case_transform (>= 0.2) |       case_transform (>= 0.2) | ||||||
|       jsonapi-renderer (>= 0.1.1.beta1, < 0.3) |       jsonapi-renderer (>= 0.1.1.beta1, < 0.3) | ||||||
|     active_record_query_trace (1.5.4) |     active_record_query_trace (1.5.4) | ||||||
|     activejob (5.2.1) |     activejob (5.2.1.1) | ||||||
|       activesupport (= 5.2.1) |       activesupport (= 5.2.1.1) | ||||||
|       globalid (>= 0.3.6) |       globalid (>= 0.3.6) | ||||||
|     activemodel (5.2.1) |     activemodel (5.2.1.1) | ||||||
|       activesupport (= 5.2.1) |       activesupport (= 5.2.1.1) | ||||||
|     activerecord (5.2.1) |     activerecord (5.2.1.1) | ||||||
|       activemodel (= 5.2.1) |       activemodel (= 5.2.1.1) | ||||||
|       activesupport (= 5.2.1) |       activesupport (= 5.2.1.1) | ||||||
|       arel (>= 9.0) |       arel (>= 9.0) | ||||||
|     activestorage (5.2.1) |     activestorage (5.2.1.1) | ||||||
|       actionpack (= 5.2.1) |       actionpack (= 5.2.1.1) | ||||||
|       activerecord (= 5.2.1) |       activerecord (= 5.2.1.1) | ||||||
|       marcel (~> 0.3.1) |       marcel (~> 0.3.1) | ||||||
|     activesupport (5.2.1) |     activesupport (5.2.1.1) | ||||||
|       concurrent-ruby (~> 1.0, >= 1.0.2) |       concurrent-ruby (~> 1.0, >= 1.0.2) | ||||||
|       i18n (>= 0.7, < 2) |       i18n (>= 0.7, < 2) | ||||||
|       minitest (~> 5.1) |       minitest (~> 5.1) | ||||||
| @ -76,16 +76,16 @@ GEM | |||||||
|     av (0.9.0) |     av (0.9.0) | ||||||
|       cocaine (~> 0.5.3) |       cocaine (~> 0.5.3) | ||||||
|     aws-eventstream (1.0.1) |     aws-eventstream (1.0.1) | ||||||
|     aws-partitions (1.115.0) |     aws-partitions (1.118.0) | ||||||
|     aws-sdk-core (3.39.0) |     aws-sdk-core (3.41.0) | ||||||
|       aws-eventstream (~> 1.0) |       aws-eventstream (~> 1.0) | ||||||
|       aws-partitions (~> 1.0) |       aws-partitions (~> 1.0) | ||||||
|       aws-sigv4 (~> 1.0) |       aws-sigv4 (~> 1.0) | ||||||
|       jmespath (~> 1.0) |       jmespath (~> 1.0) | ||||||
|     aws-sdk-kms (1.12.0) |     aws-sdk-kms (1.13.0) | ||||||
|       aws-sdk-core (~> 3, >= 3.39.0) |       aws-sdk-core (~> 3, >= 3.39.0) | ||||||
|       aws-sigv4 (~> 1.0) |       aws-sigv4 (~> 1.0) | ||||||
|     aws-sdk-s3 (1.25.0) |     aws-sdk-s3 (1.27.0) | ||||||
|       aws-sdk-core (~> 3, >= 3.39.0) |       aws-sdk-core (~> 3, >= 3.39.0) | ||||||
|       aws-sdk-kms (~> 1) |       aws-sdk-kms (~> 1) | ||||||
|       aws-sigv4 (~> 1.0) |       aws-sigv4 (~> 1.0) | ||||||
| @ -323,16 +323,16 @@ GEM | |||||||
|     loofah (2.2.3) |     loofah (2.2.3) | ||||||
|       crass (~> 1.0.2) |       crass (~> 1.0.2) | ||||||
|       nokogiri (>= 1.5.9) |       nokogiri (>= 1.5.9) | ||||||
|     mail (2.7.0) |     mail (2.7.1) | ||||||
|       mini_mime (>= 0.1.1) |       mini_mime (>= 0.1.1) | ||||||
|     makara (0.4.0) |     makara (0.4.0) | ||||||
|       activerecord (>= 3.0.0) |       activerecord (>= 3.0.0) | ||||||
|     marcel (0.3.2) |     marcel (0.3.3) | ||||||
|       mimemagic (~> 0.3.2) |       mimemagic (~> 0.3.2) | ||||||
|     mario-redis-lock (1.2.1) |     mario-redis-lock (1.2.1) | ||||||
|       redis (>= 3.0.5) |       redis (>= 3.0.5) | ||||||
|     memory_profiler (0.9.12) |     memory_profiler (0.9.12) | ||||||
|     method_source (0.9.1) |     method_source (0.9.2) | ||||||
|     microformats (4.0.7) |     microformats (4.0.7) | ||||||
|       json |       json | ||||||
|       nokogiri |       nokogiri | ||||||
| @ -431,18 +431,18 @@ GEM | |||||||
|       rack |       rack | ||||||
|     rack-test (1.1.0) |     rack-test (1.1.0) | ||||||
|       rack (>= 1.0, < 3) |       rack (>= 1.0, < 3) | ||||||
|     rails (5.2.1) |     rails (5.2.1.1) | ||||||
|       actioncable (= 5.2.1) |       actioncable (= 5.2.1.1) | ||||||
|       actionmailer (= 5.2.1) |       actionmailer (= 5.2.1.1) | ||||||
|       actionpack (= 5.2.1) |       actionpack (= 5.2.1.1) | ||||||
|       actionview (= 5.2.1) |       actionview (= 5.2.1.1) | ||||||
|       activejob (= 5.2.1) |       activejob (= 5.2.1.1) | ||||||
|       activemodel (= 5.2.1) |       activemodel (= 5.2.1.1) | ||||||
|       activerecord (= 5.2.1) |       activerecord (= 5.2.1.1) | ||||||
|       activestorage (= 5.2.1) |       activestorage (= 5.2.1.1) | ||||||
|       activesupport (= 5.2.1) |       activesupport (= 5.2.1.1) | ||||||
|       bundler (>= 1.3.0) |       bundler (>= 1.3.0) | ||||||
|       railties (= 5.2.1) |       railties (= 5.2.1.1) | ||||||
|       sprockets-rails (>= 2.0.0) |       sprockets-rails (>= 2.0.0) | ||||||
|     rails-controller-testing (1.0.2) |     rails-controller-testing (1.0.2) | ||||||
|       actionpack (~> 5.x, >= 5.0.1) |       actionpack (~> 5.x, >= 5.0.1) | ||||||
| @ -458,9 +458,9 @@ GEM | |||||||
|       railties (>= 5.0, < 6) |       railties (>= 5.0, < 6) | ||||||
|     rails-settings-cached (0.6.6) |     rails-settings-cached (0.6.6) | ||||||
|       rails (>= 4.2.0) |       rails (>= 4.2.0) | ||||||
|     railties (5.2.1) |     railties (5.2.1.1) | ||||||
|       actionpack (= 5.2.1) |       actionpack (= 5.2.1.1) | ||||||
|       activesupport (= 5.2.1) |       activesupport (= 5.2.1.1) | ||||||
|       method_source |       method_source | ||||||
|       rake (>= 0.8.7) |       rake (>= 0.8.7) | ||||||
|       thor (>= 0.19.0, < 2.0) |       thor (>= 0.19.0, < 2.0) | ||||||
| @ -653,7 +653,7 @@ DEPENDENCIES | |||||||
|   active_record_query_trace (~> 1.5) |   active_record_query_trace (~> 1.5) | ||||||
|   addressable (~> 2.5) |   addressable (~> 2.5) | ||||||
|   annotate (~> 2.7) |   annotate (~> 2.7) | ||||||
|   aws-sdk-s3 (~> 1.25) |   aws-sdk-s3 (~> 1.27) | ||||||
|   better_errors (~> 2.5) |   better_errors (~> 2.5) | ||||||
|   binding_of_caller (~> 0.7) |   binding_of_caller (~> 0.7) | ||||||
|   bootsnap (~> 1.3) |   bootsnap (~> 1.3) | ||||||
|  | |||||||
| @ -4,6 +4,16 @@ require 'ipaddr' | |||||||
| require 'socket' | require 'socket' | ||||||
| require 'resolv' | require 'resolv' | ||||||
| 
 | 
 | ||||||
|  | # Monkey-patch the HTTP.rb timeout class to avoid using a timeout block | ||||||
|  | # around the Socket#open method, since we use our own timeout blocks inside | ||||||
|  | # that method | ||||||
|  | class HTTP::Timeout::PerOperation | ||||||
|  |   def connect(socket_class, host, port, nodelay = false) | ||||||
|  |     @socket = socket_class.open(host, port) | ||||||
|  |     @socket.setsockopt(Socket::IPPROTO_TCP, Socket::TCP_NODELAY, 1) if nodelay | ||||||
|  |   end | ||||||
|  | end | ||||||
|  | 
 | ||||||
| class Request | class Request | ||||||
|   REQUEST_TARGET = '(request-target)' |   REQUEST_TARGET = '(request-target)' | ||||||
| 
 | 
 | ||||||
| @ -95,7 +105,11 @@ class Request | |||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   def timeout |   def timeout | ||||||
|     { connect: nil, read: 10, write: 10 } |     # We enforce a 1s timeout on DNS resolving, 10s timeout on socket opening | ||||||
|  |     # and 5s timeout on the TLS handshake, meaning the worst case should take | ||||||
|  |     # about 16s in total | ||||||
|  | 
 | ||||||
|  |     { connect: 5, read: 10, write: 10 } | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   def http_client |   def http_client | ||||||
| @ -163,7 +177,11 @@ class Request | |||||||
|           end |           end | ||||||
|         end |         end | ||||||
| 
 | 
 | ||||||
|         raise outer_e if outer_e |         if outer_e | ||||||
|  |           raise outer_e | ||||||
|  |         else | ||||||
|  |           raise SocketError, "No address for #{host}" | ||||||
|  |         end | ||||||
|       end |       end | ||||||
| 
 | 
 | ||||||
|       alias new open |       alias new open | ||||||
|  | |||||||
| @ -18,7 +18,7 @@ class InstancePresenter | |||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   def user_count |   def user_count | ||||||
|     Rails.cache.fetch('user_count') { User.confirmed.count } |     Rails.cache.fetch('user_count') { User.confirmed.joins(:account).merge(Account.without_suspended).count } | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   def status_count |   def status_count | ||||||
|  | |||||||
| @ -14,9 +14,10 @@ | |||||||
|       = render 'application/card', account: @account |       = render 'application/card', account: @account | ||||||
| 
 | 
 | ||||||
|     .fields-row__column.fields-group.fields-row__column-6 |     .fields-row__column.fields-group.fields-row__column-6 | ||||||
|  |       = f.input :header, wrapper: :with_label, input_html: { accept: AccountHeader::IMAGE_MIME_TYPES.join(',') }, hint: t('simple_form.hints.defaults.header', dimensions: '1500x500', size: number_to_human_size(AccountHeader::LIMIT)) | ||||||
|  | 
 | ||||||
|       = f.input :avatar, wrapper: :with_label, input_html: { accept: AccountAvatar::IMAGE_MIME_TYPES.join(',') }, hint: t('simple_form.hints.defaults.avatar', dimensions: '400x400', size: number_to_human_size(AccountAvatar::LIMIT)) |       = f.input :avatar, wrapper: :with_label, input_html: { accept: AccountAvatar::IMAGE_MIME_TYPES.join(',') }, hint: t('simple_form.hints.defaults.avatar', dimensions: '400x400', size: number_to_human_size(AccountAvatar::LIMIT)) | ||||||
| 
 | 
 | ||||||
|       = f.input :header, wrapper: :with_label, input_html: { accept: AccountHeader::IMAGE_MIME_TYPES.join(',') }, hint: t('simple_form.hints.defaults.header', dimensions: '1500x500', size: number_to_human_size(AccountHeader::LIMIT)) |  | ||||||
| 
 | 
 | ||||||
|   %hr.spacer/ |   %hr.spacer/ | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -11,6 +11,8 @@ class ActivityPub::DeliveryWorker | |||||||
|   HEADERS = { 'Content-Type' => 'application/activity+json' }.freeze |   HEADERS = { 'Content-Type' => 'application/activity+json' }.freeze | ||||||
| 
 | 
 | ||||||
|   def perform(json, source_account_id, inbox_url, options = {}) |   def perform(json, source_account_id, inbox_url, options = {}) | ||||||
|  |     return if DeliveryFailureTracker.unavailable?(inbox_url) | ||||||
|  | 
 | ||||||
|     @options        = options.with_indifferent_access |     @options        = options.with_indifferent_access | ||||||
|     @json           = json |     @json           = json | ||||||
|     @source_account = Account.find(source_account_id) |     @source_account = Account.find(source_account_id) | ||||||
|  | |||||||
| @ -8,7 +8,7 @@ fr: | |||||||
|     failure: |     failure: | ||||||
|       already_authenticated: Vous êtes déjà connecté⋅e. |       already_authenticated: Vous êtes déjà connecté⋅e. | ||||||
|       inactive: Votre compte n’est pas encore activé. |       inactive: Votre compte n’est pas encore activé. | ||||||
|       invalid: "%{authentication_keys} incorrect." |       invalid: "%{authentication_keys} invalide." | ||||||
|       last_attempt: Vous avez droit à une tentative avant que votre compte ne soit verrouillé. |       last_attempt: Vous avez droit à une tentative avant que votre compte ne soit verrouillé. | ||||||
|       locked: Votre compte est verrouillé. |       locked: Votre compte est verrouillé. | ||||||
|       not_found_in_database: "%{authentication_keys} invalide." |       not_found_in_database: "%{authentication_keys} invalide." | ||||||
|  | |||||||
| @ -8,7 +8,7 @@ hr: | |||||||
|       invalid: Nevaljan %{authentication_keys} ili lozinka. |       invalid: Nevaljan %{authentication_keys} ili lozinka. | ||||||
|       last_attempt: Imaš još jedan pokušaj prije no što ti se račun zaključa. |       last_attempt: Imaš još jedan pokušaj prije no što ti se račun zaključa. | ||||||
|       locked: Tvoj račun je zaključan. |       locked: Tvoj račun je zaključan. | ||||||
|       not_found_in_database: Nevaljani %{authentication_keys} ili lozinka. |       not_found_in_database: Nevaljan %{authentication_keys} ili lozinka. | ||||||
|       send_instructions: Primit ćeš email sa uputama kako potvrditi  svoju email adresu za nekoliko minuta. |       send_instructions: Primit ćeš email sa uputama kako potvrditi  svoju email adresu za nekoliko minuta. | ||||||
|       send_paranoid_instructions: Ako tvoja email adresa postoji u našoj bazi podataka, primit ćeš email sa uputama kako ju potvrditi za nekoliko minuta. |       send_paranoid_instructions: Ako tvoja email adresa postoji u našoj bazi podataka, primit ćeš email sa uputama kako ju potvrditi za nekoliko minuta. | ||||||
|       timeout: Tvoja sesija je istekla. Molimo te, prijavi se ponovo kako bi nastavio. |       timeout: Tvoja sesija je istekla. Molimo te, prijavi se ponovo kako bi nastavio. | ||||||
|  | |||||||
| @ -11,7 +11,7 @@ uk: | |||||||
|       invalid: Неправильний %{authentication_keys} або пароль. |       invalid: Неправильний %{authentication_keys} або пароль. | ||||||
|       last_attempt: У вас є остання спроба, після якої вхід буде заблокований. |       last_attempt: У вас є остання спроба, після якої вхід буде заблокований. | ||||||
|       locked: Ваш акаунт заблокований. |       locked: Ваш акаунт заблокований. | ||||||
|       not_found_in_database: Неправильні %{authentication_keys} або пароль. |       not_found_in_database: Неправильний %{authentication_keys} або пароль. | ||||||
|       timeout: Ваша сесія вичерпана. Будь ласка, зайдіть знову, щоб продовжити. |       timeout: Ваша сесія вичерпана. Будь ласка, зайдіть знову, щоб продовжити. | ||||||
|       unauthenticated: Для продовження Вам потрібно увійти або зареєструватися. |       unauthenticated: Для продовження Вам потрібно увійти або зареєструватися. | ||||||
|       unconfirmed: Для продовження Вам потрібно підтвердити Вашу поштову скриньку. |       unconfirmed: Для продовження Вам потрібно підтвердити Вашу поштову скриньку. | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user