2017-02-28 68 views
2

我決定升級我的系統,其中運行基於YAWS的Web界面運行Erlang。我已經重新編譯了Erlang部分,並且在YAWS處理的登錄期間測試Web部分時出錯。YAWS:從1.87移植到2.0.4

特別地,我在嵌入模式使用YAWS和配置是:

#sconf{listen  = Ip, 
     servername = HostName, 
     port   = get_port(), 
     docroot  = get_docroot(), 
     errormod_404 = ?MODULE, 
     partial_post_size = 1000000, 
     authdirs = [#auth {dir = ["/"], realm = Realm, type="Basic", users = [{User, Pwd}]}]} 

get_port()和get_docroot()是正確的,則值來自配置文件作爲用戶和PWD值。

當我連接到Web界面,瀏覽器顯示我的登錄表單,所以我插入正確的帳戶,但是當我確認發生的事情是:

Yaws process died: {function_clause, 
        [{yaws_server,'-handle_auth/4-fun-1-', 
         [{"admin","admin"}], 
         [{file,"yaws_server.erl"},{line,2175}]}, 
        {lists,any,2,[{file,"lists.erl"},{line,1225}]}, 
        {yaws_server,handle_auth,4, 
         [{file,"yaws_server.erl"},{line,2178}]}, 
        {yaws_server,is_auth,5, 
         [{file,"yaws_server.erl"},{line,2045}]}, 
        {yaws_server,is_req_auth,3, 
         [{file,"yaws_server.erl"},{line,2032}]}, 
        {yaws_server,handle_normal_request,5, 
         [{file,"yaws_server.erl"},{line,1932}]}, 
        {yaws_server,aloop,4, 
         [{file,"yaws_server.erl"},{line,1242}]}, 
        {yaws_server,acceptor0,2, 
         [{file,"yaws_server.erl"},{line,1065}]}]} 

和登錄失敗。

我在YAWS文檔中尋找解決方案,但是我發現任何東西,似乎我的配置是正確的(它與以前的YAWS版本沒有問題是一樣的)。

在此先感謝您的幫助。

利瑪竇

回答

1

新版本預計用戶字段設置爲4元組,而不是2元組的列表。 (這就是爲什麼有趣的文件「yaws_server.erl」,行2175崩潰。)

1

感謝您的答案,理查德。

我看過的代碼(yaws_server.erl),也對加密的文件二郎:哈希函數,所以最後我找到了問題:

在我的情況

,爲用戶列表中選擇正確的配置是

#sconf{listen  = Ip, 
    servername = HostName, 
    port   = get_port(), 
    docroot  = get_docroot(), 
    errormod_404 = ?MODULE, 
    partial_post_size = 1000000, 
    authdirs = [#auth {dir = ["/"], realm = Realm, type="Basic", users = [{User, md4, Salt, crypto:hash(md4, [Salt,Pwd])}]} 

第二步,我將刪除帶有哈希值的明文Pwd。

非常感謝。