Ejabberd
XEP-0227 使用外部身份驗證導入
我正在嘗試通過 XEP-0227 格式的轉儲從另一個 XMPP 伺服器遷移到 ejabberd。使用舊伺服器,ejabberd 將使用 PAM 進行使用者身份驗證。
<user/>
因此,轉儲中的條目中沒有密碼數據。<server-data xmlns="urn:xmpp:pie:0"> <host jid="localhost"> <user name="watcher"> ... </user> ... </host> </server-data>
當我嘗試從轉儲導入數據時,出現錯誤:
2018-05-05 19:05:30.888 [error] <0.605.0>@ejabberd_piefxis:stop:539 Failed to create user 'watcher': invalid_password
提供假密碼對我來說不是一個好主意。有什麼技巧可以讓它發揮作用,還是我完全偏離了軌道?或者是否需要更改 ejabberd_piefxis 中的程式碼?
版本是 18.01-2,Ubuntu Bionic 上的預設版本。
提供假密碼對我來說不是一個好主意。
您可以提供一個假密碼,以便該過程正確繼續,然後刪除“passwd”mnesia 表的內容(例如,使用 WebAdmin)。或者…
或者是否需要更改 ejabberd_piefxis 中的程式碼?
…您可以應用這個小更新檔,當密碼為空而失敗時繞過帳戶創建。如果您能夠嘗試該更新檔,請評論它是否有效,以考慮將其包含在 ejabberd 中。
diff --git a/src/ejabberd_piefxis.erl b/src/ejabberd_piefxis.erl index c73c8b3a4..afb0e1a05 100644 --- a/src/ejabberd_piefxis.erl +++ b/src/ejabberd_piefxis.erl @@ -404,6 +404,8 @@ process_user(#xmlel{name = <<"user">>, attrs = Attrs, children = Els}, case ejabberd_auth:try_register(LUser, LServer, Pass) of ok -> process_user_els(Els, State#state{user = LUser}); + {error, invalid_password} when (Password == <<>>) -> + process_user_els(Els, State#state{user = LUser}); {error, Err} -> stop("Failed to create user '~s': ~p", [Name, Err]) end