Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Subdomains #1032

Closed
1 task done
tomitm opened this issue Apr 6, 2017 · 17 comments · Fixed by #1267
Closed
1 task done

Subdomains #1032

tomitm opened this issue Apr 6, 2017 · 17 comments · Fixed by #1267
Assignees

Comments

@tomitm
Copy link

tomitm commented Apr 6, 2017

I haven't gotten to running my own instance yet (soon!), but I'm seeing a lot of @username@mastodon.example.com in toots, instead of @username@example.com.

With email, you can host a server and access your mail at mail.example.com but still address to username@example.com thanks to MX DNS records. Users get a simple email address, and the servers figure out the rest.

If you have to use a subdomain because you already have something else on at example.com, it seems like you end up having to use username@mastodon.example.com as your username instead, unless you create a new domain, like example.social.

It looks like there's a LOCAL_DOMAIN variable, but I haven't seen anything akin to email's MX record. I can't find much documentation on LOCAL_DOMAIN. I'm not sure if this is already there, but hasn't been fully documented/communicated yet, or this just hasn't happened yet.


  • I searched or browsed the repo’s other issues to ensure this is not a duplicate.
@tomitm
Copy link
Author

tomitm commented Apr 6, 2017

Actually, I think I'm focusing on email/DNS too closely here... I didn't notice WebFinger seems to serve the role of account resolution (I think?). 🤔

Can WebFinger alias example.com to mastodon.example.com while keeping the subdomain transparent to the user?

@JantsoP
Copy link
Contributor

JantsoP commented Apr 6, 2017

Just set the LOCAL_DOMAIN as an sub-domain, make an A record to your DNS and follow the MX creation instructions for your SMTP provider (MailGun etc.) After that, remember to mark the servername in nginx as the same sub-domain as you set in LOCAL_DOMAIN

@tomitm
Copy link
Author

tomitm commented Apr 6, 2017

As far as I can tell, your full address is @username@LOCAL_DOMAIN, so setting LOCAL_DOMAIN to your subdomain isn't what I'm after. Did I misunderstand this?

I'm suspecting setting LOCAL_DOMAIN to example.com and only serving Mastodon requests at mastodon.example.com wouldn't work right now, unless WebFinger was available at example.com/.well-known/ to point the federated servers to the correct subdomain.

@plinss
Copy link

plinss commented Apr 7, 2017

In other systems, like XMPP and Matrix, this is achieved by using a SRV record, for example you can have an XMPP address of "user@example.com" and your XMPP server at im.example.com by setting the SRV record:
_xmpp-server._tcp.example.com 0 5 5269 im.example.com.

Note this also has the advantage of specifying the port number (5269 in the above example) as well as load balancing (by using multiple SRV records) and neither the port, nor the actual name of the server, need to appear in the user's address.

@lilyball
Copy link

lilyball commented Apr 7, 2017

I would really love to see support for this. More generally, I want to be able to use my email address as my Mastodon username, but of course my email's domain already has a website hosted there.

@ineffyble
Copy link
Member

Unfortunately, Mastodon strives to be compatible with the OStatus set of protocols, and to my knowledge they don't support this type of flexibility.

@ClearlyClaire
Copy link
Contributor

I'd have to read OStatus, but wouldn't Mastodon just need to use a base URL for its APIs and assets that is independent of the domain it serves? (this domain would still have to serve the webfinger requests)

I'm looking into that, but can't find how account_url, api_salmon_url etc. are defined in Mastodon

@Gargron
Copy link
Member

Gargron commented Apr 8, 2017

I agree that it should be possible to do this by proxying /.well-known to Mastodon from the root domain. However currently the code expects all URLs to come from the definition of LOCAL_DOMAIN, i.e. that's for both "what do I consider to be my own domain identifier wrt. federation" and "how to generate absolute URLs for links". For the subdomain/domain split to work, these two functions need to be split, Mastodon must think that the root domain is its identifier wrt. federation, but use the subdomain to generate any URLs.

@plinss
Copy link

plinss commented Apr 8, 2017

@ineffyble Understood, I wasn't proposing that Mastodon break with OStatus, but rather that we lead an effort to add SRV support to OStatus, perhaps with Mastodon as an initial, experimental implementation.

@Gargron proxying webfinger from the base domain would be a reasonable first step, and would likely solve most uses (and be much appreciated), but can collide with other webfinger services.

@Shnoulle
Copy link

Shnoulle commented Apr 8, 2017

I'm not sure mastodon or gnusocial must 'hack' the final user name, but maybe.

But doing the webfinger on another domain seems really another part : it's the base domain to do it. Give some ruby code (or python or php) .

I explain :

  1. I set me@example.com in webfinger of example.org
  2. Set it to me@mastodon.example.org
  3. A mastodon user can connect to me with me@example.org
  4. I'm tired of mastodon, and then want to move to postactiv
  5. I update my webfinger to go to me@postactiv.example.net
    => It's great if other mastodon instance follow me to my new 'me', but old notice/toot still only on mastodon.example.org and not on postactiv.example.net (except if i use a tool to move all notice/toot : and this tool didn't exist currently).

The only needed part is: allow in some condition update final user with his webfinger. I my opinion.

@lilyball
Copy link

lilyball commented Apr 9, 2017

FWIW, I think a SRV record is a far better approach than proxying WebFinger from the root domain to the subdomain. The reason being, Mastodon uses WebFinger, but other things could too, and proxying WebFinger means acct:foo@example.com is always going to be treated as a Mastadon user even if example.com hosts other services that use WebFinger. Whereas with a SRV record, Mastadon would then send WebFinger specifically to the Mastadon instance instead of to the root domain.

@tomitm
Copy link
Author

tomitm commented Apr 9, 2017

@kballard I read through the WebFinger spec earlier and I don't actually think that will be a problem.

The subject isn't the relevant part of the response, it's actually the rel links. Also note that the spec allows you to filter the response by rel.

As for hosting multiple services on the same domain, I don't believe that concerns Mastodon. That's up to the service you're using to proxy/serve Mastodon's WebFinger requests at the root domain to aggregate the responses from all services.

@ClearlyClaire
Copy link
Contributor

While working on a patch to add this feature, I stumbled on something: it is not clear how Mastodon should handle other instances where the domain name and web front-end URLs are different.

Indeed, if I understand OStatus correctly, users are identified by URIs that do not need to be of the form user@example.org. Furthermore, in toots, users are mentioned with links with their public web profile, which in our case would be https://social.example.org/users/user. This page in turn links to the ATOM feed https://somedomain.org/somepath.atom, which is fetched by Mastodon if an user it doesn't know was referenced. In this case, it assumes the identifier is author@somedomain.org where author is the value of node at path //xmlns:author/xmlns:name.

This is not an issue for accounts known to the Mastodon instance before the mention, as it will search for known users with the same profile URL, but this is problematic for otherwise unknown accounts. Since OStatus doesn't use the user@domain identifier scheme, this is not completely obvious to me how to fix, but I guess Mastodon could try to webfinger on //xmlns:author/xmlns:email, which is the Mastodon user identifier in case of Mastodon instances.

@Gargron
Copy link
Member

Gargron commented Apr 9, 2017

Remote accounts store uri as-is, regardless whether it's of the form that looks like an e-mail, like a URL, or maybe a random UUID. But the main schema is based around the concept of "usernames" on "domains", and this is rooted in Webfinger - you ask Webfinger at the domain whether a username on it exists, and it answers. Then Webfinger links to feeds, profile URLs, etc - that is all secondary.

@Gargron
Copy link
Member

Gargron commented Apr 9, 2017

@kballard @tomitm Indeed, if you wanted you could make your own Webfinger endpoint linking to all services you want, you'd just have to link to the ones from Mastodon manually somehow or by proxying parts of the response.

@ClearlyClaire
Copy link
Contributor

@Gargron indeed, but an account won't be added unless discovered via Webfinger, and mentions to unknown profile pages will use the atom feed's URL to discover the domain used to query Webfinger. I think using the value of the “email” node if it exists might be a better way to do it.

ClearlyClaire added a commit to ClearlyClaire/mastodon that referenced this issue Apr 9, 2017
…om URL

The goal of this change is to enhance Mastodon's handling of remote domains
for which the APIs reside on a different host (see issue mastodon#1032).

Indeed, when a remote user unknown to Mastodon is mentionned, only its profile
URL (e.g. https://social.example.org/users/User) is known, and Mastodon has to
build a @username@domain handle for it. To do so, Mastodon fetches the user's
atom feed (e.g., https://social.example.org/users/User.atom) and uses its
content to get the username part of the handle, and the URL's host part to
build the domain (e.g., @user@social.example.org). This handle is then used
for a Webfinger request.

In the case where example.org serves the Webfinger info for @user@example.org
and all feeds and APIs are hosted at social.example.org, Mastodon will still
build @user@social.example.org and fail at resolving the account's details
through Webfinger.

This patch changes this behaviour by using the author's email address from
the atom feed to build the handle. In Mastodon-generated atom feeds, the
email address is always the handle it expects for federation.
Gargron pushed a commit that referenced this issue Apr 9, 2017
…om URL (#1344)

The goal of this change is to enhance Mastodon's handling of remote domains
for which the APIs reside on a different host (see issue #1032).

Indeed, when a remote user unknown to Mastodon is mentionned, only its profile
URL (e.g. https://social.example.org/users/User) is known, and Mastodon has to
build a @username@domain handle for it. To do so, Mastodon fetches the user's
atom feed (e.g., https://social.example.org/users/User.atom) and uses its
content to get the username part of the handle, and the URL's host part to
build the domain (e.g., @user@social.example.org). This handle is then used
for a Webfinger request.

In the case where example.org serves the Webfinger info for @user@example.org
and all feeds and APIs are hosted at social.example.org, Mastodon will still
build @user@social.example.org and fail at resolving the account's details
through Webfinger.

This patch changes this behaviour by using the author's email address from
the atom feed to build the handle. In Mastodon-generated atom feeds, the
email address is always the handle it expects for federation.
nolanlawson added a commit to tootcafe/mastodon that referenced this issue Apr 11, 2017
* added Esperanto (eo)

* Added Esperanto translation inside the javascripts folder

* add persistance to Postresql container

* add volume for redis container

* add mastodon.cloud to List of instances

* Update List-of-Mastodon-instances.md

* Add niu.moe, cuz it's kawaii

* Added im-in.space

* Fix wrong url in scalingo.json

* Make scalingo doc clearer

* Add social.bytestemplar.com to instances list

* Update Production-guide.md

Corrected spelling error for "install"

* Added digitalhumanities.club instance

* added instance

* Update components.scss

Use nicer scrollbars in MS edge

* Adding masto.raildecake.fr, french instance 🌻🐘

* Add good-dragon.com

* Update description on good-dragon.com

* Add Rich.GOP

* Update List-of-Mastodon-instances.md

* Adds mtndevelopment

* Update List-of-Mastodon-instances.md

* Add mastodon.nuzgo.net

* Description in instance list for mastodon.ninetailed.uk

* Added off-the-clock.us to the list of instances

* Catch more errors in process_follows so it doesn't fail

* Fix notifications delivered to wrong pubsub channel, optimized RemoveStatusService,
slightly optimized FanOutOnWriteService again

* Add Northeastern University Mastodon

* Fix wrong pubsub channel on public timelines

* Add infinimatix.net to instance list

* Add mastodon.elao.com instance

* Update List-of-Mastodon-instances.md

* Optimize Dockerfile

Optimize Dockerfile, reduce build time.

* Update List-of-Mastodon-instances.md

Add mastodon.land instance

* Added an instance to the list

Just launched https://hackertribe.io/, added it to the list.

* Updates slugignore.

* add my instance

* Add meow.social

* Update List-of-Mastodon-instances.md

* Linux users must enable NFS for Vagrant

* Add an instance.

* Update List-of-Mastodon-instances.md

* Update List-of-Mastodon-instances.md

* Add manx.social instance

* add metadata to Dockerfile

* add Docker microbadger to README.md

* Added pericles.world in the list of instances

* Reduce size of background-photo.jpeg

Reduced by running through `guetzli` image optimizer.

* Add a couple of network performance tweaks to Vagrantfile.

* Added masto.razrnet.fr

* Low-hanging fruit of query optimization, these indices were missing

* Update Production-guide.md

Under ## General dependencies:
apt-get needs sudo and install was typed wrongly.

* updated instance hostname

* Email service options :P

Small addition in case people want email service options, sparkpost.com gives you 100k/mo free

* Rewrite Atom generation from stream entries to use Ox instead of Nokogiri (mastodon#1124)

* Rewrite Atom generation from stream entries to use Ox instead of Nokogiri::Builder

StreamEntry is now limited to only statuses, which allows some optimization. Removed
extra queries on AccountsController#show. AtomSerializer instead of AtomBuilderHelper
used in AccountsController#show, StreamEntriesController#show, StreamEntryRenderer
and PubSubHubbub::DistributionWorker

PubSubHubbub::DistributionWorker moves n+1 DomainBlock query to PubSubHubbub::DeliveryWorker
instead.

All Salmon slaps that aren't based on StreamEntry still use AtomBuilderHelper and Nokogiri

* All Salmon slaps now use Ox instead of Nokogiri. No touch from status on account

* Update List-of-Mastodon-instances.md

* Force UTF8 encoding on generated XML (mastodon#1140)

* Re-add forgotten <author> element on standalone <entry>

* Allow setting of default language through config

Setting of locale in controller extracted to Localized concern,
the doorkeeper authorized applications controller moved under
custom namespace with inclusion of Localized, which resolves the
"it sometimes appears in a different random language" bug

* Update Finnish translations, add sample Minio config (mastodon#954)

* Fix nil#object_type error

* Moved into a comment per feedback

* Update heroku instructions

* Add specs for media attachment validations

There are currently not specs for the two media validations that are performed
by `PostStatusService`. This adds specs for the validations that ensure that you
cannot attach more than four files, and that a status cannot have both image and
video attachments.

* DRY up reblog vs original status check

Checking reblog vs original status was happening in multiple places
across the app. For views, this logic was encapsulated in a helper
method named `proper_status` but in the other layers of the app, the
logic was duplicated.

Because the logic is used at all layers of the app, we extracted it into
a `Status#proper` method on the model and changed all uses of the logic
to use this method. There is now a single source of truth for this
condition.

We added test coverage to untested methods that got refactored.

* Add specs for PostStatusService

This implements all pending specs, and adds additional coverage for the
following functionality:

* Normal status creation
* Creating a reply status
* Creating a sensitive status
* Creating a status with spoiler text
* A status with no spoiler text gets an empty string for spoiler text
* Creating a status with custom visibility
* Creating a status for an application
* Processing mentions
* Processing Hashtags
* Pinging PuSH hubs
* Crawling links
* Attaching media

* Use I18n for media attachment validation errors

These are currently user facing errors, but are not localized. This adds the
ability for these messages to be localized.

* Add mastodon.fun

* change suggested cipher for nginx

* typo

* Implement pending specs on Status

Implement the two pending specs on `Status`: `reblogs_count` and
`favourites_count`.

* Fix npm/yarn cache cleaning

* Adds Oulipo.social to Mastodons list

This is a Mastodon with a particular constraint about
what symbols you can post.

* Add indigo.zone to list of instances

* Update Heroku-guide.md

Removing some of the confusion around what format S3 bucket names and regions should be entered as well as providing an example of an S3 policy that follows best security practices for this sort of thing.

* Update Heroku-guide.md

Cleaning up the heroku admin command bit to match the form used in Administration-guide.md and clarify the wording a bit.

* Update Administration-guide.md

the syntax for running the rake task wasn't correct.

* Add HackerNewsBot

I have created a bot that will post Hacker News stories with 100+ points. Adding it to the list.

* Fix mastodon#801 - Respect webfinger's canonical response of username/domain

* Fix mastodon#1165 - before_action was called before protect_from_forgery

* mastodon#1141 on remote follow

The async action is send before persist, account.id not yet generated

Pull queue receive 'nil' so no profile update.

* fixed a sentence in readme

* Add SVG version of logo to repo

* Close instance list to additions

* Fix my URL

Update my URL since toot.zone was shut down.

* Add reference to Elixir client for Mastodon API

* Use Setting.site_title value for `og:site_name` occurrences (mastodon#1194)

* Add helper method to return Setting.site_title

* Use site_title helper in application layout

* Use site_title value for og:site_name

* Add some missing strings to prevent some React warning in the console (mastodon#1230)

* French translation update (mastodon#1188)

* Update fr.yml

one typo fix

* Update simple_form.fr.yml

one translation consistency

* Updated about page in Finnish language (mastodon#1170)

* update faq with default language

* update translation for about page

* update Minio config

Thanks to @Gargon for helping me. I hope this will help others as well

* update import and export translation

* translate emails to finnish

* add finnish translation for emails

* add finnish translation for emails

* add finnish translation

* add missing dot

* update finnish language to emails

* add finnish translation for emails

* add dot and fix typo

* updated some minor typos

* remove language change due breaking emails

And by dev request

* updated minio config by dev request

* updated about page translation

* Revert "add persistance to Postresql container" (mastodon#1251)

* Add OTP_SECRET to Heroku app.json (mastodon#1246)

* Update mastodon.nuzgo.net (mastodon#1242)

Add ipv6 support

* Update simple_form.de.yml (mastodon#971)

* Fixed two translation errors (mastodon#1139)

Changed followers from Follower to Folger and following from Gefolgt to Folgt, to make it identical with the translation in de.jsx

* Updated German translation (mastodon#1248)

Fixed various spelling and grammar mistakes.
Used more gender-neutral language.

* Update mastodon.brussels instance name on List of Instances

Correct mastodon.brussels.fr to mastodon.brussels

* Add titles to more icons, and change clear notifications icon. (mastodon#1101)

* Update french translation (mastodon#1148)

Add french translation for emails sent

Signed-off-by: Thomas Citharel <tcit@tcit.fr>

Add non-breaking spaces

Signed-off-by: Thomas Citharel <tcit@tcit.fr>

changes and fixes to the nbsps

Signed-off-by: Thomas Citharel <tcit@tcit.fr>

French update

a few fixes

Signed-off-by: Thomas Citharel <tcit@tcit.fr>

fixes

Signed-off-by: Thomas Citharel <tcit@tcit.fr>

* Fix mastodon#1141, fix mastodon#1126 - Avatar/profile info fetching (mastodon#1215)

* Fix mastodon#1141, fix mastodon#1126 - Work through UpdateRemoteProfileService for both <feed> and <entry> top-level tags

* Improve code quality, remove line unrelated to fix

* Add mst3k.interlinked.me to list of instances (mastodon#1235)

* Improve about page responsiveness (mastodon#1252)

* Improve responsiveness of registration form and closed banner (mastodon#1265)

* Fix mastodon#795, fix mastodon#704, fix mastodon#835 - 2FA requires confirmation to be enabled (mastodon#1278)

* Fix mastodon#795, fix mastodon#704, fix mastodon#835 - 2FA requires confirmation to be enabled
TOTP secret is not shown again after 2FA is enabled

* Clean up

* Make public timelines API not require user context/app credentials (mastodon#1291)

* Make /api/v1/timelines/public and /api/v1/timelines/tag/:id public
Fix mastodon#1156 - respect query params when generating pagination links in API

* Apply pagination fix to more APIs

* Adds user confirmation rake task (mastodon#1300)

* Adds task to confirm user by email.

* Adds documentation for manual confirmation.

* Allows setting log level in env variable (mastodon#1290)

* Allows setting log level in env variable.

* Made changes based on feedback in mastodon#1290.

* Add env variable to disable prepared statements (mastodon#1293)

* Fix nonworking clear notices button (mastodon#1316)

* Ignore implied formats for catch all route requests (mastodon#1340)

A request to `/test` would show the custom 404 page, but a request to
`/test.test` would return a 404 with an empty body.

This change ignores the format on incoming catch all route requests, so that the
html 404 page is returned on these requests.

* Search cleanup (mastodon#1333)

* Clean up SQL output in Tag and Account search methods

* Add basic coverage for Tag.search_for

* Add coverage for Account.search_for

* Add coverage for Account.advanced_search_for

* Fixes mastodon#1311 margin shouldn't stay fixed (mastodon#1312)

* Clean up about page (mastodon#1282)

* Add InstancePresenter to expose site details

* Clean up about controller, use instance presenter

* add empty notifications french translation (mastodon#1111)

* French typo (mastodon#1257)

* French typo

* Datetime french translation

* French translation update (mastodon#1271)

* Update confirmation_instructions.fr.html.erb

consistency across the French translation

* Update 

consistency across the French translation

* Update fr.yml

a bunch of consistency across the French translation + a few typos

* Update doorkeeper.fr.yml

consistency across the French translation (punctuation)

* Update fr.jsx (mastodon#1329)

* Update fr.jsx

* Remove duplicate translation

* Helper cleanup (mastodon#1348)

* Remove unused helper files

* Add coverage for application helper

* Add coverage for StreamEntriesHelper #display_name

* Allow users to update their Account in the API (mastodon#1179)

* Allow users to update their Account in the API

It would be nice for API clients to be able to allow users to update
their accounts without having to wrap Mastodon in a web view. This patch
adds an API endpoint to let users submit a PATCH for their account.

Signed-off-by: David Celis <me@davidcel.is>

* Add /api/v1/accounts/update_credentials to the API docs

Signed-off-by: David Celis <me@davidcel.is>

* Add comment to settings.yml to nudge admins towards editing values via Web UI (mastodon#1289)

* Put a useful message for new admins on /about/more

I totally failed to realize this file was just defaults.  I think
this message would be a good default for people like me.

* Revert default site description, expand comment

This will keep setup-related stuff from leaking into public views,
while still hopefully keeping over-eager admins from editing this
file unnecessarily before RTFMing.  (e.g., me)

* Minor change on API.md (mastodon#1352)

* Minor API.md changes (mastodon#1351)

* Use HTTP Accept-Language to detect locale (mastodon#1166)

* Use HTTP Accept-Language to detect locale

* Fix gem order to comply with codeclimate

* Sort gem to comply with rubocop

* I18n.default_locale fallback when there is no accept-language header

* Get handle from atom feed's author/email field instead of guessing from URL (mastodon#1344)

The goal of this change is to enhance Mastodon's handling of remote domains
for which the APIs reside on a different host (see issue mastodon#1032).

Indeed, when a remote user unknown to Mastodon is mentionned, only its profile
URL (e.g. https://social.example.org/users/User) is known, and Mastodon has to
build a @username@domain handle for it. To do so, Mastodon fetches the user's
atom feed (e.g., https://social.example.org/users/User.atom) and uses its
content to get the username part of the handle, and the URL's host part to
build the domain (e.g., @user@social.example.org). This handle is then used
for a Webfinger request.

In the case where example.org serves the Webfinger info for @user@example.org
and all feeds and APIs are hosted at social.example.org, Mastodon will still
build @user@social.example.org and fail at resolving the account's details
through Webfinger.

This patch changes this behaviour by using the author's email address from
the atom feed to build the handle. In Mastodon-generated atom feeds, the
email address is always the handle it expects for federation.

* update portuguese translation (mastodon#1280)

added the missing fields and improved the translation

* Minor change to Entity on API.md (Relationship) (mastodon#1356)

* Fix /api/v1/accounts/update_credentials tests (mastodon#1357)

* Fix mastodon#1339 - better Atom titles (mastodon#1343)

* Do not store last visited URL from API controllers (mastodon#1330)

Sign-in redirects you back to last visited URL, but in case of API requests,
this sometimes redirected users to an API URL that, of course, greeted them
with an {"error":"The access token is invalid"}
nolanlawson added a commit to tootcafe/mastodon that referenced this issue Apr 11, 2017
* added Esperanto (eo)

* Added Esperanto translation inside the javascripts folder

* add persistance to Postresql container

* add volume for redis container

* add mastodon.cloud to List of instances

* Update List-of-Mastodon-instances.md

* Add niu.moe, cuz it's kawaii

* Added im-in.space

* Fix wrong url in scalingo.json

* Make scalingo doc clearer

* Add social.bytestemplar.com to instances list

* Update Production-guide.md

Corrected spelling error for "install"

* Added digitalhumanities.club instance

* added instance

* Update components.scss

Use nicer scrollbars in MS edge

* Adding masto.raildecake.fr, french instance 🌻🐘

* Add good-dragon.com

* Update description on good-dragon.com

* Add Rich.GOP

* Update List-of-Mastodon-instances.md

* Adds mtndevelopment

* Update List-of-Mastodon-instances.md

* Add mastodon.nuzgo.net

* Description in instance list for mastodon.ninetailed.uk

* Added off-the-clock.us to the list of instances

* Add Northeastern University Mastodon

* Add infinimatix.net to instance list

* Add mastodon.elao.com instance

* Update List-of-Mastodon-instances.md

* Optimize Dockerfile

Optimize Dockerfile, reduce build time.

* Update List-of-Mastodon-instances.md

Add mastodon.land instance

* Added an instance to the list

Just launched https://hackertribe.io/, added it to the list.

* Updates slugignore.

* add my instance

* Add meow.social

* Update List-of-Mastodon-instances.md

* Linux users must enable NFS for Vagrant

* Add an instance.

* Update List-of-Mastodon-instances.md

* Update List-of-Mastodon-instances.md

* Add manx.social instance

* add metadata to Dockerfile

* add Docker microbadger to README.md

* Added pericles.world in the list of instances

* Reduce size of background-photo.jpeg

Reduced by running through `guetzli` image optimizer.

* Add a couple of network performance tweaks to Vagrantfile.

* Added masto.razrnet.fr

* Low-hanging fruit of query optimization, these indices were missing

* Update Production-guide.md

Under ## General dependencies:
apt-get needs sudo and install was typed wrongly.

* updated instance hostname

* Email service options :P

Small addition in case people want email service options, sparkpost.com gives you 100k/mo free

* Rewrite Atom generation from stream entries to use Ox instead of Nokogiri (mastodon#1124)

* Rewrite Atom generation from stream entries to use Ox instead of Nokogiri::Builder

StreamEntry is now limited to only statuses, which allows some optimization. Removed
extra queries on AccountsController#show. AtomSerializer instead of AtomBuilderHelper
used in AccountsController#show, StreamEntriesController#show, StreamEntryRenderer
and PubSubHubbub::DistributionWorker

PubSubHubbub::DistributionWorker moves n+1 DomainBlock query to PubSubHubbub::DeliveryWorker
instead.

All Salmon slaps that aren't based on StreamEntry still use AtomBuilderHelper and Nokogiri

* All Salmon slaps now use Ox instead of Nokogiri. No touch from status on account

* Update List-of-Mastodon-instances.md

* Force UTF8 encoding on generated XML (mastodon#1140)

* Re-add forgotten <author> element on standalone <entry>

* Allow setting of default language through config

Setting of locale in controller extracted to Localized concern,
the doorkeeper authorized applications controller moved under
custom namespace with inclusion of Localized, which resolves the
"it sometimes appears in a different random language" bug

* Update Finnish translations, add sample Minio config (mastodon#954)

* Fix nil#object_type error

* Moved into a comment per feedback

* Update heroku instructions

* Add specs for media attachment validations

There are currently not specs for the two media validations that are performed
by `PostStatusService`. This adds specs for the validations that ensure that you
cannot attach more than four files, and that a status cannot have both image and
video attachments.

* DRY up reblog vs original status check

Checking reblog vs original status was happening in multiple places
across the app. For views, this logic was encapsulated in a helper
method named `proper_status` but in the other layers of the app, the
logic was duplicated.

Because the logic is used at all layers of the app, we extracted it into
a `Status#proper` method on the model and changed all uses of the logic
to use this method. There is now a single source of truth for this
condition.

We added test coverage to untested methods that got refactored.

* Add specs for PostStatusService

This implements all pending specs, and adds additional coverage for the
following functionality:

* Normal status creation
* Creating a reply status
* Creating a sensitive status
* Creating a status with spoiler text
* A status with no spoiler text gets an empty string for spoiler text
* Creating a status with custom visibility
* Creating a status for an application
* Processing mentions
* Processing Hashtags
* Pinging PuSH hubs
* Crawling links
* Attaching media

* Use I18n for media attachment validation errors

These are currently user facing errors, but are not localized. This adds the
ability for these messages to be localized.

* Add mastodon.fun

* change suggested cipher for nginx

* typo

* Implement pending specs on Status

Implement the two pending specs on `Status`: `reblogs_count` and
`favourites_count`.

* Fix npm/yarn cache cleaning

* Adds Oulipo.social to Mastodons list

This is a Mastodon with a particular constraint about
what symbols you can post.

* Add indigo.zone to list of instances

* Update Heroku-guide.md

Removing some of the confusion around what format S3 bucket names and regions should be entered as well as providing an example of an S3 policy that follows best security practices for this sort of thing.

* Update Heroku-guide.md

Cleaning up the heroku admin command bit to match the form used in Administration-guide.md and clarify the wording a bit.

* Update Administration-guide.md

the syntax for running the rake task wasn't correct.

* Add HackerNewsBot

I have created a bot that will post Hacker News stories with 100+ points. Adding it to the list.

* Fix mastodon#801 - Respect webfinger's canonical response of username/domain

* Fix mastodon#1165 - before_action was called before protect_from_forgery

* mastodon#1141 on remote follow

The async action is send before persist, account.id not yet generated

Pull queue receive 'nil' so no profile update.

* fixed a sentence in readme

* Add SVG version of logo to repo

* Close instance list to additions

* Fix my URL

Update my URL since toot.zone was shut down.

* Add reference to Elixir client for Mastodon API

* Use Setting.site_title value for `og:site_name` occurrences (mastodon#1194)

* Add helper method to return Setting.site_title

* Use site_title helper in application layout

* Use site_title value for og:site_name

* Add some missing strings to prevent some React warning in the console (mastodon#1230)

* French translation update (mastodon#1188)

* Update fr.yml

one typo fix

* Update simple_form.fr.yml

one translation consistency

* Updated about page in Finnish language (mastodon#1170)

* update faq with default language

* update translation for about page

* update Minio config

Thanks to @Gargon for helping me. I hope this will help others as well

* update import and export translation

* translate emails to finnish

* add finnish translation for emails

* add finnish translation for emails

* add finnish translation

* add missing dot

* update finnish language to emails

* add finnish translation for emails

* add dot and fix typo

* updated some minor typos

* remove language change due breaking emails

And by dev request

* updated minio config by dev request

* updated about page translation

* Revert "add persistance to Postresql container" (mastodon#1251)

* Add OTP_SECRET to Heroku app.json (mastodon#1246)

* Update mastodon.nuzgo.net (mastodon#1242)

Add ipv6 support

* Update simple_form.de.yml (mastodon#971)

* Fixed two translation errors (mastodon#1139)

Changed followers from Follower to Folger and following from Gefolgt to Folgt, to make it identical with the translation in de.jsx

* Updated German translation (mastodon#1248)

Fixed various spelling and grammar mistakes.
Used more gender-neutral language.

* Update mastodon.brussels instance name on List of Instances

Correct mastodon.brussels.fr to mastodon.brussels

* Add titles to more icons, and change clear notifications icon. (mastodon#1101)

* Update french translation (mastodon#1148)

Add french translation for emails sent

Signed-off-by: Thomas Citharel <tcit@tcit.fr>

Add non-breaking spaces

Signed-off-by: Thomas Citharel <tcit@tcit.fr>

changes and fixes to the nbsps

Signed-off-by: Thomas Citharel <tcit@tcit.fr>

French update

a few fixes

Signed-off-by: Thomas Citharel <tcit@tcit.fr>

fixes

Signed-off-by: Thomas Citharel <tcit@tcit.fr>

* Fix mastodon#1141, fix mastodon#1126 - Avatar/profile info fetching (mastodon#1215)

* Fix mastodon#1141, fix mastodon#1126 - Work through UpdateRemoteProfileService for both <feed> and <entry> top-level tags

* Improve code quality, remove line unrelated to fix

* Add mst3k.interlinked.me to list of instances (mastodon#1235)

* Improve about page responsiveness (mastodon#1252)

* Improve responsiveness of registration form and closed banner (mastodon#1265)

* Fix mastodon#795, fix mastodon#704, fix mastodon#835 - 2FA requires confirmation to be enabled (mastodon#1278)

* Fix mastodon#795, fix mastodon#704, fix mastodon#835 - 2FA requires confirmation to be enabled
TOTP secret is not shown again after 2FA is enabled

* Clean up

* Make public timelines API not require user context/app credentials (mastodon#1291)

* Make /api/v1/timelines/public and /api/v1/timelines/tag/:id public
Fix mastodon#1156 - respect query params when generating pagination links in API

* Apply pagination fix to more APIs

* Adds user confirmation rake task (mastodon#1300)

* Adds task to confirm user by email.

* Adds documentation for manual confirmation.

* Allows setting log level in env variable (mastodon#1290)

* Allows setting log level in env variable.

* Made changes based on feedback in mastodon#1290.

* Add env variable to disable prepared statements (mastodon#1293)

* Fix nonworking clear notices button (mastodon#1316)

* Ignore implied formats for catch all route requests (mastodon#1340)

A request to `/test` would show the custom 404 page, but a request to
`/test.test` would return a 404 with an empty body.

This change ignores the format on incoming catch all route requests, so that the
html 404 page is returned on these requests.

* Search cleanup (mastodon#1333)

* Clean up SQL output in Tag and Account search methods

* Add basic coverage for Tag.search_for

* Add coverage for Account.search_for

* Add coverage for Account.advanced_search_for

* Fixes mastodon#1311 margin shouldn't stay fixed (mastodon#1312)

* Clean up about page (mastodon#1282)

* Add InstancePresenter to expose site details

* Clean up about controller, use instance presenter

* add empty notifications french translation (mastodon#1111)

* French typo (mastodon#1257)

* French typo

* Datetime french translation

* French translation update (mastodon#1271)

* Update confirmation_instructions.fr.html.erb

consistency across the French translation

* Update 

consistency across the French translation

* Update fr.yml

a bunch of consistency across the French translation + a few typos

* Update doorkeeper.fr.yml

consistency across the French translation (punctuation)

* Update fr.jsx (mastodon#1329)

* Update fr.jsx

* Remove duplicate translation

* Helper cleanup (mastodon#1348)

* Remove unused helper files

* Add coverage for application helper

* Add coverage for StreamEntriesHelper #display_name

* Allow users to update their Account in the API (mastodon#1179)

* Allow users to update their Account in the API

It would be nice for API clients to be able to allow users to update
their accounts without having to wrap Mastodon in a web view. This patch
adds an API endpoint to let users submit a PATCH for their account.

Signed-off-by: David Celis <me@davidcel.is>

* Add /api/v1/accounts/update_credentials to the API docs

Signed-off-by: David Celis <me@davidcel.is>

* Add comment to settings.yml to nudge admins towards editing values via Web UI (mastodon#1289)

* Put a useful message for new admins on /about/more

I totally failed to realize this file was just defaults.  I think
this message would be a good default for people like me.

* Revert default site description, expand comment

This will keep setup-related stuff from leaking into public views,
while still hopefully keeping over-eager admins from editing this
file unnecessarily before RTFMing.  (e.g., me)

* Minor change on API.md (mastodon#1352)

* Minor API.md changes (mastodon#1351)

* Use HTTP Accept-Language to detect locale (mastodon#1166)

* Use HTTP Accept-Language to detect locale

* Fix gem order to comply with codeclimate

* Sort gem to comply with rubocop

* I18n.default_locale fallback when there is no accept-language header

* Get handle from atom feed's author/email field instead of guessing from URL (mastodon#1344)

The goal of this change is to enhance Mastodon's handling of remote domains
for which the APIs reside on a different host (see issue mastodon#1032).

Indeed, when a remote user unknown to Mastodon is mentionned, only its profile
URL (e.g. https://social.example.org/users/User) is known, and Mastodon has to
build a @username@domain handle for it. To do so, Mastodon fetches the user's
atom feed (e.g., https://social.example.org/users/User.atom) and uses its
content to get the username part of the handle, and the URL's host part to
build the domain (e.g., @user@social.example.org). This handle is then used
for a Webfinger request.

In the case where example.org serves the Webfinger info for @user@example.org
and all feeds and APIs are hosted at social.example.org, Mastodon will still
build @user@social.example.org and fail at resolving the account's details
through Webfinger.

This patch changes this behaviour by using the author's email address from
the atom feed to build the handle. In Mastodon-generated atom feeds, the
email address is always the handle it expects for federation.

* update portuguese translation (mastodon#1280)

added the missing fields and improved the translation

* Minor change to Entity on API.md (Relationship) (mastodon#1356)

* Fix /api/v1/accounts/update_credentials tests (mastodon#1357)

* Fix mastodon#1339 - better Atom titles (mastodon#1343)

* Do not store last visited URL from API controllers (mastodon#1330)

Sign-in redirects you back to last visited URL, but in case of API requests,
this sometimes redirected users to an API URL that, of course, greeted them
with an {"error":"The access token is invalid"}
@lilyball
Copy link

This doesn't seem to actually work yet. Webfinger is returning the regular domain instead of the web domain in 2 of the URLs. See #2375 for details.

Nyoho referenced this issue in Nyoho/mathtodon Apr 25, 2017
…om URL (#1344)

The goal of this change is to enhance Mastodon's handling of remote domains
for which the APIs reside on a different host (see issue #1032).

Indeed, when a remote user unknown to Mastodon is mentionned, only its profile
URL (e.g. https://social.example.org/users/User) is known, and Mastodon has to
build a @username@domain handle for it. To do so, Mastodon fetches the user's
atom feed (e.g., https://social.example.org/users/User.atom) and uses its
content to get the username part of the handle, and the URL's host part to
build the domain (e.g., @user@social.example.org). This handle is then used
for a Webfinger request.

In the case where example.org serves the Webfinger info for @user@example.org
and all feeds and APIs are hosted at social.example.org, Mastodon will still
build @user@social.example.org and fail at resolving the account's details
through Webfinger.

This patch changes this behaviour by using the author's email address from
the atom feed to build the handle. In Mastodon-generated atom feeds, the
email address is always the handle it expects for federation.
abcang added a commit to pixiv/mastodon that referenced this issue May 7, 2018
hannahwhy pushed a commit to hannahwhy/mastodon that referenced this issue May 5, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
8 participants