From 7dd5ba42a394e64ef55b066628294cc0c61d2d58 Mon Sep 17 00:00:00 2001 From: Korbinian Date: Mon, 3 Apr 2017 19:01:17 +0200 Subject: [PATCH 001/137] Updated and fixed german orthography --- config/locales/devise.de.yml | 50 ++++++++++++++++++------------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/config/locales/devise.de.yml b/config/locales/devise.de.yml index 181502f9c..58bfaa3d6 100644 --- a/config/locales/devise.de.yml +++ b/config/locales/devise.de.yml @@ -2,59 +2,59 @@ de: devise: confirmations: - confirmed: "Vielen Dank für Deine Registrierung. Bitte melde dich jetzt an." - send_instructions: "Du erhältst in wenigen Minuten eine E-Mail, mit der Du Deine Registrierung bestätigen kannst." - send_paranoid_instructions: "Falls Deine E-Mail-Adresse in unserer Datenbank existiert erhältst Du in wenigen Minuten eine E-Mail mit der Du Deine Registrierung bestätigen kannst." + confirmed: "Vielen Dank für deine Registrierung. Bitte melde dich jetzt an." + send_instructions: "Du erhältst in wenigen Minuten eine E-Mail, mit der du deine Registrierung bestätigen kannst." + send_paranoid_instructions: "Falls Deine E-Mail-Adresse in unserer Datenbank existiert, erhältst Du in wenigen Minuten eine E-Mail mit der du deine Registrierung bestätigen kannst." failure: already_authenticated: "Du bist bereits angemeldet." inactive: "Dein Account ist nicht aktiv." invalid: "Ungültige Anmeldedaten." - last_attempt: "Du hast noch einen Versuch bevor dein Account gesperrt wird" + last_attempt: "Du hast noch einen Versuch bevor dein Account gesperrt wird." locked: "Dein Account ist gesperrt." not_found_in_database: "E-Mail-Adresse oder Passwort ungültig." - timeout: "Deine Sitzung ist abgelaufen, bitte melde Dich erneut an." - unauthenticated: "Du musst Dich anmelden oder registrieren, bevor Du fortfahren kannst." - unconfirmed: "Du musst Deinen Account bestätigen, bevor Du fortfahren kannst." + timeout: "Deine Sitzung ist abgelaufen, bitte melde dich erneut an." + unauthenticated: "Du musst Dich anmelden oder registrieren, bevor du fortfahren kannst." + unconfirmed: "Du musst deinen Account bestätigen, bevor du fortfahren kannst." mailer: confirmation_instructions: - subject: "Mastodon: Anleitung zur Bestätigung Deines Accounts" + subject: "Mastodon: Anleitung zur Bestätigung deines Accounts" password_change: subject: 'Mastodon: Passwort wurde geändert' reset_password_instructions: - subject: "Mastodon: Anleitung um Dein Passwort zurückzusetzen" + subject: "Mastodon: Anleitung um dein Passwort zurückzusetzen" unlock_instructions: - subject: "Mastodon: Anleitung um Deinen Account freizuschalten" + subject: "Mastodon: Anleitung um deinen Account freizuschalten" omniauth_callbacks: - failure: "Du konntest nicht Deinem %{kind}-Account angemeldet werden, weil '%{reason}'." - success: "Du hast Dich erfolgreich mit Deinem %{kind}-Account angemeldet." + failure: "Du konntest nicht mit deinem %{kind}-Account angemeldet werden, weil '%{reason}'." + success: "Du hast dich erfolgreich mit Deinem %{kind}-Account angemeldet." passwords: - no_token: "Du kannst diese Seite nur von dem Link aus einer E-Mail zum Passwort-Zurücksetzen aufrufen. Wenn du einen solchen Link aufgerufen hast stelle bitte sicher, dass du die vollständige Adresse aufrufst." - send_instructions: "Du erhältst in wenigen Minuten eine E-Mail mit der Anleitung, wie Du Dein Passwort zurücksetzen kannst." - send_paranoid_instructions: "Falls Deine E-Mail-Adresse in unserer Datenbank existiert erhältst Du in wenigen Minuten eine E-Mail mit der Anleitung, wie Du Dein Passwort zurücksetzen können." + no_token: "Du kannst diese Seite nur über den Link aus der E-Mail zum Passwort-Zurücksetzen aufrufen. Wenn du einen solchen Link aufgerufen hast, stelle bitte sicher, dass du die vollständige Adresse aufrufst." + send_instructions: "Du erhältst in wenigen Minuten eine E-Mail mit der Anleitung, wie du dein Passwort zurücksetzen kannst." + send_paranoid_instructions: "Falls deine E-Mail-Adresse in unserer Datenbank existiert erhältst du in wenigen Minuten eine E-Mail mit der Anleitung, wie du dein Passwort zurücksetzen kannst." updated: "Dein Passwort wurde geändert. Du bist jetzt angemeldet." updated_not_active: "Dein Passwort wurde geändert." registrations: destroyed: "Dein Account wurde gelöscht." signed_up: "Du hast dich erfolgreich registriert." - signed_up_but_inactive: "Du hast dich erfolgreich registriert. Wir konnten Dich noch nicht anmelden, da Dein Account inaktiv ist." - signed_up_but_locked: "Du hast dich erfolgreich registriert. Wir konnten Dich noch nicht anmelden, da Dein Account gesperrt ist." - signed_up_but_unconfirmed: "Du hast Dich erfolgreich registriert. Wir konnten Dich noch nicht anmelden, da Dein Account noch nicht bestätigt ist. Du erhältst in Kürze eine E-Mail mit der Anleitung, wie Du Deinen Account freischalten kannst." - update_needs_confirmation: "Deine Daten wurden aktualisiert, aber Du musst Deine neue E-Mail-Adresse bestätigen. Du erhälst in wenigen Minuten eine E-Mail, mit der Du die Änderung Deiner E-Mail-Adresse abschließen kannst." + signed_up_but_inactive: "Du hast dich erfolgreich registriert. Wir konnten dich noch nicht anmelden, da dein Account inaktiv ist." + signed_up_but_locked: "Du hast dich erfolgreich registriert. Wir konnten dich noch nicht anmelden, da dein Account gesperrt ist." + signed_up_but_unconfirmed: "Du hast Dich erfolgreich registriert. Wir konnten dich noch nicht anmelden, da dein Account noch nicht bestätigt ist. Du erhältst in Kürze eine E-Mail mit der Anleitung, wie Du Deinen Account freischalten kannst." + update_needs_confirmation: "Deine Daten wurden aktualisiert, aber du musst deine neue E-Mail-Adresse bestätigen. Du erhälst in wenigen Minuten eine E-Mail, mit der du die Änderung deiner E-Mail-Adresse abschließen kannst." updated: "Deine Daten wurden aktualisiert." sessions: already_signed_out: "Erfolgreich abgemeldet." signed_in: "Erfolgreich angemeldet." signed_out: "Erfolgreich abgemeldet." unlocks: - send_instructions: "Du erhältst in wenigen Minuten eine E-Mail mit der Anleitung, wie Du Deinen Account entsperren können." - send_paranoid_instructions: "Falls Deine E-Mail-Adresse in unserer Datenbank existiert erhältst Du in wenigen Minuten eine E-Mail mit der Anleitung, wie Du Deinen Account entsperren kannst." + send_instructions: "Du erhältst in wenigen Minuten eine E-Mail mit der Anleitung, wie du deinen Account entsperren können." + send_paranoid_instructions: "Falls deine E-Mail-Adresse in unserer Datenbank existiert erhältst du in wenigen Minuten eine E-Mail mit der Anleitung, wie du deinen Account entsperren kannst." unlocked: "Dein Account wurde entsperrt. Du bist jetzt angemeldet." errors: messages: - already_confirmed: "wurde bereits bestätigt" - confirmation_period_expired: "muss innerhalb %{period} bestätigt werden, bitte fordere einen neuen Link an" - expired: "ist abgelaufen, bitte neu anfordern" - not_found: "nicht gefunden" + already_confirmed: "wurde bereits bestätigt." + confirmation_period_expired: "muss innerhalb %{period} bestätigt werden, bitte fordere einen neuen Link an." + expired: "ist abgelaufen, bitte neu anfordern." + not_found: "wurde nicht gefunden." not_locked: "ist nicht gesperrt" not_saved: one: "Konnte %{resource} nicht speichern: ein Fehler." From ec8029a95531bd52bc6ed1e83c52362411210d5e Mon Sep 17 00:00:00 2001 From: Korbinian Date: Mon, 3 Apr 2017 19:10:48 +0200 Subject: [PATCH 002/137] Updated and fixed orthography --- config/locales/de.yml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/config/locales/de.yml b/config/locales/de.yml index 320bd3144..d44845c6b 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -1,14 +1,14 @@ --- de: about: - about_mastodon: Mastodon ist ein freier, quelloffener soziales Netzwerkserver. Eine dezentralisierte Alternative zu kommerziellen Plattformen, verhindert es die Risiken, die entstehen, wenn eine einzelne Firma deine Kommunikation monopolisiert. Jeder kann Mastodon verwenden und ganz einfach am sozialen Netzwerk teilnehmen. + about_mastodon: Mastodon ist ein freier, quelloffener soziales Netzwerkserver. Als dezentralisierte Alternative zu kommerziellen Plattformen verhindert es die Risiken, die entstehen, wenn eine einzelne Firma deine Kommunikation monopolisiert. Jeder kann Mastodon verwenden und ganz einfach am sozialen Netzwerk teilnehmen. get_started: Erste Schritte source_code: Quellcode terms: AGB accounts: follow: Folgen - followers: Folger - following: Folgt + followers: Follower + following: Gefolgt nothing_here: Hier gibt es nichts! people_followed_by: Nutzer, denen %{name} folgt people_who_follow: Nutzer, die %{name} folgen @@ -27,7 +27,7 @@ de: reset_password: Passwort zurücksetzen set_new_password: Neues Passwort setzen authorize_follow: - error: Das entfernte Profil konnte nicht geladen werden + error: Das Profil konnte nicht geladen werden follow: Folgen prompt_html: 'Du (%{self}) möchtest dieser Person folgen:' title: "%{acct} folgen" @@ -55,25 +55,25 @@ de: notification_mailer: favourite: body: 'Dein Beitrag wurde von %{name} favorisiert:' - subject: "%{name} hat deinen Beitrag favorisiert" + subject: "%{name} hat deinen Beitrag favorisiert." follow: body: "%{name} folgt dir jetzt!" - subject: "%{name} folgt dir nun" + subject: "%{name} folgt dir jetzt." follow_request: body: "%{name} möchte dir folgen:" - subject: "%{name} möchte dir folgen" + subject: "%{name} möchte dir folgen." mention: body: "%{name} hat dich erwähnt:" - subject: "%{name} hat dich erwähnt" + subject: "%{name} hat dich erwähnt." reblog: body: 'Dein Beitrag wurde von %{name} geteilt:' - subject: "%{name} teilte deinen Beitrag" + subject: "%{name} teilte deinen Beitrag." pagination: next: Vorwärts prev: Zurück remote_follow: - acct: Dein Nutzername@Domain, von dem du dieser Person folgen möchtest - missing_resource: Die erforderliche Weiterleitungs-URL konnte leider in deinem Profil nicht gefunden werden + acct: Dein Nutzername@Domain, von dem aus du dieser Person folgen möchtest. + missing_resource: Die erforderliche Weiterleitungs-URL konnte leider in deinem Profil nicht gefunden werden. proceed: Weiter prompt: 'Du wirst dieser Person folgen:' settings: From 0700521ef36e5404f764523f387dafa331fa2b52 Mon Sep 17 00:00:00 2001 From: axolotl Date: Mon, 3 Apr 2017 20:22:50 +0200 Subject: [PATCH 003/137] added Esperanto (eo) --- app/helpers/settings_helper.rb | 1 + config/application.rb | 2 +- config/locales/devise.eo.yml | 61 +++++++++++ config/locales/doorkeeper.eo.yml | 113 ++++++++++++++++++++ config/locales/eo.yml | 164 ++++++++++++++++++++++++++++++ config/locales/simple_form.eo.yml | 46 +++++++++ 6 files changed, 386 insertions(+), 1 deletion(-) create mode 100644 config/locales/devise.eo.yml create mode 100644 config/locales/doorkeeper.eo.yml create mode 100644 config/locales/eo.yml create mode 100644 config/locales/simple_form.eo.yml diff --git a/app/helpers/settings_helper.rb b/app/helpers/settings_helper.rb index 74215e8df..f92abb9bc 100644 --- a/app/helpers/settings_helper.rb +++ b/app/helpers/settings_helper.rb @@ -10,6 +10,7 @@ module SettingsHelper hu: 'Magyar', uk: 'Українська', 'zh-CN': '简体中文', + eo: 'Esperanto', }.freeze def human_locale(locale) diff --git a/config/application.rb b/config/application.rb index 9d32f30cb..77cd254af 100644 --- a/config/application.rb +++ b/config/application.rb @@ -24,7 +24,7 @@ module Mastodon # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded. # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s] - config.i18n.available_locales = [:en, :de, :es, :pt, :fr, :hu, :uk, 'zh-CN'] + config.i18n.available_locales = [:en, :de, :es, :pt, :fr, :hu, :uk, 'zh-CN', :eo] config.i18n.default_locale = :en # config.paths.add File.join('app', 'api'), glob: File.join('**', '*.rb') diff --git a/config/locales/devise.eo.yml b/config/locales/devise.eo.yml new file mode 100644 index 000000000..b786647dd --- /dev/null +++ b/config/locales/devise.eo.yml @@ -0,0 +1,61 @@ +--- +eo: + devise: + confirmations: + confirmed: Via konto estas konfirmita. + send_instructions: Vi ricevos instrukciojn por konfirmi vian konton post kelkaj minutoj. + send_paranoid_instructions: Se via retpoŝt-adreso ekzistas en nia datumbazo, vi baldaŭ ricevos retpoŝt-mesaĝon, kiu enhavas la instrukciojn por konfirmi vian konton. + failure: + already_authenticated: Vi jam estas ensalutita. + inactive: Via konto ankoraŭ ne estas konfirmita. + invalid: Malĝusta retpoŝt-adreso aŭ pasvorto. + last_attempt: Vi ankoraŭ povas provi unufoje antaŭ ol via konto estos ŝlosita. + locked: Via konto estas ŝlosita. + not_found_in_database: Malĝusta retpoŝt-adreso aŭ pasvorto. + timeout: Via sesio eksiĝis. Bonvolu reensaluti por daŭrigi. + unauthenticated: Vi devas ensaluti aŭ membriĝi por daŭrigi. + unconfirmed: Vi devas konfirmi vian konton por daŭrigi. + mailer: + confirmation_instructions: + subject: Instrukcioj por konfirmi + password_change: + subject: Via pasvorto estis ŝanĝita senprobleme. + reset_password_instructions: + subject: Instrukcioj por ŝanĝi la pasvorton + unlock_instructions: + subject: Instrukcioj por malŝlosi la konton + omniauth_callbacks: + failure: 'Ni ne povis aŭtentigi vin per %{kind}: ''%{reason}''.' + success: Aŭtentigita senprobleme per %{kind}. + passwords: + no_token: Vi ne povas iri al tiu paĝo per alia vojo ol retpoŝt-mesaĝo por ŝanĝi pasvorton. Se vi venas de tia retpoŝt-mesaĝo, kontrolu ke vi uzis la tutan URL. + send_instructions: Vi ricevos retpoŝt-mesaĝon kun instrukcioj por ŝanĝi vian pasvorton post kelkaj minutoj. + send_paranoid_instructions: Se via retpoŝt-adreso ekzistas en nia datumbazo, vi ricevos ligilon por ŝanĝi vian pasvorton per retpoŝt-mesaĝo. + updated: Via pasvorto estis redaktita senprobleme, vi nun estas ensalutita. + updated_not_active: Via pasvorto estis redaktita senprobleme. + registrations: + destroyed: Ĝis! Via konto estis forigita senprobleme. Ni esperas revidi vin baldaŭ. + signed_up: Bonvenon! Vi membriĝis senprobleme. + signed_up_but_inactive: Vi bone membriĝis, sed vi ankoraŭ ne povas ensaluti ĉar via konto ne estis konfirmita. + signed_up_but_locked: Vi bone membriĝis, sed vi ne povas ensaluti ĉar via konto estas ŝlosita. + signed_up_but_unconfirmed: Retpoŝt-mesaĝo kun via ligilo por konfirmi vian konton estis sendita al via retpoŝt-adreso. Bonvolu uzi tiun ligilon por konfirmi vian konton. + update_needs_confirmation: Vi bone aktualigis vian konton, sed ni bezonas kontroli vian novan retpoŝt-adreson. Bonvolu kontroli viajn retpoŝt-mesaĝojn kaj uzi la ligilon por konfirmi vian novan retpoŝt-adreson. + updated: Via konto estis aktualigita senprobleme. + sessions: + already_signed_out: Elsalutita. + signed_in: Ensalutita. + signed_out: Elsalutita. + unlocks: + send_instructions: Vi ricevos retpoŝt-mesaĝon kun instrukcioj por malŝlosi vian konton post kelkaj minutoj. + send_paranoid_instructions: Se via retpoŝt-adreso ekzistas en nia datumbazo, vi ricevos ligilon por malŝlosi vian konton per retpoŝt-mesaĝo. + unlocked: Via konto estis malŝlosita senprobleme, vi nun estas ensalutita. + errors: + messages: + already_confirmed: jam estis konfirmita, bonvolu provi ensaluti + confirmation_period_expired: devas esti konfirmita en %{period}, bonvolu repeti + expired: eksiĝis, bonvolu repeti + not_found: ne estis trovita + not_locked: ne estis ŝlosita + not_saved: + one: '1 eraro malpermesis al tiu %{resource} esti konservita:' + other: '%{count} eraroj malpermesis al tiu %{resource} esti konservita:' diff --git a/config/locales/doorkeeper.eo.yml b/config/locales/doorkeeper.eo.yml new file mode 100644 index 000000000..33cc7cc19 --- /dev/null +++ b/config/locales/doorkeeper.eo.yml @@ -0,0 +1,113 @@ +--- +eo: + activerecord: + attributes: + doorkeeper/application: + name: Nomo + redirect_uri: URI de plusendo + errors: + models: + doorkeeper/application: + attributes: + redirect_uri: + fragment_present: ne povas enhavi eron. + invalid_uri: devas esti valida URI. + relative_uri: devas esti absoluta URI. + secured_uri: devas esti HTTPS/SSL-a URI. + doorkeeper: + applications: + buttons: + authorize: Rajtigi + cancel: Rezigni + destroy: Detrui + edit: Redakti + submit: Sendi + confirmations: + destroy: Ĉu vi certas? + edit: + title: Redakti aplikaĵon + form: + error: Ups! Kontrolu vian formularon ĉu estas eraroj + help: + native_redirect_uri: Uzu %{native_redirect_uri} por lokaj provoj + redirect_uri: Uzu unu linion por ĉiu URI + scopes: Apartigu ampleksojn per spacetoj. Lasu malplena por uzi la senŝanĝajn ampleksojn. + index: + callback_url: URL vokita per referenco + name: Nomo + new: Nova Aplikaĵo + title: Viaj aplikaĵoj + new: + title: Nova aplikaĵo + show: + actions: Agoj + application_id: Identigo de la aplikaĵo + callback_urls: URL-j vokitaj per referenco + scopes: Ampleksoj + secret: Sekreto + title: 'Aplikaĵo: %{name}' + authorizations: + buttons: + authorize: Rajtigi + deny: Rifuzi + error: + title: Eraro okazis + new: + able_to: Povos + prompt: La aplikaĵo %{client_name} petas aliron al via konto + title: Rajtigo bezonata + show: + title: Rajtiga kodo + authorized_applications: + buttons: + revoke: Malrajtigi + confirmations: + revoke: Ĉu vi certas? + index: + application: Aplikaĵo + created_at: Rajtigita + date_format: "%Y-%m-%d %H:%M:%S" + scopes: Ampleksoj + title: Viaj rajtigitaj aplikaĵoj + errors: + messages: + access_denied: La posedanto de la rimedo aŭ la rajtiga servilo rifuzis vian peton. + credential_flow_not_configured: La sendado de la identigiloj de la posedanto de la rimedo malsukcesis ĉar Doorkeeper.configure.resource_owner_from_credentials ne estis agordita. + invalid_client: La aŭtentigo de la kliento malsukcesis ĉar la kliento estas nekonata, aŭ mankis peto aŭtentigi, aŭ la aŭtentig-metodo ne estas subtenata. + invalid_grant: La rajtiga konsento ne estas valida, ne plu estas valida, estis forigita, ne kongruas kun la plusenda URI uzita en la aŭtentiga peto, aŭ estis sendita al alia kliento. + invalid_redirect_uri: La plusenda URI uzita en estas valida. + invalid_request: Mankis al la peto nepra parametro, enhavas nesubtenatan parametran valoron, aŭ la peto simple estas misformita. + invalid_resource_owner: La donitaj identigiloj pri la posedanto de la rimedo ne estas validaj, aŭ tiu ne povas esti trovita. + invalid_scope: La petita amplekso ne estas valida, estas nekonata, aŭ estas misformita. + invalid_token: + expired: La atingoĵetono eskiĝis. + revoked: La atingoĵetono estis rifuzita. + unknown: La atingoĵetono ne estas valida. + resource_owner_authenticator_not_configured: La posedanto de la rimedo ne povis esti trovita ĉar Doorkeeper.configure.resource_owner_authenticator ne estas agordita. + server_error: La rajtiga servilo rimarkis neatenditan kondiĉon, kiu malpermesis al ĝi plenumi la peton. + temporarily_unavailable: La rajtiga servilo ne povas nun plenumi la peton pro dumtempa superŝarĝo aŭ prizorgado de la servilo. + unauthorized_client: La kliento ne rajtas fari tian peton uzante tiun metodon. + unsupported_grant_type: La tipo de la rajtiga konsento ne estas subtenata de la rajtiga servilo. + unsupported_response_type: La rajtiga servilo ne subtenas tian respondon. + flash: + applications: + create: + notice: Aplikaĵo kreita. + destroy: + notice: Aplikaĵo forigita. + update: + notice: Aplikaĵo aktualigita. + authorized_applications: + destroy: + notice: Aplikaĵo malrajtigita. + layouts: + admin: + nav: + applications: Aplikaĵoj + oauth2_provider: OAuth2-provizanto + application: + title: OAuth-a rajtigo bezonata + scopes: + follow: sekvi, bloki, malbloki kaj malsekvi kontojn + read: legi la datumojn de via konto + write: mesaĝi kiel vi diff --git a/config/locales/eo.yml b/config/locales/eo.yml new file mode 100644 index 000000000..3644b37bb --- /dev/null +++ b/config/locales/eo.yml @@ -0,0 +1,164 @@ +--- +eo: + about: + about_mastodon: Mastodon estas senpaga, malfermitkoda socia reto. Ĝi estas sencentra alia eblo al komercaj servoj. Ĝi evitigas, ke unusola firmao regu vian tutan komunikadon. Elektu servilon, kiun vi fidas. Kiu ajn estas via elekto, vi povas interagi kun ĉiuj aliaj uzantoj. Iu ajn povas krei sian propran aperaĵon de Mastodon en sia servilo, kaj partopreni en la socia reto tute glate. + about_this: Pri tiu aperaĵo + apps: Aplikaĵoj + business_email: 'Profesia retpoŝt-adreso:' + contact: Kontakti + description_headline: Kio estas %{domain}? + domain_count_after: aliaj aperaĵoj + domain_count_before: Konektita al + features: + api: Malfermita API por aplikaĵoj kaj servoj + blocks: Kompletaj iloj por bloki kaj kaŝi + characters: Po 500 signoj por ĉiu mesaĝo + chronology: Tempolinioj laŭtempaj + ethics: 'Etike kreita: neniu reklamo, neniu ŝpurado' + gifv: Eblo diskonigi etajn videojn kaj GIFV + privacy: Videbleco agordita laŭ la mesaĝo + public: Publikaj tempolinioj + features_headline: Kiel Mastodon estas malsimila + get_started: Komenci + links: Ligiloj + other_instances: Aliaj aperaĵoj + source_code: Fontkodo + status_count_after: mesaĝoj + status_count_before: Kiu publikigis + terms: Terms + user_count_after: uzantoj + user_count_before: Hejmo de + accounts: + follow: Sekvi + followers: Sekvantoj + following: Sekvatoj + nothing_here: Estas nenio ĉi tie! + people_followed_by: Sekvatoj de %{name} + people_who_follow: Sekvantoj de %{name} + posts: Mesaĝoj + remote_follow: Fore sekvi + unfollow: Malsekvi + application_mailer: + settings: 'Ŝanĝi la retpoŝt-mesaĝajn preferojn: %{link}' + signature: Sciigoj de Mastodon el %{instance} + view: 'Vidi:' + applications: + invalid_url: La URL donita ne estas valida + auth: + change_password: Ŝanĝi pasvorton + didnt_get_confirmation: Ĉu vi ne ricevis la instrukciojn por konfirmi? + forgot_password: Pasvorto forgesita? + login: Ensaluti + logout: Elsaluti + register: Membriĝi + resend_confirmation: Resendi la instrukciojn por konfirmi + reset_password: Ŝanĝi la pasvorton + set_new_password: Elekti novan pasvorton + authorize_follow: + error: Bedaŭrinde, okazis eraro provante konsulti la foran konton + follow: Sekvi + prompt_html: 'Vi (%{self}) petis sekvi:' + title: Sekvi %{acct} + datetime: + distance_in_words: + about_x_hours: "%{count}h" + about_x_months: "%{count}mo" + about_x_years: "%{count}j" + almost_x_years: "%{count}j" + half_a_minute: Ĵus + less_than_x_minutes: "%{count}m" + less_than_x_seconds: Ĵus + over_x_years: "%{count}j" + x_days: "%{count}t" + x_minutes: "%{count}m" + x_months: "%{count}mo" + x_seconds: "%{count}s" + exports: + blocks: Vi blokas + csv: CSV + follows: Vi sekvas + storage: Mediaĵa konservado + generic: + changes_saved_msg: Ŝanĝoj senprobleme konservitaj! + powered_by: povigita de %{link} + save_changes: Konservi la ŝanĝojn + validation_errors: + one: Io ne okazis senprobleme! Bonvolu konsulti la suban erar-raporton. + other: Io ne okazis senprobleme! Bonvolu konsulti la subajn %{count} erar-raportojn. + imports: + preface: Vi povas alporti kelkajn datumojn, kiel listojn de ĉiuj homoj kiujn vi sekvas aŭ blokas, al via konto de ĉi tiu aperaĵo, per dosiero elportita de alia aperaĵo. + success: Viaj datumoj estis senprobleme alportitaj kaj estos traktitaj kiel planite. + types: + blocking: Listo de blokitoj + following: Listo de sekvatoj + upload: Alporti + landing_strip_html: %{name} estas uzanto en %{domain}. Vi povas sekvi tiun aŭ interagi kun tiu, se vi havas konton ie ajn en la Fediverse. Se vi ne havas, vi povas membriĝi ĉi tie.. + notification_mailer: + digest: + body: 'Jen eta resumo de tio, kio okazis en %{instance}, ekde kiam vi laste vizitis en %{since}:' + mention: "%{name} menciis vin en:" + new_followers_summary: + one: Vi ekhavis novan sekvanton! Jej! + other: Vi ekhavis %{count} novajn sekvantojn! Mirinde! + subject: + one: "1 nova sciigo ekde via lasta vizito \U0001F418" + other: "%{count} novaj sciigoj ekde via lasta vizito \U0001F418" + favourite: + body: '%{name} favoris vian mesaĝon:' + subject: "%{name} favoris vian mesaĝon" + follow: + body: "%{name} eksekvis vin:" + subject: "%{name} eksekvis vin" + follow_request: + body: "%{name} petis sekvi vin:" + subject: '%{name} petis sekvi vin' + mention: + body: '%{name} menciis vin en:' + subject: '%{name} menciis vin' + reblog: + body: '%{name} diskonigis vian mesaĝon:' + subject: "%{name} diskonigis vian mesaĝon" + pagination: + next: Sekva + prev: Malsekva + remote_follow: + acct: Enmetu vian uzantnomo@aperaĵo de kie vi volas sekvi tiun uzanton + missing_resource: La URL de plusendado ne povis esti trovita + proceed: Daŭrigi por plusendi + prompt: 'Vi eksekvos:' + settings: + authorized_apps: Rajtigitaj aplikaĵoj + back: Reveni al Mastodon + edit_profile: Redakti la profilon + export: Elporti datumojn + import: Alporti + preferences: Preferoj + settings: Agordoj + two_factor_auth: Dufaktora aŭtentigo + statuses: + open_in_web: Malfermi retumile + over_character_limit: limo de %{max} signoj trapasita + show_more: Montri pli + visibilities: + private: Montri nur al sekvantoj + public: Publika + unlisted: Publika, sed ne aperos en publikaj tempolinioj + stream_entries: + click_to_show: Alklaki por montri + reblogged: diskonigita + sensitive_content: Tikla enhavo + time: + formats: + default: "%b %d, %Y, %H:%M" + two_factor_auth: + description_html: Se vi ebligas dufaktoran aŭtentigon, vi bezonos vian poŝtelefonon por ensaluti, ĉar ĝi kreos nombrojn, kiujn vi devos entajpi. + disable: Malebligi + enable: Ebligi + instructions_html: "Skanu tiun QR-kodon per Google Authenticator aŭ per simila aplikaĵo de via poŝtelefono. De tiam, la aplikaĵo kreos nombrojn, kiujn vi devos entajpi." + plaintext_secret_html: 'Rekte legebla sekreta kodo: %{secret}' + warning: Se vi ne povas agordi aŭtentigan aplikaĵon nun, elektu "malebligi" aŭ vi ne plu povos ensaluti. + users: + invalid_email: La retpoŝt-adreso ne estas valida + invalid_otp_token: La dufaktora aŭtentigila kodo ne estas valida + will_paginate: + page_gap: "…" diff --git a/config/locales/simple_form.eo.yml b/config/locales/simple_form.eo.yml new file mode 100644 index 000000000..8c89a56e7 --- /dev/null +++ b/config/locales/simple_form.eo.yml @@ -0,0 +1,46 @@ +--- +eo: + simple_form: + hints: + defaults: + avatar: En la formato PNG, GIF aŭ JPG. Ĝis 2Mo. Estos malgrandigita al 120x120px + display_name: 30 signoj pleje + header: En la formato PNG, GIF aŭ JPG. Ĝis 2Mo. Estos malgrandigita al 700x335px + locked: Vi devos aprobi ĉiun peton de sekvado, kaj viaj mesaĝoj estos senŝanĝe nur por viaj sekvantoj. + note: 160 signoj pleje + imports: + data: Dosiero CSV el alia aperaĵo de Mastodon + labels: + defaults: + avatar: Profilbildo + confirm_new_password: Konfirmi novan pasvorton + confirm_password: Konfirmi la pasvorton + current_password: Nuna pasvorto + data: Datumoj + display_name: Publika nomo + email: Retpoŝt-adreso + header: Kapbildo + locale: Lingvo + locked: Privatigi la konton + new_password: Nova pasvorto + note: Sinprezento + otp_attempt: Dufaktora identigilo + password: Pasvorto + setting_default_privacy: Videbleco de la mesaĝoj + type: Tipo de alportado + username: Uzantnomo + interactions: + must_be_follower: Kaŝi la sciigojn de homoj, kiuj ne sekvas vin + must_be_following: Kaŝi la sciigojn de homoj, kiujn vi ne sekas + notification_emails: + digest: Sendi resumajn retpoŝt-mesaĝojn + favourite: Sendi retpoŝt-mesaĝon, kiam iu favoras mesaĝon de vi + follow: Sendi retpoŝt-mesaĝon, kiam iu eksekvas vin + follow_request: Sendi retpoŝt-mesaĝon, kiam iu petas sekvi vin + mention: Sendi retpoŝt-mesaĝon, kiam iu mencias vin + reblog: Sendi retpoŝt-mesaĝon, kiam iu diskonigas mesaĝon de vi + 'no': 'Ne' + required: + mark: "*" + text: bezonata + 'yes': 'Jes' From ce1ca2859403fd21db1f6237ce6a563edd4f62ae Mon Sep 17 00:00:00 2001 From: Neville Park Date: Mon, 3 Apr 2017 17:45:36 -0400 Subject: [PATCH 004/137] Changed "reblogs" to "boosts" --- config/locales/simple_form.en.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml index 4d1758f82..c781831a8 100644 --- a/config/locales/simple_form.en.yml +++ b/config/locales/simple_form.en.yml @@ -33,7 +33,7 @@ en: follow: Send e-mail when someone follows you follow_request: Send e-mail when someone requests to follow you mention: Send e-mail when someone mentions you - reblog: Send e-mail when someone reblogs your status + reblog: Send e-mail when someone boosts your status 'no': 'No' required: mark: "*" From b8243c1b49a1d0a3c102901e5facd90dd88b9c13 Mon Sep 17 00:00:00 2001 From: JantsoP Date: Tue, 4 Apr 2017 08:26:59 +0200 Subject: [PATCH 005/137] changed line 25 for better translation --- app/assets/javascripts/components/locales/fi.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/javascripts/components/locales/fi.jsx b/app/assets/javascripts/components/locales/fi.jsx index 5bef99923..39fa655e6 100644 --- a/app/assets/javascripts/components/locales/fi.jsx +++ b/app/assets/javascripts/components/locales/fi.jsx @@ -22,7 +22,7 @@ const fi = { "account.followers": "Seuraajia", "account.follows_you": "Seuraa sinua", "account.requested": "Odottaa hyväksyntää", - "getting_started.heading": "Päästä alkuun", + "getting_started.heading": "Aloitus", "getting_started.about_addressing": "Voit seurata ihmisiä jos tiedät heidän käyttäjänimensä ja domainin missä he ovat syöttämällä e-mail-esque osoitteen Etsi kenttään.", "getting_started.about_shortcuts": "Jos etsimäsi henkilö on samassa domainissa kuin sinä, pelkkä käyttäjänimi kelpaa. Sama pätee kun mainitset ihmisiä statuksessasi", "getting_started.open_source_notice": "Mastodon Mastodon on avoimen lähdekoodin ohjelma. Voit avustaa tai raportoida ongelmia githubissa {github}. {apps}.", From dc89fc17cc35f8e1deaffb30ae581ac453a7a9fc Mon Sep 17 00:00:00 2001 From: JantsoP Date: Tue, 4 Apr 2017 08:29:53 +0200 Subject: [PATCH 006/137] updated translation --- config/locales/simple_form.fi.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/simple_form.fi.yml b/config/locales/simple_form.fi.yml index 02c11752f..02943cea3 100644 --- a/config/locales/simple_form.fi.yml +++ b/config/locales/simple_form.fi.yml @@ -6,7 +6,7 @@ fi: avatar: PNG, GIF tai JPG. Korkeintaan 2MB. Skaalataan kokoon 120x120px display_name: Korkeintaan 30 merkkiä header: PNG, GIF tai JPG. Korkeintaan 2MB. Skaalataan kokoon 700x335px - locked: Vaatii sinun manuaalisesti hyväksymään seuraajat ja asettaa julkaisun yksityisyyden vain seuraajille + locked: Vaatii sinun manuaalisesti hyväksymään seuraajat ja asettaa julkaisujen yksityisyyden vain seuraajille note: Korkeintaan 160 merkkiä imports: data: CSV tiedosto tuotu toiselta Mastodon palvelimelta From 10a8666e04c1a1b20481bd67fb47c760cf508d68 Mon Sep 17 00:00:00 2001 From: JantsoP Date: Tue, 4 Apr 2017 15:07:15 +0200 Subject: [PATCH 007/137] updated line 28 about GitHub --- app/assets/javascripts/components/locales/fi.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/javascripts/components/locales/fi.jsx b/app/assets/javascripts/components/locales/fi.jsx index 39fa655e6..7b151d6f8 100644 --- a/app/assets/javascripts/components/locales/fi.jsx +++ b/app/assets/javascripts/components/locales/fi.jsx @@ -25,7 +25,7 @@ const fi = { "getting_started.heading": "Aloitus", "getting_started.about_addressing": "Voit seurata ihmisiä jos tiedät heidän käyttäjänimensä ja domainin missä he ovat syöttämällä e-mail-esque osoitteen Etsi kenttään.", "getting_started.about_shortcuts": "Jos etsimäsi henkilö on samassa domainissa kuin sinä, pelkkä käyttäjänimi kelpaa. Sama pätee kun mainitset ihmisiä statuksessasi", - "getting_started.open_source_notice": "Mastodon Mastodon on avoimen lähdekoodin ohjelma. Voit avustaa tai raportoida ongelmia githubissa {github}. {apps}.", + "getting_started.open_source_notice": "Mastodon Mastodon on avoimen lähdekoodin ohjelma. Voit avustaa tai raportoida ongelmia GitHub palvelussa {github}. {apps}.", "column.home": "Koti", "column.community": "Paikallinen aikajana", "column.public": "Yhdistetty aikajana", From 665ec615e30274bc10307ba9e56d37e3f9836f03 Mon Sep 17 00:00:00 2001 From: Angristan Date: Tue, 4 Apr 2017 15:57:37 +0200 Subject: [PATCH 008/137] Missing quotes --- docs/Running-Mastodon/Production-guide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Running-Mastodon/Production-guide.md b/docs/Running-Mastodon/Production-guide.md index 469fefa94..1fba2025b 100644 --- a/docs/Running-Mastodon/Production-guide.md +++ b/docs/Running-Mastodon/Production-guide.md @@ -132,7 +132,7 @@ Fill in the important data, like host/port of the redis database, host/port/user rake secret -To get a random string. If you are setting up on one single server (most likely), then REDIS_HOST is localhost and `DB_HOST` is `/var/run/postgresql`, `DB_USER` is `mastodon` and `DB_NAME` is `mastodon_production` while `DB_PASS` is empty because this setup will use the ident authentication method (system user "mastodon" maps to postgres user "mastodon"). +To get a random string. If you are setting up on one single server (most likely), then `REDIS_HOST` is localhost and `DB_HOST` is `/var/run/postgresql`, `DB_USER` is `mastodon` and `DB_NAME` is `mastodon_production` while `DB_PASS` is empty because this setup will use the ident authentication method (system user "mastodon" maps to postgres user "mastodon"). ## Setup From 58bdb9b42ee90ca2723ac28c0f45af40df1c6383 Mon Sep 17 00:00:00 2001 From: Florian Maunier Date: Tue, 4 Apr 2017 16:03:05 +0200 Subject: [PATCH 009/137] Update List-of-Mastodon-instances.md Add my own instance --- docs/Using-Mastodon/List-of-Mastodon-instances.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/Using-Mastodon/List-of-Mastodon-instances.md b/docs/Using-Mastodon/List-of-Mastodon-instances.md index 677ec7e56..5f8ef791c 100644 --- a/docs/Using-Mastodon/List-of-Mastodon-instances.md +++ b/docs/Using-Mastodon/List-of-Mastodon-instances.md @@ -37,5 +37,6 @@ There is also a list at [instances.mastodon.xyz](https://instances.mastodon.xyz) | [social.lkw.tf](https://social.lkw.tf)|N/A|No|No| | [manowar.social](https://manowar.social)|N/A|No|No| | [social.ballpointcarrot.net](https://social.ballpointcarrot.net)|Down at time of entry|No|No| +| [status.dissidence.ovh](https://status.dissidence.ovh)|N/A|Yes|Yes| Let me know if you start running one so I can add it to the list! (Alternatively, add it yourself as a pull request). From 192f079776322605accf81cb422ce1b0c7743247 Mon Sep 17 00:00:00 2001 From: Adam Thurlow Date: Tue, 4 Apr 2017 11:14:51 -0300 Subject: [PATCH 010/137] Add mastodon.club to running instances list --- docs/Using-Mastodon/List-of-Mastodon-instances.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/Using-Mastodon/List-of-Mastodon-instances.md b/docs/Using-Mastodon/List-of-Mastodon-instances.md index 677ec7e56..380ff63c0 100644 --- a/docs/Using-Mastodon/List-of-Mastodon-instances.md +++ b/docs/Using-Mastodon/List-of-Mastodon-instances.md @@ -24,6 +24,7 @@ There is also a list at [instances.mastodon.xyz](https://instances.mastodon.xyz) | [social.imirhil.fr](https://social.imirhil.fr) |N/A|No|Yes| | [social.wxcafe.net](https://social.wxcafe.net) |Open registrations, federates everywhere, no moderation yet|Yes|Yes| | [octodon.social](https://octodon.social) |Open registrations, federates everywhere, cutest instance yet|Yes|Yes| +| [mastodon.club](https://mastodon.club)|Open Registration, Open Federation, Mostly Canadians|Yes|No| | [hostux.social](https://hostux.social) |N/A|Yes|Yes| | [social.alex73630.xyz](https://social.alex73630.xyz) |Francophones|Yes|Yes| | [maly.io](https://maly.io) |N/A|Yes|No| @@ -38,4 +39,5 @@ There is also a list at [instances.mastodon.xyz](https://instances.mastodon.xyz) | [manowar.social](https://manowar.social)|N/A|No|No| | [social.ballpointcarrot.net](https://social.ballpointcarrot.net)|Down at time of entry|No|No| + Let me know if you start running one so I can add it to the list! (Alternatively, add it yourself as a pull request). From d8855150a0dc46d4435d623c87e593b0e44a103c Mon Sep 17 00:00:00 2001 From: Jo Decker Date: Tue, 4 Apr 2017 15:29:07 +0100 Subject: [PATCH 011/137] Update social.diskseven.com's IPv6 status As far as I'm aware, my instance should be supporting IPv6 now. Was an error on my part that it wasn't working before. --- docs/Using-Mastodon/List-of-Mastodon-instances.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Using-Mastodon/List-of-Mastodon-instances.md b/docs/Using-Mastodon/List-of-Mastodon-instances.md index 677ec7e56..587e9d865 100644 --- a/docs/Using-Mastodon/List-of-Mastodon-instances.md +++ b/docs/Using-Mastodon/List-of-Mastodon-instances.md @@ -15,7 +15,7 @@ There is also a list at [instances.mastodon.xyz](https://instances.mastodon.xyz) | [gay.crime.team](https://gay.crime.team) |the place for doin' gay crime online (please don't actually do crime here)|Yes|No| | [icosahedron.website](https://icosahedron.website/) |Icosahedron-themed (well, visually), open registration.|Yes|No| | [memetastic.space](https://memetastic.space) |Memes|Yes|No| -| [social.diskseven.com](https://social.diskseven.com) |Single user|No|No (DNS entry but no response)| +| [social.diskseven.com](https://social.diskseven.com) |Single user|No|Yes| | [social.gestaltzerfall.net](https://social.gestaltzerfall.net) |Single user|No|No| | [mastodon.xyz](https://mastodon.xyz) |N/A|Yes|Yes| | [social.targaryen.house](https://social.targaryen.house) |Federates everywhere, quick updates.|Yes|Yes| From e9a6da6bc739f4f68447f56b93810762da388ce8 Mon Sep 17 00:00:00 2001 From: Pete Keen Date: Tue, 4 Apr 2017 11:04:44 -0400 Subject: [PATCH 012/137] [#817] Add email whitelist This adds the ability to filter user signup with a whitelist instead of or in addition to a blacklist. Fixes #817 --- .env.production.sample | 2 ++ app/lib/email_validator.rb | 17 ++++++++++++-- config/initializers/blacklists.rb | 1 + spec/models/user_spec.rb | 37 +++++++++++++++++++++++++++++++ 4 files changed, 55 insertions(+), 2 deletions(-) diff --git a/.env.production.sample b/.env.production.sample index bd81b8fca..a7f9eb4bf 100644 --- a/.env.production.sample +++ b/.env.production.sample @@ -22,6 +22,8 @@ OTP_SECRET= # SINGLE_USER_MODE=true # Prevent registrations with following e-mail domains # EMAIL_DOMAIN_BLACKLIST=example1.com|example2.de|etc +# Only allow registrations with the following e-mail domains +# EMAIL_DOMAIN_WHITELIST=example1.com|example2.de|etc # E-mail configuration SMTP_SERVER=smtp.mailgun.org diff --git a/app/lib/email_validator.rb b/app/lib/email_validator.rb index 856b8b1f7..06e9375f6 100644 --- a/app/lib/email_validator.rb +++ b/app/lib/email_validator.rb @@ -2,17 +2,30 @@ class EmailValidator < ActiveModel::EachValidator def validate_each(record, attribute, value) - return if Rails.configuration.x.email_domains_blacklist.empty? - record.errors.add(attribute, I18n.t('users.invalid_email')) if blocked_email?(value) end private def blocked_email?(value) + on_blacklist?(value) || not_on_whitelist?(value) + end + + def on_blacklist?(value) + return false if Rails.configuration.x.email_domains_blacklist.blank? + domains = Rails.configuration.x.email_domains_blacklist.gsub('.', '\.') regexp = Regexp.new("@(.+\\.)?(#{domains})", true) value =~ regexp end + + def not_on_whitelist?(value) + return false if Rails.configuration.x.email_domains_whitelist.blank? + + domains = Rails.configuration.x.email_domains_whitelist.gsub('.', '\.') + regexp = Regexp.new("@(.+\\.)?(#{domains})", true) + + value !~ regexp + end end diff --git a/config/initializers/blacklists.rb b/config/initializers/blacklists.rb index 52646e64d..6db7be7dc 100644 --- a/config/initializers/blacklists.rb +++ b/config/initializers/blacklists.rb @@ -2,4 +2,5 @@ Rails.application.configure do config.x.email_domains_blacklist = ENV.fetch('EMAIL_DOMAIN_BLACKLIST') { 'mvrht.com' } + config.x.email_domains_whitelist = ENV.fetch('EMAIL_DOMAIN_WHITELIST') { '' } end diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 64de06749..aa777fd39 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -1,5 +1,42 @@ require 'rails_helper' RSpec.describe User, type: :model do + let(:account) { Fabricate(:account, username: 'alice') } + let(:password) { 'abcd1234' } + describe 'blacklist' do + it 'should allow a non-blacklisted user to be created' do + user = User.new(email: 'foo@example.com', account: account, password: password) + + expect(user.valid?).to be_truthy + end + + it 'should not allow a blacklisted user to be created' do + user = User.new(email: 'foo@mvrht.com', account: account, password: password) + + expect(user.valid?).to be_falsey + end + end + + describe 'whitelist' do + around(:each) do |example| + old_whitelist = Rails.configuration.x.email_whitelist + + Rails.configuration.x.email_domains_whitelist = 'mastodon.space' + + example.run + + Rails.configuration.x.email_domains_whitelist = old_whitelist + end + + it 'should not allow a user to be created unless they are whitelisted' do + user = User.new(email: 'foo@example.com', account: account, password: password) + expect(user.valid?).to be_falsey + end + + it 'should allow a user to be created if they are whitelisted' do + user = User.new(email: 'foo@mastodon.space', account: account, password: password) + expect(user.valid?).to be_truthy + end + end end From 2fcf8d79ad3e7051e0089741ed00ec0eff0de637 Mon Sep 17 00:00:00 2001 From: Angristan Date: Tue, 4 Apr 2017 17:23:56 +0200 Subject: [PATCH 013/137] Fix crontab edit Missing -u parameter to specify the mastodon user. --- docs/Running-Mastodon/Production-guide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Running-Mastodon/Production-guide.md b/docs/Running-Mastodon/Production-guide.md index 469fefa94..2c8db20b7 100644 --- a/docs/Running-Mastodon/Production-guide.md +++ b/docs/Running-Mastodon/Production-guide.md @@ -221,7 +221,7 @@ I recommend creating a couple cronjobs for the following tasks: You may want to run `which bundle` first and copypaste that full path instead of simply `bundle` in the above commands because cronjobs usually don't have all the paths set. The time and intervals of when to run these jobs are up to you, but once every day should be enough for all. -You can edit the cronjob file for the `mastodon` user by running `sudo crontab -e mastodon` (outside of the mastodon user). +You can edit the cronjob file for the `mastodon` user by running `sudo crontab -e -u mastodon` (outside of the mastodon user). ## Things to look out for when upgrading Mastodon From 731e650681004bcb8ad11d610e017975a706f57d Mon Sep 17 00:00:00 2001 From: Kurtis Rainbolt-Greene Date: Tue, 4 Apr 2017 09:04:07 -0700 Subject: [PATCH 014/137] Use active record shorthand --- app/lib/feed_manager.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/lib/feed_manager.rb b/app/lib/feed_manager.rb index a2efcce10..9398d6c70 100644 --- a/app/lib/feed_manager.rb +++ b/app/lib/feed_manager.rb @@ -118,7 +118,7 @@ class FeedManager def filter_from_mentions?(status, receiver) check_for_blocks = [status.account_id] - check_for_blocks.concat(status.mentions.select('account_id').map(&:account_id)) + check_for_blocks.concat(status.mentions.pluck(:account_id)) check_for_blocks.concat([status.in_reply_to_account]) if status.reply? && !status.in_reply_to_account_id.nil? should_filter = receiver.id == status.account_id # Filter if I'm mentioning myself From 7015578655553b89e0184e6fe10b88075f4d8446 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Santoro?= Date: Tue, 4 Apr 2017 18:11:14 +0200 Subject: [PATCH 015/137] Add social.nasqueron.org instance --- docs/Using-Mastodon/List-of-Mastodon-instances.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/Using-Mastodon/List-of-Mastodon-instances.md b/docs/Using-Mastodon/List-of-Mastodon-instances.md index 677ec7e56..d971147b6 100644 --- a/docs/Using-Mastodon/List-of-Mastodon-instances.md +++ b/docs/Using-Mastodon/List-of-Mastodon-instances.md @@ -37,5 +37,6 @@ There is also a list at [instances.mastodon.xyz](https://instances.mastodon.xyz) | [social.lkw.tf](https://social.lkw.tf)|N/A|No|No| | [manowar.social](https://manowar.social)|N/A|No|No| | [social.ballpointcarrot.net](https://social.ballpointcarrot.net)|Down at time of entry|No|No| +| [social.nasqueron.org](https://social.nasqueron.org) |Dreamers, open source developers, free culture|Yes|Yes| Let me know if you start running one so I can add it to the list! (Alternatively, add it yourself as a pull request). From 22000ef7a91f00058b69e26a0bac0298966d4cf7 Mon Sep 17 00:00:00 2001 From: Valentin Lorentz Date: Tue, 4 Apr 2017 18:11:41 +0200 Subject: [PATCH 016/137] Add oc.todon.fr to the list of instances. [SKIP CI] --- docs/Using-Mastodon/List-of-Mastodon-instances.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/Using-Mastodon/List-of-Mastodon-instances.md b/docs/Using-Mastodon/List-of-Mastodon-instances.md index 677ec7e56..39f51cff6 100644 --- a/docs/Using-Mastodon/List-of-Mastodon-instances.md +++ b/docs/Using-Mastodon/List-of-Mastodon-instances.md @@ -26,6 +26,7 @@ There is also a list at [instances.mastodon.xyz](https://instances.mastodon.xyz) | [octodon.social](https://octodon.social) |Open registrations, federates everywhere, cutest instance yet|Yes|Yes| | [hostux.social](https://hostux.social) |N/A|Yes|Yes| | [social.alex73630.xyz](https://social.alex73630.xyz) |Francophones|Yes|Yes| +| [oc.todon.fr](https://oc.todon.fr) |Modérée et principalement francophone, pas de tolérances pour misogynie/LGBTphobies/validisme/etc.|Yes|Yes| | [maly.io](https://maly.io) |N/A|Yes|No| | [social.lou.lt](https://social.lou.lt) |N/A|Yes|No| | [mastodon.ninetailed.uk](https://mastodon.ninetailed.uk) |N/A|Yes|No| From 41ba74b511916330771c097cd74f3bc07801291f Mon Sep 17 00:00:00 2001 From: Pierre Ozoux Date: Tue, 4 Apr 2017 17:28:29 +0100 Subject: [PATCH 017/137] Update the list of instances --- docs/Using-Mastodon/List-of-Mastodon-instances.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/docs/Using-Mastodon/List-of-Mastodon-instances.md b/docs/Using-Mastodon/List-of-Mastodon-instances.md index 677ec7e56..b0c9c58fd 100644 --- a/docs/Using-Mastodon/List-of-Mastodon-instances.md +++ b/docs/Using-Mastodon/List-of-Mastodon-instances.md @@ -7,19 +7,17 @@ There is also a list at [instances.mastodon.xyz](https://instances.mastodon.xyz) | -------------|-------------|---|---| | [mastodon.social](https://mastodon.social) |Flagship, quick updates|Yes|No| | [awoo.space](https://awoo.space) |Intentionally moderated, only federates with mastodon.social|Yes|No| -| [social.tchncs.de](https://social.tchncs.de)|N/A|Yes|No| | [animalliberation.social](https://animalliberation.social) |Animal Rights|Yes|No| | [socially.constructed.space](https://socially.constructed.space) |Single user|No|No| | [epiktistes.com](https://epiktistes.com) |N/A|Yes|No| | [fern.surgeplay.com](https://fern.surgeplay.com) |Federates everywhere, Minecraft-focused|Yes|No -| [gay.crime.team](https://gay.crime.team) |the place for doin' gay crime online (please don't actually do crime here)|Yes|No| +| [gay.crime.team](https://gay.crime.team) |the place for doin' gay crime online (please don't actually do crime here)|No|No| | [icosahedron.website](https://icosahedron.website/) |Icosahedron-themed (well, visually), open registration.|Yes|No| | [memetastic.space](https://memetastic.space) |Memes|Yes|No| | [social.diskseven.com](https://social.diskseven.com) |Single user|No|No (DNS entry but no response)| | [social.gestaltzerfall.net](https://social.gestaltzerfall.net) |Single user|No|No| | [mastodon.xyz](https://mastodon.xyz) |N/A|Yes|Yes| | [social.targaryen.house](https://social.targaryen.house) |Federates everywhere, quick updates.|Yes|Yes| -| [social.mashek.net](https://social.mashek.net) |Themed and customised for Mashekstein Labs community. Selectively federates.|Yes|No| | [masto.themimitoof.fr](https://masto.themimitoof.fr) |N/A|Yes|Yes| | [social.imirhil.fr](https://social.imirhil.fr) |N/A|No|Yes| | [social.wxcafe.net](https://social.wxcafe.net) |Open registrations, federates everywhere, no moderation yet|Yes|Yes| @@ -36,6 +34,6 @@ There is also a list at [instances.mastodon.xyz](https://instances.mastodon.xyz) | [share.elouworld.org](https://share.elouworld.org)|N/A|No|No| | [social.lkw.tf](https://social.lkw.tf)|N/A|No|No| | [manowar.social](https://manowar.social)|N/A|No|No| -| [social.ballpointcarrot.net](https://social.ballpointcarrot.net)|Down at time of entry|No|No| +| [social.ballpointcarrot.net](https://social.ballpointcarrot.net)|N/A|No|No| Let me know if you start running one so I can add it to the list! (Alternatively, add it yourself as a pull request). From 9a5d6e97150c0c1ab0f402e121d7dbafdd46998e Mon Sep 17 00:00:00 2001 From: "Thibaut (Eychics)" Date: Tue, 4 Apr 2017 18:58:19 +0200 Subject: [PATCH 018/137] Add closed_registrations message on French language --- config/locales/fr.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 758501403..e9989e383 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -5,6 +5,7 @@ fr: about_this: À propos de cette instance apps: Applications business_email: E-mail professionnel + closed_registrations: Les inscriptions sont actuellement fermées sur cette instance. . description_headline: Qu'est-ce que %{domain} ? domain_count_after: autres instances domain_count_before: Connectés à From 350958babfe9473ec362f6693abbcc4137b5ace4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20D?= Date: Tue, 4 Apr 2017 19:09:54 +0200 Subject: [PATCH 019/137] Fix typos on french translations --- config/locales/doorkeeper.fr.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/config/locales/doorkeeper.fr.yml b/config/locales/doorkeeper.fr.yml index c94e5c095..be109df9c 100644 --- a/config/locales/doorkeeper.fr.yml +++ b/config/locales/doorkeeper.fr.yml @@ -62,7 +62,7 @@ fr: buttons: revoke: Annuler confirmations: - revoke: Êtes-vous certain? + revoke: Êtes-vous certain ? index: application: Application created_at: Créé le @@ -72,19 +72,19 @@ fr: errors: messages: access_denied: Le propriétaire de la ressource ou le serveur d'autorisation a refusé la demande. - credential_flow_not_configured: Le flux des identifiants du mot de passe du propriétaire de la ressource a échoué en raison de Doorkeeper.configure.resource_owner_from_credentials n'est pas configuré. + credential_flow_not_configured: Le flux des identifiants du mot de passe du propriétaire de la ressource a échoué car Doorkeeper.configure.resource_owner_from_credentials n'est pas configuré. invalid_client: L'authentification du client a échoué à cause d'un client inconnu, d'aucune authentification de client incluse, ou d'une méthode d'authentification non prise en charge. invalid_grant: Le consentement d'autorisation accordé n'est pas valide, a expiré, est annulé, ne concorde pas avec l'URL de redirection utilisée dans la demande d'autorisation, ou a été émis à un autre client. invalid_redirect_uri: L'URL de redirection n'est pas valide. invalid_request: La demande manque un paramètre requis, inclut une valeur de paramètre non prise en charge, ou est autrement mal formée. - invalid_resource_owner: Les identifiants fournis du propriétaire de la ressource ne sont pas valides, ou le propriétaire de la ressource ne peut être trouvé + invalid_resource_owner: Les identifiants fournis par le propriétaire de la ressource ne sont pas valides, ou le propriétaire de la ressource ne peut être trouvé invalid_scope: La portée demandée n'est pas valide, est inconnue, ou est mal formée. invalid_token: expired: Le jeton d'accès a expiré revoked: Le jeton d'accès a été révoqué unknown: Le jeton d'accès n'est pas valide - resource_owner_authenticator_not_configured: La recherche du propriétaire de la ressource a échoué en raison de Doorkeeper.configure.resource_owner_authenticator n'est pas configuré. - server_error: Le serveur d'autorisation a rencontré une condition inattendue qui l'a empêché de remplir la demande. + resource_owner_authenticator_not_configured: La recherche du propriétaire de la ressource a échoué car Doorkeeper.configure.resource_owner_authenticator n'est pas configuré. + server_error: Le serveur d'autorisation a rencontré une condition inattendue l'empêchant de remplir la demande. temporarily_unavailable: Le serveur d'autorisation est actuellement incapable de traiter la demande à cause d'une surcharge ou d'un entretien temporaire du serveur. unauthorized_client: Le client n'est pas autorisé à effectuer cette demande à l'aide de cette méthode. unsupported_grant_type: Le type de consentement d'autorisation n'est pas pris en charge par le serveur d'autorisation. From 6091b9b1a965ae5c1751627ee29c7db95643fcfe Mon Sep 17 00:00:00 2001 From: Angristan Date: Tue, 4 Apr 2017 19:23:53 +0200 Subject: [PATCH 020/137] Add file package If the file package is not installed, we get "Validation failed: File has contents that are not what they are reported to be" when upload media. --- docs/Running-Mastodon/Production-guide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Running-Mastodon/Production-guide.md b/docs/Running-Mastodon/Production-guide.md index 469fefa94..a70f174d4 100644 --- a/docs/Running-Mastodon/Production-guide.md +++ b/docs/Running-Mastodon/Production-guide.md @@ -76,7 +76,7 @@ It is recommended to create a special user for mastodon on the server (you could ## General dependencies curl -sL https://deb.nodesource.com/setup_4.x | sudo bash - - sudo apt-get install imagemagick ffmpeg libpq-dev libxml2-dev libxslt1-dev nodejs + sudo apt-get install imagemagick ffmpeg libpq-dev libxml2-dev libxslt1-dev nodejs file sudo npm install -g yarn ## Redis From dcda852b5ff8cc894b384c30f69d66990ee61993 Mon Sep 17 00:00:00 2001 From: Nope Nope Date: Tue, 4 Apr 2017 20:45:32 +0200 Subject: [PATCH 021/137] typo in admin doc s/rails/rake/ --- docs/Running-Mastodon/Administration-guide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Running-Mastodon/Administration-guide.md b/docs/Running-Mastodon/Administration-guide.md index af78f6235..dd69eb303 100644 --- a/docs/Running-Mastodon/Administration-guide.md +++ b/docs/Running-Mastodon/Administration-guide.md @@ -7,7 +7,7 @@ So, you have a working Mastodon instance... now what? The following rake task: - rails mastodon:make_admin USERNAME=alice + rake mastodon:make_admin USERNAME=alice Would turn the local user "alice" into an admin. From 8736ef50ad13d5506bd6a673d4fcb96c33b609a3 Mon Sep 17 00:00:00 2001 From: axolotl Date: Tue, 4 Apr 2017 20:54:42 +0200 Subject: [PATCH 022/137] Added Esperanto translation inside the javascripts folder --- .../components/containers/mastodon.jsx | 3 +- .../javascripts/components/locales/eo.jsx | 68 +++++++++++++++++++ .../javascripts/components/locales/index.jsx | 4 +- 3 files changed, 73 insertions(+), 2 deletions(-) create mode 100644 app/assets/javascripts/components/locales/eo.jsx diff --git a/app/assets/javascripts/components/containers/mastodon.jsx b/app/assets/javascripts/components/containers/mastodon.jsx index 6dc08bb4c..2861c64e4 100644 --- a/app/assets/javascripts/components/containers/mastodon.jsx +++ b/app/assets/javascripts/components/containers/mastodon.jsx @@ -46,6 +46,7 @@ import fr from 'react-intl/locale-data/fr'; import pt from 'react-intl/locale-data/pt'; import hu from 'react-intl/locale-data/hu'; import uk from 'react-intl/locale-data/uk'; +import eo from 'react-intl/locale-data/eo'; import getMessagesForLocale from '../locales'; import { hydrateStore } from '../actions/store'; import createStream from '../stream'; @@ -58,7 +59,7 @@ const browserHistory = useRouterHistory(createBrowserHistory)({ basename: '/web' }); -addLocaleData([...en, ...de, ...es, ...fr, ...pt, ...hu, ...uk]); +addLocaleData([...en, ...de, ...es, ...fr, ...pt, ...hu, ...uk, ...eo]); const Mastodon = React.createClass({ diff --git a/app/assets/javascripts/components/locales/eo.jsx b/app/assets/javascripts/components/locales/eo.jsx new file mode 100644 index 000000000..8c118b31f --- /dev/null +++ b/app/assets/javascripts/components/locales/eo.jsx @@ -0,0 +1,68 @@ +const eo = { + "column_back_button.label": "Reveni", + "lightbox.close": "Fermi", + "loading_indicator.label": "Ŝarĝanta...", + "status.mention": "Mencii @{name}", + "status.delete": "Forigi", + "status.reply": "Respondi", + "status.reblog": "Diskonigi", + "status.favourite": "Favori", + "status.reblogged_by": "{name} diskonigita", + "status.sensitive_warning": "Tikla enhavo", + "status.sensitive_toggle": "Alklaki por vidi", + "video_player.toggle_sound": "Aktivigi sonojn", + "account.mention": "Mencii @{name}", + "account.edit_profile": "Redakti la profilon", + "account.unblock": "Malbloki @{name}", + "account.unfollow": "Malsekvi", + "account.block": "Bloki @{name}", + "account.follow": "Sekvi", + "account.posts": "Mesaĝoj", + "account.follows": "Sekvatoj", + "account.followers": "Sekvantoj", + "account.follows_you": "Sekvas vin", + "account.requested": "Atendas aprobon", + "getting_started.heading": "Por komenci", + "getting_started.about_addressing": "Vi povas sekvi homojn se vi konas la uzantnomon kaj domajnon tajpinte retpoŝtecan adreson en la serĉilon.", + "getting_started.about_shortcuts": "Se la celita uzanto troviĝas en la sama domajno de vi, uzi nur la uzantnomon sufiĉos. La sama regulo validas por mencii aliajn uzantojn en mesaĝo.", + "getting_started.open_source_notice": "Mastodon estas malfermitkoda programo. Vi povas kontribui aŭ raporti problemojn en github je {github}. {apps}.", + "column.home": "Hejmo", + "column.community": "Loka tempolinio", + "column.public": "Fratara tempolinio", + "column.notifications": "Sciigoj", + "tabs_bar.compose": "Ekskribi", + "tabs_bar.home": "Hejmo", + "tabs_bar.mentions": "Sciigoj", + "tabs_bar.public": "Fratara tempolinio", + "tabs_bar.notifications": "Sciigoj", + "compose_form.placeholder": "Pri kio vi pensas?", + "compose_form.publish": "Hup", + "compose_form.sensitive": "Marki ke la enhavo estas tikla", + "compose_form.spoiler": "Kaŝi la tekston malantaŭ averto", + "compose_form.private": "Marki ke la enhavo estas privata", + "compose_form.privacy_disclaimer": "Via privata mesaĝo estos sendita nur al menciitaj uzantoj en {domains}. Ĉu vi fidas {domainsCount, plural, one {tiun servilon} other {tiujn servilojn}}? Mesaĝa privateco funkcias nur en aperaĵoj de Mastodon. Se {domains} {domainsCount, plural, one {ne estas aperaĵo de Mastodon} other {ne estas aperaĵoj de Mastodon}}, estos neniu indiko ke via mesaĝo estas privata, kaj ĝi povus esti diskonigita aŭ videbligita al necelitaj ricevantoj.", + "compose_form.unlisted": "Ne afiŝi en publikaj tempolinioj", + "navigation_bar.edit_profile": "Redakti la profilon", + "navigation_bar.preferences": "Preferoj", + "navigation_bar.community_timeline": "Loka tempolinio", + "navigation_bar.public_timeline": "Fratara tempolinio", + "navigation_bar.logout": "Elsaluti", + "reply_indicator.cancel": "Rezigni", + "search.placeholder": "Serĉi", + "search.account": "Konto", + "search.hashtag": "Kradvorto", + "upload_button.label": "Aldoni enhavaĵon", + "upload_form.undo": "Malfari", + "notification.follow": "{name} sekvis vin", + "notification.favourite": "{name} favoris vian mesaĝon", + "notification.reblog": "{name} diskonigis vian mesaĝon", + "notification.mention": "{name} menciis vin", + "notifications.column_settings.alert": "Retumilaj atentigoj", + "notifications.column_settings.show": "Montri en kolono", + "notifications.column_settings.follow": "Novaj sekvantoj:", + "notifications.column_settings.favourite": "Favoroj:", + "notifications.column_settings.mention": "Mencioj:", + "notifications.column_settings.reblog": "Diskonigoj:", +}; + +export default eo; diff --git a/app/assets/javascripts/components/locales/index.jsx b/app/assets/javascripts/components/locales/index.jsx index 203929d66..255172f1e 100644 --- a/app/assets/javascripts/components/locales/index.jsx +++ b/app/assets/javascripts/components/locales/index.jsx @@ -5,6 +5,7 @@ import hu from './hu'; import fr from './fr'; import pt from './pt'; import uk from './uk'; +import eo from './eo'; const locales = { en, @@ -13,7 +14,8 @@ const locales = { hu, fr, pt, - uk + uk, + eo }; export default function getMessagesForLocale (locale) { From 1e5a1b9abd9dca06e19651f80923249b09bcc847 Mon Sep 17 00:00:00 2001 From: Udo Kramer Date: Tue, 4 Apr 2017 23:45:29 +0200 Subject: [PATCH 023/137] Update Production-guide.md --- docs/Running-Mastodon/Production-guide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Running-Mastodon/Production-guide.md b/docs/Running-Mastodon/Production-guide.md index 469fefa94..ffe42b411 100644 --- a/docs/Running-Mastodon/Production-guide.md +++ b/docs/Running-Mastodon/Production-guide.md @@ -112,7 +112,7 @@ Then once `rbenv` is ready, run `rbenv install 2.3.1` to install the Ruby versio You need the `git-core` package installed on your system. If it is so, from the `mastodon` user: cd ~ - git clone https://github.com/Gargron/mastodon.git live + git clone https://github.com/tootsuite/mastodon.git live cd live Then you can proceed to install project dependencies: From 81c76fe375d9342e5a436db05c8e25305c650e8d Mon Sep 17 00:00:00 2001 From: Samy KACIMI Date: Wed, 5 Apr 2017 00:29:56 +0200 Subject: [PATCH 024/137] add more tests to models --- Gemfile | 1 + Gemfile.lock | 3 + app/models/block.rb | 5 +- app/models/follow.rb | 9 ++- app/models/follow_request.rb | 5 +- app/models/mention.rb | 5 +- config/database.yml | 4 ++ spec/fabricators/account_fabricator.rb | 2 +- spec/fabricators/block_fabricator.rb | 3 +- spec/fabricators/follow_fabricator.rb | 3 +- spec/fabricators/follow_request_fabricator.rb | 3 +- spec/fabricators/mention_fabricator.rb | 4 ++ spec/fabricators/user_fabricator.rb | 2 +- spec/models/account_spec.rb | 69 +++++++++++++++++++ spec/models/block_spec.rb | 17 +++++ spec/models/domain_block_spec.rb | 18 +++++ spec/models/follow_request_spec.rb | 19 +++++ spec/models/follow_spec.rb | 19 +++++ spec/models/mention_spec.rb | 17 +++++ spec/models/user_spec.rb | 44 ++++++++++++ spec/rails_helper.rb | 2 + .../model/model_have_error_on_field.rb | 15 ++++ 22 files changed, 252 insertions(+), 17 deletions(-) create mode 100644 spec/fabricators/mention_fabricator.rb create mode 100644 spec/support/matchers/model/model_have_error_on_field.rb diff --git a/Gemfile b/Gemfile index 4c6314763..87ea77735 100644 --- a/Gemfile +++ b/Gemfile @@ -70,6 +70,7 @@ group :test do gem 'simplecov', require: false gem 'webmock' gem 'rspec-sidekiq' + gem 'faker' end group :development do diff --git a/Gemfile.lock b/Gemfile.lock index 26c7b9962..a774a89ba 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -149,6 +149,8 @@ GEM erubis (2.7.0) execjs (2.7.0) fabrication (2.15.2) + faker (1.6.6) + i18n (~> 0.5) fast_blank (1.0.0) font-awesome-rails (4.6.3.1) railties (>= 3.2, < 5.1) @@ -470,6 +472,7 @@ DEPENDENCIES doorkeeper dotenv-rails fabrication + faker fast_blank font-awesome-rails fuubar diff --git a/app/models/block.rb b/app/models/block.rb index 9c55703c9..ae456a6b6 100644 --- a/app/models/block.rb +++ b/app/models/block.rb @@ -3,9 +3,8 @@ class Block < ApplicationRecord include Paginable - belongs_to :account - belongs_to :target_account, class_name: 'Account' + belongs_to :account, required: true + belongs_to :target_account, class_name: 'Account', required: true - validates :account, :target_account, presence: true validates :account_id, uniqueness: { scope: :target_account_id } end diff --git a/app/models/follow.rb b/app/models/follow.rb index 8bfe8b2f6..fd7325f05 100644 --- a/app/models/follow.rb +++ b/app/models/follow.rb @@ -3,11 +3,14 @@ class Follow < ApplicationRecord include Paginable - belongs_to :account, counter_cache: :following_count - belongs_to :target_account, class_name: 'Account', counter_cache: :followers_count + belongs_to :account, counter_cache: :following_count, required: true + + belongs_to :target_account, + class_name: 'Account', + counter_cache: :followers_count, + required: true has_one :notification, as: :activity, dependent: :destroy - validates :account, :target_account, presence: true validates :account_id, uniqueness: { scope: :target_account_id } end diff --git a/app/models/follow_request.rb b/app/models/follow_request.rb index 4224ab15d..20e1332dd 100644 --- a/app/models/follow_request.rb +++ b/app/models/follow_request.rb @@ -3,12 +3,11 @@ class FollowRequest < ApplicationRecord include Paginable - belongs_to :account - belongs_to :target_account, class_name: 'Account' + belongs_to :account, required: true + belongs_to :target_account, class_name: 'Account', required: true has_one :notification, as: :activity, dependent: :destroy - validates :account, :target_account, presence: true validates :account_id, uniqueness: { scope: :target_account_id } def authorize! diff --git a/app/models/mention.rb b/app/models/mention.rb index 10a9cb1cd..03e76fcc4 100644 --- a/app/models/mention.rb +++ b/app/models/mention.rb @@ -1,11 +1,10 @@ # frozen_string_literal: true class Mention < ApplicationRecord - belongs_to :account, inverse_of: :mentions - belongs_to :status + belongs_to :account, inverse_of: :mentions, required: true + belongs_to :status, required: true has_one :notification, as: :activity, dependent: :destroy - validates :account, :status, presence: true validates :account, uniqueness: { scope: :status } end diff --git a/config/database.yml b/config/database.yml index 5ec342f93..390113480 100644 --- a/config/database.yml +++ b/config/database.yml @@ -3,6 +3,10 @@ default: &default pool: <%= ENV["DB_POOL"] || ENV['MAX_THREADS'] || 5 %> timeout: 5000 encoding: unicode + host: localhost + username: samy + password: tardis + port: 32769 development: <<: *default diff --git a/spec/fabricators/account_fabricator.rb b/spec/fabricators/account_fabricator.rb index 3a7c00bf5..567de05f4 100644 --- a/spec/fabricators/account_fabricator.rb +++ b/spec/fabricators/account_fabricator.rb @@ -1,3 +1,3 @@ Fabricator(:account) do - username "alice" + username { Faker::Internet.user_name(nil, %w(_)) } end diff --git a/spec/fabricators/block_fabricator.rb b/spec/fabricators/block_fabricator.rb index 9a5a6808f..379931ba6 100644 --- a/spec/fabricators/block_fabricator.rb +++ b/spec/fabricators/block_fabricator.rb @@ -1,3 +1,4 @@ Fabricator(:block) do - + account + target_account { Fabricate(:account) } end diff --git a/spec/fabricators/follow_fabricator.rb b/spec/fabricators/follow_fabricator.rb index 9d9d06f12..9b25dc547 100644 --- a/spec/fabricators/follow_fabricator.rb +++ b/spec/fabricators/follow_fabricator.rb @@ -1,3 +1,4 @@ Fabricator(:follow) do - + account + target_account { Fabricate(:account) } end diff --git a/spec/fabricators/follow_request_fabricator.rb b/spec/fabricators/follow_request_fabricator.rb index 9c3733cef..78a057919 100644 --- a/spec/fabricators/follow_request_fabricator.rb +++ b/spec/fabricators/follow_request_fabricator.rb @@ -1,3 +1,4 @@ Fabricator(:follow_request) do - + account + target_account { Fabricate(:account) } end diff --git a/spec/fabricators/mention_fabricator.rb b/spec/fabricators/mention_fabricator.rb new file mode 100644 index 000000000..cb5fe4299 --- /dev/null +++ b/spec/fabricators/mention_fabricator.rb @@ -0,0 +1,4 @@ +Fabricator(:mention) do + account + status +end diff --git a/spec/fabricators/user_fabricator.rb b/spec/fabricators/user_fabricator.rb index c08559137..16b3b1f6f 100644 --- a/spec/fabricators/user_fabricator.rb +++ b/spec/fabricators/user_fabricator.rb @@ -1,6 +1,6 @@ Fabricator(:user) do account - email "alice@example.com" + email { Faker::Internet.email } password "123456789" confirmed_at { Time.now } end diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb index 91c8d75cf..fbc9a7d40 100644 --- a/spec/models/account_spec.rb +++ b/spec/models/account_spec.rb @@ -209,4 +209,73 @@ RSpec.describe Account, type: :model do expect(subject.match('Check this out https://medium.com/@alice/some-article#.abcdef123')).to be_nil end end + + describe 'validations' do + it 'has a valid fabricator' do + account = Fabricate.build(:account) + account.valid? + expect(account).to be_valid + end + + it 'is invalid without a username' do + account = Fabricate.build(:account, username: nil) + account.valid? + expect(account).to model_have_error_on_field(:username) + end + + it 'is invalid is the username already exists' do + account_1 = Fabricate(:account, username: 'the_doctor') + account_2 = Fabricate.build(:account, username: 'the_doctor') + account_2.valid? + expect(account_2).to model_have_error_on_field(:username) + end + + context 'when is local' do + it 'is invalid if the username doesn\'t only contains letters, numbers and underscores' do + account = Fabricate.build(:account, username: 'the-doctor') + account.valid? + expect(account).to model_have_error_on_field(:username) + end + + it 'is invalid if the username is longer then 30 characters' do + account = Fabricate.build(:account, username: Faker::Lorem.characters(31)) + account.valid? + expect(account).to model_have_error_on_field(:username) + end + end + end + + describe 'scopes' do + describe 'remote' do + it 'returns an array of accounts who have a domain' do + account_1 = Fabricate(:account, domain: nil) + account_2 = Fabricate(:account, domain: 'example.com') + expect(Account.remote).to match_array([account_2]) + end + end + + describe 'local' do + it 'returns an array of accounts who do not have a domain' do + account_1 = Fabricate(:account, domain: nil) + account_2 = Fabricate(:account, domain: 'example.com') + expect(Account.local).to match_array([account_1]) + end + end + + describe 'silenced' do + it 'returns an array of accounts who are silenced' do + account_1 = Fabricate(:account, silenced: true) + account_2 = Fabricate(:account, silenced: false) + expect(Account.silenced).to match_array([account_1]) + end + end + + describe 'suspended' do + it 'returns an array of accounts who are suspended' do + account_1 = Fabricate(:account, suspended: true) + account_2 = Fabricate(:account, suspended: false) + expect(Account.suspended).to match_array([account_1]) + end + end + end end diff --git a/spec/models/block_spec.rb b/spec/models/block_spec.rb index 6862de6fc..cabb41c3e 100644 --- a/spec/models/block_spec.rb +++ b/spec/models/block_spec.rb @@ -1,5 +1,22 @@ require 'rails_helper' RSpec.describe Block, type: :model do + describe 'validations' do + it 'has a valid fabricator' do + block = Fabricate.build(:block) + expect(block).to be_valid + end + it 'is invalid without an account' do + block = Fabricate.build(:block, account: nil) + block.valid? + expect(block).to model_have_error_on_field(:account) + end + + it 'is invalid without a target_account' do + block = Fabricate.build(:block, target_account: nil) + block.valid? + expect(block).to model_have_error_on_field(:target_account) + end + end end diff --git a/spec/models/domain_block_spec.rb b/spec/models/domain_block_spec.rb index ad5403110..b19c8083e 100644 --- a/spec/models/domain_block_spec.rb +++ b/spec/models/domain_block_spec.rb @@ -1,5 +1,23 @@ require 'rails_helper' RSpec.describe DomainBlock, type: :model do + describe 'validations' do + it 'has a valid fabricator' do + domain_block = Fabricate.build(:domain_block) + expect(domain_block).to be_valid + end + it 'is invalid without a domain' do + domain_block = Fabricate.build(:domain_block, domain: nil) + domain_block.valid? + expect(domain_block).to model_have_error_on_field(:domain) + end + + it 'is invalid if the domain already exists' do + domain_block_1 = Fabricate(:domain_block, domain: 'dalek.com') + domain_block_2 = Fabricate.build(:domain_block, domain: 'dalek.com') + domain_block_2.valid? + expect(domain_block_2).to model_have_error_on_field(:domain) + end + end end diff --git a/spec/models/follow_request_spec.rb b/spec/models/follow_request_spec.rb index f2ec642d8..cc6f8ee62 100644 --- a/spec/models/follow_request_spec.rb +++ b/spec/models/follow_request_spec.rb @@ -3,4 +3,23 @@ require 'rails_helper' RSpec.describe FollowRequest, type: :model do describe '#authorize!' describe '#reject!' + + describe 'validations' do + it 'has a valid fabricator' do + follow_request = Fabricate.build(:follow_request) + expect(follow_request).to be_valid + end + + it 'is invalid without an account' do + follow_request = Fabricate.build(:follow_request, account: nil) + follow_request.valid? + expect(follow_request).to model_have_error_on_field(:account) + end + + it 'is invalid without a target account' do + follow_request = Fabricate.build(:follow_request, target_account: nil) + follow_request.valid? + expect(follow_request).to model_have_error_on_field(:target_account) + end + end end diff --git a/spec/models/follow_spec.rb b/spec/models/follow_spec.rb index eb21f3e18..0fae25352 100644 --- a/spec/models/follow_spec.rb +++ b/spec/models/follow_spec.rb @@ -5,4 +5,23 @@ RSpec.describe Follow, type: :model do let(:bob) { Fabricate(:account, username: 'bob') } subject { Follow.new(account: alice, target_account: bob) } + + describe 'validations' do + it 'has a valid fabricator' do + follow = Fabricate.build(:follow) + expect(follow).to be_valid + end + + it 'is invalid without an account' do + follow = Fabricate.build(:follow, account: nil) + follow.valid? + expect(follow).to model_have_error_on_field(:account) + end + + it 'is invalid without a target_account' do + follow = Fabricate.build(:follow, target_account: nil) + follow.valid? + expect(follow).to model_have_error_on_field(:target_account) + end + end end diff --git a/spec/models/mention_spec.rb b/spec/models/mention_spec.rb index 5c91fda02..dbcf6a32c 100644 --- a/spec/models/mention_spec.rb +++ b/spec/models/mention_spec.rb @@ -1,5 +1,22 @@ require 'rails_helper' RSpec.describe Mention, type: :model do + describe 'validations' do + it 'has a valid fabricator' do + mention = Fabricate.build(:mention) + expect(mention).to be_valid + end + it 'is invalid without an account' do + mention = Fabricate.build(:mention, account: nil) + mention.valid? + expect(mention).to model_have_error_on_field(:account) + end + + it 'is invalid without a status' do + mention = Fabricate.build(:mention, status: nil) + mention.valid? + expect(mention).to model_have_error_on_field(:status) + end + end end diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 64de06749..1a3254185 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -1,5 +1,49 @@ require 'rails_helper' RSpec.describe User, type: :model do + describe 'validations' do + it 'is invalid without an account' do + user = Fabricate.build(:user, account: nil) + user.valid? + expect(user).to model_have_error_on_field(:account) + end + it 'is invalid without a valid locale' do + user = Fabricate.build(:user, locale: 'toto') + user.valid? + expect(user).to model_have_error_on_field(:locale) + end + + it 'is invalid without a valid email' do + user = Fabricate.build(:user, email: 'john@') + user.valid? + expect(user).to model_have_error_on_field(:email) + end + end + + describe 'scopes' do + describe 'recent' do + it 'returns an array of recent users ordered by id' do + user_1 = Fabricate(:user) + user_2 = Fabricate(:user) + expect(User.recent).to match_array([user_2, user_1]) + end + end + + describe 'admins' do + it 'returns an array of users who are admin' do + user_1 = Fabricate(:user, admin: false) + user_2 = Fabricate(:user, admin: true) + expect(User.admins).to match_array([user_2]) + end + end + + describe 'confirmed' do + it 'returns an array of users who are confirmed' do + user_1 = Fabricate(:user, confirmed_at: nil) + user_2 = Fabricate(:user, confirmed_at: Time.now) + expect(User.confirmed).to match_array([user_2]) + end + end + end end diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index 977c7bdc0..faac96982 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -8,6 +8,8 @@ require 'rspec/rails' require 'webmock/rspec' require 'paperclip/matchers' +Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f } + ActiveRecord::Migration.maintain_test_schema! WebMock.disable_net_connect!(allow: 'localhost:7575') Sidekiq::Testing.inline! diff --git a/spec/support/matchers/model/model_have_error_on_field.rb b/spec/support/matchers/model/model_have_error_on_field.rb new file mode 100644 index 000000000..5d5fe1c7b --- /dev/null +++ b/spec/support/matchers/model/model_have_error_on_field.rb @@ -0,0 +1,15 @@ +RSpec::Matchers.define :model_have_error_on_field do |expected| + match do |record| + if record.errors.empty? + record.valid? + end + + record.errors.has_key?(expected) + end + + failure_message do |record| + keys = record.errors.keys + + "expect record.errors(#{keys}) to include #{expected}" + end +end From 7762467b476af5c793d214ebc051b983921492b7 Mon Sep 17 00:00:00 2001 From: Samy KACIMI Date: Wed, 5 Apr 2017 00:31:31 +0200 Subject: [PATCH 025/137] rollback database.yml update --- config/database.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/config/database.yml b/config/database.yml index 390113480..5ec342f93 100644 --- a/config/database.yml +++ b/config/database.yml @@ -3,10 +3,6 @@ default: &default pool: <%= ENV["DB_POOL"] || ENV['MAX_THREADS'] || 5 %> timeout: 5000 encoding: unicode - host: localhost - username: samy - password: tardis - port: 32769 development: <<: *default From 46c0e8b0e7980ecba0e68fe3b8c4d9121caa4b6f Mon Sep 17 00:00:00 2001 From: Samy KACIMI Date: Wed, 5 Apr 2017 00:37:23 +0200 Subject: [PATCH 026/137] update account_spec --- spec/models/account_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb index fbc9a7d40..d7f59adb8 100644 --- a/spec/models/account_spec.rb +++ b/spec/models/account_spec.rb @@ -223,7 +223,7 @@ RSpec.describe Account, type: :model do expect(account).to model_have_error_on_field(:username) end - it 'is invalid is the username already exists' do + it 'is invalid if the username already exists' do account_1 = Fabricate(:account, username: 'the_doctor') account_2 = Fabricate.build(:account, username: 'the_doctor') account_2.valid? From 04225ed72e4778c62c78af183f7110c667f1b667 Mon Sep 17 00:00:00 2001 From: Ash Furrow Date: Tue, 4 Apr 2017 18:45:24 -0400 Subject: [PATCH 027/137] Adds instructions for adding admin users. --- docs/Running-Mastodon/Heroku-guide.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/Running-Mastodon/Heroku-guide.md b/docs/Running-Mastodon/Heroku-guide.md index b66e56200..cd92a8bfd 100644 --- a/docs/Running-Mastodon/Heroku-guide.md +++ b/docs/Running-Mastodon/Heroku-guide.md @@ -11,3 +11,5 @@ Mastodon can theoretically run indefinitely on a free [Heroku](https://heroku.co * You will want Amazon S3 for file storage. The only exception is for development purposes, where you may not care if files are not saved. Follow a guide online for creating a free Amazon S3 bucket and Access Key, then enter the details. * If you want your Mastodon to be able to send emails, configure SMTP settings here (or later). Consider using [Mailgun](https://mailgun.com) or similar, who offer free plans that should suit your interests. 3. Deploy! The app should be set up, with a working web interface and database. You can change settings and manage versions from the Heroku dashboard. + +You may need to use the `heroku` CLI application to modify the database directly to give yourself administration rights. From 79ef756f645153b91643765573230814257d0cbf Mon Sep 17 00:00:00 2001 From: Samy KACIMI Date: Wed, 5 Apr 2017 00:47:17 +0200 Subject: [PATCH 028/137] fix rubocop issues --- Gemfile | 2 +- app/models/follow.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile b/Gemfile index 87ea77735..0deed9ae0 100644 --- a/Gemfile +++ b/Gemfile @@ -69,8 +69,8 @@ end group :test do gem 'simplecov', require: false gem 'webmock' - gem 'rspec-sidekiq' gem 'faker' + gem 'rspec-sidekiq' end group :development do diff --git a/app/models/follow.rb b/app/models/follow.rb index fd7325f05..b6b9dca7c 100644 --- a/app/models/follow.rb +++ b/app/models/follow.rb @@ -4,7 +4,7 @@ class Follow < ApplicationRecord include Paginable belongs_to :account, counter_cache: :following_count, required: true - + belongs_to :target_account, class_name: 'Account', counter_cache: :followers_count, From 5af0ecbcd9cfd757c4d5bd541d83ca11e44d14ef Mon Sep 17 00:00:00 2001 From: Samy KACIMI Date: Wed, 5 Apr 2017 00:52:55 +0200 Subject: [PATCH 029/137] alphebatically order test gem group as required by rubocop --- Gemfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile b/Gemfile index 0deed9ae0..4e7ff6621 100644 --- a/Gemfile +++ b/Gemfile @@ -67,10 +67,10 @@ group :development, :test do end group :test do - gem 'simplecov', require: false - gem 'webmock' gem 'faker' gem 'rspec-sidekiq' + gem 'simplecov', require: false + gem 'webmock' end group :development do From 50a88d6a6ed0bd9af8e29a4fbce66bc24b32cb04 Mon Sep 17 00:00:00 2001 From: Jason Snell Date: Tue, 4 Apr 2017 16:35:57 -0700 Subject: [PATCH 030/137] Adding https://mastodon.cc --- docs/Using-Mastodon/List-of-Mastodon-instances.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/Using-Mastodon/List-of-Mastodon-instances.md b/docs/Using-Mastodon/List-of-Mastodon-instances.md index 677ec7e56..17a72d77d 100644 --- a/docs/Using-Mastodon/List-of-Mastodon-instances.md +++ b/docs/Using-Mastodon/List-of-Mastodon-instances.md @@ -37,5 +37,6 @@ There is also a list at [instances.mastodon.xyz](https://instances.mastodon.xyz) | [social.lkw.tf](https://social.lkw.tf)|N/A|No|No| | [manowar.social](https://manowar.social)|N/A|No|No| | [social.ballpointcarrot.net](https://social.ballpointcarrot.net)|Down at time of entry|No|No| +| [mastodon.cc](https://mastodon.cc)|Art|Yes|No| Let me know if you start running one so I can add it to the list! (Alternatively, add it yourself as a pull request). From bda37489ac5c14d18b1bb4290f2a2931dc8728c9 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 5 Apr 2017 02:32:18 +0200 Subject: [PATCH 031/137] Remove PuSH subscriptions when delivery is answered with a 4xx error --- app/workers/pubsubhubbub/delivery_worker.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/workers/pubsubhubbub/delivery_worker.rb b/app/workers/pubsubhubbub/delivery_worker.rb index 15005bc80..466def3a8 100644 --- a/app/workers/pubsubhubbub/delivery_worker.rb +++ b/app/workers/pubsubhubbub/delivery_worker.rb @@ -22,6 +22,7 @@ class Pubsubhubbub::DeliveryWorker .headers(headers) .post(subscription.callback_url, body: payload) + return subscription.destroy! if response.code > 299 && response.code < 500 && response.code != 429 # HTTP 4xx means error is not temporary, except for 429 (throttling) raise "Delivery failed for #{subscription.callback_url}: HTTP #{response.code}" unless response.code > 199 && response.code < 300 subscription.touch(:last_successful_delivery_at) From f7e35d90db3a08dbb4e4104f513e5817e18659b9 Mon Sep 17 00:00:00 2001 From: Drew DeVault Date: Tue, 4 Apr 2017 20:16:14 -0400 Subject: [PATCH 032/137] Remote follow improvements This stores the @username@instance you provide in your session and reuses it the next time you remote follow someone from this instance. --- app/controllers/remote_follow_controller.rb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/controllers/remote_follow_controller.rb b/app/controllers/remote_follow_controller.rb index 7d4bfe6ce..1e3f786ec 100644 --- a/app/controllers/remote_follow_controller.rb +++ b/app/controllers/remote_follow_controller.rb @@ -8,6 +8,7 @@ class RemoteFollowController < ApplicationController def new @remote_follow = RemoteFollow.new + @remote_follow.acct = session[:remote_follow] if session.key?(:remote_follow) end def create @@ -22,6 +23,8 @@ class RemoteFollowController < ApplicationController render(:new) && return end + session[:remote_follow] = @remote_follow.acct + redirect_to Addressable::Template.new(redirect_url_link.template).expand(uri: "#{@account.username}@#{Rails.configuration.x.local_domain}").to_s else render :new From dd441606aae48a08ec76ae26383c3e3738254a1a Mon Sep 17 00:00:00 2001 From: Ash Furrow Date: Tue, 4 Apr 2017 20:53:31 -0400 Subject: [PATCH 033/137] Updates instructions. --- docs/Running-Mastodon/Heroku-guide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Running-Mastodon/Heroku-guide.md b/docs/Running-Mastodon/Heroku-guide.md index cd92a8bfd..0de26230c 100644 --- a/docs/Running-Mastodon/Heroku-guide.md +++ b/docs/Running-Mastodon/Heroku-guide.md @@ -12,4 +12,4 @@ Mastodon can theoretically run indefinitely on a free [Heroku](https://heroku.co * If you want your Mastodon to be able to send emails, configure SMTP settings here (or later). Consider using [Mailgun](https://mailgun.com) or similar, who offer free plans that should suit your interests. 3. Deploy! The app should be set up, with a working web interface and database. You can change settings and manage versions from the Heroku dashboard. -You may need to use the `heroku` CLI application to modify the database directly to give yourself administration rights. +You may need to use the `heroku` CLI application to run `USERNAME=yourUsername rails mastodon:make_admin` to make yourself an admin. From c106b6d3e04fb3dd8fe568120c0068f1492e54f7 Mon Sep 17 00:00:00 2001 From: Drew DeVault Date: Tue, 4 Apr 2017 09:26:21 -0400 Subject: [PATCH 034/137] Improve readability of text on profiles --- app/assets/stylesheets/accounts.scss | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/assets/stylesheets/accounts.scss b/app/assets/stylesheets/accounts.scss index 25e24a95a..b3ae33500 100644 --- a/app/assets/stylesheets/accounts.scss +++ b/app/assets/stylesheets/accounts.scss @@ -34,6 +34,7 @@ text-align: center; position: relative; z-index: 2; + text-shadow: 0 0 2px $color8; small { display: block; @@ -128,6 +129,7 @@ text-transform: uppercase; display: block; margin-bottom: 5px; + text-shadow: 0 0 2px $color8; } .counter-number { @@ -385,5 +387,6 @@ .account__header__content { font-size: 14px; color: $color1; + text-shadow: 0 0 2px $color8; } } From 667ffafef8c8b7956cdd31b8f65d5e82778211d8 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 5 Apr 2017 03:31:26 +0200 Subject: [PATCH 035/137] Fix spec --- config/locales/en.yml | 2 +- spec/models/user_spec.rb | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/config/locales/en.yml b/config/locales/en.yml index 750af0b7a..742219df9 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -5,8 +5,8 @@ en: about_this: About this instance apps: Apps business_email: 'Business e-mail:' - contact: Contact closed_registrations: Registrations are currently closed on this instance. + contact: Contact description_headline: What is %{domain}? domain_count_after: other instances domain_count_before: Connected to diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 5575ba107..eb2a4aaea 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -45,8 +45,9 @@ RSpec.describe User, type: :model do expect(User.confirmed).to match_array([user_2]) end end + end - let(:account) { Fabricate(:account, username: 'alice') } + let(:account) { Fabricate(:account, username: 'alice') } let(:password) { 'abcd1234' } describe 'blacklist' do @@ -55,7 +56,7 @@ RSpec.describe User, type: :model do expect(user.valid?).to be_truthy end - + it 'should not allow a blacklisted user to be created' do user = User.new(email: 'foo@mvrht.com', account: account, password: password) From 128dcb28253a43cfc2552091f419048dd3b94a9f Mon Sep 17 00:00:00 2001 From: Ash Furrow Date: Tue, 4 Apr 2017 21:35:45 -0400 Subject: [PATCH 036/137] Adds mastodon.technology --- docs/Using-Mastodon/List-of-Mastodon-instances.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/Using-Mastodon/List-of-Mastodon-instances.md b/docs/Using-Mastodon/List-of-Mastodon-instances.md index 0cd3f18d6..dbed11842 100644 --- a/docs/Using-Mastodon/List-of-Mastodon-instances.md +++ b/docs/Using-Mastodon/List-of-Mastodon-instances.md @@ -40,5 +40,6 @@ There is also a list at [instances.mastodon.xyz](https://instances.mastodon.xyz) | [social.nasqueron.org](https://social.nasqueron.org) |Dreamers, open source developers, free culture|Yes|Yes| | [status.dissidence.ovh](https://status.dissidence.ovh)|N/A|Yes|Yes| | [mastodon.cc](https://mastodon.cc)|Art|Yes|No| +| [mastodon.technology](https://mastodon.technology)|Open registrations, federates everywhere, for tech folks|Yes|No| Let me know if you start running one so I can add it to the list! (Alternatively, add it yourself as a pull request). From fa7b74cf51e2b5c7c60aaf3ec529ba2292450d7b Mon Sep 17 00:00:00 2001 From: Jason Snell Date: Tue, 4 Apr 2017 18:43:21 -0700 Subject: [PATCH 037/137] SSL best practices for nginx --- docs/Running-Mastodon/Production-guide.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/docs/Running-Mastodon/Production-guide.md b/docs/Running-Mastodon/Production-guide.md index b1f7bd35b..d539ddf64 100644 --- a/docs/Running-Mastodon/Production-guide.md +++ b/docs/Running-Mastodon/Production-guide.md @@ -11,10 +11,22 @@ map $http_upgrade $connection_upgrade { '' close; } +server { + listen 80; + listen [::]:80; + server_name example.com; + return 301 https://$host$request_uri; +} + server { listen 443 ssl; server_name example.com; + ssl_protocols TLSv1.2; + ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH'; + ssl_prefer_server_ciphers on; + ssl_session_cache shared:SSL:10m; + ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; From 7d354cc8c5eceb1289259f23ecac4d85cb6c1f74 Mon Sep 17 00:00:00 2001 From: shel Date: Tue, 4 Apr 2017 21:47:13 -0400 Subject: [PATCH 038/137] Corrected misinformation regarding Direct Posts Unless something changed recently I have no clue why this said that direct posts do not federate because they do. --- docs/Using-Mastodon/User-guide.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/Using-Mastodon/User-guide.md b/docs/Using-Mastodon/User-guide.md index f8018909a..acd02f24e 100644 --- a/docs/Using-Mastodon/User-guide.md +++ b/docs/Using-Mastodon/User-guide.md @@ -160,13 +160,13 @@ Toot privacy is handled independently of account privacy, and individually for e **Unlisted** toots are toggled with the "Do not display in public timeline" option in the Compose pane. They are visible to anyone following you and appear on your profile page to the public even without a Mastodon login, but do *not* appear to anyone viewing the Public Timeline while logged into Mastodon. -**Private** toots, finally, are toggled with the "Mark as private" switch. Private toots do not appear in the public timeline nor on your profile page to anyone viewing it unless they are on your Followers list. This means the option is of very limited use if your account is not also set to be private (as anyone can follow you without confirmation and thus see your private toots). However the separation of this means that if you *do* set your entire account to private, you can switch this option off on a toot to make unlisted or even public toots from your otherwise private account. +**Private** toots, finally, are toggled with the "Mark as private" switch. Private toots do not appear in the public timeline nor on your profile page to anyone viewing it unless they are on your Followers list. This means the option is of very limited use if your account is not also set to be private (as anyone can follow you without confirmation and thus see your private toots). However the separation of this means that if you *do* set your entire account to private, you can switch this option off on a toot to make unlisted or even public toots from your otherwise private account. Private posts are not encrypted. Make sure you trust your instance admin not to just read your private posts on the back-end. Private toots do not federate to other instances, unless you @mention a remote user. In this case, they will federate to their instance *and may appear there PUBLICLY*. A warning will be displayed if you're composing a private toot that will federate to another instance. Private toots cannot be boosted. If someone you follow makes a private toot, it will appear in your timeline with a padlock icon in place of the Boost icon. **NOTE** that remote instances may not respect this. -**Direct** messages are only visible to users you have @mentioned in them. This does *not* federate to protect your privacy (as other instances may ignore the "Direct" status and display the messages as public if they were to receive them), even if you have @mentioned a remote user. +**Direct** posts are only visible to users you have @mentioned in them and cannot be boosted. Like with private posts, you should be mindful that the remote instance may not respect this protocol. If you are discussing a sensitive matter you should move the conversation off of Mastodon. To summarise: @@ -175,7 +175,7 @@ Toot Privacy | Visible on Profile | Visible on Public Timeline | Federates to ot Public | Anyone incl. anonymous viewers | Yes | Yes Unlisted | Anyone incl. anonymous viewers | No | Yes Private | Followers only | No | Only remote @mentions -Direct | No | No | No +Direct | No | No | Only remote @mentions #### Blocking From 1e96ce378e2aa35ed7287a4a88e5165c2ee20101 Mon Sep 17 00:00:00 2001 From: Kurtis Rainbolt-Greene Date: Tue, 4 Apr 2017 20:16:53 -0700 Subject: [PATCH 039/137] By pushing this into a worker we can reduce the amount of time the feed manager using workers eat up a connection --- app/lib/feed_manager.rb | 2 +- app/workers/push_update_worker.rb | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 app/workers/push_update_worker.rb diff --git a/app/lib/feed_manager.rb b/app/lib/feed_manager.rb index 2cca1cefe..075f86c2d 100644 --- a/app/lib/feed_manager.rb +++ b/app/lib/feed_manager.rb @@ -34,7 +34,7 @@ class FeedManager trim(timeline_type, account.id) end - broadcast(account.id, event: 'update', payload: inline_render(account, 'api/v1/statuses/show', status)) + PushUpdateWorker.perform_async(timeline_type, account.id, status.id) end def broadcast(timeline_id, options = {}) diff --git a/app/workers/push_update_worker.rb b/app/workers/push_update_worker.rb new file mode 100644 index 000000000..3d398b5ac --- /dev/null +++ b/app/workers/push_update_worker.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +class PushUpdateWorker + include Sidekiq::Worker + + def perform(timeline, account_id, status_id) + account = Account.find(account_id) + status = Status.find(status_id) + message = inline_render(account, 'api/v1/statuses/show', status) + + broadcast(account_id, type: 'update', timeline: timeline, message: message) + end +end From 96ef9338208e09cbc52a49a3d7171d877eab3c43 Mon Sep 17 00:00:00 2001 From: Kurtis Rainbolt-Greene Date: Tue, 4 Apr 2017 20:36:03 -0700 Subject: [PATCH 040/137] Replacing the broadcast method with the one defined in the feed manager --- app/workers/push_update_worker.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/workers/push_update_worker.rb b/app/workers/push_update_worker.rb index 3d398b5ac..5b5e9f68a 100644 --- a/app/workers/push_update_worker.rb +++ b/app/workers/push_update_worker.rb @@ -8,6 +8,6 @@ class PushUpdateWorker status = Status.find(status_id) message = inline_render(account, 'api/v1/statuses/show', status) - broadcast(account_id, type: 'update', timeline: timeline, message: message) + ActionCable.server.broadcast("timeline:#{account_id}", type: 'update', timeline: timeline, message: message) end end From dc5704b0b0c8f5a58ff95d3f3c4055929c6ecfba Mon Sep 17 00:00:00 2001 From: Kurtis Rainbolt-Greene Date: Tue, 4 Apr 2017 20:38:07 -0700 Subject: [PATCH 041/137] This method isn't used anymore --- app/lib/feed_manager.rb | 5 ----- 1 file changed, 5 deletions(-) diff --git a/app/lib/feed_manager.rb b/app/lib/feed_manager.rb index 075f86c2d..6698c78a5 100644 --- a/app/lib/feed_manager.rb +++ b/app/lib/feed_manager.rb @@ -37,11 +37,6 @@ class FeedManager PushUpdateWorker.perform_async(timeline_type, account.id, status.id) end - def broadcast(timeline_id, options = {}) - options[:queued_at] = (Time.now.to_f * 1000.0).to_i - ActionCable.server.broadcast("timeline:#{timeline_id}", options) - end - def trim(type, account_id) return unless redis.zcard(key(type, account_id)) > FeedManager::MAX_ITEMS last = redis.zrevrange(key(type, account_id), FeedManager::MAX_ITEMS - 1, FeedManager::MAX_ITEMS - 1) From 0069c01285d7fc6b97220fd678f6e5b82f301b1a Mon Sep 17 00:00:00 2001 From: Kurtis Rainbolt-Greene Date: Tue, 4 Apr 2017 20:39:14 -0700 Subject: [PATCH 042/137] Moving the queue_at into the worker --- app/workers/push_update_worker.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/workers/push_update_worker.rb b/app/workers/push_update_worker.rb index 5b5e9f68a..6512e13ad 100644 --- a/app/workers/push_update_worker.rb +++ b/app/workers/push_update_worker.rb @@ -7,7 +7,7 @@ class PushUpdateWorker account = Account.find(account_id) status = Status.find(status_id) message = inline_render(account, 'api/v1/statuses/show', status) - + queue_at = (Time.now.to_f * 1000.0).to_i ActionCable.server.broadcast("timeline:#{account_id}", type: 'update', timeline: timeline, message: message) end end From 220051b8b2d09a741f5edadd34e21115c5938bf0 Mon Sep 17 00:00:00 2001 From: Kurtis Rainbolt-Greene Date: Tue, 4 Apr 2017 20:48:22 -0700 Subject: [PATCH 043/137] I don't actually think we need that. --- app/workers/push_update_worker.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/workers/push_update_worker.rb b/app/workers/push_update_worker.rb index 6512e13ad..5b5e9f68a 100644 --- a/app/workers/push_update_worker.rb +++ b/app/workers/push_update_worker.rb @@ -7,7 +7,7 @@ class PushUpdateWorker account = Account.find(account_id) status = Status.find(status_id) message = inline_render(account, 'api/v1/statuses/show', status) - queue_at = (Time.now.to_f * 1000.0).to_i + ActionCable.server.broadcast("timeline:#{account_id}", type: 'update', timeline: timeline, message: message) end end From 9638894233d31368733574217e4d173e4cd5d13c Mon Sep 17 00:00:00 2001 From: Kurtis Rainbolt-Greene Date: Tue, 4 Apr 2017 20:51:18 -0700 Subject: [PATCH 044/137] Moving in the inline render --- app/workers/push_update_worker.rb | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/app/workers/push_update_worker.rb b/app/workers/push_update_worker.rb index 5b5e9f68a..fef75d909 100644 --- a/app/workers/push_update_worker.rb +++ b/app/workers/push_update_worker.rb @@ -6,8 +6,14 @@ class PushUpdateWorker def perform(timeline, account_id, status_id) account = Account.find(account_id) status = Status.find(status_id) - message = inline_render(account, 'api/v1/statuses/show', status) + message = Rabl::Renderer.new( + 'api/v1/statuses/show', + status, + view_path: 'app/views', + format: :json, + scope: InlineRablScope.new(account) + ) - ActionCable.server.broadcast("timeline:#{account_id}", type: 'update', timeline: timeline, message: message) + ActionCable.server.broadcast("timeline:#{account_id}", type: 'update', timeline: timeline, message: message.render) end end From 7bed4e51db18c864c36c6b48eb22c65f11c16b1c Mon Sep 17 00:00:00 2001 From: Kurtis Rainbolt-Greene Date: Tue, 4 Apr 2017 20:51:44 -0700 Subject: [PATCH 045/137] Moved to the worker --- app/lib/feed_manager.rb | 4 ---- 1 file changed, 4 deletions(-) diff --git a/app/lib/feed_manager.rb b/app/lib/feed_manager.rb index 6698c78a5..87865bfdc 100644 --- a/app/lib/feed_manager.rb +++ b/app/lib/feed_manager.rb @@ -76,10 +76,6 @@ class FeedManager end end - def inline_render(target_account, template, object) - Rabl::Renderer.new(template, object, view_path: 'app/views', format: :json, scope: InlineRablScope.new(target_account)).render - end - private def redis From 22dcadedb495d2e1279b834a624710d34daee6ad Mon Sep 17 00:00:00 2001 From: Kurtis Rainbolt-Greene Date: Tue, 4 Apr 2017 21:14:37 -0700 Subject: [PATCH 046/137] We're going to want these nice helper methods, lets share them with a parent class that matches Rails 5 practices (application level abstraction) --- app/workers/application_worker.rb | 5 +++++ app/workers/distribution_worker.rb | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 app/workers/application_worker.rb diff --git a/app/workers/application_worker.rb b/app/workers/application_worker.rb new file mode 100644 index 000000000..f2d7c1062 --- /dev/null +++ b/app/workers/application_worker.rb @@ -0,0 +1,5 @@ +class ApplicationWorker + def info(message) + Rails.logger.info("#{self.class.name} - #{message}") + end +end diff --git a/app/workers/distribution_worker.rb b/app/workers/distribution_worker.rb index f4e738d80..9a2867ea6 100644 --- a/app/workers/distribution_worker.rb +++ b/app/workers/distribution_worker.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -class DistributionWorker +class DistributionWorker < ApplicationWorker include Sidekiq::Worker def perform(status_id) @@ -9,6 +9,6 @@ class DistributionWorker FanOutOnWriteService.new.call(status) WarmCacheService.new.call(status) rescue ActiveRecord::RecordNotFound - true + info("Couldn't find the status") end end From 29efeecb9ebd4eac0ec65040b2f688d7a5c77283 Mon Sep 17 00:00:00 2001 From: scriptjunkie Date: Tue, 4 Apr 2017 23:21:00 -0500 Subject: [PATCH 047/137] Add https://securitymastod.one/ --- docs/Using-Mastodon/List-of-Mastodon-instances.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/Using-Mastodon/List-of-Mastodon-instances.md b/docs/Using-Mastodon/List-of-Mastodon-instances.md index 0cd3f18d6..6b6eda74c 100644 --- a/docs/Using-Mastodon/List-of-Mastodon-instances.md +++ b/docs/Using-Mastodon/List-of-Mastodon-instances.md @@ -6,6 +6,7 @@ There is also a list at [instances.mastodon.xyz](https://instances.mastodon.xyz) | Name | Theme/Notes, if applicable | Open Registrations | IPv6 | | -------------|-------------|---|---| | [mastodon.social](https://mastodon.social) |Flagship, quick updates|Yes|No| +| [securitymastod.one](https://securitymastod.one/) |Information security enthusiasts and pros|Yes|Yes| | [awoo.space](https://awoo.space) |Intentionally moderated, only federates with mastodon.social|Yes|No| | [animalliberation.social](https://animalliberation.social) |Animal Rights|Yes|No| | [socially.constructed.space](https://socially.constructed.space) |Single user|No|No| From 03adb5d7277bc1672ce3617d328280873e671b24 Mon Sep 17 00:00:00 2001 From: Kurtis Rainbolt-Greene Date: Tue, 4 Apr 2017 21:31:02 -0700 Subject: [PATCH 048/137] Mastodon isn't using jbuilder or sdoc, and it prevents an upgrade to 2.4.0 --- Gemfile | 2 -- Gemfile.lock | 11 ----------- 2 files changed, 13 deletions(-) diff --git a/Gemfile b/Gemfile index 4e7ff6621..b5705e9d1 100644 --- a/Gemfile +++ b/Gemfile @@ -8,8 +8,6 @@ gem 'sass-rails', '~> 5.0' gem 'uglifier', '>= 1.3.0' gem 'coffee-rails', '~> 4.1.0' gem 'jquery-rails' -gem 'jbuilder', '~> 2.0' -gem 'sdoc', '~> 0.4.0', group: :doc gem 'puma' gem 'hamlit-rails' diff --git a/Gemfile.lock b/Gemfile.lock index a774a89ba..408d85ade 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -198,9 +198,6 @@ GEM parser (>= 2.2.3.0) term-ansicolor (>= 1.3.2) terminal-table (>= 1.5.1) - jbuilder (2.6.0) - activesupport (>= 3.0.0, < 5.1) - multi_json (~> 1.2) jmespath (1.3.1) jquery-rails (4.1.1) rails-dom-testing (>= 1, < 3) @@ -231,7 +228,6 @@ GEM mimemagic (0.3.2) mini_portile2 (2.1.0) minitest (5.10.1) - multi_json (1.12.1) net-scp (1.2.1) net-ssh (>= 2.6.5) net-ssh (4.0.1) @@ -310,8 +306,6 @@ GEM thor (>= 0.18.1, < 2.0) rainbow (2.1.0) rake (12.0.0) - rdoc (4.2.2) - json (~> 1.4) react-rails (1.10.0) babel-transpiler (>= 0.7.0) coffee-script-source (~> 1.8) @@ -381,9 +375,6 @@ GEM sprockets (>= 2.8, < 4.0) sprockets-rails (>= 2.0, < 4.0) tilt (>= 1.1, < 3) - sdoc (0.4.1) - json (~> 1.7, >= 1.7.7) - rdoc (~> 4.0) sidekiq (4.2.7) concurrent-ruby (~> 1.0) connection_pool (~> 2.2, >= 2.2.0) @@ -483,7 +474,6 @@ DEPENDENCIES http httplog i18n-tasks (~> 0.9.6) - jbuilder (~> 2.0) jquery-rails letter_opener letter_opener_web @@ -514,7 +504,6 @@ DEPENDENCIES rubocop ruby-oembed sass-rails (~> 5.0) - sdoc (~> 0.4.0) sidekiq sidekiq-unique-jobs simple-navigation From 8040d1d8cef092cd5f9b3497e1514301f4ebe54e Mon Sep 17 00:00:00 2001 From: Ian McDowell Date: Tue, 4 Apr 2017 23:43:57 -0500 Subject: [PATCH 049/137] Update List-of-Mastodon-instances.md Added mastodon.network. --- docs/Using-Mastodon/List-of-Mastodon-instances.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/Using-Mastodon/List-of-Mastodon-instances.md b/docs/Using-Mastodon/List-of-Mastodon-instances.md index 0cd3f18d6..8b8aba124 100644 --- a/docs/Using-Mastodon/List-of-Mastodon-instances.md +++ b/docs/Using-Mastodon/List-of-Mastodon-instances.md @@ -6,6 +6,7 @@ There is also a list at [instances.mastodon.xyz](https://instances.mastodon.xyz) | Name | Theme/Notes, if applicable | Open Registrations | IPv6 | | -------------|-------------|---|---| | [mastodon.social](https://mastodon.social) |Flagship, quick updates|Yes|No| +| [mastodon.network](https://mastodon.network) |N/A|Yes|Yes| | [awoo.space](https://awoo.space) |Intentionally moderated, only federates with mastodon.social|Yes|No| | [animalliberation.social](https://animalliberation.social) |Animal Rights|Yes|No| | [socially.constructed.space](https://socially.constructed.space) |Single user|No|No| From 6a1da87cd32a077c8df2e82cbdc222c201ddda41 Mon Sep 17 00:00:00 2001 From: Brad Urani Date: Wed, 5 Apr 2017 06:02:58 +0000 Subject: [PATCH 050/137] Eliminate unnecessary queries and query clauses with none and all --- app/models/status.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/models/status.rb b/app/models/status.rb index daf128572..6948ad77c 100644 --- a/app/models/status.rb +++ b/app/models/status.rb @@ -161,9 +161,9 @@ class Status < ApplicationRecord return where.not(visibility: [:private, :direct]) if account.nil? if target_account.blocking?(account) # get rid of blocked peeps - where('1 = 0') + none elsif account.id == target_account.id # author can see own stuff - where('1 = 1') + all elsif account.following?(target_account) # followers can see followers-only stuff, but also things they are mentioned in joins('LEFT OUTER JOIN mentions ON statuses.id = mentions.status_id AND mentions.account_id = ' + account.id.to_s) .where('statuses.visibility != ? OR mentions.id IS NOT NULL', Status.visibilities[:direct]) From b845ef395d2dc86f32beb7e2071cc828258816b5 Mon Sep 17 00:00:00 2001 From: JantsoP Date: Wed, 5 Apr 2017 09:51:35 +0200 Subject: [PATCH 051/137] updated reblog translation --- config/locales/simple_form.fi.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/simple_form.fi.yml b/config/locales/simple_form.fi.yml index 02943cea3..684cbe39c 100644 --- a/config/locales/simple_form.fi.yml +++ b/config/locales/simple_form.fi.yml @@ -38,7 +38,7 @@ fi: follow: Lähetä s-posti kun joku seuraa sinua follow_request: Lähetä s-posti kun joku pyytää seurata sinua mention: Lähetä s-posti kun joku mainitsee sinut - reblog: Lähetä s-posti kun joku uudestaanblogaa julkaisusi + reblog: Lähetä s-posti kun joku reblogaa julkaisusi 'no': 'Ei' required: mark: "*" From 473e4f781318b24c1df11da36e7846080de27ea9 Mon Sep 17 00:00:00 2001 From: JantsoP Date: Wed, 5 Apr 2017 09:52:31 +0200 Subject: [PATCH 052/137] udpdated display_name translation --- config/locales/simple_form.fi.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/simple_form.fi.yml b/config/locales/simple_form.fi.yml index 684cbe39c..7e1205fdc 100644 --- a/config/locales/simple_form.fi.yml +++ b/config/locales/simple_form.fi.yml @@ -17,7 +17,7 @@ fi: confirm_password: Varmista salasana current_password: Nykyinen salasana data: Data - display_name: Näyttö nimi + display_name: Näykyvä nimi email: Sähköpostiosoite header: Header locale: Kieli From b8a867adcc8bfeaba7fa09204b6babd17abe225b Mon Sep 17 00:00:00 2001 From: JantsoP Date: Wed, 5 Apr 2017 09:56:10 +0200 Subject: [PATCH 053/137] updated translation Updated some translations after seeing them in service. Should be better now --- app/assets/javascripts/components/locales/fi.jsx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/assets/javascripts/components/locales/fi.jsx b/app/assets/javascripts/components/locales/fi.jsx index 7b151d6f8..b3ae4bc56 100644 --- a/app/assets/javascripts/components/locales/fi.jsx +++ b/app/assets/javascripts/components/locales/fi.jsx @@ -5,9 +5,9 @@ const fi = { "status.mention": "Mainitse @{name}", "status.delete": "Poista", "status.reply": "Vastaa", - "status.reblog": "Boostaa", + "status.reblog": "Buustaa", "status.favourite": "Tykkää", - "status.reblogged_by": "{name} boostattu", + "status.reblogged_by": "{name} buustasi", "status.sensitive_warning": "Arkaluontoista sisältöä", "status.sensitive_toggle": "Klikkaa nähdäksesi", "video_player.toggle_sound": "Äänet päälle/pois", @@ -28,7 +28,7 @@ const fi = { "getting_started.open_source_notice": "Mastodon Mastodon on avoimen lähdekoodin ohjelma. Voit avustaa tai raportoida ongelmia GitHub palvelussa {github}. {apps}.", "column.home": "Koti", "column.community": "Paikallinen aikajana", - "column.public": "Yhdistetty aikajana", + "column.public": "Yleinen aikajana", "column.notifications": "Ilmoitukset", "tabs_bar.compose": "Luo", "tabs_bar.home": "Koti", @@ -41,7 +41,7 @@ const fi = { "compose_form.spoiler": "Piiloita teksti varoituksen taakse", "compose_form.private": "Merkitse yksityiseksi", "compose_form.privacy_disclaimer": "Sinun yksityinen status toimitetaan mainitsemallesi käyttäjille domaineissa {domains}. Luotatko {domainsCount, plural, one {tähän palvelimeen} other {näihin palvelimiin}}? Postauksen yksityisyys toimii van Mastodon palvelimilla. Jos {domains} {domainsCount, plural, one {ei ole Mastodon palvelin} other {eivät ole Mastodon palvelin}}, viestiin ei tule Yksityinen-merkintää, ja sitä voidaan boostata tai muuten tehdä näkyväksi muille vastaanottajille.", - "compose_form.unlisted": "Älä näytä julkisilla aikajanoilla", + "compose_form.unlisted": "Älä näytä yleisillä aikajanoilla", "navigation_bar.edit_profile": "Muokkaa profiilia", "navigation_bar.preferences": "Ominaisuudet", "navigation_bar.community_timeline": "Paikallinen aikajana", @@ -55,14 +55,14 @@ const fi = { "upload_form.undo": "Peru", "notification.follow": "{name} seurasi sinua", "notification.favourite": "{name} tykkäsi statuksestasi", - "notification.reblog": "{name} boostasi statustasi", + "notification.reblog": "{name} buustasi statustasi", "notification.mention": "{name} mainitsi sinut", "notifications.column_settings.alert": "Työpöytä ilmoitukset", "notifications.column_settings.show": "Näytä sarakkeessa", "notifications.column_settings.follow": "Uusia seuraajia:", "notifications.column_settings.favourite": "Tykkäyksiä:", "notifications.column_settings.mention": "Mainintoja:", - "notifications.column_settings.reblog": "Boosteja:", + "notifications.column_settings.reblog": "Buusteja:", }; export default fi; From 3ec221d3b7093e2a2606ec04036cca9e9f1f733d Mon Sep 17 00:00:00 2001 From: JantsoP Date: Wed, 5 Apr 2017 09:57:25 +0200 Subject: [PATCH 054/137] updated reblog to boost translation Since it is that :D --- config/locales/simple_form.fi.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/simple_form.fi.yml b/config/locales/simple_form.fi.yml index 7e1205fdc..2bacd6d2c 100644 --- a/config/locales/simple_form.fi.yml +++ b/config/locales/simple_form.fi.yml @@ -38,7 +38,7 @@ fi: follow: Lähetä s-posti kun joku seuraa sinua follow_request: Lähetä s-posti kun joku pyytää seurata sinua mention: Lähetä s-posti kun joku mainitsee sinut - reblog: Lähetä s-posti kun joku reblogaa julkaisusi + reblog: Lähetä s-posti kun joku buustaa julkaisusi 'no': 'Ei' required: mark: "*" From 3504da5cac467e367e39e2310aaa5dba6b643f45 Mon Sep 17 00:00:00 2001 From: Eugen Date: Wed, 5 Apr 2017 10:25:05 +0200 Subject: [PATCH 055/137] Fix API method URL typo --- docs/Using-the-API/API.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Using-the-API/API.md b/docs/Using-the-API/API.md index bc5ca3de4..e09d8ac9c 100644 --- a/docs/Using-the-API/API.md +++ b/docs/Using-the-API/API.md @@ -310,7 +310,7 @@ Returns a [Status](#status). #### Getting status context: - GET /api/v1/statuses/:id/contexts + GET /api/v1/statuses/:id/context Returns a [Context](#context). From 5dbcd92193f45d71629e261cc264725d59f2ea6c Mon Sep 17 00:00:00 2001 From: Angristan Date: Wed, 5 Apr 2017 10:44:08 +0200 Subject: [PATCH 056/137] ECDH only Disable DHE ciphers. We don't loose any compatibility as we already use TLS 1.2, and ECDH is faster and safer. Also, it's better so specify the curve. This is the conf I use here : https://tls.imirhil.fr/https/mstdn.io --- docs/Running-Mastodon/Production-guide.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/Running-Mastodon/Production-guide.md b/docs/Running-Mastodon/Production-guide.md index d539ddf64..3912fd2ba 100644 --- a/docs/Running-Mastodon/Production-guide.md +++ b/docs/Running-Mastodon/Production-guide.md @@ -23,7 +23,8 @@ server { server_name example.com; ssl_protocols TLSv1.2; - ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH'; + ssl_ciphers EECDH+AESGCM:EECDH+AES; + ssl_ecdh_curve secp384r1; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; From 5963fce131b3bbfbe0a93b1b11a76d3efadce61f Mon Sep 17 00:00:00 2001 From: Jordan Guerder Date: Wed, 5 Apr 2017 10:52:56 +0200 Subject: [PATCH 057/137] Added mastodon.cx --- docs/Using-Mastodon/List-of-Mastodon-instances.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/Using-Mastodon/List-of-Mastodon-instances.md b/docs/Using-Mastodon/List-of-Mastodon-instances.md index d0bcf8c7d..e726e5dcd 100644 --- a/docs/Using-Mastodon/List-of-Mastodon-instances.md +++ b/docs/Using-Mastodon/List-of-Mastodon-instances.md @@ -7,6 +7,7 @@ There is also a list at [instances.mastodon.xyz](https://instances.mastodon.xyz) | -------------|-------------|---|---| | [mastodon.social](https://mastodon.social) |Flagship, quick updates|No|No| | [securitymastod.one](https://securitymastod.one/) |Information security enthusiasts and pros|Yes|Yes| +| [mastodon.cx](https://mastodon.cx/) |Alternative Mastodon instance hosted in France|Yes|Yes| | [mastodon.network](https://mastodon.network) |N/A|Yes|Yes| | [awoo.space](https://awoo.space) |Intentionally moderated, only federates with mastodon.social|Yes|No| | [animalliberation.social](https://animalliberation.social) |Animal Rights|Yes|No| From fa6f7c88984a052d5a10aae6807a3f9e2fcc761a Mon Sep 17 00:00:00 2001 From: Angristan Date: Wed, 5 Apr 2017 11:16:56 +0200 Subject: [PATCH 058/137] Add mstdn.io --- docs/Using-Mastodon/List-of-Mastodon-instances.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/Using-Mastodon/List-of-Mastodon-instances.md b/docs/Using-Mastodon/List-of-Mastodon-instances.md index d0bcf8c7d..a23cdafde 100644 --- a/docs/Using-Mastodon/List-of-Mastodon-instances.md +++ b/docs/Using-Mastodon/List-of-Mastodon-instances.md @@ -21,6 +21,7 @@ There is also a list at [instances.mastodon.xyz](https://instances.mastodon.xyz) | [mastodon.xyz](https://mastodon.xyz) |N/A|Yes|Yes| | [social.targaryen.house](https://social.targaryen.house) |Federates everywhere, quick updates.|Yes|Yes| | [masto.themimitoof.fr](https://masto.themimitoof.fr) |N/A|Yes|Yes| +| [mstdn.io](https://mstdn.io) |N/A|Yes|Yes| | [social.imirhil.fr](https://social.imirhil.fr) |N/A|No|Yes| | [social.wxcafe.net](https://social.wxcafe.net) |Open registrations, federates everywhere, no moderation yet|Yes|Yes| | [octodon.social](https://octodon.social) |Open registrations, federates everywhere, cutest instance yet|Yes|Yes| From bdf3ac95b8cc2efa277570082806b5777b24dfe4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Levieux?= Date: Wed, 5 Apr 2017 11:24:21 +0200 Subject: [PATCH 059/137] Add mastodon.partipirate.org --- docs/Using-Mastodon/List-of-Mastodon-instances.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/Using-Mastodon/List-of-Mastodon-instances.md b/docs/Using-Mastodon/List-of-Mastodon-instances.md index d0bcf8c7d..0b1720e11 100644 --- a/docs/Using-Mastodon/List-of-Mastodon-instances.md +++ b/docs/Using-Mastodon/List-of-Mastodon-instances.md @@ -19,6 +19,7 @@ There is also a list at [instances.mastodon.xyz](https://instances.mastodon.xyz) | [social.diskseven.com](https://social.diskseven.com) |Single user|No|Yes| | [social.gestaltzerfall.net](https://social.gestaltzerfall.net) |Single user|No|No| | [mastodon.xyz](https://mastodon.xyz) |N/A|Yes|Yes| +| [mastodon.partipirate.org](https://mastodon.partipirate.org) |French Pirate Part Instance - Politics and stuff|Yes|No| | [social.targaryen.house](https://social.targaryen.house) |Federates everywhere, quick updates.|Yes|Yes| | [masto.themimitoof.fr](https://masto.themimitoof.fr) |N/A|Yes|Yes| | [social.imirhil.fr](https://social.imirhil.fr) |N/A|No|Yes| From 9572282a559a07196e62190a852aacbd94968c71 Mon Sep 17 00:00:00 2001 From: nicobz25 Date: Wed, 5 Apr 2017 13:13:09 +0200 Subject: [PATCH 060/137] Update List-of-Mastodon-instances.md Add our mastodon instance :) Thanks ! --- docs/Using-Mastodon/List-of-Mastodon-instances.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/Using-Mastodon/List-of-Mastodon-instances.md b/docs/Using-Mastodon/List-of-Mastodon-instances.md index 0b98f8552..bf770dc43 100644 --- a/docs/Using-Mastodon/List-of-Mastodon-instances.md +++ b/docs/Using-Mastodon/List-of-Mastodon-instances.md @@ -46,5 +46,6 @@ There is also a list at [instances.mastodon.xyz](https://instances.mastodon.xyz) | [status.dissidence.ovh](https://status.dissidence.ovh)|N/A|Yes|Yes| | [mastodon.cc](https://mastodon.cc)|Art|Yes|No| | [mastodon.technology](https://mastodon.technology)|Open registrations, federates everywhere, for tech folks|Yes|No| +| [mastodon.systemlab.fr](https://mastodon.systemlab.fr/)|Le mastodon Français, informatique, jeux-vidéos, gaming et hébergement.|Yes|No| Let me know if you start running one so I can add it to the list! (Alternatively, add it yourself as a pull request). From 85c768bf16986ce8df3c8df9ea0724f60f3aebe2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Levieux?= Date: Wed, 5 Apr 2017 13:19:34 +0200 Subject: [PATCH 061/137] Typography on partY --- docs/Using-Mastodon/List-of-Mastodon-instances.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Using-Mastodon/List-of-Mastodon-instances.md b/docs/Using-Mastodon/List-of-Mastodon-instances.md index 0b98f8552..435e51411 100644 --- a/docs/Using-Mastodon/List-of-Mastodon-instances.md +++ b/docs/Using-Mastodon/List-of-Mastodon-instances.md @@ -20,7 +20,7 @@ There is also a list at [instances.mastodon.xyz](https://instances.mastodon.xyz) | [social.diskseven.com](https://social.diskseven.com) |Single user|No|Yes| | [social.gestaltzerfall.net](https://social.gestaltzerfall.net) |Single user|No|No| | [mastodon.xyz](https://mastodon.xyz) |N/A|Yes|Yes| -| [mastodon.partipirate.org](https://mastodon.partipirate.org) |French Pirate Part Instance - Politics and stuff|Yes|No| +| [mastodon.partipirate.org](https://mastodon.partipirate.org) |French Pirate Party Instance - Politics and stuff|Yes|No| | [social.targaryen.house](https://social.targaryen.house) |Federates everywhere, quick updates.|Yes|Yes| | [masto.themimitoof.fr](https://masto.themimitoof.fr) |N/A|Yes|Yes| | [mstdn.io](https://mstdn.io) |N/A|Yes|Yes| From 8530f9413b86e0734ed9e0be93f0168a070f9ac8 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 5 Apr 2017 13:28:46 +0200 Subject: [PATCH 062/137] Replace ActionCable broadcast call with simple redis publish --- app/lib/feed_manager.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/lib/feed_manager.rb b/app/lib/feed_manager.rb index 2cca1cefe..88f6f4a46 100644 --- a/app/lib/feed_manager.rb +++ b/app/lib/feed_manager.rb @@ -39,7 +39,7 @@ class FeedManager def broadcast(timeline_id, options = {}) options[:queued_at] = (Time.now.to_f * 1000.0).to_i - ActionCable.server.broadcast("timeline:#{timeline_id}", options) + redis.publish("timeline:#{timeline_id}", Oj.dump(options)) end def trim(type, account_id) From cfe91ac984fcabcc1980e88367dd636f0a8cc799 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 5 Apr 2017 13:32:57 +0200 Subject: [PATCH 063/137] Add index on mentions status_id --- db/migrate/20170405112956_add_index_on_mentions_status_id.rb | 5 +++++ db/schema.rb | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 db/migrate/20170405112956_add_index_on_mentions_status_id.rb diff --git a/db/migrate/20170405112956_add_index_on_mentions_status_id.rb b/db/migrate/20170405112956_add_index_on_mentions_status_id.rb new file mode 100644 index 000000000..3ed1a20cf --- /dev/null +++ b/db/migrate/20170405112956_add_index_on_mentions_status_id.rb @@ -0,0 +1,5 @@ +class AddIndexOnMentionsStatusId < ActiveRecord::Migration[5.0] + def change + add_index :mentions, :status_id + end +end diff --git a/db/schema.rb b/db/schema.rb index 3aaa3e3ad..b5d55fa16 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20170403172249) do +ActiveRecord::Schema.define(version: 20170405112956) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -127,6 +127,7 @@ ActiveRecord::Schema.define(version: 20170403172249) do t.datetime "created_at", null: false t.datetime "updated_at", null: false t.index ["account_id", "status_id"], name: "index_mentions_on_account_id_and_status_id", unique: true, using: :btree + t.index ["status_id"], name: "index_mentions_on_status_id", using: :btree end create_table "mutes", force: :cascade do |t| From 0a984e90d3052272bf793cb4393b9d642432aebb Mon Sep 17 00:00:00 2001 From: Jonathan Hurter Date: Wed, 5 Apr 2017 13:45:03 +0200 Subject: [PATCH 064/137] Add scalingo support --- .buildpacks | 2 ++ scalingo.json | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 89 insertions(+) create mode 100644 .buildpacks create mode 100644 scalingo.json diff --git a/.buildpacks b/.buildpacks new file mode 100644 index 000000000..29d7ee1e9 --- /dev/null +++ b/.buildpacks @@ -0,0 +1,2 @@ +https://github.com/Scalingo/ruby-buildpack +https://github.com/Scalingo/nodejs-buildpack diff --git a/scalingo.json b/scalingo.json new file mode 100644 index 000000000..84b690e24 --- /dev/null +++ b/scalingo.json @@ -0,0 +1,87 @@ +{ + "name": "Mastodon", + "description": "A GNU Social-compatible microblogging server", + "repository": "https://github.com/johnsudaar/mastodon", + "logo": "https://github.com/tootsuite/mastodon/raw/master/app/assets/images/logo.png", + "env": { + "LOCAL_DOMAIN": { + "description": "The domain that your Mastodon instance will run on (this can be appname.scalingo.io or a custom domain)", + "required": true + }, + "LOCAL_HTTPS": { + "description": "Will your domain support HTTPS? (Automatic for *.scalingo.io, requires manual configuration for custom domains)", + "value": "true", + "required": true + }, + "PAPERCLIP_SECRET": { + "description": "The secret key for storing media files", + "generator": "secret" + }, + "SECRET_KEY_BASE": { + "description": "The secret key base", + "generator": "secret" + }, + "SINGLE_USER_MODE": { + "description": "Should the instance run in single user mode? (Disable registrations, redirect to front page)", + "value": "false", + "required": true + }, + "S3_ENABLED": { + "description": "Should Mastodon use Amazon S3 for storage? This is highly recommended, as Scalingo does not have persistent file storage (files will be lost).", + "value": "true", + "required": false + }, + "S3_BUCKET": { + "description": "Amazon S3 Bucket", + "required": false + }, + "S3_REGION": { + "description": "Amazon S3 region that the bucket is located in", + "required": false + }, + "AWS_ACCESS_KEY_ID": { + "description": "Amazon S3 Access Key", + "required": false + }, + "AWS_SECRET_ACCESS_KEY": { + "description": "Amazon S3 Secret Key", + "required": false + }, + "SMTP_SERVER": { + "description": "Hostname for SMTP server, if you want to enable email", + "required": false + }, + "SMTP_PORT": { + "description": "Port for SMTP server", + "required": false + }, + "SMTP_LOGIN": { + "description": "Username for SMTP server", + "required": false + }, + "SMTP_PASSWORD": { + "description": "Password for SMTP server", + "required": false + }, + "SMTP_DOMAIN": { + "description": "Domain for SMTP server. Will default to instance domain if blank.", + "required": false + }, + "SMTP_FROM_ADDRESS": { + "description": "Address to send emails from", + "required": false + }, + "BUILDPACK_URL": { + "description": "Internal scalingo configuration", + "required": true, + "value": "https://github.com/Scalingo/multi-buildpack.git" + } + }, + "scripts": { + "postdeploy": "bundle exec rails db:migrate && bundle exec rails db:seed" + }, + "addons": [ + "scalingo-postgresql", + "scalingo-redis" + ] +} From 79765d61f506e8e7dd08b683ebfdaabfba12b1fe Mon Sep 17 00:00:00 2001 From: Jonathan Hurter Date: Wed, 5 Apr 2017 13:53:30 +0200 Subject: [PATCH 065/137] Install nodejs before ruby --- .buildpacks | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.buildpacks b/.buildpacks index 29d7ee1e9..d295b0f5d 100644 --- a/.buildpacks +++ b/.buildpacks @@ -1,2 +1,2 @@ -https://github.com/Scalingo/ruby-buildpack https://github.com/Scalingo/nodejs-buildpack +https://github.com/Scalingo/ruby-buildpack From 5ed2de6be2f3003be4422a659bdd7ab96803adf0 Mon Sep 17 00:00:00 2001 From: Angristan Date: Wed, 5 Apr 2017 14:11:08 +0200 Subject: [PATCH 066/137] Add git and curl as dependencies In some VPS templates, they are not installed by default. --- docs/Running-Mastodon/Production-guide.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/Running-Mastodon/Production-guide.md b/docs/Running-Mastodon/Production-guide.md index 3912fd2ba..90e9c0dea 100644 --- a/docs/Running-Mastodon/Production-guide.md +++ b/docs/Running-Mastodon/Production-guide.md @@ -88,8 +88,9 @@ It is recommended to create a special user for mastodon on the server (you could ## General dependencies + sudo apt-get install imagemagick ffmpeg libpq-dev libxml2-dev libxslt1-dev nodejs file git curl curl -sL https://deb.nodesource.com/setup_4.x | sudo bash - - sudo apt-get install imagemagick ffmpeg libpq-dev libxml2-dev libxslt1-dev nodejs file + apt-get intall nodejs sudo npm install -g yarn ## Redis From 259e626165bd7bf3360b18f007d0f8c968405de2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?wxcaf=C3=A9?= Date: Wed, 5 Apr 2017 14:21:45 +0200 Subject: [PATCH 067/137] Update List-of-Mastodon-instances.md --- docs/Using-Mastodon/List-of-Mastodon-instances.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Using-Mastodon/List-of-Mastodon-instances.md b/docs/Using-Mastodon/List-of-Mastodon-instances.md index 0b98f8552..07a6a4813 100644 --- a/docs/Using-Mastodon/List-of-Mastodon-instances.md +++ b/docs/Using-Mastodon/List-of-Mastodon-instances.md @@ -25,7 +25,7 @@ There is also a list at [instances.mastodon.xyz](https://instances.mastodon.xyz) | [masto.themimitoof.fr](https://masto.themimitoof.fr) |N/A|Yes|Yes| | [mstdn.io](https://mstdn.io) |N/A|Yes|Yes| | [social.imirhil.fr](https://social.imirhil.fr) |N/A|No|Yes| -| [social.wxcafe.net](https://social.wxcafe.net) |Open registrations, federates everywhere, no moderation yet|Yes|Yes| +| [social.wxcafe.net](https://social.wxcafe.net) |Open registrations, queer people, activists, safe as much as possible |Yes|Yes| | [octodon.social](https://octodon.social) |Open registrations, federates everywhere, cutest instance yet|Yes|Yes| | [mastodon.club](https://mastodon.club)|Open Registration, Open Federation, Mostly Canadians|Yes|No| | [hostux.social](https://hostux.social) |N/A|Yes|Yes| From 220bc48e8e9c4b8cebd98537233998f34d768347 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 5 Apr 2017 14:26:17 +0200 Subject: [PATCH 068/137] Only render public payload once in FanOutOnWrite --- app/services/fan_out_on_write_service.rb | 17 +++++++++-------- .../after_remote_follow_request_worker.rb | 2 ++ app/workers/after_remote_follow_worker.rb | 2 ++ 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/app/services/fan_out_on_write_service.rb b/app/services/fan_out_on_write_service.rb index 42222c25b..106d257ba 100644 --- a/app/services/fan_out_on_write_service.rb +++ b/app/services/fan_out_on_write_service.rb @@ -16,6 +16,7 @@ class FanOutOnWriteService < BaseService return if status.account.silenced? || !status.public_visibility? || status.reblog? + render_anonymous_payload(status) deliver_to_hashtags(status) return if status.reply? && status.in_reply_to_account_id != status.account_id @@ -48,23 +49,23 @@ class FanOutOnWriteService < BaseService end end + def render_anonymous_payload(status) + @payload = FeedManager.instance.inline_render(nil, 'api/v1/statuses/show', status) + end + def deliver_to_hashtags(status) Rails.logger.debug "Delivering status #{status.id} to hashtags" - payload = FeedManager.instance.inline_render(nil, 'api/v1/statuses/show', status) - status.tags.pluck(:name).each do |hashtag| - FeedManager.instance.broadcast("hashtag:#{hashtag}", event: 'update', payload: payload) - FeedManager.instance.broadcast("hashtag:#{hashtag}:local", event: 'update', payload: payload) if status.account.local? + FeedManager.instance.broadcast("hashtag:#{hashtag}", event: 'update', payload: @payload) + FeedManager.instance.broadcast("hashtag:#{hashtag}:local", event: 'update', payload: @payload) if status.account.local? end end def deliver_to_public(status) Rails.logger.debug "Delivering status #{status.id} to public timeline" - payload = FeedManager.instance.inline_render(nil, 'api/v1/statuses/show', status) - - FeedManager.instance.broadcast(:public, event: 'update', payload: payload) - FeedManager.instance.broadcast('public:local', event: 'update', payload: payload) if status.account.local? + FeedManager.instance.broadcast(:public, event: 'update', payload: @payload) + FeedManager.instance.broadcast('public:local', event: 'update', payload: @payload) if status.account.local? end end diff --git a/app/workers/after_remote_follow_request_worker.rb b/app/workers/after_remote_follow_request_worker.rb index 1f2db3061..928069211 100644 --- a/app/workers/after_remote_follow_request_worker.rb +++ b/app/workers/after_remote_follow_request_worker.rb @@ -13,5 +13,7 @@ class AfterRemoteFollowRequestWorker follow_request.destroy FollowService.new.call(follow_request.account, updated_account.acct) + rescue ActiveRecord::RecordNotFound + true end end diff --git a/app/workers/after_remote_follow_worker.rb b/app/workers/after_remote_follow_worker.rb index bdd2c2a91..d12fa3454 100644 --- a/app/workers/after_remote_follow_worker.rb +++ b/app/workers/after_remote_follow_worker.rb @@ -13,5 +13,7 @@ class AfterRemoteFollowWorker follow.destroy FollowService.new.call(follow.account, updated_account.acct) + rescue ActiveRecord::RecordNotFound + true end end From bf523fcd16cb7d4ffd81424d3d582e4dfab158b6 Mon Sep 17 00:00:00 2001 From: Jonathan Hurter Date: Wed, 5 Apr 2017 14:13:34 +0200 Subject: [PATCH 069/137] Add node_modules and .cache to slugignore --- .slugignore | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .slugignore diff --git a/.slugignore b/.slugignore new file mode 100644 index 000000000..cbf0615e7 --- /dev/null +++ b/.slugignore @@ -0,0 +1,2 @@ +node_modules/ +.cache/ From d3bf0307dbcf4d0f99615f1b3cb90565721de81c Mon Sep 17 00:00:00 2001 From: Jantso Porali Date: Wed, 5 Apr 2017 14:47:42 +0200 Subject: [PATCH 070/137] updated translation for about page --- config/locales/fi.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/config/locales/fi.yml b/config/locales/fi.yml index 3bcfe5c20..c2f81413a 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -21,12 +21,12 @@ fi: features_headline: Mikä erottaa Mastodonin muista get_started: Aloita käyttö links: Linkit - other_instances: Muut palvelimet + other_instances: muuhun palvelimeen source_code: Lähdekoodi - status_count_after: statukset - status_count_before: Kuka loi + status_count_after: statusta + status_count_before: Ovat luoneet terms: Ehdot - user_count_after: käyttäjät + user_count_after: käyttäjää user_count_before: Koti käyttäjälle accounts: follow: Seuraa From deb001bba87cc2e1b65de05ce6569e98ab3b0caa Mon Sep 17 00:00:00 2001 From: Jantso Porali Date: Wed, 5 Apr 2017 14:49:29 +0200 Subject: [PATCH 071/137] updated two-way auth and preferences translation --- config/locales/fi.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/locales/fi.yml b/config/locales/fi.yml index c2f81413a..d5dfd8183 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -132,7 +132,7 @@ fi: edit_profile: Muokkaa profiilia export: Datan vienti import: Datan tuonti - preferences: Mieltymykset + preferences: Ominaisuudet settings: Asetukset two_factor_auth: Kaksivaiheinen tunnistus statuses: @@ -154,7 +154,7 @@ fi: description_html: Jos otat käyttöön kaksivaiheisen tunnistuksen, kirjautumiseen vaaditaan puhelin, joka voi generoida tokeneita kirjautumista varten. disable: Poista käytöstä enable: Ota käyttöön - instructions_html: "Skannaa tämä QR-koodi Google Authenticator tai samanlaiseen sovellukseen puhelimellasi. Tästä hetkestä lähtien, ohjelma generoi tokenit mikä sinun tarvitsee syöttää sisäänkirjautuessa." + instructions_html: "Skannaa tämä QR-koodi Google Authenticator tai samanlaiseen sovellukseen puhelimellasi. Tästä hetkestä lähtien ohjelma generoi koodin, mikä sinun tarvitsee syöttää sisäänkirjautuessa." plaintext_secret_html: 'Plain-text secret: %{secret}' warning: Jos et juuri nyt voi konfiguroida authenticator-applikaatiota juuri nyt, sinun pitäisi klikata "Poista käytöstä" tai et voi kirjautua sisään. users: From 837030db98d2e3a054d2f74ba2aa331d58671c4b Mon Sep 17 00:00:00 2001 From: Jantso Porali Date: Wed, 5 Apr 2017 14:53:35 +0200 Subject: [PATCH 072/137] updated blocking translation --- config/locales/fi.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/fi.yml b/config/locales/fi.yml index d5dfd8183..cdb2b9886 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -89,7 +89,7 @@ fi: preface: Voit tuoda tiettyä dataa kaikista ihmisistä joita seuraat tai estät tilillesi tälle palvelimelle tiedostoista, jotka on luotu toisella palvelimella success: Datasi on onnistuneesti ladattu ja käsitellään pian types: - blocking: Esto lista + blocking: Estetyt lista following: Seuratut lista upload: Lähetä landing_strip_html: %{name} on käyttäjä domainilla %{domain}. Voit seurata tai vuorovaikuttaa heidän kanssaan jos sinulla on tili yleisessä verkossa. Jos sinulla ei ole tiliä, voit rekisteröityä täällä. From cbcfd92a14aca00139601e19b1c95f013f81036f Mon Sep 17 00:00:00 2001 From: Padraig Fahy Date: Wed, 5 Apr 2017 14:00:35 +0100 Subject: [PATCH 073/137] Adding mastodon.irish --- docs/Using-Mastodon/List-of-Mastodon-instances.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/Using-Mastodon/List-of-Mastodon-instances.md b/docs/Using-Mastodon/List-of-Mastodon-instances.md index a14836b80..0972e553f 100644 --- a/docs/Using-Mastodon/List-of-Mastodon-instances.md +++ b/docs/Using-Mastodon/List-of-Mastodon-instances.md @@ -28,6 +28,7 @@ There is also a list at [instances.mastodon.xyz](https://instances.mastodon.xyz) | [social.wxcafe.net](https://social.wxcafe.net) |Open registrations, queer people, activists, safe as much as possible |Yes|Yes| | [octodon.social](https://octodon.social) |Open registrations, federates everywhere, cutest instance yet|Yes|Yes| | [mastodon.club](https://mastodon.club)|Open Registration, Open Federation, Mostly Canadians|Yes|No| +| [mastodon.irish](https://mastodon.irish)|Open Registration|Yes|No| | [hostux.social](https://hostux.social) |N/A|Yes|Yes| | [social.alex73630.xyz](https://social.alex73630.xyz) |Francophones|Yes|Yes| | [oc.todon.fr](https://oc.todon.fr) |Modérée et principalement francophone, pas de tolérances pour misogynie/LGBTphobies/validisme/etc.|Yes|Yes| From 152a1e578c46068dfac2888620798073d3d305b8 Mon Sep 17 00:00:00 2001 From: Jonathan Hurter Date: Wed, 5 Apr 2017 15:26:36 +0200 Subject: [PATCH 074/137] Add Scalingo one click on readme --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 20499e6e3..3827a74ab 100644 --- a/README.md +++ b/README.md @@ -117,6 +117,10 @@ Which will re-create the updated containers, leaving databases and data as is. D Docker is great for quickly trying out software, but it has its drawbacks too. If you prefer to run Mastodon without using Docker, refer to the [production guide](docs/Running-Mastodon/Production-guide.md) for examples, configuration and instructions. +## Deployment on Scalingo + +[![Deploy on Scalingo](https://cdn.scalingo.com/deploy/button.svg)](https://my.scalingo.com/deploy?source=https://github.com/johnsudaar/mastodon#master) + ## Deployment on Heroku (experimental) [![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy) From 5e7ec0fe573f11d9c853981ac0ae57a8b27cf9ce Mon Sep 17 00:00:00 2001 From: Jonathan Hurter Date: Wed, 5 Apr 2017 15:52:06 +0200 Subject: [PATCH 075/137] Use root repository url --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3827a74ab..fde4df6bb 100644 --- a/README.md +++ b/README.md @@ -119,7 +119,7 @@ Docker is great for quickly trying out software, but it has its drawbacks too. I ## Deployment on Scalingo -[![Deploy on Scalingo](https://cdn.scalingo.com/deploy/button.svg)](https://my.scalingo.com/deploy?source=https://github.com/johnsudaar/mastodon#master) +[![Deploy on Scalingo](https://cdn.scalingo.com/deploy/button.svg)](https://my.scalingo.com/deploy?source=https://github.com/tootsuite/mastodon#master) ## Deployment on Heroku (experimental) From d6bab0c71cd94bff4f775b79a55493b6e02215a0 Mon Sep 17 00:00:00 2001 From: Jonathan Hurter Date: Wed, 5 Apr 2017 16:00:48 +0200 Subject: [PATCH 076/137] Add doc --- README.md | 2 ++ docs/Running-Mastodon/Scalingo-guide.md | 13 +++++++++++++ 2 files changed, 15 insertions(+) create mode 100644 docs/Running-Mastodon/Scalingo-guide.md diff --git a/README.md b/README.md index fde4df6bb..db60b66f7 100644 --- a/README.md +++ b/README.md @@ -121,6 +121,8 @@ Docker is great for quickly trying out software, but it has its drawbacks too. I [![Deploy on Scalingo](https://cdn.scalingo.com/deploy/button.svg)](https://my.scalingo.com/deploy?source=https://github.com/tootsuite/mastodon#master) +[You can view a guide for deployment on Scalingo here.](docs/Running-Mastodon/Scalingo-guide.md) + ## Deployment on Heroku (experimental) [![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy) diff --git a/docs/Running-Mastodon/Scalingo-guide.md b/docs/Running-Mastodon/Scalingo-guide.md new file mode 100644 index 000000000..6552056a8 --- /dev/null +++ b/docs/Running-Mastodon/Scalingo-guide.md @@ -0,0 +1,13 @@ +Scalingo guide +============== + +[![Deploy on Scalingo](https://cdn.scalingo.com/deploy/button.svg)](https://my.scalingo.com/deploy?source=https://github.com/tootsuite/mastodon#master) + +1. Click the above button. +2. Fill in the options requested. + * You can use a .scalingo.io domain, which will be simple to set up, or you can use a custom domain. + * You will want Amazon S3 for file storage. The only exception is for development purposes, where you may not care if files are not saved. Follow a guide online for creating a free Amazon S3 bucket and Access Key, then enter the details. + * If you want your Mastodon to be able to send emails, configure SMTP settings here (or later). Consider using [Mailgun](https://mailgun.com) or similar, who offer free plans that should suit your interests. +3. Deploy! The app should be set up, with a working web interface and database. You can change settings and manage versions from the Heroku dashboard. + +You may need to use the `scalingo` CLI application to run `USERNAME=yourUsername rails mastodon:make_admin` to make yourself an admin. From 28fb01c71aea96e66bc639917206f5472ca2d34f Mon Sep 17 00:00:00 2001 From: VirtuBox Date: Wed, 5 Apr 2017 16:02:47 +0200 Subject: [PATCH 077/137] Update List-of-Mastodon-instances.md --- docs/Using-Mastodon/List-of-Mastodon-instances.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/Using-Mastodon/List-of-Mastodon-instances.md b/docs/Using-Mastodon/List-of-Mastodon-instances.md index 1f5be3a61..e0bb3d368 100644 --- a/docs/Using-Mastodon/List-of-Mastodon-instances.md +++ b/docs/Using-Mastodon/List-of-Mastodon-instances.md @@ -48,5 +48,6 @@ There is also a list at [instances.mastodon.xyz](https://instances.mastodon.xyz) | [mastodon.cc](https://mastodon.cc)|Art|Yes|No| | [mastodon.technology](https://mastodon.technology)|Open registrations, federates everywhere, for tech folks|Yes|No| | [mastodon.systemlab.fr](https://mastodon.systemlab.fr/)|Le mastodon Français, informatique, jeux-vidéos, gaming et hébergement.|Yes|No| +| [mastodon.top](https://mastodon.top) |N/A|Yes|Yes| Let me know if you start running one so I can add it to the list! (Alternatively, add it yourself as a pull request). From 9a534d1df639ccd462d0c1f0b2faee0734daab8d Mon Sep 17 00:00:00 2001 From: Technowix Date: Wed, 5 Apr 2017 16:18:52 +0200 Subject: [PATCH 078/137] Add niu.moe, cuz it's kawaii --- docs/Using-Mastodon/List-of-Mastodon-instances.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/Using-Mastodon/List-of-Mastodon-instances.md b/docs/Using-Mastodon/List-of-Mastodon-instances.md index 1f5be3a61..2918db8e8 100644 --- a/docs/Using-Mastodon/List-of-Mastodon-instances.md +++ b/docs/Using-Mastodon/List-of-Mastodon-instances.md @@ -48,5 +48,6 @@ There is also a list at [instances.mastodon.xyz](https://instances.mastodon.xyz) | [mastodon.cc](https://mastodon.cc)|Art|Yes|No| | [mastodon.technology](https://mastodon.technology)|Open registrations, federates everywhere, for tech folks|Yes|No| | [mastodon.systemlab.fr](https://mastodon.systemlab.fr/)|Le mastodon Français, informatique, jeux-vidéos, gaming et hébergement.|Yes|No| +| [niu.moe](https://niu.moe/)|:dolls: The most cutest node ever, FR/EN, anime and computer :balloon:|Yes|Yes| Let me know if you start running one so I can add it to the list! (Alternatively, add it yourself as a pull request). From ee758551d1e3e58fb91760b240de8e70c4981c85 Mon Sep 17 00:00:00 2001 From: shel Date: Wed, 5 Apr 2017 10:58:41 -0400 Subject: [PATCH 079/137] Correct innacurate info and other fixes This guide was pretty out of date and also contained outright errors which were never true. I have updated it. --- docs/Using-Mastodon/User-guide.md | 64 ++++++++++++++++++------------- 1 file changed, 37 insertions(+), 27 deletions(-) diff --git a/docs/Using-Mastodon/User-guide.md b/docs/Using-Mastodon/User-guide.md index acd02f24e..e456de29d 100644 --- a/docs/Using-Mastodon/User-guide.md +++ b/docs/Using-Mastodon/User-guide.md @@ -26,17 +26,17 @@ Mastodon User's Guide ## Intro -Mastodon is a social network application based on the GNU Social protocol. It behaves a lot like other social networks, especially Twitter, with one key difference - it is open-source and anyone can start their own server (also called an "*instance*"), and users of any instance can interact freely with those of other instances (called "*federation*"). Thus, it is possible for small communities to set up their own servers to use amongst themselves while also allowing interaction with other communities. +Mastodon is a social network application based on the OStatus protocol. It behaves a lot like other social networks, especially Twitter, with one key difference - it is open-source and anyone can start their own server (also called an "*instance*"), and users of any instance can interact freely with those of other instances (called "*federation*"). Thus, it is possible for small communities to set up their own servers to use amongst themselves while also allowing interaction with other communities. #### Decentralization and Federation Mastodon is a system decentralized through a concept called "*federation*" - rather than depending on a single person or organization to run its infrastructure, anyone can download and run the software and run their own server. Federation means different Mastodon servers can interact with each other seamlessly, similar to e.g. e-mail. -As such, anyone can download Mastodon and e.g. run it for a small community of people, but any user registered on that instance can follow and send and read posts from other Mastodon instances (as well as servers running other GNU Social-compatible services). This means that not only is users' data not inherently owned by a company with an interest in selling it to advertisers, but also that if any given server shuts down its users can set up a new one or migrate to another instance, rather than the entire service being lost. +As such, anyone can download Mastodon and e.g. run it for a small community of people, but any user registered on that instance can follow, send, and read posts from other Mastodon instances (as well as servers running other OStatus-compatible services, such as GNU Social and postActiv). This means that not only is users' data not inherently owned by a company with an interest in selling it to advertisers, but also that if any given server shuts down its users can set up a new one or migrate to another instance, rather than the entire service being lost. Within each Mastodon instance, usernames just appear as `@username`, similar to other services such as Twitter. Users from other instances appear, and can be searched for and followed, as `@user@servername.ext` - so e.g. `@gargron` on the `mastodon.social` instance can be followed from other instances as `@gargron@mastodon.social`). -Posts from users on external instances are "*federated*" into the local one, i.e. if `user1@mastodon1` follows `user2@gnusocial2`, any posts `user2@gnusocial2` makes appear in both `user1@mastodon`'s Home feed and the public timeline on the `mastodon1` server. Mastodon server administrators have some control over this and can exclude users' posts from appearing on the public timeline; post privacy settings from users on Mastodon instances also affect this, see below in the [Toot Privacy](User-guide.md#toot-privacy) section. +Posts from users on external instances are "*federated*" into the local one, i.e. if `user1@mastodon1` follows `user2@gnusocial2`, any posts `user2@gnusocial2` makes appear in both `user1@mastodon1`'s Home feed and the public timeline on the `mastodon1` server. Mastodon server administrators have some control over this and can exclude users' posts from appearing on the public timeline; post privacy settings from users on Mastodon instances also affect this, see below in the [Toot Privacy](User-guide.md#toot-privacy) section. ## Getting Started @@ -44,7 +44,7 @@ Posts from users on external instances are "*federated*" into the local one, i.e You can customise your Mastodon profile in a number of ways - you can set a custom "display" name, a profile "avatar" picture, a background image for your profile page header, and a short "bio" that summarises you or your account. -![Preferences icon](screenshots/preferences.png) To edit your profile, click the Preferences icon in the Compose column and select "Edit Profile" on the left-hand menu on the Preferences page. Your display name is limited to 30 characters, your bio to 160. Avatars and header pictures can be uploaded as png, gif or jpg images and cannot be larger than 2MB. They will be resized to standard sizes - 120x120 pixels for avatars, 700x335 pixels for header pictures. +![Preferences icon](screenshots/preferences.png) To edit your profile, click the Preferences icon in the Compose column and select "Edit Profile" on the left-hand menu on the Preferences page. Your display name is limited to 30 characters, your bio to 160. Avatars and header pictures can be uploaded as png, gif or jpg images and cannot be larger than 2MB. They will be resized to standard sizes - 120x120 pixels for avatars, 700x335 pixels for header pictures. #### E-Mail Notifications @@ -56,17 +56,17 @@ The most basic way to interact with Mastodon is to make a text post, also called If you want to reply to another user's toot, you can click the "Reply" icon on it. This will add their username to your input box along with a preview of the message you're replying to, and the user will receive a notification of your response. -Similarly, in order to start a conversation with another user, just mention their user name in your toot. When you type the @ symbol followed directly (without a space) by any character in a message, Mastodon will automatically start suggesting users that match the username you're typing. Like with replies, mentioning a user like this will send them a notification. +Similarly, in order to start a conversation with another user, just mention their user name in your toot. When you type the @ symbol followed directly (without a space) by any character in a message, Mastodon will automatically start suggesting users that match the username you're typing. Like with replies, mentioning a user like this will send them a notification. If the post starts with a mention, it will be treated as a reply and will only appear in the Home timelines of users who follow both you and the user you are mentioning. It will still be visible on your profile depending on privacy settings. ##### Content Warnings -When you want to post something that you don't want to be immediately visible - for example, spoilers for that film that's just out, or some personal thoughts that contain [triggers](http://www.bbc.co.uk/news/blogs-ouch-26295437), you can "hide" it behind a Content Warning. +When you want to post something that you don't want to be immediately visible - for example, spoilers for that film that's just come out, or some personal thoughts that mention potentially upsetting topics, you can "hide" it behind a Content Warning. To do this, click the ![CW icon](screenshots/compose-cw.png) "CW" switch under the Compose box. This will add another text box labeled "Content warning"; you should enter a short summary of what the "body" of your post contains here while your actual post goes into the "What is on your mind?" box as normal. ![animation showing how to enable content warnings](screenshots/content-warning.gif) -This will cause the body of your post to be hidden behind a "Show More" button in the timeline, with only the content warning visible by default: +This will cause the body of your post to be hidden behind a "Show More" button in the timeline, with only the content warning and any mentioned users visible by default: ![animation showing content warnings in the timeline](screenshots/cw-toot.gif) @@ -74,13 +74,13 @@ This will cause the body of your post to be hidden behind a "Show More" button i ##### Hashtags -If you're making a post belonging to a wider subject, it might be worth adding a "hashtag" to it. This can be done simply by adding any alphanumeric term with a # sign in front of it to the toot, e.g. #introductions (which is popular on mastodon.social for new users to introduce themselves to the community), or #politics for political discussions, etc. Clicking on a hashtag in a toot will show a timeline consisting only of toots that include this hashtag (i.e. it's a shortcut to searching for it). This allows users to group messages of similar subjects together, forming a separate "timeline" for people interested in that subject. +If you're making a post belonging to a wider subject, it might be worth adding a "hashtag" to it. This can be done simply by writing in the post a # sign followed by a phrase, e.g. #introductions (which is popular on mastodon.social for new users to introduce themselves to the community), or #politics for political discussions, etc. Clicking on a hashtag in a toot will show a timeline consisting only of public posts that include this hashtag (i.e. it's a shortcut to searching for it). This allows users to group messages of similar subjects together, forming a separate "timeline" for people interested in that subject. Hashtags can also be searched for from the search bar above the compose box. ##### Boosts and Favourites You can *favourite* another user's toot by clicking the star icon underneath. This will send the user a notification that you have marked their post as a favourite; the meaning of this varies widely by context from a general "I'm listening" to signalling agreement or offering support for the ideas expressed. -Additionally you can *boost* toots by clicking the "circular arrows" icon. Boosting a toot will show it on your profile timeline and make it appear to all your followers, even if they aren't following the user who made the original post. This is helpful if someone posts a message you think others should see, as it increases the message's reach while keeping the author information intact. +Additionally you can *boost* toots by clicking the "circular arrows" icon. Boosting a toot will show it on your profile timeline and make it appear to all your followers, even if they aren't following the user who made the original post. This is helpful if someone posts a message you think others should see, as it increases the message's reach while keeping the author information intact. #### Posting Images @@ -92,21 +92,21 @@ You can also attach video files or GIF animations to Toots. However, there is a #### Following Other Users -Following another user will make all of their toots as well as other users' toots which they [boost](User-guide.md#boosts-and-favourites) in your Home column. This gives you a separate timeline from the [federated timeline](User-guide.md#the-federated-timeline) in which you can read what particular people are up to without the noise of general conversation. +Following another user will make all of their toots as well as other users' toots which they [boost](User-guide.md#boosts-and-favourites) appear in your Home column. This gives you a separate timeline from the [public timelines](User-guide.md#the-public-timelines) in which you can read what particular people are up to without the noise of general conversation. ![Follow icon](screenshots/follow.png) In order to follow a user, click their name or avatar to open their profile, then click the Follow icon in the top left of their profile view. -If their account is locked (which is shown with a padlock icon ![Padlock icon](screenshots/locked-icon.png) next to their user name), they will receive a notification of your request to follow them and need to approve this before you are added to their follower list (and thus see their toots). To show you that you're waiting for someone to approve your follow request, the Follow icon ![Follow icon](screenshots/follow-icon.png) on their profile will be replaced with an hourglass icon ![Pending icon](screenshots/pending-icon.png). +If their account has a padlock icon ![Padlock icon](screenshots/locked-icon.png) next to their user name, they will receive a notification of your request to follow them and they will need to approve this before you are added to their follower list (and thus see their toots). To show you that you are waiting for someone to approve your follow request, the Follow icon ![Follow icon](screenshots/follow-icon.png) on their profile will be replaced with an hourglass icon ![Pending icon](screenshots/pending-icon.png). The requirement for new followers to be approved is something you can enable for your own profile under preferences. Once you follow a user, the Follow icon will be highlighted in blue on their profile ![Following icon](screenshots/following-icon.png); you can unfollow them again by clicking this. If you know someone's user name you can also open their profile for following by entering it in the [Search box](User-guide.md#searching) in the Compose column. This also works for remote users, though depending on whether they are known to your home instance you might have to enter their full name including the domain (e.g. `gargron@mastodon.social`) into the search box before their profile will appear in the suggestions. -Alternately, if you already have a user's profile open in a separate browser tab, most GNU Social-related networks should have a "Follow" or "Subscribe" button on their profile page. This will ask you to enter the full user name to follow **from** (ie. if your account is on mastodon.social you would want to enter this as `myaccount@mastodon.social`) +Alternately, if you already have a user's profile open in a separate browser tab, most OStatus-related networks should have a "Follow" or "Subscribe" button on their profile page. This will ask you to enter the full user name to follow **from** (ie. if your account is on mastodon.social you would want to enter this as `myaccount@mastodon.social`) #### Notifications -When someone follows your account or requests to follow you, mentions your user name (either as an initial message or in response to one of your toots) or boosts or favourites one of your toots, you will receive a notification for this. These will appear as desktop notifications on your computer (if your web browser supports this and you've enabled them) as well as in your "Notifications" column. +When someone follows your account or requests to follow you, mentions your user name, or boosts or favourites one of your toots, you will receive a notification for this. These will appear as desktop notifications on your computer (if your web browser supports this and you've enabled them) as well as in your "Notifications" column. ![Notification Settings icon](screenshots/notifications-settings.png) You can filter what kind of notifications you see in the Notifications column by clicking the Notification Settings icon at the top of the column and ticking or un-ticking what you do or don't want to see notifications for. @@ -116,21 +116,25 @@ When someone follows your account or requests to follow you, mentions your user #### Mobile Apps -There are no official mobile Mastodon apps for iOS or Android at this point. However, there are several third-party apps in development; you can find a list of these [here](Apps.md). +Mastodon has an open API, so anyone can develop a client or app to use Mastodon from anything. Many people have already developed mobile apps for iOS and Android. You can find a list of these [here](Apps.md). Many of these projects are also open source and welcome collaborators. -#### The Federated Timeline +#### The Public Timelines -Mastodon has a "Federated" timeline, which is a collection of all public toots made by all local users as well as posts from remote users that are federated (because someone on your instance follows the remote user making the post). This is a good way to meet new people to follow or interact with, but can be overwhelming especially if there's a lot of activity. +In addition to your Home timeline, there are two public timelines available. The Federated Timeline and the Local Timeline. These are both a good way to meet new people to follow or interact with. + +##### The Federated Timeline + +The Federated Timeline shows all public posts from all users "known" to your instance. This means the user is either on the same instance as you, or somebody on your instance follows that user. The Federated Timeline is a great way to engage in the broad chatter of the world. Following users on remote instances who you meet on the Federated Timeline can lead to meeting more users on more instances and further connecting your instance to more and more of the entire Mastodon and OStatus network. ![Federated Timeline icon](screenshots/federated-timeline.png) To view the federated timeline, click the "Federated Timeline" icon in your Compose column or the respective button on the Getting Started panel. To hide the federated timeline again, simply click the "Back" link at the top of the column while you're viewing it. #### The Local Timeline -In addition to the Federated Timeline, there's also a "Local" timeline, which only shows public toots made by users on your home instance. This is quieter than the Federated timeline, and useful if you want to stick close to your instance's community without having too much noise from outside. To view the Local Timeline, click the ![Menu icon](screenshots/compose-menu.png) Menu icon on the Compose pane and then select "Local Timeline" on the rightmost column. +The Local Timeline only shows public posts made by users on your home instance. This can be useful if your instance has particular community norms that users on other instances may not have, such as particular topics that get put under content warnings; or particular in-jokes and shared interests. To view the Local Timeline, click the ![Menu icon](screenshots/compose-menu.png) Menu icon on the Compose pane and then select "Local Timeline" on the rightmost column. #### Searching -Mastodon has a search function - however, this is limited to users and [hashtags](User-guide.md#hashtags) only and cannot be used to search through the full text of toots. In order to start a search, just type into the search box in the Compose column; Mastodon will automatically start showing suggestions of both user names and hashtags in a pop-up after a moment. Selecting any of these will open the user's profile or a view of all toots on the hashtag. +Mastodon has a search function - you can use it to search for users and [hashtags](User-guide.md#hashtags). The search does not look through the entire text of posts, only hashtags. In order to start a search, just type into the search box in the Compose column and hit *enter*; This will open the search pane. The search pane will show suggestions as you type. Selecting any of these will open the user's profile or a view of all toots on the hashtag. ## Privacy, Safety and Security @@ -140,7 +144,7 @@ Mastodon has a number of advanced security, privacy and safety features over mor Two-Factor Authentication (2FA) is a mechanism that improves the security of your Mastodon account by requiring a numeric code from another device (most commonly mobile phones) linked to your Mastodon account when you log in - this means that even if someone gets hold of both your e-mail address and your password, they cannot take over your Mastodon account as they would need a physical device you own to log in. -Mastodon's 2FA uses Google Authenticator (or compatible apps). You can install this for free to your [Android](https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2) or [iOS](https://itunes.apple.com/gb/app/google-authenticator/id388497605) device; [this Wikipedia page](https://en.wikipedia.org/wiki/Google_Authenticator#Implementations) lists further versions of the app for other systems. +Mastodon's 2FA uses Google Authenticator (or compatible apps, such as Authy). You can install this for free to your [Android](https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2) or [iOS](https://itunes.apple.com/gb/app/google-authenticator/id388497605) device; [this Wikipedia page](https://en.wikipedia.org/wiki/Google_Authenticator#Implementations) lists further versions of the app for other systems. ![Preferences icon](screenshots/preferences.png) In order to enable 2FA for your Mastodon account, click the Preferences icon in the Compose column, click "Two-factor Authentication" in the left menu on the settings page and follow the instructions. Once activated, every time you log in you will need a one-time code generated by the Authenticator app on the device you've linked to your account. @@ -154,18 +158,20 @@ To allow you more control over who can see your toots, Mastodon supports "privat #### Toot Privacy -Toot privacy is handled independently of account privacy, and individually for each toot. The three tiers of visibility for toots are Public (default), Unlisted or Private. In order to select your privacy level, click the ![Globe icon](screenshots/compose-privacy.png) globe icon. Changes to this setting are remembered between posts, i.e. if you make one private toot you will need to disable the switch again to make public toots. +Toot privacy is handled independently of account privacy, and individually for each toot. The four tiers of visibility for toots are Public (default), Unlisted, Private, and Direct. In order to select your privacy level, click the ![Globe icon](screenshots/compose-privacy.png) globe icon. Changes to this setting are remembered between posts, i.e. if you make one private toot, each toot you make will be private until you change it back to public. You can change your default post privacy under preferences. -**Public** is the default status of toots on accounts not set to private; a toot is public if neither of the two flags are set. Public toots are visible to any other user on the public timeline, federate to other GNU Social instances without restriction and appear on your user profile page to anyone including search engine bots and visitors who aren't logged into a Mastodon account. +**Public** is the default status of toots on most accounts. Public toots are visible to any other user on the public timelines, federate to other Mastodon and OStatus instances without restriction, and appear on your user profile page to anyone including search engine bots and visitors who aren't logged into a Mastodon account. -**Unlisted** toots are toggled with the "Do not display in public timeline" option in the Compose pane. They are visible to anyone following you and appear on your profile page to the public even without a Mastodon login, but do *not* appear to anyone viewing the Public Timeline while logged into Mastodon. +**Unlisted** toots are public, except that they do not appear in the public timelines or search results. They are visible to anyone following you and appear on your profile page to the public even without a Mastodon login. Other than not appearing in the public timelines or search results, they function identically to public posts. -**Private** toots, finally, are toggled with the "Mark as private" switch. Private toots do not appear in the public timeline nor on your profile page to anyone viewing it unless they are on your Followers list. This means the option is of very limited use if your account is not also set to be private (as anyone can follow you without confirmation and thus see your private toots). However the separation of this means that if you *do* set your entire account to private, you can switch this option off on a toot to make unlisted or even public toots from your otherwise private account. Private posts are not encrypted. Make sure you trust your instance admin not to just read your private posts on the back-end. - -Private toots do not federate to other instances, unless you @mention a remote user. In this case, they will federate to their instance *and may appear there PUBLICLY*. A warning will be displayed if you're composing a private toot that will federate to another instance. +**Private** toots do not appear in the public timeline nor on your profile page to anyone viewing it unless they are on your Followers list. The option is of limited use if your account is not also set to require approval of new followers (as anyone can follow you without confirmation and thus see your private toots). However the separation of this means that if you *do* set your entire account to private, you can switch this option off on a toot to make unlisted or even public toots from your otherwise private account. Private toots cannot be boosted. If someone you follow makes a private toot, it will appear in your timeline with a padlock icon in place of the Boost icon. **NOTE** that remote instances may not respect this. +Private toots do not federate to other instances, unless you @mention a remote user. In this case, they will federate to their instance, and users on that instance who follow both you and the @mentioned user will see it in their Home timelines. There is no reliable way to check if an instance will actually respect post privacy. Non-Mastodon servers, such as a GNU Social server, do not support Mastodon privacy settings. A user on GNU Social who you @mention in a private post would not even be aware that the post is intended to be private and would be able to boost it, which would undo the privacy setting. There is also no way to guarantee that someone could not just modify the code on their particular Mastodon instance to not respect private post restrictions. A warning will be displayed if you're composing a private toot that will federate to another instance. You should thus think through how much you trust the user you are @mentioning and the instance they are on. + +Private posts are not encrypted. Make sure you trust your instance admin not to just read your private posts on the back-end. Do not say anything you would not want potentially intercepted. + **Direct** posts are only visible to users you have @mentioned in them and cannot be boosted. Like with private posts, you should be mindful that the remote instance may not respect this protocol. If you are discussing a sensitive matter you should move the conversation off of Mastodon. To summarise: @@ -183,9 +189,13 @@ You can block a user to stop them contacting you. To do this, you can click or t **NOTE** that this will stop them from seeing your public toots while they are logged in, but they *will* be able to see your public toots by simply opening your profile in another browser that isn't logged into Mastodon (or logged into a different account that you have not blocked). -Mentions, favourites, boosts or any other interaction with you from a blocked user will be hidden from your view. You will not see replies to a blocked person, even if the reply mentions you, nor will you see their toots if someone boosts them. You will not see toots mentioning a blocked person except in the public timeline. +Mentions, favourites, boosts or any other interaction with you from a blocked user will be hidden from your view. You will not see replies to a blocked person, even if the reply mentions you, nor will you see their toots if someone boosts them. -The blocked user will not be notified of your blocking them. They will be removed from your followers, *but* will still be able to see any public toots you make. Blocks do not federate across instances. +The blocked user will not be notified of your blocking them. They will be removed from your followers. + +#### Muting + +If you do not wish to see posts from a particular user, but do not care about if they see your posts, you may choose to *mute* them. You can mute a user from the same menu on their profile page that you would block them from. You will not see posts from a muted user unless they @mention you. A muted user will have no way to know that you have them muted. #### Reporting Toots or Users From 4de3182dc8dbd596785f2e77e3df939be1fc4962 Mon Sep 17 00:00:00 2001 From: Kody Date: Wed, 5 Apr 2017 17:00:03 +0200 Subject: [PATCH 080/137] Added im-in.space --- docs/Using-Mastodon/List-of-Mastodon-instances.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/Using-Mastodon/List-of-Mastodon-instances.md b/docs/Using-Mastodon/List-of-Mastodon-instances.md index 1f5be3a61..8b5fa27ea 100644 --- a/docs/Using-Mastodon/List-of-Mastodon-instances.md +++ b/docs/Using-Mastodon/List-of-Mastodon-instances.md @@ -48,5 +48,6 @@ There is also a list at [instances.mastodon.xyz](https://instances.mastodon.xyz) | [mastodon.cc](https://mastodon.cc)|Art|Yes|No| | [mastodon.technology](https://mastodon.technology)|Open registrations, federates everywhere, for tech folks|Yes|No| | [mastodon.systemlab.fr](https://mastodon.systemlab.fr/)|Le mastodon Français, informatique, jeux-vidéos, gaming et hébergement.|Yes|No| +| [im-in.space](https://im-in.space/)|SPAAAAACE! Probably with a lot of French people. (Invite-only, might randomly open registrations)|No|Yes| Let me know if you start running one so I can add it to the list! (Alternatively, add it yourself as a pull request). From 4335dffe35acdf4a6a7aef2b31f8caa3b45967be Mon Sep 17 00:00:00 2001 From: Jonathan Hurter Date: Wed, 5 Apr 2017 17:28:11 +0200 Subject: [PATCH 081/137] Fix wrong url in scalingo.json --- scalingo.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scalingo.json b/scalingo.json index 84b690e24..d60f1529c 100644 --- a/scalingo.json +++ b/scalingo.json @@ -1,7 +1,7 @@ { "name": "Mastodon", "description": "A GNU Social-compatible microblogging server", - "repository": "https://github.com/johnsudaar/mastodon", + "repository": "https://github.com/tootsuite/mastodon", "logo": "https://github.com/tootsuite/mastodon/raw/master/app/assets/images/logo.png", "env": { "LOCAL_DOMAIN": { From b8218ca4826b8c93f9898386c1ee893fbed316e9 Mon Sep 17 00:00:00 2001 From: Jonathan Hurter Date: Wed, 5 Apr 2017 17:48:55 +0200 Subject: [PATCH 082/137] Make scalingo doc clearer --- docs/Running-Mastodon/Scalingo-guide.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Running-Mastodon/Scalingo-guide.md b/docs/Running-Mastodon/Scalingo-guide.md index 6552056a8..9329f753e 100644 --- a/docs/Running-Mastodon/Scalingo-guide.md +++ b/docs/Running-Mastodon/Scalingo-guide.md @@ -8,6 +8,6 @@ Scalingo guide * You can use a .scalingo.io domain, which will be simple to set up, or you can use a custom domain. * You will want Amazon S3 for file storage. The only exception is for development purposes, where you may not care if files are not saved. Follow a guide online for creating a free Amazon S3 bucket and Access Key, then enter the details. * If you want your Mastodon to be able to send emails, configure SMTP settings here (or later). Consider using [Mailgun](https://mailgun.com) or similar, who offer free plans that should suit your interests. -3. Deploy! The app should be set up, with a working web interface and database. You can change settings and manage versions from the Heroku dashboard. +3. Deploy! The app should be set up, with a working web interface and database. You can change settings and manage versions from the Scalingo dashboard. -You may need to use the `scalingo` CLI application to run `USERNAME=yourUsername rails mastodon:make_admin` to make yourself an admin. +To make yourself an admin, you can use the `scalingo` CLI: `scalingo run -e USERNAME=yourusername rails mastodon:make_admin`. From 9cf0b5b2557a6e26542a39c3fb31f46a15073662 Mon Sep 17 00:00:00 2001 From: Toby Deshane Date: Wed, 5 Apr 2017 11:49:36 -0400 Subject: [PATCH 083/137] Add social.bytestemplar.com to instances list --- docs/Using-Mastodon/List-of-Mastodon-instances.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/Using-Mastodon/List-of-Mastodon-instances.md b/docs/Using-Mastodon/List-of-Mastodon-instances.md index 1f5be3a61..a99598eaf 100644 --- a/docs/Using-Mastodon/List-of-Mastodon-instances.md +++ b/docs/Using-Mastodon/List-of-Mastodon-instances.md @@ -48,5 +48,6 @@ There is also a list at [instances.mastodon.xyz](https://instances.mastodon.xyz) | [mastodon.cc](https://mastodon.cc)|Art|Yes|No| | [mastodon.technology](https://mastodon.technology)|Open registrations, federates everywhere, for tech folks|Yes|No| | [mastodon.systemlab.fr](https://mastodon.systemlab.fr/)|Le mastodon Français, informatique, jeux-vidéos, gaming et hébergement.|Yes|No| +| [social.bytestemplar.com](https://social.bytestemplar.com)|N/A|Yes|No| Let me know if you start running one so I can add it to the list! (Alternatively, add it yourself as a pull request). From 41a78be25e5b4d7b5f65cfbf4d6fba5184f41475 Mon Sep 17 00:00:00 2001 From: Ben Field Date: Wed, 5 Apr 2017 16:56:51 +0100 Subject: [PATCH 084/137] Update Production-guide.md Corrected spelling error for "install" --- docs/Running-Mastodon/Production-guide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Running-Mastodon/Production-guide.md b/docs/Running-Mastodon/Production-guide.md index 90e9c0dea..1a65771ce 100644 --- a/docs/Running-Mastodon/Production-guide.md +++ b/docs/Running-Mastodon/Production-guide.md @@ -90,7 +90,7 @@ It is recommended to create a special user for mastodon on the server (you could sudo apt-get install imagemagick ffmpeg libpq-dev libxml2-dev libxslt1-dev nodejs file git curl curl -sL https://deb.nodesource.com/setup_4.x | sudo bash - - apt-get intall nodejs + apt-get install nodejs sudo npm install -g yarn ## Redis From a31f5765afb2598937b418cce0b5bacdf71c5ba8 Mon Sep 17 00:00:00 2001 From: Amanda Visconti Date: Wed, 5 Apr 2017 12:04:21 -0400 Subject: [PATCH 085/137] Added digitalhumanities.club instance --- docs/Using-Mastodon/List-of-Mastodon-instances.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/Using-Mastodon/List-of-Mastodon-instances.md b/docs/Using-Mastodon/List-of-Mastodon-instances.md index 1f5be3a61..a295d282b 100644 --- a/docs/Using-Mastodon/List-of-Mastodon-instances.md +++ b/docs/Using-Mastodon/List-of-Mastodon-instances.md @@ -48,5 +48,6 @@ There is also a list at [instances.mastodon.xyz](https://instances.mastodon.xyz) | [mastodon.cc](https://mastodon.cc)|Art|Yes|No| | [mastodon.technology](https://mastodon.technology)|Open registrations, federates everywhere, for tech folks|Yes|No| | [mastodon.systemlab.fr](https://mastodon.systemlab.fr/)|Le mastodon Français, informatique, jeux-vidéos, gaming et hébergement.|Yes|No| +| [digitalhumanities.club](http://www.digitalhumanities.club)|[Digital humanities](http://whatisdigitalhumanities.com) community; invitations will open once code of conduct drafted.|No|No| Let me know if you start running one so I can add it to the list! (Alternatively, add it yourself as a pull request). From 96812a6c792c8b048ed8d4a50351d9696dcf0f77 Mon Sep 17 00:00:00 2001 From: ZiiX Date: Wed, 5 Apr 2017 09:05:57 -0700 Subject: [PATCH 086/137] added instance --- docs/Using-Mastodon/List-of-Mastodon-instances.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/Using-Mastodon/List-of-Mastodon-instances.md b/docs/Using-Mastodon/List-of-Mastodon-instances.md index 1f5be3a61..80fa61ab1 100644 --- a/docs/Using-Mastodon/List-of-Mastodon-instances.md +++ b/docs/Using-Mastodon/List-of-Mastodon-instances.md @@ -48,5 +48,6 @@ There is also a list at [instances.mastodon.xyz](https://instances.mastodon.xyz) | [mastodon.cc](https://mastodon.cc)|Art|Yes|No| | [mastodon.technology](https://mastodon.technology)|Open registrations, federates everywhere, for tech folks|Yes|No| | [mastodon.systemlab.fr](https://mastodon.systemlab.fr/)|Le mastodon Français, informatique, jeux-vidéos, gaming et hébergement.|Yes|No| +| [design.vu](https://design.vu)|— what's your design view‽|Yes|No| Let me know if you start running one so I can add it to the list! (Alternatively, add it yourself as a pull request). From 8989569dd42aabd9c768927f0975401af89bceb3 Mon Sep 17 00:00:00 2001 From: tom Date: Wed, 5 Apr 2017 12:10:25 -0400 Subject: [PATCH 087/137] Update components.scss Use nicer scrollbars in MS edge --- app/assets/stylesheets/components.scss | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/assets/stylesheets/components.scss b/app/assets/stylesheets/components.scss index d233b3471..696e89418 100644 --- a/app/assets/stylesheets/components.scss +++ b/app/assets/stylesheets/components.scss @@ -1,5 +1,9 @@ @import 'variables'; +.app-body{ + -ms-overflow-style: -ms-autohiding-scrollbar; +} + .button { background-color: darken($color4, 3%); font-family: inherit; From b38bd58921317459ba5bc5cb00a6f18c1875d574 Mon Sep 17 00:00:00 2001 From: Thomas Alberola Date: Wed, 5 Apr 2017 18:15:39 +0200 Subject: [PATCH 088/137] =?UTF-8?q?Adding=20masto.raildecake.fr,=20french?= =?UTF-8?q?=20instance=20=F0=9F=8C=BB=F0=9F=90=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/Using-Mastodon/List-of-Mastodon-instances.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/Using-Mastodon/List-of-Mastodon-instances.md b/docs/Using-Mastodon/List-of-Mastodon-instances.md index 1f5be3a61..23a2867a2 100644 --- a/docs/Using-Mastodon/List-of-Mastodon-instances.md +++ b/docs/Using-Mastodon/List-of-Mastodon-instances.md @@ -48,5 +48,6 @@ There is also a list at [instances.mastodon.xyz](https://instances.mastodon.xyz) | [mastodon.cc](https://mastodon.cc)|Art|Yes|No| | [mastodon.technology](https://mastodon.technology)|Open registrations, federates everywhere, for tech folks|Yes|No| | [mastodon.systemlab.fr](https://mastodon.systemlab.fr/)|Le mastodon Français, informatique, jeux-vidéos, gaming et hébergement.|Yes|No| +| [masto.raildecake.fr](https://masto.raildecake.fr)|Hebergé chez un FAI associatif dans le sud de la france, grillons & pins en options|Yes|No| Let me know if you start running one so I can add it to the list! (Alternatively, add it yourself as a pull request). From 32d4b51939ac8827c2a82191969849b6283b432a Mon Sep 17 00:00:00 2001 From: foxiehkins Date: Wed, 5 Apr 2017 17:47:52 +0100 Subject: [PATCH 089/137] Add good-dragon.com --- docs/Using-Mastodon/List-of-Mastodon-instances.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/Using-Mastodon/List-of-Mastodon-instances.md b/docs/Using-Mastodon/List-of-Mastodon-instances.md index 1f5be3a61..99d019838 100644 --- a/docs/Using-Mastodon/List-of-Mastodon-instances.md +++ b/docs/Using-Mastodon/List-of-Mastodon-instances.md @@ -48,5 +48,6 @@ There is also a list at [instances.mastodon.xyz](https://instances.mastodon.xyz) | [mastodon.cc](https://mastodon.cc)|Art|Yes|No| | [mastodon.technology](https://mastodon.technology)|Open registrations, federates everywhere, for tech folks|Yes|No| | [mastodon.systemlab.fr](https://mastodon.systemlab.fr/)|Le mastodon Français, informatique, jeux-vidéos, gaming et hébergement.|Yes|No| +| [good-dragon.com](https://good-dragon.com/)|Relaxed moderation, Open registrations, Furries, Others also accepted|Yes|No| Let me know if you start running one so I can add it to the list! (Alternatively, add it yourself as a pull request). From 1b8c244dff84ae981d89a1672a9db06f08cf405e Mon Sep 17 00:00:00 2001 From: Eugen Date: Wed, 5 Apr 2017 18:48:41 +0200 Subject: [PATCH 090/137] Add proper message to PushUpdateWorker, use redis directly --- app/workers/push_update_worker.rb | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/app/workers/push_update_worker.rb b/app/workers/push_update_worker.rb index fef75d909..9d16c20bf 100644 --- a/app/workers/push_update_worker.rb +++ b/app/workers/push_update_worker.rb @@ -5,7 +5,8 @@ class PushUpdateWorker def perform(timeline, account_id, status_id) account = Account.find(account_id) - status = Status.find(status_id) + status = Status.find(status_id) + message = Rabl::Renderer.new( 'api/v1/statuses/show', status, @@ -14,6 +15,8 @@ class PushUpdateWorker scope: InlineRablScope.new(account) ) - ActionCable.server.broadcast("timeline:#{account_id}", type: 'update', timeline: timeline, message: message.render) + Redis.current.publish("timeline:#{timeline_id}", Oj.dump({ event: :update, payload: message, queued_at: (Time.now.to_f * 1000.0).to_i })) + rescue ActiveRecord::RecordNotFound + true end end From ac1989d2c07b707699641987d62697103698393c Mon Sep 17 00:00:00 2001 From: foxiehkins Date: Wed, 5 Apr 2017 17:49:04 +0100 Subject: [PATCH 091/137] Update description on good-dragon.com --- docs/Using-Mastodon/List-of-Mastodon-instances.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Using-Mastodon/List-of-Mastodon-instances.md b/docs/Using-Mastodon/List-of-Mastodon-instances.md index 99d019838..5ffeecc10 100644 --- a/docs/Using-Mastodon/List-of-Mastodon-instances.md +++ b/docs/Using-Mastodon/List-of-Mastodon-instances.md @@ -48,6 +48,6 @@ There is also a list at [instances.mastodon.xyz](https://instances.mastodon.xyz) | [mastodon.cc](https://mastodon.cc)|Art|Yes|No| | [mastodon.technology](https://mastodon.technology)|Open registrations, federates everywhere, for tech folks|Yes|No| | [mastodon.systemlab.fr](https://mastodon.systemlab.fr/)|Le mastodon Français, informatique, jeux-vidéos, gaming et hébergement.|Yes|No| -| [good-dragon.com](https://good-dragon.com/)|Relaxed moderation, Open registrations, Furries, Others also accepted|Yes|No| +| [good-dragon.com](https://good-dragon.com/)|Quick updates, Relaxed Moderation, Federates Everywhere, Furries|Yes|No| Let me know if you start running one so I can add it to the list! (Alternatively, add it yourself as a pull request). From c9ebd5d19fccaabd1192f5e61537251c2c2d782e Mon Sep 17 00:00:00 2001 From: Eugen Date: Wed, 5 Apr 2017 18:58:32 +0200 Subject: [PATCH 092/137] Fix wrong variable used in publish channel --- app/workers/push_update_worker.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/workers/push_update_worker.rb b/app/workers/push_update_worker.rb index 9d16c20bf..166a9b449 100644 --- a/app/workers/push_update_worker.rb +++ b/app/workers/push_update_worker.rb @@ -15,7 +15,7 @@ class PushUpdateWorker scope: InlineRablScope.new(account) ) - Redis.current.publish("timeline:#{timeline_id}", Oj.dump({ event: :update, payload: message, queued_at: (Time.now.to_f * 1000.0).to_i })) + Redis.current.publish("timeline:#{account.id}", Oj.dump({ event: :update, payload: message, queued_at: (Time.now.to_f * 1000.0).to_i })) rescue ActiveRecord::RecordNotFound true end From e5566ac6a6462c0a8a6c6c8f2a1171087bd662a4 Mon Sep 17 00:00:00 2001 From: Christopher Gilbert Date: Wed, 5 Apr 2017 13:05:27 -0400 Subject: [PATCH 093/137] Add Rich.GOP --- docs/Using-Mastodon/List-of-Mastodon-instances.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/Using-Mastodon/List-of-Mastodon-instances.md b/docs/Using-Mastodon/List-of-Mastodon-instances.md index 1f5be3a61..83b7b8413 100644 --- a/docs/Using-Mastodon/List-of-Mastodon-instances.md +++ b/docs/Using-Mastodon/List-of-Mastodon-instances.md @@ -48,5 +48,6 @@ There is also a list at [instances.mastodon.xyz](https://instances.mastodon.xyz) | [mastodon.cc](https://mastodon.cc)|Art|Yes|No| | [mastodon.technology](https://mastodon.technology)|Open registrations, federates everywhere, for tech folks|Yes|No| | [mastodon.systemlab.fr](https://mastodon.systemlab.fr/)|Le mastodon Français, informatique, jeux-vidéos, gaming et hébergement.|Yes|No| +| [rich.gop](https://rich.gop/)|Federates everywhere, Open registration, Privacy respected|Yes|Yes| Let me know if you start running one so I can add it to the list! (Alternatively, add it yourself as a pull request). From 8fa8004a2b090a3911cce11473bb926ebd6782a6 Mon Sep 17 00:00:00 2001 From: Ben Field Date: Wed, 5 Apr 2017 18:20:08 +0100 Subject: [PATCH 094/137] Update List-of-Mastodon-instances.md --- docs/Using-Mastodon/List-of-Mastodon-instances.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Using-Mastodon/List-of-Mastodon-instances.md b/docs/Using-Mastodon/List-of-Mastodon-instances.md index 1f5be3a61..b4c2b8632 100644 --- a/docs/Using-Mastodon/List-of-Mastodon-instances.md +++ b/docs/Using-Mastodon/List-of-Mastodon-instances.md @@ -48,5 +48,5 @@ There is also a list at [instances.mastodon.xyz](https://instances.mastodon.xyz) | [mastodon.cc](https://mastodon.cc)|Art|Yes|No| | [mastodon.technology](https://mastodon.technology)|Open registrations, federates everywhere, for tech folks|Yes|No| | [mastodon.systemlab.fr](https://mastodon.systemlab.fr/)|Le mastodon Français, informatique, jeux-vidéos, gaming et hébergement.|Yes|No| - +| [social.nowa.re](https://social.nowa.re)|Open Registration|Yes|Not Yet| Let me know if you start running one so I can add it to the list! (Alternatively, add it yourself as a pull request). From 29ffe1cad3f473c7b6c0b651d065f8ed9373d37e Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 5 Apr 2017 18:51:15 +0200 Subject: [PATCH 095/137] Make sure Rabl is using Oj --- config/initializers/rabl_init.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/config/initializers/rabl_init.rb b/config/initializers/rabl_init.rb index f7be0c607..132a42144 100644 --- a/config/initializers/rabl_init.rb +++ b/config/initializers/rabl_init.rb @@ -1,4 +1,5 @@ Rabl.configure do |config| + config.json_engine = Oj config.cache_all_output = false config.cache_sources = Rails.env.production? config.include_json_root = false From 5b95be1c42ba69c9a3a79cfa990c80a5f2debfc6 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 5 Apr 2017 19:45:18 +0200 Subject: [PATCH 096/137] Replace calls to FeedManager#inline_render and #broadcast --- app/lib/feed_manager.rb | 2 +- app/lib/inline_renderer.rb | 13 +++++++++++++ app/services/fan_out_on_write_service.rb | 10 +++++----- app/services/notify_service.rb | 2 +- app/services/remove_status_service.rb | 6 +++--- app/workers/push_update_worker.rb | 13 +++---------- 6 files changed, 26 insertions(+), 20 deletions(-) create mode 100644 app/lib/inline_renderer.rb diff --git a/app/lib/feed_manager.rb b/app/lib/feed_manager.rb index 87865bfdc..58d9fb1fc 100644 --- a/app/lib/feed_manager.rb +++ b/app/lib/feed_manager.rb @@ -34,7 +34,7 @@ class FeedManager trim(timeline_type, account.id) end - PushUpdateWorker.perform_async(timeline_type, account.id, status.id) + PushUpdateWorker.perform_async(account.id, status.id) end def trim(type, account_id) diff --git a/app/lib/inline_renderer.rb b/app/lib/inline_renderer.rb new file mode 100644 index 000000000..8e04ad1d5 --- /dev/null +++ b/app/lib/inline_renderer.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +class InlineRenderer + def self.render(status, current_account, template) + Rabl::Renderer.new( + template, + status, + view_path: 'app/views', + format: :json, + scope: InlineRablScope.new(current_account) + ).render + end +end diff --git a/app/services/fan_out_on_write_service.rb b/app/services/fan_out_on_write_service.rb index 106d257ba..c63fcc1fe 100644 --- a/app/services/fan_out_on_write_service.rb +++ b/app/services/fan_out_on_write_service.rb @@ -50,22 +50,22 @@ class FanOutOnWriteService < BaseService end def render_anonymous_payload(status) - @payload = FeedManager.instance.inline_render(nil, 'api/v1/statuses/show', status) + @payload = InlineRenderer.render(status, nil, 'api/v1/statuses/show') end def deliver_to_hashtags(status) Rails.logger.debug "Delivering status #{status.id} to hashtags" status.tags.pluck(:name).each do |hashtag| - FeedManager.instance.broadcast("hashtag:#{hashtag}", event: 'update', payload: @payload) - FeedManager.instance.broadcast("hashtag:#{hashtag}:local", event: 'update', payload: @payload) if status.account.local? + Redis.current.publish("hashtag:#{hashtag}", Oj.dump(event: :update, payload: @payload)) + Redis.current.publish("hashtag:#{hashtag}:local", Oj.dump(event: :update, payload: @payload)) if status.account.local? end end def deliver_to_public(status) Rails.logger.debug "Delivering status #{status.id} to public timeline" - FeedManager.instance.broadcast(:public, event: 'update', payload: @payload) - FeedManager.instance.broadcast('public:local', event: 'update', payload: @payload) if status.account.local? + Redis.current.publish('public', Oj.dump(event: 'update', payload: @payload)) + Redis.current.publish('public:local', Oj.dump(event: 'update', payload: @payload)) if status.account.local? end end diff --git a/app/services/notify_service.rb b/app/services/notify_service.rb index 24486f220..62508a049 100644 --- a/app/services/notify_service.rb +++ b/app/services/notify_service.rb @@ -50,7 +50,7 @@ class NotifyService < BaseService def create_notification @notification.save! return unless @notification.browserable? - FeedManager.instance.broadcast(@recipient.id, event: 'notification', payload: FeedManager.instance.inline_render(@recipient, 'api/v1/notifications/show', @notification)) + Redis.current.publish(@recipient.id, Oj.dump(event: :notification, payload: InlineRenderer.render(@notification, @recipient, 'api/v1/notifications/show'))) end def send_email diff --git a/app/services/remove_status_service.rb b/app/services/remove_status_service.rb index cf1f432e4..e19fdd030 100644 --- a/app/services/remove_status_service.rb +++ b/app/services/remove_status_service.rb @@ -65,17 +65,17 @@ class RemoveStatusService < BaseService redis.zremrangebyscore(FeedManager.instance.key(type, receiver.id), status.id, status.id) end - FeedManager.instance.broadcast(receiver.id, event: 'delete', payload: status.id) + Redis.current.publish(receiver.id, Oj.dump(event: :delete, payload: status.id)) end def remove_from_hashtags(status) status.tags.each do |tag| - FeedManager.instance.broadcast("hashtag:#{tag.name}", event: 'delete', payload: status.id) + Redis.current.publish("hashtag:#{tag.name}", Oj.dump(event: :delete, payload: status.id)) end end def remove_from_public(status) - FeedManager.instance.broadcast(:public, event: 'delete', payload: status.id) + Redis.current.publish('public', Oj.dump(event: :delete, payload: status.id)) end def redis diff --git a/app/workers/push_update_worker.rb b/app/workers/push_update_worker.rb index 166a9b449..fbcdcf634 100644 --- a/app/workers/push_update_worker.rb +++ b/app/workers/push_update_worker.rb @@ -3,19 +3,12 @@ class PushUpdateWorker include Sidekiq::Worker - def perform(timeline, account_id, status_id) + def perform(account_id, status_id) account = Account.find(account_id) status = Status.find(status_id) - - message = Rabl::Renderer.new( - 'api/v1/statuses/show', - status, - view_path: 'app/views', - format: :json, - scope: InlineRablScope.new(account) - ) + message = InlineRenderer.render(status, account, 'api/v1/statuses/show') - Redis.current.publish("timeline:#{account.id}", Oj.dump({ event: :update, payload: message, queued_at: (Time.now.to_f * 1000.0).to_i })) + Redis.current.publish("timeline:#{account.id}", Oj.dump(event: :update, payload: message, queued_at: (Time.now.to_f * 1000.0).to_i)) rescue ActiveRecord::RecordNotFound true end From 65b3a2a5a6e3151cf4da89132326b796a5c0687a Mon Sep 17 00:00:00 2001 From: Brad Janke Date: Wed, 5 Apr 2017 13:14:27 -0500 Subject: [PATCH 097/137] Adds mtndevelopment --- docs/Using-Mastodon/List-of-Mastodon-instances.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/Using-Mastodon/List-of-Mastodon-instances.md b/docs/Using-Mastodon/List-of-Mastodon-instances.md index 1f5be3a61..28f756bfd 100644 --- a/docs/Using-Mastodon/List-of-Mastodon-instances.md +++ b/docs/Using-Mastodon/List-of-Mastodon-instances.md @@ -48,5 +48,6 @@ There is also a list at [instances.mastodon.xyz](https://instances.mastodon.xyz) | [mastodon.cc](https://mastodon.cc)|Art|Yes|No| | [mastodon.technology](https://mastodon.technology)|Open registrations, federates everywhere, for tech folks|Yes|No| | [mastodon.systemlab.fr](https://mastodon.systemlab.fr/)|Le mastodon Français, informatique, jeux-vidéos, gaming et hébergement.|Yes|No| +| [mastodon.mtndevelopment.com](https://mastodon.mtndevelopment.com/)|Open registration. General nerding out.|Yes|No| Let me know if you start running one so I can add it to the list! (Alternatively, add it yourself as a pull request). From 6b41fb2e6ffa11aa70d14600ad26575bf9aec112 Mon Sep 17 00:00:00 2001 From: ava Date: Wed, 5 Apr 2017 21:44:13 +0300 Subject: [PATCH 098/137] Update List-of-Mastodon-instances.md --- docs/Using-Mastodon/List-of-Mastodon-instances.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Using-Mastodon/List-of-Mastodon-instances.md b/docs/Using-Mastodon/List-of-Mastodon-instances.md index 1f5be3a61..3c72c2c14 100644 --- a/docs/Using-Mastodon/List-of-Mastodon-instances.md +++ b/docs/Using-Mastodon/List-of-Mastodon-instances.md @@ -48,5 +48,5 @@ There is also a list at [instances.mastodon.xyz](https://instances.mastodon.xyz) | [mastodon.cc](https://mastodon.cc)|Art|Yes|No| | [mastodon.technology](https://mastodon.technology)|Open registrations, federates everywhere, for tech folks|Yes|No| | [mastodon.systemlab.fr](https://mastodon.systemlab.fr/)|Le mastodon Français, informatique, jeux-vidéos, gaming et hébergement.|Yes|No| - +| [mastodon.ml](http://mastodon.ml) |A chill place to hangout and chat about anime, programming and movies.|Yes|Yes| Let me know if you start running one so I can add it to the list! (Alternatively, add it yourself as a pull request). From eb98c99924ab810eea8a97040a82308f68c805cc Mon Sep 17 00:00:00 2001 From: "Thibaut (Eychics)" Date: Wed, 5 Apr 2017 20:45:23 +0200 Subject: [PATCH 099/137] Add mastodon.nuzgo.net --- docs/Using-Mastodon/List-of-Mastodon-instances.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/Using-Mastodon/List-of-Mastodon-instances.md b/docs/Using-Mastodon/List-of-Mastodon-instances.md index 1f5be3a61..26034c368 100644 --- a/docs/Using-Mastodon/List-of-Mastodon-instances.md +++ b/docs/Using-Mastodon/List-of-Mastodon-instances.md @@ -7,6 +7,7 @@ There is also a list at [instances.mastodon.xyz](https://instances.mastodon.xyz) | -------------|-------------|---|---| | [mastodon.social](https://mastodon.social) |Flagship, quick updates|No|No| | [securitymastod.one](https://securitymastod.one/) |Information security enthusiasts and pros|Yes|Yes| +| [mastodon.nuzgo.net](https://mastodon.nuzgo.net/) |Mastodon instance hosted in Paris |Yes|No| | [mastodon.cx](https://mastodon.cx/) |Alternative Mastodon instance hosted in France|Yes|Yes| | [mastodon.network](https://mastodon.network) |N/A|Yes|Yes| | [awoo.space](https://awoo.space) |Intentionally moderated, only federates with mastodon.social|Yes|No| From c19e0f1212b63a3db702adc2c6444e1a323b7d27 Mon Sep 17 00:00:00 2001 From: James Moore Date: Wed, 5 Apr 2017 11:53:39 -0700 Subject: [PATCH 100/137] Use NFS for the shared folder because it dramatically decreases latency for git operations. --- Vagrantfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Vagrantfile b/Vagrantfile index 154d0e895..b93ec9fa2 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -97,6 +97,8 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.hostsupdater.remove_on_suspend = false end + config.vm.synced_folder ".", "/vagrant", type: "nfs", mount_options: ['rw', 'vers=3', 'tcp'] + # Otherwise, you can access the site at http://localhost:3000 config.vm.network :forwarded_port, guest: 80, host: 3000 From 5442083b3c44c731679fc489568bf7f70a807a39 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 5 Apr 2017 21:41:50 +0200 Subject: [PATCH 101/137] Split SalmonWorker into smaller parts, move profile updating into another job --- app/services/follow_remote_account_service.rb | 16 ++++++--------- app/services/process_feed_service.rb | 6 +++--- app/services/process_interaction_service.rb | 10 +++------- app/workers/admin/suspension_worker.rb | 2 ++ app/workers/application_worker.rb | 2 ++ app/workers/distribution_worker.rb | 5 +---- app/workers/remote_profile_update_worker.rb | 20 +++++++++++++++++++ app/workers/salmon_worker.rb | 2 +- spec/services/process_feed_service_spec.rb | 1 + 9 files changed, 39 insertions(+), 25 deletions(-) create mode 100644 app/workers/remote_profile_update_worker.rb diff --git a/app/services/follow_remote_account_service.rb b/app/services/follow_remote_account_service.rb index b39eafc70..936953429 100644 --- a/app/services/follow_remote_account_service.rb +++ b/app/services/follow_remote_account_service.rb @@ -45,13 +45,13 @@ class FollowRemoteAccountService < BaseService account.suspended = true if domain_block && domain_block.suspend? account.silenced = true if domain_block && domain_block.silence? - xml = get_feed(account.remote_url) - hubs = get_hubs(xml) + body, xml = get_feed(account.remote_url) + hubs = get_hubs(xml) account.uri = get_account_uri(xml) account.hub_url = hubs.first.attribute('href').value - get_profile(xml, account) + get_profile(body, account) account.save! account @@ -61,7 +61,7 @@ class FollowRemoteAccountService < BaseService def get_feed(url) response = http_client.get(Addressable::URI.parse(url)) - Nokogiri::XML(response) + [response.to_s, Nokogiri::XML(response)] end def get_hubs(xml) @@ -82,12 +82,8 @@ class FollowRemoteAccountService < BaseService author_uri.content end - def get_profile(xml, account) - update_remote_profile_service.call(xml.at_xpath('/xmlns:feed'), account) - end - - def update_remote_profile_service - @update_remote_profile_service ||= UpdateRemoteProfileService.new + def get_profile(body, account) + RemoteProfileUpdateWorker.perform_async(account.id, body.force_encoding('UTF-8'), false) end def http_client diff --git a/app/services/process_feed_service.rb b/app/services/process_feed_service.rb index 69911abc5..cf2f7a826 100644 --- a/app/services/process_feed_service.rb +++ b/app/services/process_feed_service.rb @@ -5,15 +5,15 @@ class ProcessFeedService < BaseService xml = Nokogiri::XML(body) xml.encoding = 'utf-8' - update_author(xml, account) + update_author(body, xml, account) process_entries(xml, account) end private - def update_author(xml, account) + def update_author(body, xml, account) return if xml.at_xpath('/xmlns:feed', xmlns: TagManager::XMLNS).nil? - UpdateRemoteProfileService.new.call(xml.at_xpath('/xmlns:feed', xmlns: TagManager::XMLNS), account, true) + RemoteProfileUpdateWorker.perform_async(account.id, body.force_encoding('UTF-8'), true) end def process_entries(xml, account) diff --git a/app/services/process_interaction_service.rb b/app/services/process_interaction_service.rb index d5f7b4b3c..805ca5a27 100644 --- a/app/services/process_interaction_service.rb +++ b/app/services/process_interaction_service.rb @@ -24,7 +24,7 @@ class ProcessInteractionService < BaseService return if account.suspended? if salmon.verify(envelope, account.keypair) - update_remote_profile_service.call(xml.at_xpath('/xmlns:entry', xmlns: TagManager::XMLNS), account, true) + RemoteProfileUpdateWorker.perform_async(account.id, body.force_encoding('UTF-8'), true) case verb(xml) when :follow @@ -114,7 +114,7 @@ class ProcessInteractionService < BaseService return if status.nil? - remove_status_service.call(status) if account.id == status.account_id + RemovalWorker.perform_async(status.id) if account.id == status.account_id end def favourite!(xml, from_account) @@ -130,7 +130,7 @@ class ProcessInteractionService < BaseService end def add_post!(body, account) - process_feed_service.call(body, account) + ProcessingWorker.perform_async(account.id, body.force_encoding('UTF-8')) end def status(xml) @@ -153,10 +153,6 @@ class ProcessInteractionService < BaseService @process_feed_service ||= ProcessFeedService.new end - def update_remote_profile_service - @update_remote_profile_service ||= UpdateRemoteProfileService.new - end - def remove_status_service @remove_status_service ||= RemoveStatusService.new end diff --git a/app/workers/admin/suspension_worker.rb b/app/workers/admin/suspension_worker.rb index 38761f3b9..7ef2b35ec 100644 --- a/app/workers/admin/suspension_worker.rb +++ b/app/workers/admin/suspension_worker.rb @@ -3,6 +3,8 @@ class Admin::SuspensionWorker include Sidekiq::Worker + sidekiq_options queue: 'pull' + def perform(account_id) SuspendAccountService.new.call(Account.find(account_id)) end diff --git a/app/workers/application_worker.rb b/app/workers/application_worker.rb index f2d7c1062..436f24763 100644 --- a/app/workers/application_worker.rb +++ b/app/workers/application_worker.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + class ApplicationWorker def info(message) Rails.logger.info("#{self.class.name} - #{message}") diff --git a/app/workers/distribution_worker.rb b/app/workers/distribution_worker.rb index 9a2867ea6..f7953689b 100644 --- a/app/workers/distribution_worker.rb +++ b/app/workers/distribution_worker.rb @@ -4,10 +4,7 @@ class DistributionWorker < ApplicationWorker include Sidekiq::Worker def perform(status_id) - status = Status.find(status_id) - - FanOutOnWriteService.new.call(status) - WarmCacheService.new.call(status) + FanOutOnWriteService.new.call(Status.find(status_id)) rescue ActiveRecord::RecordNotFound info("Couldn't find the status") end diff --git a/app/workers/remote_profile_update_worker.rb b/app/workers/remote_profile_update_worker.rb new file mode 100644 index 000000000..b91dc3466 --- /dev/null +++ b/app/workers/remote_profile_update_worker.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +class RemoteProfileUpdateWorker + include Sidekiq::Worker + + sidekiq_options queue: 'pull' + + def perform(account_id, body, resubscribe) + account = Account.find(account_id) + + xml = Nokogiri::XML(body) + xml.encoding = 'utf-8' + + author_container = xml.at_xpath('/xmlns:feed', xmlns: TagManager::XMLNS) || xml.at_xpath('/xmlns:entry', xmlns: TagManager::XMLNS) + + UpdateRemoteProfileService.new.call(author_container, account, resubscribe) + rescue ActiveRecord::RecordNotFound + true + end +end diff --git a/app/workers/salmon_worker.rb b/app/workers/salmon_worker.rb index fc95ce47f..d37d40432 100644 --- a/app/workers/salmon_worker.rb +++ b/app/workers/salmon_worker.rb @@ -7,7 +7,7 @@ class SalmonWorker def perform(account_id, body) ProcessInteractionService.new.call(body, Account.find(account_id)) - rescue ActiveRecord::RecordNotFound + rescue Nokogiri::XML::XPath::SyntaxError, ActiveRecord::RecordNotFound true end end diff --git a/spec/services/process_feed_service_spec.rb b/spec/services/process_feed_service_spec.rb index 5e57d823b..b15284fee 100644 --- a/spec/services/process_feed_service_spec.rb +++ b/spec/services/process_feed_service_spec.rb @@ -16,6 +16,7 @@ RSpec.describe ProcessFeedService do end it 'updates remote user\'s account information' do + account.reload expect(account.display_name).to eq '::1' expect(account).to have_attached_file(:avatar) end From 7aede8e72092fa2b8846f2212dff411247a841b1 Mon Sep 17 00:00:00 2001 From: Ninetailed Date: Wed, 5 Apr 2017 22:35:35 +0100 Subject: [PATCH 102/137] Description in instance list for mastodon.ninetailed.uk --- docs/Using-Mastodon/List-of-Mastodon-instances.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Using-Mastodon/List-of-Mastodon-instances.md b/docs/Using-Mastodon/List-of-Mastodon-instances.md index 1f5be3a61..b6a8c65a9 100644 --- a/docs/Using-Mastodon/List-of-Mastodon-instances.md +++ b/docs/Using-Mastodon/List-of-Mastodon-instances.md @@ -34,7 +34,7 @@ There is also a list at [instances.mastodon.xyz](https://instances.mastodon.xyz) | [oc.todon.fr](https://oc.todon.fr) |Modérée et principalement francophone, pas de tolérances pour misogynie/LGBTphobies/validisme/etc.|Yes|Yes| | [maly.io](https://maly.io) |N/A|Yes|No| | [social.lou.lt](https://social.lou.lt) |N/A|Yes|No| -| [mastodon.ninetailed.uk](https://mastodon.ninetailed.uk) |N/A|Yes|No| +| [mastodon.ninetailed.uk](https://mastodon.ninetailed.uk) |Open registrations, furry-friendly, UK-based|Yes|No| | [soc.louiz.org](https://soc.louiz.org) |"Coucou"|Yes|No| | [7nw.eu](https://7nw.eu) |N/A|Yes|No| | [mastodon.gougere.fr](https://mastodon.gougere.fr)|N/A|Yes|No| From d025c5e59306bed05aad4ebc52c541c34cf43d94 Mon Sep 17 00:00:00 2001 From: Nick Gerakines Date: Wed, 5 Apr 2017 19:19:44 -0400 Subject: [PATCH 103/137] Added off-the-clock.us to the list of instances --- docs/Using-Mastodon/List-of-Mastodon-instances.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/Using-Mastodon/List-of-Mastodon-instances.md b/docs/Using-Mastodon/List-of-Mastodon-instances.md index 1f5be3a61..5404d6b69 100644 --- a/docs/Using-Mastodon/List-of-Mastodon-instances.md +++ b/docs/Using-Mastodon/List-of-Mastodon-instances.md @@ -48,5 +48,6 @@ There is also a list at [instances.mastodon.xyz](https://instances.mastodon.xyz) | [mastodon.cc](https://mastodon.cc)|Art|Yes|No| | [mastodon.technology](https://mastodon.technology)|Open registrations, federates everywhere, for tech folks|Yes|No| | [mastodon.systemlab.fr](https://mastodon.systemlab.fr/)|Le mastodon Français, informatique, jeux-vidéos, gaming et hébergement.|Yes|No| +| [off-the-clock.us](https://off-the-clock.us/)|The work day is over.|Yes|No| Let me know if you start running one so I can add it to the list! (Alternatively, add it yourself as a pull request). From 540d6efe88717b0da4a23b5069a3caaff5b3241a Mon Sep 17 00:00:00 2001 From: blackle Date: Wed, 5 Apr 2017 20:04:13 -0400 Subject: [PATCH 104/137] Catch more errors in process_follows so it doesn't fail --- app/workers/import_worker.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/workers/import_worker.rb b/app/workers/import_worker.rb index 7cf29fb53..d5a33cada 100644 --- a/app/workers/import_worker.rb +++ b/app/workers/import_worker.rb @@ -46,7 +46,7 @@ class ImportWorker begin FollowService.new.call(from_account, row[0]) - rescue Goldfinger::Error, HTTP::Error, OpenSSL::SSL::SSLError + rescue Mastodon::NotPermittedError, ActiveRecord::RecordNotFound, Goldfinger::Error, HTTP::Error, OpenSSL::SSL::SSLError next end end From dbd529109ea95df43aefa514c312d7397e7fc713 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 6 Apr 2017 02:26:59 +0200 Subject: [PATCH 105/137] Fix notifications delivered to wrong pubsub channel, optimized RemoveStatusService, slightly optimized FanOutOnWriteService again --- app/services/fan_out_on_write_service.rb | 9 ++++---- app/services/notify_service.rb | 2 +- app/services/remove_status_service.rb | 28 +++++++++++++----------- 3 files changed, 21 insertions(+), 18 deletions(-) diff --git a/app/services/fan_out_on_write_service.rb b/app/services/fan_out_on_write_service.rb index c63fcc1fe..a25c20c93 100644 --- a/app/services/fan_out_on_write_service.rb +++ b/app/services/fan_out_on_write_service.rb @@ -51,21 +51,22 @@ class FanOutOnWriteService < BaseService def render_anonymous_payload(status) @payload = InlineRenderer.render(status, nil, 'api/v1/statuses/show') + @payload = Oj.dump(event: :update, payload: @payload) end def deliver_to_hashtags(status) Rails.logger.debug "Delivering status #{status.id} to hashtags" status.tags.pluck(:name).each do |hashtag| - Redis.current.publish("hashtag:#{hashtag}", Oj.dump(event: :update, payload: @payload)) - Redis.current.publish("hashtag:#{hashtag}:local", Oj.dump(event: :update, payload: @payload)) if status.account.local? + Redis.current.publish("hashtag:#{hashtag}", @payload) + Redis.current.publish("hashtag:#{hashtag}:local", @payload) if status.local? end end def deliver_to_public(status) Rails.logger.debug "Delivering status #{status.id} to public timeline" - Redis.current.publish('public', Oj.dump(event: 'update', payload: @payload)) - Redis.current.publish('public:local', Oj.dump(event: 'update', payload: @payload)) if status.account.local? + Redis.current.publish('public', @payload) + Redis.current.publish('public:local', @payload) if status.local? end end diff --git a/app/services/notify_service.rb b/app/services/notify_service.rb index 62508a049..ffeee5fcf 100644 --- a/app/services/notify_service.rb +++ b/app/services/notify_service.rb @@ -50,7 +50,7 @@ class NotifyService < BaseService def create_notification @notification.save! return unless @notification.browserable? - Redis.current.publish(@recipient.id, Oj.dump(event: :notification, payload: InlineRenderer.render(@notification, @recipient, 'api/v1/notifications/show'))) + Redis.current.publish("timeline:#{@recipient.id}", Oj.dump(event: :notification, payload: InlineRenderer.render(@notification, @recipient, 'api/v1/notifications/show'))) end def send_email diff --git a/app/services/remove_status_service.rb b/app/services/remove_status_service.rb index e19fdd030..60ce9987c 100644 --- a/app/services/remove_status_service.rb +++ b/app/services/remove_status_service.rb @@ -4,6 +4,8 @@ class RemoveStatusService < BaseService include StreamEntryRenderer def call(status) + @payload = Oj.dump(event: :delete, payload: status.id) + remove_from_self(status) if status.account.local? remove_from_followers(status) remove_from_mentioned(status) @@ -25,25 +27,23 @@ class RemoveStatusService < BaseService end def remove_from_followers(status) - status.account.followers.each do |follower| - next unless follower.local? + status.account.followers.where(domain: nil).each do |follower| unpush(:home, follower, status) end end def remove_from_mentioned(status) + return unless status.local? notified_domains = [] status.mentions.each do |mention| mentioned_account = mention.account - if mentioned_account.local? - unpush(:mentions, mentioned_account, status) - else - next if notified_domains.include?(mentioned_account.domain) - notified_domains << mentioned_account.domain - send_delete_salmon(mentioned_account, status) - end + next if mentioned_account.local? + next if notified_domains.include?(mentioned_account.domain) + + notified_domains << mentioned_account.domain + send_delete_salmon(mentioned_account, status) end end @@ -65,17 +65,19 @@ class RemoveStatusService < BaseService redis.zremrangebyscore(FeedManager.instance.key(type, receiver.id), status.id, status.id) end - Redis.current.publish(receiver.id, Oj.dump(event: :delete, payload: status.id)) + Redis.current.publish("timeline:#{receiver.id}", @payload) end def remove_from_hashtags(status) - status.tags.each do |tag| - Redis.current.publish("hashtag:#{tag.name}", Oj.dump(event: :delete, payload: status.id)) + status.tags.pluck(:name) do |hashtag| + Redis.current.publish("hashtag:#{hashtag}", @payload) + Redis.current.publish("hashtag:#{hashtag}:local", @payload) if status.local? end end def remove_from_public(status) - Redis.current.publish('public', Oj.dump(event: :delete, payload: status.id)) + Redis.current.publish('public', @payload) + Redis.current.publish('public:local', @payload) if status.local? end def redis From 51d7caaf1994ee3cb531b64841e12d129dded298 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 6 Apr 2017 04:03:23 +0200 Subject: [PATCH 106/137] Fix wrong pubsub channel on public timelines --- app/services/fan_out_on_write_service.rb | 8 ++++---- app/services/remove_status_service.rb | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/app/services/fan_out_on_write_service.rb b/app/services/fan_out_on_write_service.rb index a25c20c93..19eedc0a7 100644 --- a/app/services/fan_out_on_write_service.rb +++ b/app/services/fan_out_on_write_service.rb @@ -58,15 +58,15 @@ class FanOutOnWriteService < BaseService Rails.logger.debug "Delivering status #{status.id} to hashtags" status.tags.pluck(:name).each do |hashtag| - Redis.current.publish("hashtag:#{hashtag}", @payload) - Redis.current.publish("hashtag:#{hashtag}:local", @payload) if status.local? + Redis.current.publish("timeline:hashtag:#{hashtag}", @payload) + Redis.current.publish("timeline:hashtag:#{hashtag}:local", @payload) if status.local? end end def deliver_to_public(status) Rails.logger.debug "Delivering status #{status.id} to public timeline" - Redis.current.publish('public', @payload) - Redis.current.publish('public:local', @payload) if status.local? + Redis.current.publish('timeline:public', @payload) + Redis.current.publish('timeline:public:local', @payload) if status.local? end end diff --git a/app/services/remove_status_service.rb b/app/services/remove_status_service.rb index 60ce9987c..50bb7fc97 100644 --- a/app/services/remove_status_service.rb +++ b/app/services/remove_status_service.rb @@ -70,14 +70,14 @@ class RemoveStatusService < BaseService def remove_from_hashtags(status) status.tags.pluck(:name) do |hashtag| - Redis.current.publish("hashtag:#{hashtag}", @payload) - Redis.current.publish("hashtag:#{hashtag}:local", @payload) if status.local? + Redis.current.publish("timeline:hashtag:#{hashtag}", @payload) + Redis.current.publish("timeline:hashtag:#{hashtag}:local", @payload) if status.local? end end def remove_from_public(status) - Redis.current.publish('public', @payload) - Redis.current.publish('public:local', @payload) if status.local? + Redis.current.publish('timeline:public', @payload) + Redis.current.publish('timeline:public:local', @payload) if status.local? end def redis From 73b8e67f4b103fc3400064d153807d6d88f758d4 Mon Sep 17 00:00:00 2001 From: Derek Lewis Date: Thu, 6 Apr 2017 01:11:16 -0400 Subject: [PATCH 107/137] Add infinimatix.net to instance list --- docs/Using-Mastodon/List-of-Mastodon-instances.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/Using-Mastodon/List-of-Mastodon-instances.md b/docs/Using-Mastodon/List-of-Mastodon-instances.md index 1f5be3a61..1b91e00ad 100644 --- a/docs/Using-Mastodon/List-of-Mastodon-instances.md +++ b/docs/Using-Mastodon/List-of-Mastodon-instances.md @@ -48,5 +48,6 @@ There is also a list at [instances.mastodon.xyz](https://instances.mastodon.xyz) | [mastodon.cc](https://mastodon.cc)|Art|Yes|No| | [mastodon.technology](https://mastodon.technology)|Open registrations, federates everywhere, for tech folks|Yes|No| | [mastodon.systemlab.fr](https://mastodon.systemlab.fr/)|Le mastodon Français, informatique, jeux-vidéos, gaming et hébergement.|Yes|No| +| [infinimatix.net](https://infinimatix.net)|Informatics|Yes|Yes| Let me know if you start running one so I can add it to the list! (Alternatively, add it yourself as a pull request). From 83530f0eef8f6cf04321b61c917da08ab0f4e323 Mon Sep 17 00:00:00 2001 From: Guewen FAIVRE Date: Thu, 6 Apr 2017 08:46:16 +0200 Subject: [PATCH 108/137] Add mastodon.elao.com instance --- docs/Using-Mastodon/List-of-Mastodon-instances.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/Using-Mastodon/List-of-Mastodon-instances.md b/docs/Using-Mastodon/List-of-Mastodon-instances.md index 1f5be3a61..39d0cd68b 100644 --- a/docs/Using-Mastodon/List-of-Mastodon-instances.md +++ b/docs/Using-Mastodon/List-of-Mastodon-instances.md @@ -48,5 +48,6 @@ There is also a list at [instances.mastodon.xyz](https://instances.mastodon.xyz) | [mastodon.cc](https://mastodon.cc)|Art|Yes|No| | [mastodon.technology](https://mastodon.technology)|Open registrations, federates everywhere, for tech folks|Yes|No| | [mastodon.systemlab.fr](https://mastodon.systemlab.fr/)|Le mastodon Français, informatique, jeux-vidéos, gaming et hébergement.|Yes|No| +| [mastodon.elao.com](https://mastodon.elao.com/)|OpenSource WebTech Agency. (France)|Yes|No| Let me know if you start running one so I can add it to the list! (Alternatively, add it yourself as a pull request). From c62696bc467133869f6b1d39b923135b0e64900f Mon Sep 17 00:00:00 2001 From: Markus R Date: Thu, 6 Apr 2017 08:52:15 +0200 Subject: [PATCH 109/137] Update List-of-Mastodon-instances.md --- docs/Using-Mastodon/List-of-Mastodon-instances.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/Using-Mastodon/List-of-Mastodon-instances.md b/docs/Using-Mastodon/List-of-Mastodon-instances.md index 1f5be3a61..69a58601b 100644 --- a/docs/Using-Mastodon/List-of-Mastodon-instances.md +++ b/docs/Using-Mastodon/List-of-Mastodon-instances.md @@ -48,5 +48,6 @@ There is also a list at [instances.mastodon.xyz](https://instances.mastodon.xyz) | [mastodon.cc](https://mastodon.cc)|Art|Yes|No| | [mastodon.technology](https://mastodon.technology)|Open registrations, federates everywhere, for tech folks|Yes|No| | [mastodon.systemlab.fr](https://mastodon.systemlab.fr/)|Le mastodon Français, informatique, jeux-vidéos, gaming et hébergement.|Yes|No| +| [social.0day.agency](https://social.0day.agency)|Infosec, Hacking, Fun (only protonmail)|Yes|Yes| Let me know if you start running one so I can add it to the list! (Alternatively, add it yourself as a pull request). From a2637c17200f9dd2eea9e130368cea87076823c7 Mon Sep 17 00:00:00 2001 From: Ryan Wade Date: Thu, 6 Apr 2017 15:41:00 +0800 Subject: [PATCH 110/137] Optimize Dockerfile Optimize Dockerfile, reduce build time. --- .dockerignore | 1 + Dockerfile | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.dockerignore b/.dockerignore index 7892e503c..21d1f59a1 100644 --- a/.dockerignore +++ b/.dockerignore @@ -5,3 +5,4 @@ public/assets node_modules storybook neo4j +vendor/bundle diff --git a/Dockerfile b/Dockerfile index bcc911343..f5eb08893 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,7 +5,7 @@ ENV RAILS_ENV=production \ WORKDIR /mastodon -COPY . /mastodon +COPY Gemfile Gemfile.lock package.json yarn.lock /mastodon/ RUN BUILD_DEPS=" \ postgresql-dev \ @@ -28,4 +28,6 @@ RUN BUILD_DEPS=" \ && apk del $BUILD_DEPS \ && rm -rf /tmp/* /var/cache/apk/* +COPY . /mastodon + VOLUME /mastodon/public/system /mastodon/public/assets From a2adf848580e0afcd344d0474dc96c389934d4a9 Mon Sep 17 00:00:00 2001 From: Ash Furrow Date: Thu, 6 Apr 2017 07:53:48 -0400 Subject: [PATCH 111/137] Updates slugignore. --- .slugignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.slugignore b/.slugignore index cbf0615e7..b0141b0e2 100644 --- a/.slugignore +++ b/.slugignore @@ -1,2 +1,5 @@ node_modules/ .cache/ +docs/ +spec/ +storybook/ From a3d204e98217d3177d6733845c6937d63e3494c3 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Thu, 6 Apr 2017 12:16:39 -0400 Subject: [PATCH 112/137] Linux users must enable NFS for Vagrant --- docs/Running-Mastodon/Vagrant-guide.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/Running-Mastodon/Vagrant-guide.md b/docs/Running-Mastodon/Vagrant-guide.md index b24f14e83..83a892408 100644 --- a/docs/Running-Mastodon/Vagrant-guide.md +++ b/docs/Running-Mastodon/Vagrant-guide.md @@ -17,6 +17,8 @@ To create and provision a new virtual machine for Mastodon development: cd mastodon vagrant up +**Note:** On Linux hosts, you will need to [enable NFS support](https://www.vagrantup.com/docs/synced-folders/nfs.html). + Running `vagrant up` for the first time will run provisioning, which will: - Download the Ubuntu 14.04 base image, if there isn't already a copy on your machine @@ -61,4 +63,4 @@ To run the `rspec` tests and `rubocop` style checker, you may either: ## Support/help -If you are confused, or having any issues with the above, the Mastodon IRC channel ( irc.freenode.net #mastodon ) is a good place to find assistance. \ No newline at end of file +If you are confused, or having any issues with the above, the Mastodon IRC channel ( irc.freenode.net #mastodon ) is a good place to find assistance. From a3318814e10d94fcbb1c3f717f5b0064c49c30c7 Mon Sep 17 00:00:00 2001 From: Wonderfall Date: Thu, 6 Apr 2017 20:57:16 +0200 Subject: [PATCH 113/137] add metadata to Dockerfile --- Dockerfile | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Dockerfile b/Dockerfile index f5eb08893..c28287cca 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,13 @@ FROM ruby:2.3.1-alpine +LABEL maintainer="https://github.com/tootsuite/mastodon" \ + description="A GNU Social-compatible microblogging server" + ENV RAILS_ENV=production \ NODE_ENV=production +EXPOSE 3000 4000 + WORKDIR /mastodon COPY Gemfile Gemfile.lock package.json yarn.lock /mastodon/ From ed2bfdee67735a32defda60036d5c01dfb71e417 Mon Sep 17 00:00:00 2001 From: Wonderfall Date: Thu, 6 Apr 2017 20:59:20 +0200 Subject: [PATCH 114/137] add Docker microbadger to README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index db60b66f7..9b43e8077 100644 --- a/README.md +++ b/README.md @@ -65,6 +65,8 @@ Consult the example configuration file, `.env.production.sample` for the full li ## Running with Docker and Docker-Compose +[![](https://images.microbadger.com/badges/version/gargron/mastodon.svg)](https://microbadger.com/images/gargron/mastodon "Get your own version badge on microbadger.com") [![](https://images.microbadger.com/badges/image/gargron/mastodon.svg)](https://microbadger.com/images/gargron/mastodon "Get your own image badge on microbadger.com") + The project now includes a `Dockerfile` and a `docker-compose.yml`. You need to turn `.env.production.sample` into `.env.production` with all the variables set before you can: docker-compose build From 97ae53daa8a2538e7f8b22c1bbf63d0713475438 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Thu, 6 Apr 2017 16:24:57 -0400 Subject: [PATCH 115/137] Reduce size of background-photo.jpeg Reduced by running through `guetzli` image optimizer. --- app/assets/images/background-photo.jpeg | Bin 894792 -> 214464 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/app/assets/images/background-photo.jpeg b/app/assets/images/background-photo.jpeg index b0a88ff353d89090e4c2bd01ae4b6632ee5d39f7..d7937fd4b59a6feb05e6b3ce7a45772500516be3 100644 GIT binary patch literal 214464 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
u)a$d+(lGdx7e%sC?HnV+S3gvCi&w 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�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
THq8eqCKg0%`6tFc82$H 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 e_M=H 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