下面是我用来解密之前加密的某些XML的代码片段。如果它没有加密(纯文本),那么我不需要解密和处理它,我想按原样返回它。
根本没有返回任何东西。请帮我把它搞定。
更新代码:
pop_offline_messages(Ls, LUser, LServer, odbc) ->
EUser = ejabberd_odbc:escape(LUser),
case odbc_queries:get_and_del_spool_msg_t(LServer,
EUser)
of
{atomic, {selected, [<<"username">>, <<"xml">>], Rs}} ->
Ls ++
lists:flatmap(fun ([_, XML]) ->
?INFO_MSG("decrypted message from mod_offline ~p ",[XML]),
Top = case str:str(XML, <<"message">>) of
Top >= 1 -> XML;
Top == 0 -> crypto:aes_cfb_128_decrypt(<<"abcdefghabcdefgh">>,<<"12345678abcdefgh">>,base64:decode(XML))
end,
case xml_stream:parse_element(XML) of
{error, _Reason} ->
[];
El ->
case offline_msg_to_route(LServer, El) of
error ->
[];
RouteMsg ->
[RouteMsg]
end
end
end,
Rs);
_ -> Ls
end;
答案 0 :(得分:1)
如果它“没有返回任何内容”,则可能是因为您没有执行它,或者您没有存储结果。我建议你将代码更改为:
Result = case str:str(XML, <<"message">>) of
1 -> XML;
_ -> crypto:aes_cfb_128_decrypt(<<"abcdefghabcdefgh">>,<<"12345678abcdefgh">>,base64:decode(XML))
end,
io:format("~p~n",[result]),
...
因为使用此当前代码段版本,案例的结果不会被使用,所以一旦评估就会丢失。