Changes
42 changed files (+68/-193)
-
-
@@ -2248,6 +2248,18 @@ ; ENABLED = true;; ;; Enable/Disable user statistics for nodeinfo if federation is enabled ; SHARE_USER_STATISTICS = true ;; ;; HTTP signature algorithms ; ALGORITHMS = rsa-sha256, rsa-sha512 ;; ;; HTTP signature digest algorithm ; DIGEST_ALGORITHM = SHA-256 ;; ;; GET headers for federation requests ; GET_HEADERS = (request-target), Date ;; ;; POST headers for federation requests ; POST_HEADERS = (request-target), Date, Digest ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-
-
@@ -1087,6 +1087,10 @@ ## Federation (`federation`)- `ENABLED`: **true**: Enable/Disable federation capabilities - `SHARE_USER_STATISTICS`: **true**: Enable/Disable user statistics for nodeinfo if federation is enabled - `ALGORITHMS`: **rsa-sha256, rsa-sha512**: HTTP signature algorithms - `DIGEST_ALGORITHM`: **SHA-256**: HTTP signature digest algorithm - `GET_HEADERS`: **(request-target), Date**: GET headers for federation requests - `POST_HEADERS`: **(request-target), Date, Digest**: POST headers for federation requests ## Packages (`packages`)
-
-
-
@@ -52,7 +52,7 @@var jrd webfingerJRD DecodeJSON(t, resp, &jrd) assert.Equal(t, "acct:user2@"+appURL.Host, jrd.Subject) assert.ElementsMatch(t, []string{user.HTMLURL(), appURL.String() + "api/v1/activitypub/user/" + user.Name}, jrd.Aliases) assert.ElementsMatch(t, []string{user.HTMLURL(), appURL.String() + "api/v1/activitypub/user/" + url.PathEscape(user.Name)}, jrd.Aliases) req = NewRequest(t, "GET", fmt.Sprintf("/.well-known/webfinger?resource=acct:%s@%s", user.LowerName, "unknown.host")) MakeRequest(t, req, http.StatusBadRequest)
-
-
-
@@ -8,8 +8,9 @@ import ("path/filepath" "testing" "code.gitea.io/gitea/models/unittest" _ "code.gitea.io/gitea/models" "code.gitea.io/gitea/models/unittest" ) func TestMain(m *testing.M) {
-
-
-
@@ -8,12 +8,13 @@ import ("path/filepath" "testing" issues_model "code.gitea.io/gitea/models/issues" "code.gitea.io/gitea/models/unittest" "code.gitea.io/gitea/modules/setting" _ "code.gitea.io/gitea/models" issues_model "code.gitea.io/gitea/models/issues" _ "code.gitea.io/gitea/models/repo" "code.gitea.io/gitea/models/unittest" _ "code.gitea.io/gitea/models/user" "code.gitea.io/gitea/modules/setting" "github.com/stretchr/testify/assert" )
-
-
-
@@ -11,6 +11,7 @@ "crypto/x509""encoding/pem" "fmt" "net/http" "strings" "time" user_model "code.gitea.io/gitea/models/user"
-
@@ -54,15 +55,6 @@ priv *rsa.PrivateKeypubID string } var algos []httpsig.Algorithm func init() { algos = make([]httpsig.Algorithm, len(setting.Federation.Algorithms)) for i, algo := range setting.Federation.Algorithms { algos[i] = httpsig.Algorithm(algo) } } // NewClient function func NewClient(user *user_model.User, pubID string) (c *Client, err error) { if err = containsRequiredHTTPHeaders(http.MethodGet, setting.Federation.GetHeaders); err != nil {
-
@@ -87,7 +79,7 @@ Transport: &http.Transport{Proxy: proxy.Proxy(), }, }, algs: algos, algs: setting.HttpsigAlgs, digestAlg: httpsig.DigestAlgorithm(setting.Federation.DigestAlgorithm), getHeaders: setting.Federation.GetHeaders, postHeaders: setting.Federation.PostHeaders,
-
@@ -106,7 +98,7 @@ return} req.Header.Add("Content-Type", ActivityStreamsContentType) req.Header.Add("Accept-Charset", "utf-8") req.Header.Add("Date", fmt.Sprintf("%s UTC", time.Now().UTC().Format(time.RFC1123))) req.Header.Add("Date", strings.ReplaceAll(time.Now().UTC().Format(time.RFC1123), "UTC", "GMT")) signer, _, err := httpsig.NewSigner(c.algs, c.digestAlg, c.postHeaders, httpsig.Signature, httpsigExpirationTime) if err != nil {
-
-
-
@@ -9,6 +9,7 @@ "fmt""io" "net/http" "net/url" "strings" "time" user_model "code.gitea.io/gitea/models/user"
-
@@ -22,7 +23,7 @@ func Fetch(iri *url.URL) (b []byte, err error) {req := httplib.NewRequest(iri.String(), http.MethodGet) req.Header("Accept", ActivityStreamsContentType) req.Header("Accept-Charset", "utf-8") req.Header("Date", fmt.Sprintf("%s UTC", time.Now().UTC().Format(time.RFC1123))) req.Header("Date", strings.ReplaceAll(time.Now().UTC().Format(time.RFC1123), "UTC", "GMT")) resp, err := req.Response() if err != nil { return
-
-
-
@@ -29,11 +29,19 @@ PostHeaders: []string{"(request-target)", "Date", "Digest"},} ) // Constant slice of httpsig algorithm objects var HttpsigAlgs []httpsig.Algorithm func newFederationService() { if err := Cfg.Section("federation").MapTo(&Federation); err != nil { log.Fatal("Failed to map Federation settings: %v", err) } else if !httpsig.IsSupportedDigestAlgorithm(Federation.DigestAlgorithm) { log.Fatal("unsupported digest algorithm: %s", Federation.DigestAlgorithm) return } HttpsigAlgs = make([]httpsig.Algorithm, len(Federation.Algorithms)) for i, alg := range Federation.Algorithms { HttpsigAlgs[i] = httpsig.Algorithm(alg) } }
-
-
-
@@ -295,7 +295,6 @@ size_error=` трябва да е с размер %s.`min_size_error=` трябва да съдържа поне %s знака.` max_size_error=` трябва да съдържа най-много %s знака.` email_error=` не е валиден адрес на ел. поща.` url_error=` не е валиден URL адрес.` include_error=` трябва да съдържа текст '%s'.` glob_pattern_error=` glob шаблонът е невалиден: %s` unknown_error=Неизвестна грешка:
-
@@ -644,8 +643,6 @@ issues.label_templates.helper=Изберете набор етикетиissues.label_templates.use=Използвай набор етикети issues.label_templates.fail_to_load_file=Неуспешно зареждане на шаблон с етикети '%s': %v issues.deleted_milestone=`(изтрито)` issues.open_tab=%d отворени issues.close_tab=%d затворени issues.filter_label=Етикет issues.filter_milestone=Етап issues.filter_assignee=Изпълнител
-
@@ -776,8 +773,6 @@milestones.new=Нов етап milestones.open_tab=%d отворени milestones.close_tab=%d затворени milestones.closed=Затворен %s milestones.no_due_date=Няма краен срок milestones.open=Отвори
-
-
-
@@ -434,7 +434,6 @@ size_error=` musí být minimálně velikosti %s.`min_size_error=` musí obsahovat nejméně %s znaků.` max_size_error=` musí obsahovat maximálně %s znaků.` email_error=` není správná e-mailová adresa.` url_error=` není správná URL.` include_error=` musí obsahovat řetězec „%s“.` glob_pattern_error=`zástupný vzor je neplatný: %s.` regex_pattern_error=` regex vzor je neplatný: %s.`
-
@@ -1203,8 +1202,6 @@ issues.change_title_at=`změnil/a název z <b><strike>%s</strike></b> na <b>%s</b> %s`issues.remove_ref_at=`odstranil/a referenci <b>%s</b> %s` issues.add_ref_at=`přidal/a referenci <b>%s</b> %s` issues.delete_branch_at=`odstranil/a větev <b>%s</b> %s` issues.open_tab=%d otevřených issues.close_tab=%d zavřených issues.filter_label=Štítek issues.filter_label_exclude=`Chcete-li vyloučit štítky, použijte <code>alt</code> + <code>click/enter</code>` issues.filter_label_no_select=Všechny štítky
-
@@ -1533,8 +1530,6 @@milestones.new=Nový milník milestones.open_tab=%d otevřených milestones.close_tab=%d zavřených milestones.closed=Zavřen dne %s milestones.update_ago=Aktualizováno před %s milestones.no_due_date=Bez lhůty dokončení
-
-
-
@@ -435,7 +435,6 @@ size_error=` muss die Größe %s haben.`min_size_error=` muss mindestens %s Zeichen enthalten.` max_size_error=` darf höchstens %s Zeichen enthalten.` email_error=` ist keine gültige E-Mail-Adresse.` url_error=` ist keine gültige URL.` include_error=` muss den Text „%s“ enthalten.` glob_pattern_error=` Der Glob Pattern ist ungültig: %s.` regex_pattern_error=` regex ist ungültig: %s.`
-
@@ -1231,8 +1230,6 @@ issues.change_ref_at=`hat die Referenz von <b><strike>%s</strike></b> zu <b>%s</b> %s geändert`issues.remove_ref_at=`hat die Referenz <b>%s</b> entfernt %s` issues.add_ref_at=`hat die Referenz <b>%s</b> hinzugefügt %s` issues.delete_branch_at=`löschte die Branch <b>%s</b> %s` issues.open_tab=%d offen issues.close_tab=%d geschlossen issues.filter_label=Label issues.filter_label_exclude=„<code>Alt</code> + <code>Klick/Enter</code> verwenden, um Label auszuschließen” issues.filter_label_no_select=Alle Label
-
@@ -1562,8 +1559,6 @@milestones.new=Neuer Meilenstein milestones.open_tab=%d offen milestones.close_tab=%d geschlossen milestones.closed=Geschlossen %s milestones.update_ago=Vor %s aktualisiert milestones.no_due_date=Kein Fälligkeitsdatum
-
-
-
@@ -443,7 +443,6 @@ size_error=`πρέπει να έχει μέγεθος %s.`min_size_error=` πρέπει να περιέχει τουλάχιστον %s χαρακτήρες.` max_size_error=` πρέπει να περιέχει το πολύ %s χαρακτήρες.` email_error=` δεν είναι έγκυρη διεύθυνση email.` url_error=` δεν είναι μια έγκυρη διεύθυνση URL.` include_error=` πρέπει να περιέχει τη σειρά χαρακτήρων '%s'.` glob_pattern_error=` το μοτίβο ταιριάσματος (glob) δεν είναι έγκυρο: %s.` regex_pattern_error=` το μοτίβο regex δεν είναι έγκυρο: %s.`
-
@@ -1259,8 +1258,6 @@ issues.change_ref_at=`άλλαξε την αναφορά από <b><strike>%s</strike></b> σε <b>%s</b> %s`issues.remove_ref_at=`αφαίρεση την αναφορά <b>%s</b> %s` issues.add_ref_at=`πρόσθεσε την αναφορά <b>%s</b> %s` issues.delete_branch_at=`διέγραψε το κλάδο <b>%s</b> %s` issues.open_tab=%d Ανοιχτά issues.close_tab=%d Κλειστά issues.filter_label=Σήμα issues.filter_label_exclude=`Χρησιμοποιήστε <code>alt</code> + <code>κάντε κλικ/Enter</code> για να εξαιρέσετε τις σημάνσεις` issues.filter_label_no_select=Όλα τα σήματα
-
@@ -1604,8 +1601,6 @@milestones.new=Νέο Ορόσημο milestones.open_tab=%d Ανοιχτά milestones.close_tab=%d Κλειστά milestones.closed=Έκλεισε %s milestones.update_ago=Ενημερώθηκε πριν από %s milestones.no_due_date=Δεν υπάρχει ημερομηνία παράδοσης
-
-
-
@@ -441,7 +441,6 @@ size_error=` debe ser de tamaño %s.`min_size_error=` debe contener al menos %s caracteres.` max_size_error=` debe contener como máximo %s caracteres.` email_error=` no es una dirección de correo válida.` url_error=` no es una URL válida.` include_error=` debe contener la subcadena '%s'.` glob_pattern_error=` el patrón globo no es válido: %s.` regex_pattern_error=` el patrón de regex no es válido: %s.`
-
@@ -1228,8 +1227,6 @@ issues.change_ref_at=`cambió referencia de <b><strike>%s</strike></b> a <b>%s</b> %s`issues.remove_ref_at=`eliminó la referencia <b>%s</b> %s` issues.add_ref_at=`añadió la referencia <b>%s</b> %s` issues.delete_branch_at=`rama eliminada <b>%s</b> %s` issues.open_tab=%d abiertas issues.close_tab=%d cerradas issues.filter_label=Etiqueta issues.filter_label_exclude=`Usa <code>alt</code> + <code>clic/enter</code> para excluir etiquetas` issues.filter_label_no_select=Todas las etiquetas
-
@@ -1559,8 +1556,6 @@milestones.new=Nuevo hito milestones.open_tab=%d abiertas milestones.close_tab=%d cerradas milestones.closed=Cerrada %s milestones.update_ago=Actualizado hace %s milestones.no_due_date=Sin fecha límite
-
-
-
@@ -416,7 +416,6 @@ size_error=` باید به اندازه %s باشد.`min_size_error=` حداقل باید شامل %s کاراکتر باشد.` max_size_error=` حداکثر باید شامل %s کاراکتر باشد.` email_error=` ساختار نشانی ایمیل صحیح نیست.` url_error=` ساختار نشانی اینترنتی صحیح نیست.` include_error=` باید شامل '%s' باشد.` glob_pattern_error=`الگوی قطرهای (glob) نامعتبر است: %s.` regex_pattern_error=الگو عبارت باقاعده نامعتبر است: %s
-
@@ -1159,8 +1158,6 @@ issues.change_ref_at=`تغییر مرجع از <b> <strike>% s </strike> </b> به <b>% s </b>% s`issues.remove_ref_at=`مرجع حذف <b>% s </b>% s` issues.add_ref_at=`مرجع اضافه شده <b>% s </b>% s` issues.delete_branch_at=`حذف شاخه <b>%s</b> %s` issues.open_tab=%d باز issues.close_tab=%d بسته issues.filter_label=برچسب issues.filter_label_exclude=`از<code>alt</code> + <code>click/enter</code> برای رد کردن برچسبها استفاده کنید ` issues.filter_label_no_select=تمامی برچسبها
-
@@ -1482,8 +1479,6 @@milestones.new=نقطه عطف جدید milestones.open_tab=%d باز شد milestones.close_tab=%d بسته milestones.closed=%s بسته شد milestones.update_ago=آخرین بروز رسانی %s قبل milestones.no_due_date=بدون موعد مقرر
-
-
-
@@ -300,7 +300,6 @@ size_error=` täytyy olla kokoa %s.`min_size_error=` täytyy sisältää vähintään %s merkkiä.` max_size_error=` täytyy sisältää enintään %s merkkiä.` email_error=` ei ole kelvollinen sähköpostiosoite.` url_error=` ei ole kelvollinen URL.` include_error=` täytyy sisältää tekstiosa '%s'.` unknown_error=Tuntematon virhe: password_not_match=Salasanat eivät täsmää.
-
@@ -631,8 +630,6 @@ issues.add_milestone_at=`lisäsi tämän merkkipaaluun <b>%s</b> %s`issues.deleted_milestone=`(poistettu)` issues.self_assign_at=`itse otti tämän käsittelyyn %s` issues.delete_branch_at=`poisti haaran <b>%s</b> %s` issues.open_tab=%d avoinna issues.close_tab=%d suljettu issues.filter_label=Tunniste issues.filter_label_exclude=`Käytä <code>alt</code> + <code>klikkaus/rivinvaihto</code> poissulkeaksesi tunnisteita` issues.filter_label_no_select=Kaikki tunnisteet
-
@@ -761,8 +758,6 @@milestones.new=Uusi merkkipaalu milestones.open_tab=%d avoinna milestones.close_tab=%d suljettu milestones.closed=Suljettu %s milestones.no_due_date=Ei määräpäivää milestones.open=Avaa uudelleen
-
-
-
@@ -403,7 +403,6 @@ size_error=` doit être à la taille de %s.`min_size_error=` %s caractères minimum ` max_size_error=` %s caractères maximum ` email_error=` adresse e-mail invalide ` url_error=` URL invalide ` include_error=`doit contenir la sous-chaîne '%s'.` glob_pattern_error=` le motif de développement est invalide : %s.` unknown_error=Erreur inconnue :
-
@@ -1093,8 +1092,6 @@ issues.remove_assignee_at=`mis en non assigné par <b>%s</b> %s`issues.remove_self_assignment=`a retiré son assignation %s` issues.change_title_at=`a modifié le titre de <b><strike>%s</strike></b> à <b>%s</b> %s` issues.delete_branch_at=`a supprimé la branche <b>%s</b> %s` issues.open_tab=%d Ouvert issues.close_tab=%d Fermé issues.filter_label=Étiquette issues.filter_label_exclude=`Utiliser <code>alt</code> + <code>clic/entrée</code> pour exclure les étiquettes` issues.filter_label_no_select=Toutes les étiquettes
-
@@ -1395,8 +1392,6 @@milestones.new=Nouveau jalon milestones.open_tab=%d Ouvert milestones.close_tab=%d Fermé milestones.closed=%s fermé milestones.update_ago=Mis à jour il y a %s milestones.no_due_date=Aucune date d'échéance
-
-
-
@@ -328,7 +328,6 @@ size_error=` %s méretűnek kell lennie.`min_size_error=` legalább %s karaktert kell tartalmaznia.` max_size_error=` legfeljebb %s karaktert tartalmazhat.` email_error=` nem valódi e-mail cím.` url_error=` nem érvényes URL.` include_error=` tartalmaznia kell a '%s' karakterláncot.` unknown_error=Ismeretlen hiba: captcha_incorrect=Helytelen kódot adtál meg.
-
@@ -810,8 +809,6 @@ issues.add_assignee_at=`hozzárendelve <b>%s</b> által %s`issues.remove_assignee_at=`hozzárendelés törlése <b>%s</b> által %s` issues.remove_self_assignment=`eltávolította a hozzárendelést %s` issues.delete_branch_at=`letörölte a(z) <b>%s</b> ágat %s` issues.open_tab=%d Nyitva issues.close_tab=%d Lezárva issues.filter_label=Címke issues.filter_label_no_select=Minden címke issues.filter_milestone=Mérföldkő
-
@@ -980,8 +977,6 @@milestones.new=Új mérföldkő milestones.open_tab=%d Nyitott milestones.close_tab=%d Zárt milestones.closed=Lezárva: %s milestones.no_due_date=Nincs határidő milestones.open=Megnyitás
-
-
-
@@ -319,7 +319,6 @@ size_error=` harus berukuran %s.`min_size_error=` harus berisi karakter %s setidaknya.` max_size_error=` harus mengandung paling banyak %s karakter.` email_error=` bukan alamat surel yang valid. ` url_error=` bukan URL yang valid.` include_error=` harus mengandung substring '%s'.` glob_pattern_error=` pola glob salah: %s.` unknown_error=Kesalahan yang tidak diketahui:
-
@@ -753,8 +752,6 @@ issues.deleted_milestone=`(dihapus)`issues.self_assign_at=`menugaskan diri %s` issues.add_assignee_at=`telah ditugaskan oleh <b>%s</b> %s` issues.delete_branch_at=`telah dihapus cabang <b>%s</b> %s` issues.open_tab=%d Terbuka issues.close_tab=%d Tertutup issues.filter_label=Label issues.filter_milestone=Tonggak issues.filter_assignee=Menerima
-
@@ -845,8 +842,6 @@milestones.new=Milestone Baru milestones.open_tab=%d Terbuka milestones.close_tab=%d Tertutup milestones.closed=Tertutup %s milestones.no_due_date=Tidak ada jatuh tempo milestones.open=Buka
-
-
-
@@ -370,7 +370,6 @@ require_error=` Getur ekki verið tómt.`alpha_dash_dot_error=` ætti aðeins að innihalda tölustafi, strik ('-'), undirstrik ('_') og punkta ('.').` size_error=` þarf að vera stærð %s.` email_error=` er ekki gilt netfang.` url_error=` er ekki gild vefslóð.` unknown_error=Óþekkt villa: captcha_incorrect=CAPTCHA kóðinn er rangur. password_not_match=Lykilorðin passa ekki saman.
-
@@ -779,8 +778,6 @@ issues.new_label_placeholder=Lýsingarheitiissues.new_label_desc_placeholder=Lýsing issues.create_label=Skapa Lýsingu issues.label_templates.info=Engin merki eru til ennþá. Búðu til merki með „Nýtt merki“ eða notaðu fyrirfram skilgreint merkisett: issues.open_tab=%d Opin issues.close_tab=%d Lokuð issues.filter_label=Lýsing issues.filter_label_no_select=Allar lýsingar issues.filter_milestone=Tímamót
-
@@ -934,8 +931,6 @@milestones.new=Nýtt tímamót milestones.open_tab=%d Opin milestones.close_tab=%d Lokuð milestones.closed=Lokaði %s milestones.update_ago=Uppfært fyrir %s milestones.no_due_date=Enginn eindagi
-
-
-
@@ -350,7 +350,6 @@ size_error='deve essere %s.'min_size_error=` deve contenere almeno %s caratteri.` max_size_error=` deve contenere massimo %s caratteri.` email_error=` non è un indirizzo e-mail valido.` url_error=` non è un URL valido.` include_error=` deve contenere la stringa '%s'.` glob_pattern_error=` il pattern glob non è valido: %s.` unknown_error=Errore sconosciuto:
-
@@ -986,8 +985,6 @@ issues.remove_assignee_at=`è stato rimosso da <b>%s</b> %s`issues.remove_self_assignment=`Rimosso il loro incarico %s` issues.change_title_at=`Titolo modificato da <b><strike>%s</strike></b> a <b>%s</b> %s` issues.delete_branch_at=`branch <b>%s</b> eliminato %s` issues.open_tab=%d Aperti issues.close_tab=%d Chiusi issues.filter_label=Etichetta issues.filter_label_exclude=`Usa <code>alt</code> + <code>click/enter</code> per escludere le etichette` issues.filter_label_no_select=Tutte le etichette
-
@@ -1252,8 +1249,6 @@milestones.new=Nuova Milestone milestones.open_tab=%d Aperti milestones.close_tab=%d Chiusi milestones.closed=Chiuso %s milestones.update_ago=Aggiornato %s fa milestones.no_due_date=Nessuna data di scadenza
-
-
-
@@ -443,7 +443,6 @@ size_error=は%s文字である必要があります。min_size_error=`は%s文字以上である必要があります。` max_size_error=`は%s文字以下である必要があります。` email_error=`は有効なメールアドレスではありません。` url_error=`は有効なURLではありません。` include_error=`は文字列 '%s' を含んでいる必要があります。` glob_pattern_error=`のglobパターンが不正です: %s.` regex_pattern_error=`の正規表現パターンが不正です: %s.`
-
@@ -1259,8 +1258,6 @@ issues.change_ref_at=`が参照を <b><strike>%s</strike></b> から <b>%s</b> に変更 %s`issues.remove_ref_at=`が参照 <b>%s</b> を削除 %s` issues.add_ref_at=`が参照 <b>%s</b> を追加 %s` issues.delete_branch_at=`がブランチ <b>%[1]s</b> を削除 %[2]s` issues.open_tab=%d件 オープン中 issues.close_tab=%d件 クローズ済 issues.filter_label=ラベル issues.filter_label_exclude=`ラベルで除外するには <code>alt</code> + <code>click/enter</code>` issues.filter_label_no_select=すべてのラベル
-
@@ -1604,8 +1601,6 @@milestones.new=新しいマイルストーン milestones.open_tab=%d件 オープン中 milestones.close_tab=%d件 クローズ済 milestones.closed=%s にクローズ milestones.update_ago=%s 前に更新 milestones.no_due_date=期日なし
-
-
-
@@ -310,7 +310,6 @@ size_error=` %s 글자여야 합니다.`min_size_error=` 최소 %s 글자여야 합니다.` max_size_error=` %s 글자를 넘을 수 없습니다.` email_error=` 올바른 이메일 주소가 아닙니다.` url_error=` 올바른 URL이 아닙니다.` include_error=` 반드시 '%s'를 포함해야 합니다.` unknown_error=알 수 없는 오류: captcha_incorrect=CAPTCHA 코드가 올바르지 않습니다.
-
@@ -714,8 +713,6 @@ issues.add_assignee_at=`다음으로부터 할당됨 <b>%s</b> %s`issues.remove_assignee_at=`다음으로부터 할당취소됨 <b>%s</b> %s` issues.remove_self_assignment=`%s 할당들이 삭제됨` issues.delete_branch_at=`삭제된 브랜치 <b>%s</b> %s` issues.open_tab=%d 오픈 issues.close_tab=%d 닫힘 issues.filter_label=레이블 issues.filter_label_no_select=모든 레이블 issues.filter_milestone=마일스톤
-
@@ -867,8 +864,6 @@milestones.new=새로운 마일스톤 milestones.open_tab=%d개 열림 milestones.close_tab=%d개 닫힘 milestones.closed=닫힘 %s milestones.no_due_date=기한 없음 milestones.open=열기
-
-
-
@@ -439,7 +439,6 @@ size_error=` jābūt %s simbolus garam.`min_size_error=` jabūt vismaz %s simbolu garumā.` max_size_error=` jabūt ne mazāk kā %s simbolu garumā.` email_error=` nav derīga e-pasta adrese.` url_error=` nav korekts URL.` include_error=` ir jāsatur tekstu '%s'.` glob_pattern_error=` glob šablons nav korekts: %s.` regex_pattern_error=` regulārā izteiksme nav korekta: %s.`
-
@@ -1216,8 +1215,6 @@ issues.change_ref_at=`nomainīta atsauce no <b><strike>%s</strike></b> uz <b>%s</b> %s`issues.remove_ref_at=`noņēma atsauci no <b>%s</b> %s` issues.add_ref_at=`pievienoja atsauci uz <b>%s</b> %s` issues.delete_branch_at=`izdzēsa atzaru <b>%s</b> %s` issues.open_tab=%d atvērti issues.close_tab=%d aizvērti issues.filter_label=Etiķete issues.filter_label_exclude=`Izmantojiet <code>alt</code> + <code>peles klikšķis vai enter</code>, lai neiekļautu etiķeti` issues.filter_label_no_select=Visas etiķetes
-
@@ -1547,8 +1544,6 @@milestones.new=Jauns atskaites punkts milestones.open_tab=%d atvērti milestones.close_tab=%d aizvērti milestones.closed=Aizvērts %s milestones.update_ago=Atjaunots pirms %s milestones.no_due_date=Bez termiņa
-
-
-
@@ -296,7 +296,6 @@ size_error=`വലുപ്പം %s ആയിരിക്കണം.`min_size_error=`കുറഞ്ഞത് %s അക്ഷരങ്ങള് അടങ്ങിയിരിക്കണം.` max_size_error=`പരമാവധി %s അക്ഷരങ്ങള് അടങ്ങിയിരിക്കണം.` email_error=സാധുവായ ഒരു ഈ-മെയിൽ വിലാസം അല്ല url_error=`സാധുവായ ഒരു URL അല്ല.` include_error=`%s'എന്ന ഉപവാക്യം അടങ്ങിയിരിക്കണം.` glob_pattern_error=ഗ്ലോബു് ശൃേണി തെറ്റാണു്: %s unknown_error=അജ്ഞാതമായ പിശക്:
-
-
-
@@ -369,7 +369,6 @@ size_error=moet groter zijn dan %smin_size_error=moet minimaal %s karakters bevatten. max_size_error=mag maximaal %s karakters bevatten. email_error=is niet een valide e-mail adres. url_error=is niet een valide URL. include_error=` moet substring '%s' bevatten.` glob_pattern_error=` globpatroon is ongeldig: %s.` unknown_error=Onbekende fout:
-
@@ -1004,8 +1003,6 @@ issues.remove_assignee_at=`is niet toegewezen door <b>%s</b> %s`issues.remove_self_assignment=`heeft %s zijn/haar toewijzing verwijderd` issues.change_title_at='titel aangepast van <b><strike>%s</strike></b> naar <b>%s</b> %s' issues.delete_branch_at=`heeft %[2]s de branch <b>%[1]s</b> verwijderd.` issues.open_tab=%d Open issues.close_tab=%d gesloten issues.filter_label=Label issues.filter_label_exclude=`Gebruik <code>alt</code> + <code>klik/voer</code> in om labels uit te sluiten issues.filter_label_no_select=Alle labels
-
@@ -1281,8 +1278,6 @@milestones.new=Nieuwe mijlpaal milestones.open_tab=%d geopend milestones.close_tab=%d gesloten milestones.closed=%s werd gesloten milestones.update_ago=%s dagen geleden bijgewerkt milestones.no_due_date=Geen vervaldatum
-
-
-
@@ -430,7 +430,6 @@ size_error=` musi być wielkości %s.`min_size_error=` musi zawierać co najwyżej %s znaków.` max_size_error=` musi zawierać co najwyżej %s znaków.` email_error=` nie jest poprawnym adresem e-mail.` url_error=` nie jest poprawnym adresem URL.` include_error=`musi zawierać tekst '%s'.` glob_pattern_error=` wzorzec glob jest nieprawidłowy: %s.` regex_pattern_error=` wzorzec regex jest nieprawidłowy: %s.`
-
@@ -1162,8 +1161,6 @@ issues.remove_assignee_at=`usunięto przypisanie przez <b>%s</b> %s`issues.remove_self_assignment=`usuwa swoje przypisanie %s` issues.change_title_at=`zmieniono tytuł z <b><strike>%s</strike></b> na <b>%s</b> %s` issues.delete_branch_at=`usuwa gałąź <b>%s</b> %s` issues.open_tab=Otwarte %d issues.close_tab=Zamknięte %d issues.filter_label=Etykieta issues.filter_label_exclude=`Użyj <code>Alt</code> + <code>Kliknij/Enter</code>, aby wykluczyć etykiety` issues.filter_label_no_select=Wszystkie etykiety
-
@@ -1454,8 +1451,6 @@milestones.new=Nowy kamień milowy milestones.open_tab=Otwarte %d milestones.close_tab=Zamknięte %d milestones.closed=Zamknięto %s milestones.update_ago=Zaktualizowano %s temu milestones.no_due_date=Nie ustalono terminu
-
-
-
@@ -442,7 +442,6 @@ size_error=`deve ser do tamanho %s.`min_size_error=` deve conter pelo menos %s caracteres.` max_size_error=` deve conter no máximo %s caracteres.` email_error=` não é um endereço de e-mail válido.` url_error=`não é uma URL válida.` include_error=` deve conter '%s'.` glob_pattern_error=` padrão glob é inválido: %s.` regex_pattern_error=` o regex é inválido: %s.`
-
@@ -1254,8 +1253,6 @@ issues.change_ref_at=`mudou a referência de <b><strike>%s</strike></b> para <b>%s</b> %s`issues.remove_ref_at=`removeu a referência <b>%s</b> %s` issues.add_ref_at=`adicionou a referência <b>%s</b> %s` issues.delete_branch_at=`excluiu branch <b>%s</b> %s` issues.open_tab=%d aberto issues.close_tab=%d fechado issues.filter_label=Etiqueta issues.filter_label_exclude=`Use <code>alt</code> + <code>clique/enter</code> para excluir etiquetas` issues.filter_label_no_select=Todas as etiquetas
-
@@ -1597,8 +1594,6 @@milestones.new=Novo marco milestones.open_tab=%d Aberto milestones.close_tab=%d Fechado milestones.closed=Fechado %s milestones.update_ago=Atualizado há %s milestones.no_due_date=Sem data limite
-
-
-
@@ -443,7 +443,7 @@ size_error=` tem que ser do tamanho %s.`min_size_error=` tem que conter pelo menos %s caracteres.` max_size_error=` só pode conter no máximo %s caracteres.` email_error=` não é um endereço de email válido.` url_error=` não é um URL válido.` url_error=`'%s' não é um URL válido.` include_error=` tem que conter o texto '%s'.` glob_pattern_error=` o padrão glob é inválido: %s.` regex_pattern_error=` o padrão regex é inválido: %s.`
-
@@ -1259,8 +1259,6 @@ issues.change_ref_at=`mudou a referência de <b><strike>%s</strike></b> para <b>%s</b> %s`issues.remove_ref_at=`removeu a referência <b>%s</b> %s` issues.add_ref_at=`adicionou a referência <b>%s</b> %s` issues.delete_branch_at=`eliminou o ramo <b>%s</b> %s` issues.open_tab=%d abertas issues.close_tab=%d fechadas issues.filter_label=Rótulo issues.filter_label_exclude=`Use <code>alt</code> + <code>clique/enter</code> para excluir rótulos` issues.filter_label_no_select=Todos os rótulos
-
@@ -1613,8 +1611,6 @@ pulls.auto_merge_newly_scheduled_comment=`agendou este pedido de integração para ser executado automaticamente quando todas as verificações forem bem-sucedidas %[1]s`pulls.auto_merge_canceled_schedule_comment=`cancelou a execução automática deste pedido de integração que iria ocorrer quando todas as verificações fossem bem-sucedidas %[1]s` milestones.new=Nova etapa milestones.open_tab=%d abertas milestones.close_tab=%d fechadas milestones.closed=Encerrada %s milestones.update_ago=Modificada há %s milestones.no_due_date=Sem data de vencimento
-
-
-
@@ -439,7 +439,6 @@ size_error=` должен быть размер %s.`min_size_error=` должен содержать по крайней мере %s символов.` max_size_error=` должен содержать максимум %s символов.` email_error=` не является адресом электронной почты.` url_error=` не является допустимым URL-адресом.` include_error=` должен содержать '%s'.` glob_pattern_error=` неверный glob шаблон: %s.` regex_pattern_error=` Неверный шаблон регулярного выражения: %s.`
-
@@ -1222,8 +1221,6 @@ issues.change_ref_at=`изменил(а) ссылку с <b><strike>%s</strike></b> на <b>%s</b> %s`issues.remove_ref_at=`убрал(а) ссылку <b>%s</b> %s` issues.add_ref_at=`добавил(а) ссылку <b>%s</b> %s` issues.delete_branch_at=`удалил(а) ветку <b>%s</b> %s` issues.open_tab=%d открыто(ы) issues.close_tab=%d закрыто(ы) issues.filter_label=Метка issues.filter_label_exclude=`Используйте <code>alt</code> + <code>click/enter</code>, чтобы исключить метки` issues.filter_label_no_select=Все метки
-
@@ -1554,8 +1551,6 @@milestones.new=Новый этап milestones.open_tab=%d открыто(ы) milestones.close_tab=%d закрыто(ы) milestones.closed=Закрыт %s milestones.update_ago=Обновлено %s назад milestones.no_due_date=Срок не указан
-
-
-
@@ -401,7 +401,6 @@ size_error=`%sප්රමාණය විය යුතුය. `min_size_error=` අවම වශයෙන් අක්ෂර %s ක් වත් අඩංගු විය යුතුය.` max_size_error=` Ost බොහෝ අක්ෂර %s හි අඩංගු විය යුතුය.` email_error=` A වලංගු විද්යුත් තැපැල් ලිපිනයක් නොවේ.` url_error=` A වලංගු URL එකක් නොවේ.` include_error=` උප නූල් '%s' අඩංගු විය යුතුය.` glob_pattern_error=` ලෝක ගෝලය රටාව අවලංගුයි: %s.` regex_pattern_error=` regex රටාව අවලංගුයි: %s.`
-
@@ -1104,8 +1103,6 @@ issues.change_ref_at=<b><strike>%s</strike></b> සිට <b>%s</b> දක්වා වෙනස් කර ඇත %sissues.remove_ref_at=`ඉවත් කරන ලද යොමු <b>%s</b> %s` issues.add_ref_at=`එකතු කරන ලද යොමු <b>%s</b> %s` issues.delete_branch_at=`මකාදැමූ ශාඛාව <b>%s</b> %s` issues.open_tab=%d විවෘත issues.close_tab=%d වසා issues.filter_label=ලේබලය issues.filter_label_exclude=Labels` ඉවත් කිරීමට <code>alt</code> + <code>ක්ලික් කරන්න/ඇතුළු කරන්න</code> issues.filter_label_no_select=සියලු ලේබල
-
@@ -1426,8 +1423,6 @@milestones.new=නව සන්ධිස්ථානයක් milestones.open_tab=%d විවෘත milestones.close_tab=%d වසා milestones.closed=%s වසා ඇත milestones.update_ago=යාවත්කාලීන %s පෙර milestones.no_due_date=නියමිත දිනයක් නැත
-
-
-
@@ -341,7 +341,6 @@ size_error=` måste vara av storleken %s`min_size_error=` måste innehålla minst %s tecken.` max_size_error=` får inte innehålla mer än %s tecken.` email_error=` är inte en giltlig epostaddress.` url_error=Den givna URL-adressen är inte valid include_error=` måste innehålla texten '%s'.` glob_pattern_error=`glob-mönstret är ogiltigt: %s.` unknown_error=Okänt fel:
-
@@ -933,8 +932,6 @@ issues.remove_assignee_at=`tilldelning togs bort av <b>%s</b> %s`issues.remove_self_assignment=`tog bort sin tilldelning %s` issues.change_title_at='ändrade titeln från <b><strike>%s</strike></b> till <b>%s</b> %s' issues.delete_branch_at='tog bort grenen <b>%s</b> %s' issues.open_tab=%d Öppna issues.close_tab=%d Stängda issues.filter_label=Etikett issues.filter_label_exclude=`Använd <code>alt</code> + <code>klicka/enter</code> för att exkludera etiketter` issues.filter_label_no_select=Alla etiketter
-
@@ -1169,8 +1166,6 @@milestones.new=Ny milstolpe milestones.open_tab=%d Öppna milestones.close_tab=%d Stängda milestones.closed=Stängt %s milestones.no_due_date=Inget förfallodatum milestones.open=Öppna
-
-
-
@@ -413,7 +413,6 @@ size_error=` uzunluk en fazla %s olmalıdır.`min_size_error=` en az %s karakter içermelidir.` max_size_error=` en fazla %s karakter içermelidir.` email_error=' geçerli bir e-posta adresi değil.' url_error=` geçerli bir bağlantı değil.` include_error=` '%s' içermelidir.` glob_pattern_error=` glob deseni geçersiz: %s.` regex_pattern_error=` regex dizisi geçersiz: %s.`
-
@@ -1125,8 +1124,6 @@ issues.remove_assignee_at=`ataması %[2]s <b>%[1]s</b> tarafından kaldırıldı`issues.remove_self_assignment=`atamalarını kaldırdı %s` issues.change_title_at=`başlığı <b><strike>%s</strike></b> iken %s olarak <b>%s</b> değiştirdi` issues.delete_branch_at=`<b>%s</b> dalı silindi %s` issues.open_tab=%d açık issues.close_tab=%d kapanmış issues.filter_label=Etiket issues.filter_label_exclude=`Etiketleri hariç tutmak için <code>alt</code> + <code>tıkla/enter</code> kullanın` issues.filter_label_no_select=Tüm etiketler
-
@@ -1441,8 +1438,6 @@milestones.new=Yeni Kilometre Taşı milestones.open_tab=%d Açık milestones.close_tab=%d Kapalı milestones.closed=Kapalı %s milestones.update_ago=%s önce güncellendi milestones.no_due_date=Bitiş tarihi yok
-
-
-
@@ -419,7 +419,6 @@ size_error=` повинен бути розмір %s.`min_size_error=` повинен бути принаймні %s символів.` max_size_error=` повинен бути не більш як %s символів.` email_error=` не є адресою електронної пошти.` url_error=` не є припустимою URL-Адресою.` include_error=`повинен бути текст '%s'` glob_pattern_error=` неприпустимий шаблон glob: %s.` regex_pattern_error=` неприпустимий шаблон regex: %s.`
-
@@ -1167,8 +1166,6 @@ issues.change_ref_at=`змінив посилання з <b><strike>%s</strike></b> на <b>%s</b> %s`issues.remove_ref_at=`видалив посилання <b>%s</b> %s` issues.add_ref_at=`додав посилання <b>%s</b> %s` issues.delete_branch_at=`видалена гілка <b>%s</b> %s` issues.open_tab=%d відкрито issues.close_tab=%d закрито issues.filter_label=Мітка issues.filter_label_exclude=`Використовуйте <code>Alt</code> + <code>клік/Enter</code> для виключення міток` issues.filter_label_no_select=Всі мітки
-
@@ -1490,8 +1487,6 @@milestones.new=Новий етап milestones.open_tab=%d відкрито milestones.close_tab=%d закрито milestones.closed=Закрито %s milestones.update_ago=Оновлено %s назад milestones.no_due_date=Немає дати завершення
-
-
-
@@ -443,7 +443,6 @@ size_error=长度必须为 %s。min_size_error=长度最小为 %s 个字符。 max_size_error=长度最大为 %s 个字符。 email_error=不是一个有效的邮箱地址。 url_error=不是一个有效的 URL。 include_error=`必须包含子字符串 '%s'。` glob_pattern_error=`匹配模式无效:%s.` regex_pattern_error=`正则表达式无效:%s.`
-
@@ -1259,8 +1258,6 @@ issues.change_ref_at=`将引用从 <b><strike>%s</strike></b> 更改为了 <b>%s</b> %s`issues.remove_ref_at=`删除了引用 <b>%s</b> %s` issues.add_ref_at=`添加了引用 <b>%s</b> %s` issues.delete_branch_at=`于 %[2]s 删除了分支 <b>%[1]s</b>` issues.open_tab=%d 个开启中 issues.close_tab=%d 个已关闭 issues.filter_label=标签筛选 issues.filter_label_exclude=`使用 <code>alt</code> + <code>鼠标左键 / 回车</code> 排除标签` issues.filter_label_no_select=所有标签
-
@@ -1613,8 +1610,6 @@ pulls.auto_merge_newly_scheduled_comment=`已安排此拉取请求在所有检查成功后自动合并 %[1]s`pulls.auto_merge_canceled_schedule_comment=`已取消当所有检查成功后自动合并此拉取请求 %[1]s` milestones.new=新的里程碑 milestones.open_tab=%d 开启中 milestones.close_tab=%d 已关闭 milestones.closed=于 %s关闭 milestones.update_ago=更新于 %s 前 milestones.no_due_date=暂无截止日期
-
-
-
@@ -154,7 +154,6 @@ size_error=長度必須為 %s。min_size_error=長度最小為 %s 個字符。 max_size_error=長度最大為 %s 個字符。 email_error=不是一個有效的郵箱地址。 url_error=不是一個有效的 URL。 include_error=必須包含子字符串 '%s'。 unknown_error=未知錯誤:
-
@@ -361,8 +360,6 @@ issues.deleted_milestone=`(已刪除)`issues.self_assign_at=將 %s 指派給自己 issues.add_assignee_at=`被<b>%s</b> %s指派` issues.delete_branch_at=`刪除分支 <b>%s</b> %s` issues.open_tab=%d 個開啓中 issues.close_tab=%d 個已關閉 issues.filter_label=標籤篩選 issues.filter_milestone=里程碑篩選 issues.filter_assignee=指派人篩選
-
@@ -438,8 +435,6 @@milestones.new=新的里程碑 milestones.open_tab=%d 開啟中 milestones.close_tab=%d 已關閉 milestones.closed=於 %s關閉 milestones.no_due_date=暫無截止日期 milestones.open=開啟
-
-
-
@@ -443,7 +443,7 @@ size_error=` 長度必須為 %s。`min_size_error=` 長度最小為 %s 個字元。` max_size_error=` 長度最大為 %s 個字元。` email_error=` 是無效的電子信箱。` url_error=` 是無效的 URL。` url_error=`'%s' 是無效的 URL。` include_error=` 必須包含子字串「%s」。 glob_pattern_error=` glob 比對模式無效:%s.` regex_pattern_error=` 正規表示式模式無效:%s.`
-
@@ -1256,8 +1256,6 @@ issues.change_ref_at=`將參考從 <b><strike>%s</strike></b> 變更為 <b>%s</b> %s`issues.remove_ref_at=`移除了參考 <b>%s</b> %s` issues.add_ref_at=`新增了參考 <b>%s</b> %s` issues.delete_branch_at=`刪除分支 <b>%s</b> %s` issues.open_tab=%d 個開放中 issues.close_tab=%d 個已關閉 issues.filter_label=標籤 issues.filter_label_exclude=`使用 <code>alt</code> + <code>click/enter</code> 來排除標籤` issues.filter_label_no_select=所有標籤
-
@@ -1610,8 +1608,6 @@ pulls.auto_merge_newly_scheduled_comment=`排定了在通過所有檢查後自動合併此合併請求 %[1]s`pulls.auto_merge_canceled_schedule_comment=`取消了在通過所有檢查後自動合併此合併請求 %[1]s` milestones.new=新增里程碑 milestones.open_tab=%d 個開放中 milestones.close_tab=%d 個已關閉 milestones.closed=於 %s關閉 milestones.update_ago=%s前更新 milestones.no_due_date=暫無截止日期
-
-
-
@@ -15,7 +15,6 @@ "code.gitea.io/gitea/modules/activitypub""code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/routers/api/v1/user" "code.gitea.io/gitea/routers/api/v1/utils" ap "github.com/go-ap/activitypub"
-
@@ -38,35 +37,29 @@ // responses:// "200": // "$ref": "#/responses/ActivityPub" user := user.GetUserByParamsName(ctx, "username") if user == nil { return } username := ctx.Params("username") link := strings.TrimSuffix(setting.AppURL, "/") + strings.TrimSuffix(ctx.Req.URL.EscapedPath(), "/") link := strings.TrimSuffix(setting.AppURL, "/") + "/api/v1/activitypub/user/" + ctx.ContextUser.Name person := ap.PersonNew(ap.IRI(link)) person.Name = ap.NaturalLanguageValuesNew() err := person.Name.Set("en", ap.Content(user.FullName)) err := person.Name.Set("en", ap.Content(ctx.ContextUser.FullName)) if err != nil { ctx.Error(http.StatusInternalServerError, "Set Name", err) return } person.PreferredUsername = ap.NaturalLanguageValuesNew() err = person.PreferredUsername.Set("en", ap.Content(username)) err = person.PreferredUsername.Set("en", ap.Content(ctx.ContextUser.Name)) if err != nil { ctx.Error(http.StatusInternalServerError, "Set PreferredUsername", err) return } person.URL = ap.IRI(setting.AppURL + username) person.URL = ap.IRI(ctx.ContextUser.HTMLURL()) person.Icon = ap.Image{ Type: ap.ImageType, MediaType: "image/png", URL: ap.IRI(user.AvatarLink()), URL: ap.IRI(ctx.ContextUser.AvatarLink()), } person.Inbox = nil
-
@@ -80,7 +73,7 @@person.PublicKey.ID = ap.IRI(link + "#main-key") person.PublicKey.Owner = ap.IRI(link) publicKeyPem, err := activitypub.GetPublicKey(user) publicKeyPem, err := activitypub.GetPublicKey(ctx.ContextUser) if err != nil { ctx.Error(http.StatusInternalServerError, "GetPublicKey", err) return
-
@@ -90,6 +83,7 @@binary, err := person.MarshalJSON() if err != nil { ctx.Error(http.StatusInternalServerError, "Serialize", err) return } response(ctx, binary) }
-
@@ -144,15 +138,11 @@ // responses:// "200": // "$ref": "#/responses/ActivityPub" user := user.GetUserByParamsName(ctx, "username") if user == nil { return } link := strings.TrimSuffix(setting.AppURL, "/") + strings.TrimSuffix(ctx.Req.URL.EscapedPath(), "/") feed, err := models.GetFeeds(ctx, models.GetFeedsOptions{ RequestedUser: user, Actor: user, RequestedUser: ctx.ContextUser, Actor: ctx.ContextUser, IncludePrivate: false, OnlyPerformedBy: true, IncludeDeleted: false,
-
@@ -196,13 +186,9 @@ // responses:// "200": // "$ref": "#/responses/ActivityPub" user := user.GetUserByParamsName(ctx, "username") if user == nil { return } link := strings.TrimSuffix(setting.AppURL, "/") + strings.TrimSuffix(ctx.Req.URL.EscapedPath(), "/") users, err := user_model.GetUserFollowing(user, utils.GetListOptions(ctx)) users, err := user_model.GetUserFollowing(ctx.ContextUser, utils.GetListOptions(ctx)) if err != nil { ctx.Error(http.StatusInternalServerError, "GetUserFollowing", err) return
-
@@ -241,13 +227,9 @@ // responses:// "200": // "$ref": "#/responses/ActivityPub" user := user.GetUserByParamsName(ctx, "username") if user == nil { return } link := strings.TrimSuffix(setting.AppURL, "/") + strings.TrimSuffix(ctx.Req.URL.EscapedPath(), "/") users, err := user_model.GetUserFollowers(user, utils.GetListOptions(ctx)) users, err := user_model.GetUserFollowers(ctx.ContextUser, utils.GetListOptions(ctx)) if err != nil { ctx.Error(http.StatusInternalServerError, "GetUserFollowers", err) return
-
-
-
@@ -5,7 +5,6 @@package activitypub import ( "context" "crypto" "crypto/x509" "encoding/pem"
-
@@ -21,7 +20,7 @@ ap "github.com/go-ap/activitypub""github.com/go-fed/httpsig" ) func getPublicKeyFromResponse(ctx context.Context, b []byte, keyID *url.URL) (p crypto.PublicKey, err error) { func getPublicKeyFromResponse(b []byte, keyID *url.URL) (p crypto.PublicKey, err error) { person := ap.PersonNew(ap.IRI(keyID.String())) err = person.UnmarshalJSON(b) if err != nil {
-
@@ -30,7 +29,7 @@ return} pubKey := person.PublicKey if pubKey.ID.String() != keyID.String() { err = fmt.Errorf("cannot find publicKey with id: %s in %s", keyID, b) err = fmt.Errorf("cannot find publicKey with id: %s in %s", keyID, string(b)) return } pubKeyPem := pubKey.PublicKeyPem
-
@@ -61,7 +60,7 @@ b, err := activitypub.Fetch(idIRI)if err != nil { return } pubKey, err := getPublicKeyFromResponse(*ctx, b, idIRI) pubKey, err := getPublicKeyFromResponse(b, idIRI) if err != nil { return }
-
-
-
@@ -10,19 +10,27 @@"code.gitea.io/gitea/modules/activitypub" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/json" "code.gitea.io/gitea/modules/log" ) func response(ctx *context.APIContext, binary []byte) { var jsonmap map[string]interface{} err := json.Unmarshal(binary, &jsonmap) if err != nil { ctx.Error(http.StatusInternalServerError, "Unmarshall", err) ctx.Error(http.StatusInternalServerError, "Unmarshal", err) return } jsonmap["@context"] = []string{"https://www.w3.org/ns/activitystreams", "https://w3id.org/security/v1"} ctx.Resp.Header().Add("Content-Type", activitypub.ActivityStreamsContentType) ctx.Resp.WriteHeader(http.StatusOK) binary, _ = json.Marshal(jsonmap) ctx.Resp.Write(binary) binary, err = json.Marshal(jsonmap) if err != nil { ctx.Error(http.StatusInternalServerError, "Marshal", err) return } if _, err = ctx.Resp.Write(binary); err != nil { log.Error("write to resp err: %v", err) } }
-
-
-
@@ -651,7 +651,7 @@ m.Post("/inbox", activitypub.ReqSignature(), activitypub.PersonInbox)m.Get("/outbox", activitypub.PersonOutbox) m.Get("/following", activitypub.PersonFollowing) m.Get("/followers", activitypub.PersonFollowers) }) }, context_service.UserAssignmentAPI()) }) } m.Get("/signing-key.gpg", misc.SigningKey)
-
-
-
@@ -87,7 +87,7 @@ }aliases := []string{ u.HTMLURL(), appURL.String() + "api/v1/activitypub/user/" + strings.ToLower(u.Name), appURL.String() + "api/v1/activitypub/user/" + url.PathEscape(u.Name), } if !u.KeepEmailPrivate { aliases = append(aliases, fmt.Sprintf("mailto:%s", u.Email))
-
@@ -106,7 +106,7 @@ },{ Rel: "self", Type: "application/activity+json", Href: appURL.String() + "api/v1/activitypub/user/" + strings.ToLower(u.Name), Href: appURL.String() + "api/v1/activitypub/user/" + url.PathEscape(u.Name), }, { Rel: "http://ostatus.org/schema/1.0/subscribe",
-
-
-
@@ -8,8 +8,9 @@ import ("path/filepath" "testing" "code.gitea.io/gitea/models/unittest" _ "code.gitea.io/gitea/models" "code.gitea.io/gitea/models/unittest" ) func TestMain(m *testing.M) {
-