Merge branch 'main' into glitch-soc/merge-upstream
This commit is contained in:
		
						commit
						534b0a2704
					
				
							
								
								
									
										22
									
								
								.github/ISSUE_TEMPLATE/1.bug_report.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										22
									
								
								.github/ISSUE_TEMPLATE/1.bug_report.yml
									
									
									
									
										vendored
									
									
								
							@ -8,6 +8,17 @@ body:
 | 
				
			|||||||
        Make sure that you are submitting a new bug that was not previously reported or already fixed.
 | 
					        Make sure that you are submitting a new bug that was not previously reported or already fixed.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Please use a concise and distinct title for the issue.
 | 
					        Please use a concise and distinct title for the issue.
 | 
				
			||||||
 | 
					  - type: textarea
 | 
				
			||||||
 | 
					    attributes:
 | 
				
			||||||
 | 
					      label: Steps to reproduce the problem
 | 
				
			||||||
 | 
					      description: What were you trying to do?
 | 
				
			||||||
 | 
					      value: |
 | 
				
			||||||
 | 
					        1.
 | 
				
			||||||
 | 
					        2.
 | 
				
			||||||
 | 
					        3.
 | 
				
			||||||
 | 
					        ...
 | 
				
			||||||
 | 
					    validations:
 | 
				
			||||||
 | 
					      required: true
 | 
				
			||||||
  - type: input
 | 
					  - type: input
 | 
				
			||||||
    attributes:
 | 
					    attributes:
 | 
				
			||||||
      label: Expected behaviour
 | 
					      label: Expected behaviour
 | 
				
			||||||
@ -20,17 +31,6 @@ body:
 | 
				
			|||||||
      description: What happened?
 | 
					      description: What happened?
 | 
				
			||||||
    validations:
 | 
					    validations:
 | 
				
			||||||
      required: true
 | 
					      required: true
 | 
				
			||||||
  - type: textarea
 | 
					 | 
				
			||||||
    attributes:
 | 
					 | 
				
			||||||
      label: Steps to reproduce the problem
 | 
					 | 
				
			||||||
      description: What were you trying to do?
 | 
					 | 
				
			||||||
      value: |
 | 
					 | 
				
			||||||
        1.
 | 
					 | 
				
			||||||
        2.
 | 
					 | 
				
			||||||
        3.
 | 
					 | 
				
			||||||
        ...
 | 
					 | 
				
			||||||
    validations:
 | 
					 | 
				
			||||||
      required: true
 | 
					 | 
				
			||||||
  - type: textarea
 | 
					  - type: textarea
 | 
				
			||||||
    attributes:
 | 
					    attributes:
 | 
				
			||||||
      label: Specifications
 | 
					      label: Specifications
 | 
				
			||||||
 | 
				
			|||||||
@ -1 +1 @@
 | 
				
			|||||||
3.0.2
 | 
					3.0.3
 | 
				
			||||||
 | 
				
			|||||||
@ -27,7 +27,7 @@ RUN ARCH= && \
 | 
				
			|||||||
	mv node-v$NODE_VER-linux-$ARCH /opt/node
 | 
						mv node-v$NODE_VER-linux-$ARCH /opt/node
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Install Ruby 3.0
 | 
					# Install Ruby 3.0
 | 
				
			||||||
ENV RUBY_VER="3.0.2"
 | 
					ENV RUBY_VER="3.0.3"
 | 
				
			||||||
RUN apt-get update && \
 | 
					RUN apt-get update && \
 | 
				
			||||||
  apt-get install -y --no-install-recommends build-essential \
 | 
					  apt-get install -y --no-install-recommends build-essential \
 | 
				
			||||||
    bison libyaml-dev libgdbm-dev libreadline-dev libjemalloc-dev \
 | 
					    bison libyaml-dev libgdbm-dev libreadline-dev libjemalloc-dev \
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										30
									
								
								FEDERATION.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								FEDERATION.md
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,30 @@
 | 
				
			|||||||
 | 
					## ActivityPub federation in Mastodon
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Mastodon largely follows the ActivityPub server-to-server specification but it makes uses of some non-standard extensions, some of which are required for interacting with Mastodon at all.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Supported vocabulary: https://docs.joinmastodon.org/spec/activitypub/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Required extensions
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### Webfinger
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					In Mastodon, users are identified by a `username` and `domain` pair (e.g., `Gargron@mastodon.social`).
 | 
				
			||||||
 | 
					This is used both for discovery and for unambiguously mentioning users across the fediverse. Furthermore, this is part of Mastodon's database design from its very beginnings.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					As a result, Mastodon requires that each ActivityPub actor uniquely maps back to an `acct:` URI that can be resolved via WebFinger.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					More information and examples are available at: https://docs.joinmastodon.org/spec/webfinger/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### HTTP Signatures
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					In order to authenticate activities, Mastodon relies on HTTP Signatures, signing every `POST` and `GET` request to other ActivityPub implementations on behalf of the user authoring an activity (for `POST` requests) or an actor representing the Mastodon server itself (for most `GET` requests).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Mastodon requires all `POST` requests to be signed, and MAY require `GET` requests to be signed, depending on the configuration of the Mastodon server.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					More information on HTTP Signatures, as well as examples, can be found here: https://docs.joinmastodon.org/spec/security/#http
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Optional extensions
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Linked-Data Signatures: https://docs.joinmastodon.org/spec/security/#ld
 | 
				
			||||||
 | 
					- Bearcaps: https://docs.joinmastodon.org/spec/bearcaps/
 | 
				
			||||||
 | 
					- Followers collection synchronization: https://git.activitypub.dev/ActivityPubDev/Fediverse-Enhancement-Proposals/src/branch/main/feps/fep-8fcf.md
 | 
				
			||||||
@ -15,7 +15,7 @@ class CanonicalEmailBlock < ApplicationRecord
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  belongs_to :reference_account, class_name: 'Account'
 | 
					  belongs_to :reference_account, class_name: 'Account'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  validates :canonical_email_hash, presence: true
 | 
					  validates :canonical_email_hash, presence: true, uniqueness: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def email=(email)
 | 
					  def email=(email)
 | 
				
			||||||
    self.canonical_email_hash = email_to_canonical_email_hash(email)
 | 
					    self.canonical_email_hash = email_to_canonical_email_hash(email)
 | 
				
			||||||
 | 
				
			|||||||
@ -5,6 +5,37 @@ RSpec.describe Account, type: :model do
 | 
				
			|||||||
    let(:bob) { Fabricate(:account, username: 'bob') }
 | 
					    let(:bob) { Fabricate(:account, username: 'bob') }
 | 
				
			||||||
    subject { Fabricate(:account) }
 | 
					    subject { Fabricate(:account) }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    describe '#suspend!' do
 | 
				
			||||||
 | 
					      it 'marks the account as suspended' do
 | 
				
			||||||
 | 
					        subject.suspend!
 | 
				
			||||||
 | 
					        expect(subject.suspended?).to be true
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      it 'creates a deletion request' do
 | 
				
			||||||
 | 
					        subject.suspend!
 | 
				
			||||||
 | 
					        expect(AccountDeletionRequest.where(account: subject).exists?).to be true
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      context 'when the account is of a local user' do
 | 
				
			||||||
 | 
					        let!(:subject) { Fabricate(:account, user: Fabricate(:user, email: 'foo+bar@domain.org')) }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        it 'creates a canonical domain block' do
 | 
				
			||||||
 | 
					          subject.suspend!
 | 
				
			||||||
 | 
					          expect(CanonicalEmailBlock.block?(subject.user_email)).to be true
 | 
				
			||||||
 | 
					        end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        context 'when a canonical domain block already exists for that email' do
 | 
				
			||||||
 | 
					          before do
 | 
				
			||||||
 | 
					            Fabricate(:canonical_email_block, email: subject.user_email)
 | 
				
			||||||
 | 
					          end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          it 'does not raise an error' do
 | 
				
			||||||
 | 
					            expect { subject.suspend! }.not_to raise_error
 | 
				
			||||||
 | 
					          end
 | 
				
			||||||
 | 
					        end
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    describe '#follow!' do
 | 
					    describe '#follow!' do
 | 
				
			||||||
      it 'creates a follow' do
 | 
					      it 'creates a follow' do
 | 
				
			||||||
        follow = subject.follow!(bob)
 | 
					        follow = subject.follow!(bob)
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user