Configuration YAWS:从1.87移植到2.0.4

Configuration YAWS:从1.87移植到2.0.4,configuration,erlang,yaws,Configuration,Erlang,Yaws,我决定对我的系统进行升级,其中运行Erlang,带有基于YAWS的web界面。我已经重新编译了Erlang部件,在测试web部件时,我在YAWS处理的登录过程中遇到了一个错误 特别是,我在嵌入式模式下使用YAWS,配置如下: #sconf{listen = Ip, servername = HostName, port = get_port(), docroot = get_docroot(),

我决定对我的系统进行升级,其中运行Erlang,带有基于YAWS的web界面。我已经重新编译了Erlang部件,在测试web部件时,我在YAWS处理的登录过程中遇到了一个错误

特别是,我在嵌入式模式下使用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版本一样,它可以正常工作)

提前谢谢你的帮助


Matteo

新版本要求用户字段是4元组列表,而不是2元组列表。(这就是为什么乐趣会在文件“yaws_server.erl”中崩溃,第2175行。)

谢谢你的回答,Richard

我已经阅读了代码(yaws_server.erl)以及关于crypto:hash函数的Erlang文档,所以最后我发现了问题:

在我的例子中,用户列表的正确配置是

#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

非常感谢