summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS20
-rw-r--r--debian/changelog12
-rw-r--r--meson.build2
-rw-r--r--po/ja.po1068
-rw-r--r--src/daemon/goadaemon.c3
-rw-r--r--src/goabackend/goadavclient.c53
-rw-r--r--src/goabackend/goaimapauthlogin.c91
-rw-r--r--src/goabackend/goamsgraphprovider.c10
-rw-r--r--src/goabackend/goaoauth2provider.c25
-rw-r--r--src/goabackend/goaproviderdialog.c7
-rw-r--r--src/goabackend/goautils.c2
11 files changed, 757 insertions, 536 deletions
diff --git a/NEWS b/NEWS
index 3320198b..4474e41a 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,23 @@
+Overview of changes in 3.54.5
+=============================
+* Bugs fixed:
+ - #71 Adding GOA account fails with sonic.net IMAP service
+ - #162 Cannot add a ProtonMail bridge with IMAP + TLS
+ - #420 Nextcloud login does not work anymore due to OPTIONS /login request
+ - #429 Linked online accounts no longer work
+ - #430 Invalid URI when adding Google account
+ - !340 goamsgraphprovider: ensure a valid PresentationIdentity
+ - !345 goadaemon: complete GTasks to avoid a scary debug warning
+
+Overview of changes in 3.54.4
+=============================
+* Bugs fixed:
+ - Fix Nextcloud and mailbox.org preconfiguration
+ - Add DAV preconfig for mail.ru
+
+* Translation updates:
+ - Japanese (Takayuki Kusano)
+
Overview of changes in 3.54.3
=============================
* Bugs fixed:
diff --git a/debian/changelog b/debian/changelog
index 4160d5fe..f3aeaa66 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,15 @@
+gnome-online-accounts (3.54.5-1) unstable; urgency=medium
+
+ * New upstream bugfix release
+
+ -- Jeremy Bícha <[email protected]> Tue, 05 Aug 2025 14:33:53 -0400
+
+gnome-online-accounts (3.54.3-3) unstable; urgency=medium
+
+ * Release to unstable
+
+ -- Jeremy Bícha <[email protected]> Sun, 27 Jul 2025 10:32:36 +0200
+
gnome-online-accounts (3.54.3-2) experimental; urgency=medium
* Disable Microsoft provider (Closes: #1100711)
diff --git a/meson.build b/meson.build
index 7c7c3cba..5cbc1bd5 100644
--- a/meson.build
+++ b/meson.build
@@ -1,6 +1,6 @@
project(
'gnome-online-accounts', 'c',
- version: '3.54.3',
+ version: '3.54.5',
license: 'LGPL2+',
default_options: [
'buildtype=debugoptimized',
diff --git a/po/ja.po b/po/ja.po
index 153658db..bee78747 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -1,11 +1,11 @@
# gnome-online-accounts ja.po.
-# Copyright (C) 2011-2020 gnome-online-accounts's COPYRIGHT HOLDER
+# Copyright (C) 2011-2020, 2025 gnome-online-accounts's COPYRIGHT HOLDER
# This file is distributed under the same license as the gnome-online-accounts package.
# Takeshi AIHANA <[email protected]>, 2011.
# Hajime Taira <[email protected]>, 2012, 2016.
# Shuuji Takahashi <[email protected]>, 2012.
# Noriko Mizumoto <[email protected]>, 2012.
-# Takayuki KUSANO <[email protected]>, 2012.
+# Kusano Takayuki <https://bsky.app/profile/tkusano.jp>, 2012, 2025.
# Jiro Matsuzawa <[email protected]>, 2013, 2014, 2015.
# Ikuya Awashiro <[email protected]>, 2014.
# Kento Tsuji <[email protected]>, 2014.
@@ -14,13 +14,13 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: gnome-online-accounts master\n"
+"Project-Id-Version: gnome-online-accounts gnome-48\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-online-accounts/"
"issues\n"
-"POT-Creation-Date: 2020-01-04 22:21+0000\n"
-"PO-Revision-Date: 2020-01-20 00:00+0900\n"
-"Last-Translator: sicklylife <[email protected]>\n"
-"Language-Team: Japanese <[email protected]>\n"
+"POT-Creation-Date: 2025-05-24 21:56+0000\n"
+"PO-Revision-Date: 2020-05-26 23:08+0900\n"
+"Last-Translator: Kusano Takayuki <https://bsky.app/profile/tkusano.jp>\n"
+"Language-Team: Japanese <https://l10n.gnome.org/teams/ja/>\n"
"Language: ja\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -30,48 +30,86 @@ msgstr ""
#: data/org.gnome.online-accounts.gschema.xml:6
msgid "List of providers that are allowed to be loaded"
-msgstr ""
+msgstr "読み込みが許可されているプロバイダーのリスト"
#: data/org.gnome.online-accounts.gschema.xml:7
msgid ""
"A list of strings representing the providers that are allowed to be loaded "
-"(default: 'all'). This is only evaluated on startup."
+"(default: 'all'). This is only evaluated on startup. Deprecated: use "
+"goa.conf in the system config directory instead, with a key [providers] "
+"enable=all instead. The key is comma-separated list of the provider names."
msgstr ""
+"読み込みが許可されているプロバイダーを表す文字列のリスト (デフォルト: "
+"'all')。起動時にのみ評価されます。非推奨: 代わりにシステム設定ディレクトリの "
+"goa.conf を使用し、キー [providers] enable=all を使用すること。キーはプロバイ"
+"ダー名のカンマ区切りリストです。"
#. TODO: more specific
-#: src/daemon/goadaemon.c:1136 src/daemon/goadaemon.c:1433
+#: src/daemon/goadaemon.c:1162 src/daemon/goadaemon.c:1482
#, c-format
msgid "Failed to find a provider for: %s"
msgstr "次のプロバイダーが見つかりません: %s"
-#: src/daemon/goadaemon.c:1376
+#: src/daemon/goadaemon.c:1425
msgid "IsLocked property is set for account"
msgstr "IsLocked プロパティがアカウントに設定されています"
#. TODO: more specific
-#: src/daemon/goadaemon.c:1421
+#: src/daemon/goadaemon.c:1470
msgid "ProviderType property is not set for account"
msgstr "ProviderType プロパティがアカウントに設定されていません"
+#: src/daemon/goadaemon.c:1632
+#, c-format
+msgid "Failed to sign in to “%s”"
+msgstr "“%s” へのサインインに失敗しました"
+
+#: src/daemon/goadaemon.c:1637
+msgid "Failed to sign in to multiple accounts"
+msgstr "複数のアカウントへのサインインに失敗しました"
+
+#: src/daemon/goadaemon.c:1646
+msgid "Online Accounts"
+msgstr "オンラインアカウント"
+
+#: src/daemon/goadaemon.c:1649
+msgid "Account Action Required"
+msgstr "アカウントのアクションが必要です"
+
+#. TODO: more specific
+#: src/goabackend/goadavclient.c:1202 src/goabackend/goaimapauthlogin.c:104
+#: src/goabackend/goasmtpauth.c:102 src/goabackend/goautils.c:802
+msgid "Authentication failed"
+msgstr "認証失敗"
+
+#: src/goabackend/goadavclient.c:1209
+msgid "Cannot find WebDAV endpoint"
+msgstr "WebDAV エンドポイントが見つかりませんでした"
+
+#: src/goabackend/goadavclient.c:1311 src/goabackend/goawebdavprovider.c:648
+#, c-format
+msgid "Invalid URI: %s"
+msgstr "無効な URI: %s"
+
#. TODO: more specific
-#: src/goabackend/goaewsclient.c:258
+#: src/goabackend/goaewsclient.c:278
msgid "Failed to parse autodiscover response XML"
msgstr "自動検出の応答 XML の解析に失敗しました"
#. TODO: more specific
#. Translators: the parameter is an XML element name.
-#: src/goabackend/goaewsclient.c:269 src/goabackend/goaewsclient.c:284
-#: src/goabackend/goaewsclient.c:299
+#: src/goabackend/goaewsclient.c:289 src/goabackend/goaewsclient.c:304
+#: src/goabackend/goaewsclient.c:319
#, c-format
msgid "Failed to find “%s” element"
msgstr "“%s”エレメントの検出に失敗しました"
#. TODO: more specific
-#: src/goabackend/goaewsclient.c:320
-msgid "Failed to find ASUrl and OABUrl in autodiscover response"
-msgstr "自動検出の応答内での ASUrl と OABUrl の検出に失敗しました"
+#: src/goabackend/goaewsclient.c:340
+msgid "Failed to find ASUrl in autodiscover response"
+msgstr "自動検出の応答内での ASUrl の検出に失敗しました"
-#: src/goabackend/goaexchangeprovider.c:51
+#: src/goabackend/goaexchangeprovider.c:52
msgid "Microsoft Exchange"
msgstr "Microsoft Exchange"
@@ -79,141 +117,83 @@ msgstr "Microsoft Exchange"
#. * (eg., [email protected] or rishi), and the
#. * (%s, %d) is the error domain and code.
#.
-#: src/goabackend/goaexchangeprovider.c:248
-#: src/goabackend/goalastfmprovider.c:279
-#: src/goabackend/goaowncloudprovider.c:291
+#: src/goabackend/goaexchangeprovider.c:258
+#: src/goabackend/goawebdavprovider.c:304
#, c-format
msgid "Invalid password with username “%s” (%s, %d): "
msgstr "ユーザー名“%s”のパスワードが不正です (%s, %d): "
-#: src/goabackend/goaexchangeprovider.c:394
-#: src/goabackend/goaimapsmtpprovider.c:647
-msgid "_E-mail"
+#. provider name
+#: src/goabackend/goaexchangeprovider.c:389
+msgid ""
+"Connect to a Microsoft Exchange provider to access calendars, contacts and "
+"files"
+msgstr ""
+"Microsoft Exchange プロバイダーに接続して、カレンダー、連絡先、ファイルにアク"
+"セスします"
+
+#: src/goabackend/goaexchangeprovider.c:392
+#: src/goabackend/goaimapsmtpprovider.c:701
+msgid "_Email"
msgstr "メール(_E)"
-#: src/goabackend/goaexchangeprovider.c:395
-#: src/goabackend/goafedoraprovider.c:574
-#: src/goabackend/goaimapsmtpprovider.c:667
-#: src/goabackend/goaimapsmtpprovider.c:687
-#: src/goabackend/goalastfmprovider.c:421
-#: src/goabackend/goaowncloudprovider.c:509
+#: src/goabackend/goaexchangeprovider.c:393
+#: src/goabackend/goafedoraprovider.c:171
+#: src/goabackend/goaimapsmtpprovider.c:702
+#: src/goabackend/goaimapsmtpprovider.c:745
+#: src/goabackend/goaimapsmtpprovider.c:789
+#: src/goabackend/goawebdavprovider.c:408
msgid "_Password"
msgstr "パスワード(_P)"
-#: src/goabackend/goaexchangeprovider.c:398
-msgid "_Custom"
-msgstr "カスタム(_C)"
+#: src/goabackend/goaexchangeprovider.c:394
+msgid ""
+"Exchange account details will be auto-detected from your email address when "
+"possible"
+msgstr ""
+"Exchange アカウントの詳細は、可能な場合はメールアドレスから自動検出されます"
+
+#: src/goabackend/goaexchangeprovider.c:405
+msgid "Account Details"
+msgstr "アカウントの詳細"
-#: src/goabackend/goaexchangeprovider.c:409
-#: src/goabackend/goafedoraprovider.c:573
-#: src/goabackend/goaimapsmtpprovider.c:666
-#: src/goabackend/goaimapsmtpprovider.c:686
-#: src/goabackend/goalastfmprovider.c:420
-#: src/goabackend/goaowncloudprovider.c:508
+#: src/goabackend/goaexchangeprovider.c:406
+#: src/goabackend/goafedoraprovider.c:170
+#: src/goabackend/goaimapsmtpprovider.c:744
+#: src/goabackend/goaimapsmtpprovider.c:788
+#: src/goabackend/goawebdavprovider.c:407
msgid "User_name"
msgstr "ユーザー名(_N)"
-#: src/goabackend/goaexchangeprovider.c:410
-#: src/goabackend/goaowncloudprovider.c:507
-msgid "_Server"
-msgstr "サーバー(_S)"
-
-#. --
-#: src/goabackend/goaexchangeprovider.c:420
-#: src/goabackend/goafedoraprovider.c:581
-#: src/goabackend/goaimapsmtpprovider.c:699
-#: src/goabackend/goakerberosprovider.c:583
-#: src/goabackend/goalastfmprovider.c:429
-#: src/goabackend/goaowncloudprovider.c:523
-msgid "_Cancel"
-msgstr "キャンセル(_C)"
+#: src/goabackend/goaexchangeprovider.c:407
+msgid "_Domain"
+msgstr "ドメイン(_D)"
-#: src/goabackend/goaexchangeprovider.c:421
-#: src/goabackend/goafedoraprovider.c:582
-#: src/goabackend/goakerberosprovider.c:584
-#: src/goabackend/goalastfmprovider.c:430
-#: src/goabackend/goaowncloudprovider.c:524
-msgid "C_onnect"
-msgstr "接続(_O)"
-
-#: src/goabackend/goaexchangeprovider.c:437
-#: src/goabackend/goafedoraprovider.c:597
-#: src/goabackend/goaimapsmtpprovider.c:715
-#: src/goabackend/goakerberosprovider.c:599
-#: src/goabackend/goalastfmprovider.c:446
-#: src/goabackend/goaowncloudprovider.c:539
-msgid "Connecting…"
-msgstr "接続中…"
-
-#: src/goabackend/goaexchangeprovider.c:537
-#: src/goabackend/goaexchangeprovider.c:731
-#: src/goabackend/goafedoraprovider.c:746
-#: src/goabackend/goaimapsmtpprovider.c:865
-#: src/goabackend/goaimapsmtpprovider.c:900
-#: src/goabackend/goaimapsmtpprovider.c:992
-#: src/goabackend/goaimapsmtpprovider.c:1249
-#: src/goabackend/goaimapsmtpprovider.c:1325
-#: src/goabackend/goakerberosprovider.c:939
-#: src/goabackend/goalastfmprovider.c:644
-#: src/goabackend/goalastfmprovider.c:812
-#: src/goabackend/goamediaserverprovider.c:412
-#: src/goabackend/goaoauth2provider.c:995 src/goabackend/goaoauthprovider.c:859
-#: src/goabackend/goaowncloudprovider.c:661
-#: src/goabackend/goaowncloudprovider.c:881
-msgid "Dialog was dismissed"
-msgstr "ダイアログが閉じられました"
+#: src/goabackend/goaexchangeprovider.c:408
+msgid "Example domain: example.com"
+msgstr "ドメインの例: example.com"
-#: src/goabackend/goaexchangeprovider.c:575
-#: src/goabackend/goaexchangeprovider.c:759
-#: src/goabackend/goafedoraprovider.c:792
-#: src/goabackend/goaimapsmtpprovider.c:933
-#: src/goabackend/goaimapsmtpprovider.c:1030
-#: src/goabackend/goaimapsmtpprovider.c:1276
-#: src/goabackend/goaimapsmtpprovider.c:1353
-#: src/goabackend/goalastfmprovider.c:678
-#: src/goabackend/goalastfmprovider.c:831
-#: src/goabackend/goaowncloudprovider.c:706
-#: src/goabackend/goaowncloudprovider.c:908
-#, c-format
-msgid "Dialog was dismissed (%s, %d): "
-msgstr "ダイアログが閉じられました (%s, %d): "
-
-#: src/goabackend/goaexchangeprovider.c:588
-#: src/goabackend/goaimapsmtpprovider.c:946
-#: src/goabackend/goaimapsmtpprovider.c:1043
-#: src/goabackend/goaowncloudprovider.c:719
-msgid "_Ignore"
-msgstr "無視する(_I)"
+#: src/goabackend/goafedoraprovider.c:51
+msgid "Fedora"
+msgstr "Fedora"
-#: src/goabackend/goaexchangeprovider.c:593
-#: src/goabackend/goaexchangeprovider.c:778
-#: src/goabackend/goafedoraprovider.c:803
-#: src/goabackend/goaimapsmtpprovider.c:951
-#: src/goabackend/goaimapsmtpprovider.c:1048
-#: src/goabackend/goaimapsmtpprovider.c:1295
-#: src/goabackend/goaimapsmtpprovider.c:1372
-#: src/goabackend/goakerberosprovider.c:1032
-#: src/goabackend/goalastfmprovider.c:690
-#: src/goabackend/goalastfmprovider.c:848
-#: src/goabackend/goaowncloudprovider.c:724
-#: src/goabackend/goaowncloudprovider.c:927
-msgid "_Try Again"
-msgstr "やり直す(_T)"
+#: src/goabackend/goafedoraprovider.c:167
+#: src/goabackend/goakerberosprovider.c:598
+msgid "Access restricted web and network resources for your organization"
+msgstr "自組織の制限された Web およびネットワークリソースにアクセスします"
-#: src/goabackend/goaexchangeprovider.c:598
-#: src/goabackend/goaexchangeprovider.c:771
-msgid "Error connecting to Microsoft Exchange server"
-msgstr "Microsoft Exchange サーバーへの接続に失敗しました"
+#: src/goabackend/goafedoraprovider.c:339
+#, c-format
+msgid "Failed to get principal from user name “%s”"
+msgstr "ユーザー名“%s”からプリンシパルを取得できませんでした"
-#: src/goabackend/goafacebookprovider.c:56
-msgid "Facebook"
-msgstr "Facebook"
+#: src/goabackend/goagoogleprovider.c:57
+msgid "Google"
+msgstr "Google"
-#: src/goabackend/goafacebookprovider.c:183
-#: src/goabackend/goaflickrprovider.c:155
-#: src/goabackend/goafoursquareprovider.c:154
-#: src/goabackend/goagoogleprovider.c:184
-#: src/goabackend/goawindowsliveprovider.c:159
+#: src/goabackend/goagoogleprovider.c:211
+#: src/goabackend/goamsgraphprovider.c:184
+#: src/goabackend/goawindowsliveprovider.c:163
#, c-format
msgid ""
"Expected status 200 when requesting your identity, instead got status %d (%s)"
@@ -222,109 +202,34 @@ msgstr ""
"け取ったステータスは %d (%s) でした"
#. TODO: more specific
-#: src/goabackend/goafacebookprovider.c:202
-#: src/goabackend/goafacebookprovider.c:213
-#: src/goabackend/goafacebookprovider.c:219
-#: src/goabackend/goaflickrprovider.c:174
-#: src/goabackend/goaflickrprovider.c:185
-#: src/goabackend/goaflickrprovider.c:196
-#: src/goabackend/goaflickrprovider.c:205
-#: src/goabackend/goaflickrprovider.c:218
-#: src/goabackend/goafoursquareprovider.c:173
-#: src/goabackend/goafoursquareprovider.c:184
-#: src/goabackend/goafoursquareprovider.c:195
-#: src/goabackend/goafoursquareprovider.c:206
-#: src/goabackend/goafoursquareprovider.c:215
-#: src/goabackend/goafoursquareprovider.c:228
-#: src/goabackend/goagoogleprovider.c:203
-#: src/goabackend/goagoogleprovider.c:214
-#: src/goabackend/goalastfmprovider.c:204
-#: src/goabackend/goalastfmprovider.c:213
-#: src/goabackend/goalastfmprovider.c:222
-#: src/goabackend/goalastfmprovider.c:230
-#: src/goabackend/goalastfmprovider.c:236
-#: src/goabackend/goalastfmprovider.c:504
-#: src/goabackend/goalastfmprovider.c:513
-#: src/goabackend/goalastfmprovider.c:530
-#: src/goabackend/goalastfmprovider.c:536
-#: src/goabackend/goaoauth2provider.c:656
+#: src/goabackend/goagoogleprovider.c:230
+#: src/goabackend/goagoogleprovider.c:241
+#: src/goabackend/goamsgraphprovider.c:203
+#: src/goabackend/goamsgraphprovider.c:214
+#: src/goabackend/goamsgraphprovider.c:227
+#: src/goabackend/goamsgraphprovider.c:252
#: src/goabackend/goaoauth2provider.c:686
-#: src/goabackend/goaoauth2provider.c:697 src/goabackend/goautils.c:296
-#: src/goabackend/goawindowsliveprovider.c:178
-#: src/goabackend/goawindowsliveprovider.c:189
-#: src/goabackend/goawindowsliveprovider.c:198
-#: src/goabackend/goawindowsliveprovider.c:211
+#: src/goabackend/goaoauth2provider.c:743
+#: src/goabackend/goaoauth2provider.c:773
+#: src/goabackend/goaoauth2provider.c:784 src/goabackend/goautils.c:136
+#: src/goabackend/goawindowsliveprovider.c:182
+#: src/goabackend/goawindowsliveprovider.c:193
+#: src/goabackend/goawindowsliveprovider.c:202
+#: src/goabackend/goawindowsliveprovider.c:215
msgid "Could not parse response"
msgstr "応答を解析できませんでした"
-#: src/goabackend/goafedoraprovider.c:94
-msgid "Fedora"
-msgstr "Fedora"
-
-#: src/goabackend/goafedoraprovider.c:208
-#: src/goabackend/goakerberosprovider.c:240
-msgid "Ticketing is disabled for account"
-msgstr "このアカウントのチケッティングは無効化されています"
-
-#: src/goabackend/goafedoraprovider.c:233
-#: src/goabackend/goakerberosprovider.c:265
-#, c-format
-msgid "Could not find saved credentials for principal “%s” in keyring"
-msgstr "キーリングにユーザー“%s”用に保存した証明書が見つかりませんでした"
-
-#: src/goabackend/goafedoraprovider.c:246
-#: src/goabackend/goakerberosprovider.c:278
-#, c-format
-msgid "Did not find password for principal “%s” in credentials"
-msgstr "証明書の中にユーザー“%s”のパスワードが見つかりませんでした"
-
-#: src/goabackend/goafedoraprovider.c:805
-msgid "Error connecting to Fedora"
-msgstr "Fedora への接続に失敗しました"
-
-#: src/goabackend/goafedoraprovider.c:1198
-#: src/goabackend/goakerberosprovider.c:1366
-msgid "Identity service returned invalid key"
-msgstr "アイデンティティサーバーより無効なキーが返されました"
-
-#: src/goabackend/goaflickrprovider.c:56
-msgid "Flickr"
-msgstr "Flickr"
-
-#: src/goabackend/goaflickrprovider.c:271
-msgid "Your system time is invalid. Check your date and time settings."
-msgstr ""
-"お使いのシステムの時刻が正しくありません。日付と時刻の設定を確認してくださ"
-"い。"
-
-#: src/goabackend/goafoursquareprovider.c:57
-msgid "Foursquare"
-msgstr "Foursquare"
-
-#: src/goabackend/goagoogleprovider.c:56
-msgid "Google"
-msgstr "Google"
-
#. TODO: more specific
-#: src/goabackend/goaimapauthlogin.c:84 src/goabackend/goasmtpauth.c:149
+#: src/goabackend/goaimapauthlogin.c:84 src/goabackend/goaoauth2provider.c:1284
+#: src/goabackend/goasmtpauth.c:149
msgid "Service not available"
msgstr "サービスが利用できません"
-#. TODO: more specific
-#: src/goabackend/goaimapauthlogin.c:104 src/goabackend/goalastfmprovider.c:521
-#: src/goabackend/goasmtpauth.c:102 src/goabackend/goautils.c:861
-msgid "Authentication failed"
-msgstr "認証失敗"
-
-#: src/goabackend/goaimapauthlogin.c:129
-msgid "Server does not support PLAIN"
-msgstr "サーバーが PLAIN をサポートしていません"
-
-#: src/goabackend/goaimapauthlogin.c:181 src/goabackend/goasmtpauth.c:600
+#: src/goabackend/goaimapauthlogin.c:166 src/goabackend/goasmtpauth.c:625
msgid "Server does not support STARTTLS"
msgstr "サーバーが STARTTLS をサポートしていません"
-#: src/goabackend/goaimapsmtpprovider.c:53
+#: src/goabackend/goaimapsmtpprovider.c:55
msgid "IMAP and SMTP"
msgstr "IMAP と SMTP"
@@ -338,140 +243,208 @@ msgstr "IMAP と SMTP"
#. * username (eg., rishi), and the (%s, %d)
#. * is the error domain and code.
#.
-#: src/goabackend/goaimapsmtpprovider.c:327
-#: src/goabackend/goaimapsmtpprovider.c:378
+#: src/goabackend/goaimapsmtpprovider.c:320
+#: src/goabackend/goaimapsmtpprovider.c:369
#, c-format
msgid "Invalid %s with username “%s” (%s, %d): "
msgstr "ユーザー名“%2$s”の %1$s が不正です (%3$s, %4$d): "
-#. Translators: the following four strings are used to show a
-#. * combo box similar to the one in the evolution module.
-#. * Encryption: None
-#. * STARTTLS after connecting
-#. * SSL on a dedicated port
-#.
-#: src/goabackend/goaimapsmtpprovider.c:564
-msgid "_Encryption"
-msgstr "暗号化(_E)"
+#: src/goabackend/goaimapsmtpprovider.c:566
+#: src/goabackend/goaimapsmtpprovider.c:589
+#: src/goabackend/goaimapsmtpprovider.c:724
+#: src/goabackend/goaimapsmtpprovider.c:765
+#: src/goabackend/goaimapsmtpprovider.c:809
+msgid "Auto-detected"
+msgstr "自動生成"
-#: src/goabackend/goaimapsmtpprovider.c:567
-msgid "None"
-msgstr "なし"
+#: src/goabackend/goaimapsmtpprovider.c:618
+msgid "Unable to auto-detect IMAP and SMTP settings"
+msgstr "IMAP と SMTP の設定を自動検出できませんでした"
-#: src/goabackend/goaimapsmtpprovider.c:570
+#: src/goabackend/goaimapsmtpprovider.c:689
msgid "STARTTLS after connecting"
msgstr "接続後に STARTTLS"
-#: src/goabackend/goaimapsmtpprovider.c:573
+#. GOA_TLS_TYPE_STARTTLS
+#: src/goabackend/goaimapsmtpprovider.c:690
msgid "SSL on a dedicated port"
msgstr "専用のポートで SSL"
-#: src/goabackend/goaimapsmtpprovider.c:648
+#: src/goabackend/goaimapsmtpprovider.c:695
+#: src/goabackend/goaimapsmtpprovider.c:1435
+msgid "Email"
+msgstr "メール"
+
+#: src/goabackend/goaimapsmtpprovider.c:696
+msgid "Connect to an email account"
+msgstr "メールアカウントに接続します"
+
+#: src/goabackend/goaimapsmtpprovider.c:700
msgid "_Name"
msgstr "名前(_N)"
-#: src/goabackend/goaimapsmtpprovider.c:665
+#: src/goabackend/goaimapsmtpprovider.c:703
+msgid ""
+"IMAP and SMTP details will be auto-detected from your service provider when "
+"possible"
+msgstr ""
+"IMAP と SMTP の詳細は、可能な場合はサービスプロバイダーから自動検出されます"
+
+#. IMAP
+#: src/goabackend/goaimapsmtpprovider.c:742
+msgid "IMAP Settings"
+msgstr "IMAP の設定"
+
+#: src/goabackend/goaimapsmtpprovider.c:743
msgid "IMAP _Server"
msgstr "IMAP サーバー(_S)"
-#: src/goabackend/goaimapsmtpprovider.c:685
+#: src/goabackend/goaimapsmtpprovider.c:754
+#: src/goabackend/goaimapsmtpprovider.c:798
+msgid "Encryption"
+msgstr "暗号化"
+
+#: src/goabackend/goaimapsmtpprovider.c:779
+msgid "Example server: imap.example.com"
+msgstr "サーバーの例: imap.example.com"
+
+#. SMTP
+#: src/goabackend/goaimapsmtpprovider.c:786
+msgid "SMTP Settings"
+msgstr "SMTP の設定"
+
+#: src/goabackend/goaimapsmtpprovider.c:787
msgid "SMTP _Server"
msgstr "SMTP サーバー(_S)"
-#: src/goabackend/goaimapsmtpprovider.c:700
-#: src/goabackend/goaimapsmtpprovider.c:972
-#: src/goabackend/goaimapsmtpprovider.c:1305
-msgid "_Forward"
-msgstr "次へ(_F)"
-
-#: src/goabackend/goaimapsmtpprovider.c:956
-#: src/goabackend/goaimapsmtpprovider.c:1288
-msgid "Error connecting to IMAP server"
-msgstr "IMAP サーバーへの接続に失敗しました"
-
-#: src/goabackend/goaimapsmtpprovider.c:1053
-#: src/goabackend/goaimapsmtpprovider.c:1365
-msgid "Error connecting to SMTP server"
-msgstr "SMTP サーバーへの接続に失敗しました"
-
-#: src/goabackend/goaimapsmtpprovider.c:1476
-msgid "E-mail"
-msgstr "メール"
+#: src/goabackend/goaimapsmtpprovider.c:823
+msgid "Example server: smtp.example.com"
+msgstr "サーバーの例: smtp.example.com"
-#: src/goabackend/goaimapsmtpprovider.c:1480
+#: src/goabackend/goaimapsmtpprovider.c:1426
msgid "Name"
msgstr "名前"
-#: src/goabackend/goaimapsmtpprovider.c:1490
-#: src/goabackend/goaimapsmtpprovider.c:1494
+#: src/goabackend/goaimapsmtpprovider.c:1452
msgid "IMAP"
msgstr "IMAP"
-#: src/goabackend/goaimapsmtpprovider.c:1505
-#: src/goabackend/goaimapsmtpprovider.c:1509
+#: src/goabackend/goaimapsmtpprovider.c:1470
msgid "SMTP"
msgstr "SMTP"
-#: src/goabackend/goakerberosprovider.c:92
-msgid "Enterprise Login (Kerberos)"
-msgstr "企業向けログイン (Kerberos)"
+#: src/goabackend/goakerberosprovider.c:80
+msgid "Kerberos"
+msgstr "Kerberos"
-#: src/goabackend/goakerberosprovider.c:578
-msgid "_Principal"
-msgstr "プリンシパル(_P)"
-
-#: src/goabackend/goakerberosprovider.c:793
+#: src/goabackend/goakerberosprovider.c:425
msgid "Operation was cancelled"
msgstr "処理はキャンセルされました"
-#: src/goabackend/goakerberosprovider.c:837
-#: src/goaidentity/goaidentityservice.c:1265
+#: src/goabackend/goakerberosprovider.c:469
+#: src/goaidentity/goaidentityservice.c:1114
msgid "Log In to Realm"
msgstr "レルムへのログイン"
-#: src/goabackend/goakerberosprovider.c:838
+#: src/goabackend/goakerberosprovider.c:470
msgid "Please enter your password below."
msgstr "以下にパスワードを入力してください。"
-#: src/goabackend/goakerberosprovider.c:839
+#: src/goabackend/goakerberosprovider.c:471
msgid "Remember this password"
msgstr "このパスワードを記憶する"
-#: src/goabackend/goakerberosprovider.c:1027
-msgid "Error connecting to enterprise identity server"
-msgstr "企業アイデンティティサーバーへの接続中にエラーが発生しました"
+#: src/goabackend/goakerberosprovider.c:601
+msgid "_Principal"
+msgstr "プリンシパル(_P)"
-#: src/goabackend/goalastfmprovider.c:57
-msgid "Last.fm"
-msgstr "Last.fm"
+#: src/goabackend/goakerberosprovider.c:602
+msgid "Example principal: [email protected]"
+msgstr "プリンシパルの例: [email protected]"
-#: src/goabackend/goalastfmprovider.c:692
-#: src/goabackend/goalastfmprovider.c:842
-msgid "Error connecting to Last.fm"
-msgstr "Last.fm への接続に失敗しました"
+#: src/goabackend/goakerberosprovider.c:1308
+msgid "Ticketing is disabled for account"
+msgstr "このアカウントのチケッティングは無効化されています"
-#: src/goabackend/goamediaserverprovider.c:55
-msgid "Media Server"
-msgstr "メディアサーバー"
+#: src/goabackend/goakerberosprovider.c:1331
+#, c-format
+msgid "Could not find saved credentials for principal “%s” in keyring"
+msgstr "キーリングにユーザー“%s”用に保存した証明書が見つかりませんでした"
-#: src/goabackend/goamediaserverprovider.c:308
-msgid ""
-"Personal content can be added to your applications through a media server "
-"account."
-msgstr ""
-"メディアサーバーのアカウントを通じて個人のコンテンツをお使いのアプリケーショ"
-"ンに追加できます。"
+#: src/goabackend/goakerberosprovider.c:1345
+#, c-format
+msgid "Did not find password for principal “%s” in credentials"
+msgstr "証明書の中にユーザー“%s”のパスワードが見つかりませんでした"
-#: src/goabackend/goamediaserverprovider.c:321
-msgid "Available Media Servers"
-msgstr "利用できるメディアサーバー"
+#: src/goabackend/goakerberosprovider.c:1527
+msgid "Identity service returned invalid key"
+msgstr "アイデンティティサーバーより無効なキーが返されました"
+
+#: src/goabackend/goamailclient.c:853
+#, c-format
+msgid "Invalid email address “%s”"
+msgstr "無効なメールアドレス “%s”"
-#: src/goabackend/goamediaserverprovider.c:352
-msgid "No media servers found"
-msgstr "メディアサーバーが見つかりませんでした"
+#: src/goabackend/goamsgraphprovider.c:64
+msgid "Microsoft 365"
+msgstr "Microsoft 365"
-#. Translators: the %d is a HTTP status code and the %s is a textual description of it
-#: src/goabackend/goaoauth2provider.c:632 src/goabackend/goaoauthprovider.c:542
+#. provider name
+#: src/goabackend/goamsgraphprovider.c:486
+msgid "Connect to Microsoft 365 to access email, calendars, contacts and files"
+msgstr ""
+"メール、カレンダー、連絡先、ファイルにアクセスするために Microsoft 365 に接続"
+"します"
+
+#: src/goabackend/goamsgraphprovider.c:490
+msgid "Use Organization Account"
+msgstr "組織アカウントを使用する"
+
+#: src/goabackend/goamsgraphprovider.c:491
+msgid "Connect using details from an organization or developer account"
+msgstr "組織または開発者アカウントの詳細を使用して接続します"
+
+#. Translators: See https://learn.microsoft.com/globalization/reference/microsoft-terminology
+#: src/goabackend/goamsgraphprovider.c:498
+msgid "Enter the details provided by your organization"
+msgstr "組織から提供された詳細を入力してください"
+
+#: src/goabackend/goamsgraphprovider.c:500
+msgid "_Client ID (Optional)"
+msgstr "クライアント ID (オプション)(_C)"
+
+#. Translators: See https://learn.microsoft.com/globalization/reference/microsoft-terminology
+#: src/goabackend/goamsgraphprovider.c:502
+msgid "_Tenant ID"
+msgstr "テナント ID (_T)"
+
+#: src/goabackend/goamsgraphprovider.c:503
+msgid "Example ID: 00000000-0000-0000-0000-000000000000"
+msgstr "ID の例: 00000000-0000-0000-0000-000000000000"
+
+#: src/goabackend/goamsgraphprovider.c:529
+#: src/goabackend/goaoauth2provider.c:1025
+#: src/goabackend/goaproviderdialog.c:840
+msgid "_Sign In…"
+msgstr "サインイン(_S)…"
+
+#: src/goabackend/goamsgraphprovider.c:537
+#: src/goabackend/goaoauth2provider.c:1033
+msgid "_Copy Link"
+msgstr "リンクをコピー(_C)"
+
+#: src/goabackend/goamsgraphprovider.c:550
+#: src/goabackend/goaoauth2provider.c:1043
+msgid "Copy the authorization URL to continue with a specific web browser."
+msgstr "承認 URL をコピーして、特定の Web ブラウザーで続行します。"
+
+#: src/goabackend/goaoauth2provider.c:708
+#: src/goabackend/goaoauth2provider.c:926
+#, c-format
+msgid "Authorization response: %s"
+msgstr "認証の応答: %s"
+
+#: src/goabackend/goaoauth2provider.c:719
#, c-format
msgid ""
"Expected status 200 when requesting access token, instead got status %d (%s)"
@@ -479,277 +452,304 @@ msgstr ""
"token を要求した時に返されるステータスは 200 を期待していましたが、代わりに受"
"け取ったステータスは %d (%s) でした"
-#: src/goabackend/goaoauth2provider.c:814
+#: src/goabackend/goaoauth2provider.c:863
msgid "Authorization response: "
msgstr "認証の応答: "
-#: src/goabackend/goaoauth2provider.c:884
-#, c-format
-msgid "Authorization response: %s"
-msgstr "認証の応答: %s"
+#: src/goabackend/goaoauth2provider.c:934
+msgid "Failed to authenticate"
+msgstr "認証に失敗しました"
-#: src/goabackend/goaoauth2provider.c:1021
-#: src/goabackend/goaoauthprovider.c:890
+#: src/goabackend/goaoauth2provider.c:970
msgid "Error getting an Access Token: "
msgstr "アクセス用トークンの取得エラー: "
-#: src/goabackend/goaoauth2provider.c:1036
-#: src/goabackend/goaoauthprovider.c:903
+#: src/goabackend/goaoauth2provider.c:986
msgid "Error getting identity: "
msgstr "識別情報の取得中にエラー発生: "
-#: src/goabackend/goaoauth2provider.c:1230
-#: src/goabackend/goaoauthprovider.c:1168
+#: src/goabackend/goaoauth2provider.c:1016
+#, c-format
+msgid "Sign in to %s with your browser"
+msgstr "ブラウザーで %s にサインインします"
+
+#: src/goabackend/goaoauth2provider.c:1554
+#: src/goabackend/goaoauth2provider.c:1726
+msgid "Copied to clipboard"
+msgstr "クリップボードにコピーしました"
+
+#: src/goabackend/goaoauth2provider.c:1677
#, c-format
msgid "Was asked to log in as %s, but logged in as %s"
msgstr "%s でログインしたものの最終的に %s でのログインになりました"
-#: src/goabackend/goaoauth2provider.c:1382
+#: src/goabackend/goaoauth2provider.c:1920
msgid "Credentials do not contain access_token"
msgstr "証明書に access_token が含まれていません"
-#: src/goabackend/goaoauth2provider.c:1421
-#: src/goabackend/goaoauthprovider.c:1383
+#: src/goabackend/goaoauth2provider.c:1964
#, c-format
msgid "Failed to refresh access token (%s, %d): "
msgstr "アクセス用トークン (%s, %d) の更新エラー: "
-#: src/goabackend/goaoauthprovider.c:565
-msgid "Missing access_token or access_token_secret headers in response"
-msgstr ""
-"受信した応答の中に access_token または access_token_secret のヘッダーがありま"
-"せん"
-
-#: src/goabackend/goaoauthprovider.c:773
-msgid "Error getting a Request Token: "
-msgstr "リクエスト用トークンの取得エラー: "
-
-#. Translators: the %d is a HTTP status code and the %s is a textual description of it
-#: src/goabackend/goaoauthprovider.c:804
-#, c-format
-msgid ""
-"Expected status 200 for getting a Request Token, instead got status %d (%s)"
-msgstr ""
-"リクエスト用トークンの取得で 200 のステータスを期待していましたが、代わりに受"
-"け取ったのは %d (%s) でした"
-
-#: src/goabackend/goaoauthprovider.c:821
-msgid "Missing request_token or request_token_secret headers in response"
-msgstr ""
-"受信した応答の中に request_token または request_token_secret のヘッダーがあり"
-"ません"
-
-#: src/goabackend/goaoauthprovider.c:1339
-msgid "Credentials do not contain access_token or access_token_secret"
-msgstr "証明書に access_token や access_token_secret が含まれていません"
-
-#: src/goabackend/goaowncloudprovider.c:60
+#: src/goabackend/goaowncloudprovider.c:55
msgid "Nextcloud"
msgstr "Nextcloud"
-#: src/goabackend/goaowncloudprovider.c:729
-#: src/goabackend/goaowncloudprovider.c:920
-msgid "Error connecting to Nextcloud server"
-msgstr "Nextcloud サーバーへの接続に失敗しました"
-
-#: src/goabackend/goaprovider.c:112
+#: src/goabackend/goaprovider.c:118
msgid "_Mail"
msgstr "メール(_M)"
-#: src/goabackend/goaprovider.c:117
+#: src/goabackend/goaprovider.c:123
msgid "Cale_ndar"
msgstr "カレンダー(_N)"
-#: src/goabackend/goaprovider.c:122
+#: src/goabackend/goaprovider.c:128
msgid "_Contacts"
msgstr "連絡先(_C)"
-#: src/goabackend/goaprovider.c:127
+#: src/goabackend/goaprovider.c:133
msgid "C_hat"
msgstr "チャット(_H)"
-#: src/goabackend/goaprovider.c:132
+#: src/goabackend/goaprovider.c:138
msgid "_Documents"
msgstr "ドキュメント(_D)"
-#: src/goabackend/goaprovider.c:137
+#: src/goabackend/goaprovider.c:143
msgid "M_usic"
msgstr "音楽(_U)"
-#: src/goabackend/goaprovider.c:142
+#: src/goabackend/goaprovider.c:148
msgid "_Photos"
msgstr "写真(_P)"
-#: src/goabackend/goaprovider.c:147
+#: src/goabackend/goaprovider.c:153
msgid "_Files"
msgstr "ファイル(_F)"
-#: src/goabackend/goaprovider.c:152
+#: src/goabackend/goaprovider.c:158
msgid "Network _Resources"
msgstr "ネットワークリソース(_R)"
-#: src/goabackend/goaprovider.c:157
+#: src/goabackend/goaprovider.c:163
msgid "_Read Later"
msgstr "あとで読む(_R)"
-#: src/goabackend/goaprovider.c:162
+#: src/goabackend/goaprovider.c:168
msgid "Prin_ters"
msgstr "プリンター(_T)"
-#: src/goabackend/goaprovider.c:167
+#: src/goabackend/goaprovider.c:173
msgid "_Maps"
msgstr "地図(_M)"
-#: src/goabackend/goaprovider.c:172
+#: src/goabackend/goaprovider.c:178
msgid "T_o Do"
msgstr "To Do(_O)"
-#. Translators: This is a label for a series of
-#. * options switches. For example: “Use for Mail”.
-#: src/goabackend/goaprovider.c:570
-msgid "Use for"
-msgstr "用途"
-
-#: src/goabackend/goaprovider.c:825
+#: src/goabackend/goaprovider.c:1066
msgid "Account is disabled"
msgstr "アカウントが無効です"
-#: src/goabackend/goaprovider.c:838
+#: src/goabackend/goaprovider.c:1079
msgid "Unknown error"
msgstr "不明なエラーです"
-#: src/goabackend/goaprovider.c:857
+#: src/goabackend/goaprovider.c:1098
#, c-format
msgid "ensure_credentials_sync is not implemented on type %s"
msgstr "%s では ensure_credentials_sync は未だ利用できません"
-#. TODO: more specific
-#: src/goabackend/goasmtpauth.c:164
-msgid "TLS not available"
-msgstr "TLS が利用できません"
+#. Translators: this is the title of the "Add Account" and "Refresh
+#. * Account" dialogs. The %s is the name of the provider. eg.,
+#. * 'Google'.
+#.
+#: src/goabackend/goaproviderdialog.c:183
+#, c-format
+msgid "%s Account"
+msgstr "%s アカウント"
-#: src/goabackend/goasmtpauth.c:470
-msgid "Unknown authentication mechanism"
-msgstr "不明な認証メカニズム"
+#: src/goabackend/goaproviderdialog.c:627
+msgid "Remove this Account?"
+msgstr "このアカウントを削除しますか?"
+
+#: src/goabackend/goaproviderdialog.c:628
+msgid ""
+"If you remove this Online Account you will have to connect to it again to "
+"use it with apps and services."
+msgstr ""
+"このオンラインアカウントを削除すると、アプリやサービスで使用するには再度接続"
+"する必要があります。"
-#: src/goabackend/goautils.c:92
-msgid "Error logging into the account"
-msgstr "アカウントへのログインに失敗しました"
+#: src/goabackend/goaproviderdialog.c:630
+msgid "_Cancel"
+msgstr "キャンセル(_C)"
-#: src/goabackend/goautils.c:136
-msgid "Credentials have expired"
-msgstr "資格情報の有効期限が切れています"
+#: src/goabackend/goaproviderdialog.c:631
+msgid "_Remove"
+msgstr "削除(_R)"
-#: src/goabackend/goautils.c:140
-msgid "Sign in to enable this account."
-msgstr "このアカウントを有効にするにはサインインしてください。"
+#: src/goabackend/goaproviderdialog.c:767
+msgid "An account with that name already exists"
+msgstr "その名前のアカウントは、すでに使用されています"
-#: src/goabackend/goautils.c:144
+#: src/goabackend/goaproviderdialog.c:839
+msgid "Sign in to reconnect to this account"
+msgstr "このアカウントに接続するにはサインインしてください"
+
+#: src/goabackend/goaproviderdialog.c:868
+msgid "_Account Name"
+msgstr "アカウント名(_A)"
+
+#: src/goabackend/goaproviderdialog.c:940
+msgid "_Remove…"
+msgstr "削除(_R)…"
+
+#: src/goabackend/goaproviderdialog.c:1036
msgid "_Sign In"
msgstr "サインイン(_S)"
-#: src/goabackend/goautils.c:240
+#: src/goabackend/goaproviderdialog.c:1098
+msgid "_Try Again"
+msgstr "やり直す(_T)"
+
+#: src/goabackend/goaproviderdialog.c:1102
+msgid "_Ignore"
+msgstr "無視する(_I)"
+
+#: src/goabackend/goaproviderdialog.c:1374
+msgid "Dialog was dismissed"
+msgstr "ダイアログが閉じられました"
+
+#. TODO: more specific
+#: src/goabackend/goasmtpauth.c:164
+msgid "TLS not available"
+msgstr "TLS が利用できません"
+
+#: src/goabackend/goasmtpauth.c:492
+msgid "Unknown authentication mechanism"
+msgstr "不明な認証メカニズム"
+
+#: src/goabackend/goautils.c:80
#, c-format
msgid "A %s account already exists for %s"
msgstr "%s アカウントは、すでに %s に使用されています"
-#. Translators: this is the title of the "Add Account" and "Refresh
-#. * Account" dialogs. The %s is the name of the provider. eg.,
-#. * 'Google'.
-#.
-#: src/goabackend/goautils.c:316
-#, c-format
-msgid "%s Account"
-msgstr "%s アカウント"
-
#. TODO: more specific
-#: src/goabackend/goautils.c:370
+#: src/goabackend/goautils.c:193
msgid "Failed to delete credentials from the keyring"
msgstr "キーリングから証明書の削除に失敗しました"
#. TODO: more specific
-#: src/goabackend/goautils.c:418
+#: src/goabackend/goautils.c:241
msgid "Failed to retrieve credentials from the keyring"
msgstr "キーリングから証明書の取得に失敗しました"
#. TODO: more specific
-#: src/goabackend/goautils.c:428
+#: src/goabackend/goautils.c:251
msgid "No credentials found in the keyring"
msgstr "キーリングに証明書が見つかりませんでした"
-#: src/goabackend/goautils.c:441
+#: src/goabackend/goautils.c:264
msgid "Error parsing result obtained from the keyring: "
msgstr "キーリングから取得した結果の解析に失敗しました: "
#. Translators: The %s is the type of the provider, e.g. 'google' or 'yahoo'
-#: src/goabackend/goautils.c:482
+#: src/goabackend/goautils.c:305
#, c-format
msgid "GOA %s credentials for identity %s"
msgstr "GOA の %s は %s を正しく認識しました"
#. TODO: more specific
-#: src/goabackend/goautils.c:499
+#: src/goabackend/goautils.c:322
msgid "Failed to store credentials in the keyring"
msgstr "キーリングへの証明書の保存に失敗しました"
-#: src/goabackend/goautils.c:848
-msgid "Cannot resolve hostname"
-msgstr "ホスト名を解決できませんでした"
+#: src/goabackend/goautils.c:790
+msgid "Not supported"
+msgstr "サポートされていません"
-#: src/goabackend/goautils.c:852
-msgid "Cannot resolve proxy hostname"
-msgstr "プロキシのホスト名を解決できませんでした"
+#: src/goabackend/goautils.c:794
+msgid "Not found"
+msgstr "見つかりません"
-#: src/goabackend/goautils.c:857
-msgid "Cannot find WebDAV endpoint"
-msgstr "WebDAV エンドポイントが見つかりませんでした"
-
-#: src/goabackend/goautils.c:866
+#: src/goabackend/goautils.c:808
#, c-format
msgid "Code: %u — Unexpected response from server"
msgstr "コード: %u — サーバーからの予期しない応答"
-#: src/goabackend/goautils.c:882
+#: src/goabackend/goautils.c:833
msgid "The signing certificate authority is not known."
msgstr "署名している認証局が未知です。"
-#: src/goabackend/goautils.c:886
+#: src/goabackend/goautils.c:837
msgid ""
"The certificate does not match the expected identity of the site that it was "
"retrieved from."
msgstr "証明書が予期した取得サイトの識別情報と一致しません。"
-#: src/goabackend/goautils.c:891
+#: src/goabackend/goautils.c:842
msgid "The certificate’s activation time is still in the future."
msgstr "証明書の発効時刻が未来になっています。"
-#: src/goabackend/goautils.c:895
+#: src/goabackend/goautils.c:846
msgid "The certificate has expired."
msgstr "証明書の有効期限が切れています。"
-#: src/goabackend/goautils.c:899
+#: src/goabackend/goautils.c:850
msgid "The certificate has been revoked."
msgstr "証明書が失効しています。"
-#: src/goabackend/goautils.c:903
+#: src/goabackend/goautils.c:854
msgid "The certificate’s algorithm is considered insecure."
msgstr "証明書のアルゴリズムは安全ではないものと見なされています。"
-#: src/goabackend/goautils.c:909
+#: src/goabackend/goautils.c:860
msgid "Invalid certificate."
msgstr "不正な証明書です。"
#. TODO: more specific
-#: src/goabackend/goautils.c:944
+#: src/goabackend/goautils.c:895
#, c-format
msgid "Did not find %s with identity “%s” in credentials"
msgstr "資格情報に識別子“%2$s”の %1$s が見つかりませんでした"
-#. translators: %s here is the address of the web page
-#: src/goabackend/goawebview.c:89
-#, c-format
-msgid "Loading “%s”…"
-msgstr "“%s”を読み込み中…"
+#: src/goabackend/goawebdavprovider.c:399
+msgid "Calendar, Contacts and Files"
+msgstr "カレンダー、連絡先、ファイル"
+
+#: src/goabackend/goawebdavprovider.c:400
+msgid ""
+"Add a calendar, contacts and files account by entering your WebDAV server "
+"and account details"
+msgstr ""
+"WebDAV サーバーとアカウントの詳細を入力して、カレンダー、連絡先、ファイルのア"
+"カウントを追加します"
+
+#: src/goabackend/goawebdavprovider.c:403
+msgid "_Server Address"
+msgstr "サーバーのアドレス(_S)"
+
+#: src/goabackend/goawebdavprovider.c:404
+msgid "Examples: example.com, 192.168.0.82"
+msgstr "例: example.com, 192.168.0.82"
+
+#: src/goabackend/goawebdavprovider.c:414
+msgid "Server Addresses (Optional)"
+msgstr "サーバーのアドレス (オプション)"
+
+#: src/goabackend/goawebdavprovider.c:415
+msgid "Files"
+msgstr "ファイル"
+
+#: src/goabackend/goawebdavprovider.c:416
+msgid "Calendar (CalDAV)"
+msgstr "カレンダー (CalDAV)"
+
+#: src/goabackend/goawebdavprovider.c:417
+msgid "Contacts (CardDAV)"
+msgstr "連絡先 (CardDAV)"
#: src/goabackend/goawindowsliveprovider.c:56
msgid "Microsoft"
@@ -761,86 +761,215 @@ msgstr "初期設定のシークレットキーが無効です"
#. TODO: more specific
#: src/goaidentity/goaidentityservice.c:786
-#: src/goaidentity/goaidentityservice.c:890
#, c-format
msgid "Couldn't get GoaObject for object path %s"
msgstr "オブジェクトパス %s の GoaObject を取得できませんでした"
-#: src/goaidentity/goaidentityservice.c:1270
+#: src/goaidentity/goaidentityservice.c:1119
#, c-format
msgid "The network realm %s needs some information to sign you in."
msgstr ""
"ネットワークレルム %s にサインインを行うには、 何らかの情報を与える必要があり"
"ます。"
-#: src/goaidentity/goakerberosidentity.c:271
-#: src/goaidentity/goakerberosidentity.c:279
-#: src/goaidentity/goakerberosidentity.c:666
+#: src/goaidentity/goakerberosidentity.c:293
+#: src/goaidentity/goakerberosidentity.c:301
+#: src/goaidentity/goakerberosidentity.c:695
msgid "Could not find identity in credential cache: "
msgstr "証明書キャッシュに識別情報が見つかりませんでした: "
-#: src/goaidentity/goakerberosidentity.c:678
+#: src/goaidentity/goakerberosidentity.c:707
msgid "Could not find identity credentials in cache: "
msgstr "キャッシュに識別情報の証明書が見つかりませんでした: "
-#: src/goaidentity/goakerberosidentity.c:721
+#: src/goaidentity/goakerberosidentity.c:751
msgid "Could not sift through identity credentials in cache: "
msgstr "キャッシュにある識別情報の証明書の選別ができませんでした: "
-#: src/goaidentity/goakerberosidentity.c:735
+#: src/goaidentity/goakerberosidentity.c:763
msgid "Could not finish up sifting through identity credentials in cache: "
msgstr "キャッシュにある識別情報の証明書の選別を終了できませんでした: "
-#: src/goaidentity/goakerberosidentity.c:1019
+#: src/goaidentity/goakerberosidentity.c:1406
msgid "No associated identification found"
msgstr "関連のある ID が見つかりませんでした"
-#: src/goaidentity/goakerberosidentity.c:1098
+#: src/goaidentity/goakerberosidentity.c:1535
msgid "Could not create credential cache: "
msgstr "証明書キャッシュを作成できませんでした: "
-#: src/goaidentity/goakerberosidentity.c:1130
+#: src/goaidentity/goakerberosidentity.c:1575
msgid "Could not initialize credentials cache: "
msgstr "証明書用キャッシュを初期化できませんでした: "
-#: src/goaidentity/goakerberosidentity.c:1143
+#: src/goaidentity/goakerberosidentity.c:1588
msgid "Could not store new credentials in credentials cache: "
msgstr "証明書用キャッシュに新しい証明書を保存できませんでした: "
-#: src/goaidentity/goakerberosidentity.c:1431
-msgid "Could not renew identity: Not signed in"
-msgstr "識別情報を更新できませんでした: サインインしていません"
+#: src/goaidentity/goakerberosidentity.c:1824
+msgid "Not signed in"
+msgstr "サインインされていません"
-#: src/goaidentity/goakerberosidentity.c:1441
-msgid "Could not renew identity: "
-msgstr "識別情報を更新できませんでした: "
+#: src/goaidentity/goakerberosidentity.c:1837
+msgid "Could not get the default principal: "
+msgstr "デフォルトのプリンシパルを取得できませんでした: "
-#: src/goaidentity/goakerberosidentity.c:1454
+#: src/goaidentity/goakerberosidentity.c:1850
#, c-format
-msgid "Could not get new credentials to renew identity %s: "
-msgstr "識別情報 %s の更新に必要な新しい証明書が取得できませんでした: "
+msgid "Could not get renewed credentials from the KDC for identity %s: "
+msgstr "識別情報 %s の KDC から更新された証明書を取得できませんでした: "
-#: src/goaidentity/goakerberosidentity.c:1495
+#: src/goaidentity/goakerberosidentity.c:1898
msgid "Could not erase identity: "
msgstr "識別情報を消去できませんでした: "
-#: src/goaidentity/goakerberosidentitymanager.c:817
+#: src/goaidentity/goakerberosidentitymanager.c:955
msgid "Could not find identity"
msgstr "識別情報が見つかりませんでした"
-#: src/goaidentity/goakerberosidentitymanager.c:898
+#: src/goaidentity/goakerberosidentitymanager.c:1038
msgid "Could not create credential cache for identity"
msgstr "識別情報用の証明書キャッシュを作成できませんでした"
+#: src/goaidentity/goalinuxnotificationstream.c:58
+#, c-format
+msgid "Error closing file descriptor: %s"
+msgstr "ファイルディスクリプタを閉じる際にエラーが発生しました: %s"
+
+#~ msgid "_Custom"
+#~ msgstr "カスタム(_C)"
+
+#~ msgid "C_onnect"
+#~ msgstr "接続(_O)"
+
+#~ msgid "Connecting…"
+#~ msgstr "接続中…"
+
+#, c-format
+#~ msgid "Dialog was dismissed (%s, %d): "
+#~ msgstr "ダイアログが閉じられました (%s, %d): "
+
+#~ msgid "Error connecting to Microsoft Exchange server"
+#~ msgstr "Microsoft Exchange サーバーへの接続に失敗しました"
+
+#~ msgid "Facebook"
+#~ msgstr "Facebook"
+
+#~ msgid "Error connecting to Fedora"
+#~ msgstr "Fedora への接続に失敗しました"
+
+#~ msgid "Flickr"
+#~ msgstr "Flickr"
+
+#~ msgid "Your system time is invalid. Check your date and time settings."
+#~ msgstr ""
+#~ "お使いのシステムの時刻が正しくありません。日付と時刻の設定を確認してくださ"
+#~ "い。"
+
+#~ msgid "Foursquare"
+#~ msgstr "Foursquare"
+
+#~ msgid "Server does not support PLAIN"
+#~ msgstr "サーバーが PLAIN をサポートしていません"
+
+#~ msgid "None"
+#~ msgstr "なし"
+
+#~ msgid "_Forward"
+#~ msgstr "次へ(_F)"
+
+#~ msgid "Error connecting to IMAP server"
+#~ msgstr "IMAP サーバーへの接続に失敗しました"
+
+#~ msgid "Error connecting to SMTP server"
+#~ msgstr "SMTP サーバーへの接続に失敗しました"
+
+#~ msgid "Enterprise Login (Kerberos)"
+#~ msgstr "企業向けログイン (Kerberos)"
+
+#~ msgid "Error connecting to enterprise identity server"
+#~ msgstr "企業アイデンティティサーバーへの接続中にエラーが発生しました"
+
+#~ msgid "Last.fm"
+#~ msgstr "Last.fm"
+
+#~ msgid "Error connecting to Last.fm"
+#~ msgstr "Last.fm への接続に失敗しました"
+
+#~ msgid "Media Server"
+#~ msgstr "メディアサーバー"
+
+#~ msgid ""
+#~ "Personal content can be added to your applications through a media server "
+#~ "account."
+#~ msgstr ""
+#~ "メディアサーバーのアカウントを通じて個人のコンテンツをお使いのアプリケー"
+#~ "ションに追加できます。"
+
+#~ msgid "Available Media Servers"
+#~ msgstr "利用できるメディアサーバー"
+
+#~ msgid "No media servers found"
+#~ msgstr "メディアサーバーが見つかりませんでした"
+
+#~ msgid "Missing access_token or access_token_secret headers in response"
+#~ msgstr ""
+#~ "受信した応答の中に access_token または access_token_secret のヘッダーがあ"
+#~ "りません"
+
+#~ msgid "Error getting a Request Token: "
+#~ msgstr "リクエスト用トークンの取得エラー: "
+
+#, c-format
+#~ msgid ""
+#~ "Expected status 200 for getting a Request Token, instead got status %d "
+#~ "(%s)"
+#~ msgstr ""
+#~ "リクエスト用トークンの取得で 200 のステータスを期待していましたが、代わり"
+#~ "に受け取ったのは %d (%s) でした"
+
+#~ msgid "Missing request_token or request_token_secret headers in response"
+#~ msgstr ""
+#~ "受信した応答の中に request_token または request_token_secret のヘッダーが"
+#~ "ありません"
+
+#~ msgid "Credentials do not contain access_token or access_token_secret"
+#~ msgstr "証明書に access_token や access_token_secret が含まれていません"
+
+#~ msgid "Error connecting to Nextcloud server"
+#~ msgstr "Nextcloud サーバーへの接続に失敗しました"
+
+#~ msgid "Use for"
+#~ msgstr "用途"
+
+#~ msgid "Error logging into the account"
+#~ msgstr "アカウントへのログインに失敗しました"
+
+#~ msgid "Credentials have expired"
+#~ msgstr "資格情報の有効期限が切れています"
+
+#~ msgid "Cannot resolve hostname"
+#~ msgstr "ホスト名を解決できませんでした"
+
+#~ msgid "Cannot resolve proxy hostname"
+#~ msgstr "プロキシのホスト名を解決できませんでした"
+
+#, c-format
+#~ msgid "Loading “%s”…"
+#~ msgstr "“%s”を読み込み中…"
+
+#~ msgid "Could not renew identity: Not signed in"
+#~ msgstr "識別情報を更新できませんでした: サインインしていません"
+
+#~ msgid "Could not renew identity: "
+#~ msgstr "識別情報を更新できませんでした: "
+
#~ msgid "Pocket"
#~ msgstr "Pocket"
#~ msgid "No username or access_token"
#~ msgstr "ユーザー名かアクセストークンがありません(_T)"
-#~ msgid "_Domain"
-#~ msgstr "ドメイン(_D)"
-
#~ msgid "Enterprise domain or realm name"
#~ msgstr "企業ドメイン名またはレルム名"
@@ -868,18 +997,12 @@ msgstr "識別情報用の証明書キャッシュを作成できませんでし
#~ msgid "Telepathy chat account not found"
#~ msgstr "Telepathy チャットアカウントが見つかりませんでした"
-#~ msgid "Failed to initialize a GOA client"
-#~ msgstr "GOA クライアントの初期化に失敗しました"
-
#~ msgid "Failed to create a user interface for %s"
#~ msgstr "%s のユーザーインターフェース作成に失敗しました"
#~ msgid "Connection Settings"
#~ msgstr "接続設定"
-#~ msgid "Personal Details"
-#~ msgstr "個人情報"
-
#~ msgid "_OK"
#~ msgstr "_OK"
@@ -955,9 +1078,6 @@ msgstr "識別情報用の証明書キャッシュを作成できませんでし
#~ msgid "Invalid smtp-password with username `%s' (%s, %d): "
#~ msgstr "ユーザー名 '%s' の SMTP パスワードが不正です (%s, %d): "
-#~ msgid "Online Accounts"
-#~ msgstr "オンラインアカウント"
-
#~ msgid "An online account needs attention"
#~ msgstr "オンラインアカウントの利用には注意が必要です"
diff --git a/src/daemon/goadaemon.c b/src/daemon/goadaemon.c
index d37d3c9c..ddbde25e 100644
--- a/src/daemon/goadaemon.c
+++ b/src/daemon/goadaemon.c
@@ -1398,6 +1398,7 @@ remove_account_cb (GObject *source_object, GAsyncResult *res, gpointer user_data
if (g_ptr_array_remove (self->accounts_needing_attention, account))
goa_daemon_update_notification (self);
+ g_task_return_boolean (task, TRUE);
g_object_unref (task);
}
@@ -1797,6 +1798,8 @@ ensure_credentials_queue_collector (GObject *source_object, GAsyncResult *res, g
self->ensure_credentials_running = FALSE;
ensure_credentials_queue_check (self);
+
+ g_task_return_boolean (task, TRUE);
g_object_unref (task);
}
diff --git a/src/goabackend/goadavclient.c b/src/goabackend/goadavclient.c
index aaa55bba..5f74b7b3 100644
--- a/src/goabackend/goadavclient.c
+++ b/src/goabackend/goadavclient.c
@@ -48,6 +48,14 @@
#define MAILBOX_ORG_CALDAV "https://dav.mailbox.org/caldav"
#define MAILBOX_ORG_CARDDAV "https://dav.mailbox.org/carddav"
+/* mail.ru
+ * See: https://help.mail.ru/cloud_web/app/webdav/#linux
+ * https://help.mail.ru/calendar-help/synchronization/about/
+ */
+#define MAIL_RU_HOSTNAME "mail.ru"
+#define MAIL_RU_WEBDAV "https://webdav.cloud.mail.ru"
+#define MAIL_RU_CALDAV "https://calendar.mail.ru"
+
struct _GoaDavClient
{
GObject parent_instance;
@@ -890,6 +898,25 @@ dav_client_discover_postconfig_nexcloud (DiscoverData *discover,
if (server_root == NULL)
server_root = g_strrstr (path, "/remote.php/webdav");
+ /* Check the DAV headers for a Nextcloud-specific entry, which may
+ * have matched on a well-known without a proper redirect
+ */
+ if (server_root == NULL)
+ {
+ SoupMessageHeaders *headers = NULL;
+ const char *dav_header = NULL;
+
+ headers = soup_message_get_response_headers (message);
+ dav_header = soup_message_headers_get_list (headers, "DAV");
+
+ if (dav_header != NULL && g_strrstr (dav_header, "nextcloud-checksum-update") != NULL)
+ {
+ server_root = g_strrstr (path, WELL_KNOWN_CALDAV);
+ if (server_root == NULL)
+ server_root = g_strrstr (path, WELL_KNOWN_CARDDAV);
+ }
+ }
+
if (server_root != NULL)
{
int port = -1;
@@ -1177,13 +1204,6 @@ dav_client_discover_iterate (GTask *task)
{
g_autofree char *nc_uri = NULL;
- /* Start with Nextcloud, everyone's favourite sort of compliant DAV server, since
- * we can return early if we recognize the path.
- */
- nc_uri = g_uri_resolve_relative (discover->uri, "remote.php/dav", G_URI_FLAGS_NONE, NULL);
- g_queue_push_tail (&discover->candidates,
- goa_dav_config_new (GOA_SERVICE_TYPE_WEBDAV, nc_uri, NULL));
-
g_queue_push_tail (&discover->candidates,
goa_dav_config_new (GOA_SERVICE_TYPE_CALDAV, discover->uri, NULL));
g_queue_push_tail (&discover->candidates,
@@ -1191,6 +1211,12 @@ dav_client_discover_iterate (GTask *task)
g_queue_push_tail (&discover->candidates,
goa_dav_config_new (GOA_SERVICE_TYPE_WEBDAV, discover->uri, NULL));
+ /* Fallback to making an OPTIONS request to a known path for Nextcloud/ownCloud
+ */
+ nc_uri = g_uri_resolve_relative (discover->uri, "remote.php/dav", G_URI_FLAGS_NONE, NULL);
+ g_queue_push_tail (&discover->candidates,
+ goa_dav_config_new (GOA_SERVICE_TYPE_WEBDAV, nc_uri, NULL));
+
discover->uri_fallback = TRUE;
dav_client_discover_iterate (task);
}
@@ -1249,7 +1275,7 @@ dav_client_discover_preconfig (DiscoverData *discover,
|| g_strcmp0 (base_domain, "mailbox.org") == 0)
{
g_queue_push_tail (&discover->candidates,
- goa_dav_config_new (GOA_SERVICE_TYPE_CALDAV, MAILBOX_ORG_WEBDAV, NULL));
+ goa_dav_config_new (GOA_SERVICE_TYPE_CALDAV, MAILBOX_ORG_CALDAV, NULL));
g_queue_push_tail (&discover->candidates,
goa_dav_config_new (GOA_SERVICE_TYPE_CARDDAV, MAILBOX_ORG_CARDDAV, NULL));
g_queue_push_tail (&discover->candidates,
@@ -1258,6 +1284,17 @@ dav_client_discover_preconfig (DiscoverData *discover,
return TRUE;
}
+ if (g_strcmp0 (host, "mail.ru") == 0
+ || g_strcmp0 (base_domain, "mail.ru") == 0)
+ {
+ g_queue_push_tail (&discover->candidates,
+ goa_dav_config_new (GOA_SERVICE_TYPE_CALDAV, MAIL_RU_CALDAV, NULL));
+ g_queue_push_tail (&discover->candidates,
+ goa_dav_config_new (GOA_SERVICE_TYPE_WEBDAV, MAIL_RU_WEBDAV, NULL));
+
+ return TRUE;
+ }
+
return FALSE;
}
diff --git a/src/goabackend/goaimapauthlogin.c b/src/goabackend/goaimapauthlogin.c
index 0872c0e4..2c4aa04f 100644
--- a/src/goabackend/goaimapauthlogin.c
+++ b/src/goabackend/goaimapauthlogin.c
@@ -110,15 +110,6 @@ imap_auth_login_check_NO (const gchar *response, GError **error)
}
static gboolean
-imap_auth_login_check_not_CAPABILITY (const gchar *response)
-{
- if (!g_str_has_prefix (response, "* CAPABILITY"))
- return TRUE;
-
- return FALSE;
-}
-
-static gboolean
imap_auth_login_check_not_OK (const gchar *response, gboolean tagged, GError **error)
{
gboolean ret = FALSE;
@@ -170,6 +161,55 @@ imap_auth_login_check_not_STARTTLS (const gchar *response, GError **error)
return FALSE;
}
+static gboolean
+imap_auth_login_read_response (GDataInputStream *input,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean ret = FALSE;
+
+ g_assert (G_IS_DATA_INPUT_STREAM (input));
+ g_assert (cancellable == NULL || G_IS_CANCELLABLE (cancellable));
+ g_assert (error == NULL || *error == NULL);
+
+ while (TRUE)
+ {
+ g_autofree char *response = NULL;
+
+ response = goa_utils_data_input_stream_read_line (input, NULL, cancellable, error);
+ if (response == NULL)
+ break;
+
+ g_debug("< %s", response);
+ if (g_str_has_prefix (response, IMAP_TAG))
+ {
+ if (imap_auth_login_check_NO (response, error))
+ break;
+ if (imap_auth_login_check_not_OK (response, TRUE, error))
+ break;
+
+ ret = TRUE;
+ break;
+ }
+ else if (g_str_has_prefix (response, "* "))
+ {
+ if (imap_auth_login_check_BYE (response, error))
+ break;
+ }
+ else
+ {
+ g_set_error (error,
+ GOA_ERROR,
+ GOA_ERROR_FAILED, /* TODO: more specific */
+ "Unexpected response `%s' while doing LOGIN authentication",
+ response);
+ break;
+ }
+ }
+
+ return ret;
+}
+
/* ---------------------------------------------------------------------------------------------------- */
static gchar *
@@ -386,25 +426,8 @@ goa_imap_auth_login_run_sync (GoaMailAuth *auth,
goto out;
g_clear_pointer (&request, g_free);
- /* Skip post-login CAPABILITY, if any */
- response = goa_utils_data_input_stream_read_line (input, NULL, cancellable, error);
- if (response == NULL)
- goto out;
- g_debug ("< %s", response);
- if (imap_auth_login_check_not_CAPABILITY (response))
- goto check_login_response;
- g_clear_pointer (&response, g_free);
-
- response = goa_utils_data_input_stream_read_line (input, NULL, cancellable, error);
- if (response == NULL)
+ if (!imap_auth_login_read_response (input, cancellable, error))
goto out;
- g_debug ("< %s", response);
- check_login_response:
- if (imap_auth_login_check_NO (response, error))
- goto out;
- if (imap_auth_login_check_not_OK (response, TRUE, error))
- goto out;
- g_clear_pointer (&response, g_free);
ret = TRUE;
@@ -463,13 +486,8 @@ goa_imap_auth_login_starttls_sync (GoaMailAuth *auth,
goto out;
g_clear_pointer (&response, g_free);
- response = goa_utils_data_input_stream_read_line (input, NULL, cancellable, error);
- if (response == NULL)
- goto out;
- g_debug ("< %s", response);
- if (imap_auth_login_check_not_OK (response, TRUE, error))
+ if (!imap_auth_login_read_response (input, cancellable, error))
goto out;
- g_clear_pointer (&response, g_free);
/* Send STARTTLS */
@@ -479,13 +497,8 @@ goa_imap_auth_login_starttls_sync (GoaMailAuth *auth,
goto out;
g_clear_pointer (&request, g_free);
- response = goa_utils_data_input_stream_read_line (input, NULL, cancellable, error);
- if (response == NULL)
+ if (!imap_auth_login_read_response (input, cancellable, error))
goto out;
- g_debug ("< %s", response);
- if (imap_auth_login_check_not_OK (response, TRUE, error))
- goto out;
- g_clear_pointer (&response, g_free);
/* There won't be a greeting after this */
self->greeting_absent = TRUE;
diff --git a/src/goabackend/goamsgraphprovider.c b/src/goabackend/goamsgraphprovider.c
index 6eebb7eb..d0a70f37 100644
--- a/src/goabackend/goamsgraphprovider.c
+++ b/src/goabackend/goamsgraphprovider.c
@@ -229,8 +229,9 @@ get_identity_sync (GoaOAuth2Provider *oauth2_provider,
}
id = json_node_get_string (json_member);
- // Prefer "mail" then "displayName" for "PresentationIdentity", failing if neither is available
- json_member = json_object_get_member (json_object, "mail");
+ // Prefer "userPrincipalName" then "mail", failing if neither is available, since Gvfs requires
+ // a user and host for the GMountSpec
+ json_member = json_object_get_member (json_object, "userPrincipalName");
if (json_member != NULL && json_node_get_value_type (json_member) == G_TYPE_STRING)
{
presentation_identity = json_node_get_string (json_member);
@@ -238,14 +239,15 @@ get_identity_sync (GoaOAuth2Provider *oauth2_provider,
if (presentation_identity == NULL)
{
- json_member = json_object_get_member (json_object, "displayName");
+ json_member = json_object_get_member (json_object, "mail");
if (json_member != NULL && json_node_get_value_type (json_member) == G_TYPE_STRING)
{
presentation_identity = json_node_get_string (json_member);
}
else
{
- g_debug ("%s(): expected \"mail\" or \"displayName\" field holding a string", G_STRFUNC);
+ g_debug ("%s(): expected \"userPrincipalName\" or \"mail\" field holding a string",
+ G_STRFUNC);
g_set_error (error,
GOA_ERROR,
GOA_ERROR_FAILED,
diff --git a/src/goabackend/goaoauth2provider.c b/src/goabackend/goaoauth2provider.c
index 41a8a0d6..d4ca09c9 100644
--- a/src/goabackend/goaoauth2provider.c
+++ b/src/goabackend/goaoauth2provider.c
@@ -826,13 +826,23 @@ parse_request_uri (GoaOAuth2Provider *self,
AccountData *data = g_task_get_task_data (task);
g_autoptr(GHashTable) key_value_pairs = NULL;
g_autoptr(GUri) uri = NULL;
+ g_autoptr(GUri) redirect_uri = NULL;
const char *fragment;
const char *oauth2_error;
const char *query;
g_assert (error == NULL || *error == NULL);
- if (!g_str_has_prefix (requested_uri, data->redirect_uri))
+ uri = g_uri_parse (requested_uri, G_URI_FLAGS_ENCODED | G_URI_FLAGS_PARSE_RELAXED, error);
+ if (uri == NULL)
+ return FALSE;
+
+ redirect_uri = g_uri_parse (data->redirect_uri, G_URI_FLAGS_ENCODED | G_URI_FLAGS_PARSE_RELAXED, error);
+ if (redirect_uri == NULL)
+ return FALSE;
+
+ if (g_strcmp0 (g_uri_get_scheme (uri), g_uri_get_scheme (redirect_uri)) != 0
+ || g_strcmp0 (g_uri_get_path (uri), g_uri_get_path (redirect_uri)) != 0)
{
g_set_error (error,
GOA_ERROR,
@@ -842,10 +852,6 @@ parse_request_uri (GoaOAuth2Provider *self,
return FALSE;
}
- uri = g_uri_parse (requested_uri, G_URI_FLAGS_ENCODED | G_URI_FLAGS_PARSE_RELAXED, error);
- if (uri == NULL)
- return FALSE;
-
/* Three cases:
* 1) we can either have the backend handle the URI for us, or
* 2) we can either have the access_token and other information
@@ -1166,6 +1172,7 @@ oauth2_handler_dbus_method_call (GDBusConnection *connection,
g_debug ("Received OAuth2 response for client ID \"%s\"", client_id);
g_dbus_method_invocation_return_value (invocation, NULL);
+ authorize_uri_task_complete (NULL, task);
g_task_return_pointer (task, g_strdup (response), g_free);
}
else
@@ -1177,10 +1184,10 @@ oauth2_handler_dbus_method_call (GDBusConnection *connection,
G_DBUS_ERROR_INVALID_ARGS,
"Invalid URI \"%s\"",
response);
+ authorize_uri_task_complete (NULL, task);
g_task_return_error (task, g_steal_pointer (&error));
}
- authorize_uri_task_complete (NULL, task);
return;
}
@@ -1209,8 +1216,8 @@ authorize_uri_launch_uri_cb (GObject *object,
if (!g_app_info_launch_default_for_uri_finish (result, &error))
{
- g_task_return_error (task, g_steal_pointer (&error));
authorize_uri_task_complete (NULL, task);
+ g_task_return_error (task, g_steal_pointer (&error));
}
}
@@ -1242,8 +1249,8 @@ on_oauth2_bus_acquired (GDBusConnection *connection,
if (data->register_object_id == 0)
{
- g_task_return_error (task, g_steal_pointer (&error));
authorize_uri_task_complete (NULL, task);
+ g_task_return_error (task, g_steal_pointer (&error));
}
}
@@ -1278,11 +1285,11 @@ on_oauth2_name_lost (GDBusConnection *connection,
else
g_warning ("%s(): Failed to own %s on the session bus", G_STRFUNC, name);
+ authorize_uri_task_complete (NULL, task);
g_task_return_new_error_literal (task,
GOA_ERROR,
GOA_ERROR_FAILED,
_("Service not available"));
- authorize_uri_task_complete (NULL, task);
}
/* ---------------------------------------------------------------------------------------------------- */
diff --git a/src/goabackend/goaproviderdialog.c b/src/goabackend/goaproviderdialog.c
index a848b683..75386e80 100644
--- a/src/goabackend/goaproviderdialog.c
+++ b/src/goabackend/goaproviderdialog.c
@@ -888,6 +888,13 @@ goa_provider_dialog_push_account (GoaProviderDialog *self,
self);
adw_preferences_group_add (ADW_PREFERENCES_GROUP (group), row);
+ // Gvfs requires a user and host for OneDrive mount spec, so disallow
+ // custom presentation identities for this provider
+ if (g_str_equal (goa_provider_get_provider_type (self->provider), GOA_MS_GRAPH_NAME))
+ {
+ gtk_editable_set_editable (GTK_EDITABLE (row), FALSE);
+ }
+
revealer = gtk_revealer_new ();
gtk_revealer_set_transition_type (GTK_REVEALER (revealer), GTK_REVEALER_TRANSITION_TYPE_CROSSFADE);
adw_preferences_group_add (ADW_PREFERENCES_GROUP (group), revealer);
diff --git a/src/goabackend/goautils.c b/src/goabackend/goautils.c
index 1a188bf9..bd393ad9 100644
--- a/src/goabackend/goautils.c
+++ b/src/goabackend/goautils.c
@@ -721,7 +721,7 @@ goa_utils_normalize_url (const char *base_uri,
}
uri = g_uri_parse (uri_string, G_URI_FLAGS_ENCODED | G_URI_FLAGS_PARSE_RELAXED, NULL);
- if (uri == NULL)
+ if (uri == NULL || g_uri_get_host (uri) == NULL || g_uri_get_host (uri)[0] == '\0')
return NULL;
if (uri_ref != NULL)