- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我需要帮助。我有一个工作网站。上线前的最后一步是更新 ssl 证书。由于那个版本的 erlang 中的错误,这并没有发生。我升级了 erlang,然后 erlang 和 yaws 驱动程序之间的代码级别不匹配。我下载并遵守了 yaws,令我非常高兴的是我能够更新 ssl 证书。开始推出后,一位用户指出上传功能无法使用。我确认它仍然适用于不接受 ssl 证书的版本。我认为问题出在构建过程中,所以我重新开始使用 CentOS 7 的新虚拟机以及该发行版中的 erlang 和 Yaws。同样的问题。看来我可以上传证书或新证书,但不能同时拥有两者。我的上传版本是 std upload.yaws 的略微修改版本。但是,我拿起它并尝试了它。它也失败了。以下是软件级别、失败代码和崩溃数据。
任何帮助将不胜感激。
________代码 __________________________________________________________________CentOS 3.10.0-123.6.3.el7.x86_64erlang.x86_64 R16B-03.7.el7 @epelyaws.x86_64 1.98-2.el7 @epel
_CODE____________________________________________________________________________________________________________________________
-record(upload, { % represents state for a partially processed upload
fd,
filename,
last}).
-define(DIR, "/var/lib/yaws/www/cwfiles/").
showup(List) -> % Adds the rows of files from the DB
[{tr,[],[
{th,[], "File Name"}
]},
map(fun(Y) -> {TFid,FName} = Y, [
{tr,[],[
{td,[], [{input, [{type,text},{name,"Filename"},{value,FName}]}]},
{td,[], [{a,[{href,["dpagepost.yaws?action=delf& fid=",integer_to_list(TFid),"&fname=",[FName]]}],"Delete File"}]}
]}
] end, List)].
upload(A) -> upload(A,[]).
upload(A, Comment) ->
Css = css_head(A,on,57),
Body = case getadmen(A) of
true ->
Ref=dbconnect(),
{selected,_,LFil} = odbc:sql_query(Ref,"select fid,filename from files"),
odbc:disconnect(Ref),
{ehtml, [
{h2, [], "Update Files (Upload/Delete)"},
{hr},
{h3,[], [Comment]},
{hr},
{table, [], [
showup(LFil) % Do rows from DB
]}, %end table
{hr},
{form, [{enctype, "multipart/form-data"},{action," /dpagepost.yaws?action=addf"},{method,post}],[
{input, [{type,file},{name,"fname"},{width,"50"},{value,"Upload"}]},
{input, [{type,submit},{value,"Upload"}]}
]}
]};
_ ->
{ehtml, [
{h2, [], "Unvalid Action. Please insure you are Admin Enabled"},
{hr}
]}
end,
[Css, Body, bot(), break].
%%% Process POST data from client, state=#upload
%%% returns Ehtml | {get_more, Continuation, NewState}
uploadpost(A) ->
CAdmen = getadmen(A),
case {yaws_api:queryvar(A,"action"),CAdmen} of
{{ok, Action},true} -> Action;
_ -> Action = ""
end,
case Action of
"addf" ->
State = case A#arg.state of
undefined -> #upload{};
_ -> A#arg.state
end,
multipart(A, State);
"delf" ->
case {yaws_api:queryvar(A, "fid"),yaws_api:queryvar(A, "fname"),CAdmen} of
{{ok,LFid},{ok,LFname},true} ->
{NFid,_} = string:to_integer(LFid),
Fname = string:strip(LFname),
SQL = "delete from files where fid=?",
Ref=dbconnect(),
odbc:param_query(Ref,SQL,[{sql_integer, [NFid]}]),
odbc:disconnect(Ref),
case file:delete(concat(?DIR,Fname)) of
ok ->
upload(A,"File Delete sucessfull.");
_ -> upload(A,"File Delete Failed.")
end;
_ -> upload(A,"You performed an invalid Action.")
end;
_ -> upload(A,"You performed an invalid Action.")
end.
err() -> "error".
multipart(A, State) ->
Admen = getadmen(A),
Parse = yaws_api:parse_multipart_post(A),
case {Parse,Admen} of
{{cont, Cont, Res},true} ->
case addFileChunk(A, Res, State) of
{done, Result} ->
upload(A,Result);
{cont, NewState} ->
{get_more, Cont, NewState}
end;
{{result, Res},true} ->
case addFileChunk(A, Res, State#upload{last=true}) of
{done, Result} ->
upload(A,Result);
{cont, _} ->
upload(A,"Upload failed")
end;
_ ->
upload(A,"Upload failed")
end.
addFileChunk(A, [{part_body, Data}|Res], State) ->
addFileChunk(A, [{body, Data}|Res], State);
addFileChunk(_A, [], State) when State#upload.last==true,State#upload.filename /= undefined,State#upload.fd /= undefined ->
file:close(State#upload.fd),
SQL = "insert into files (filename) values ( ?)",
Ref=dbconnect(),
odbc:param_query(Ref,SQL,[{{sql_varchar, 50}, [State#upload.filename]}]),
odbc:disconnect(Ref),
{done,"Upload Completed Sucessfully."};
addFileChunk(_A, [], State) when State#upload.last==true ->
{done, err()};
addFileChunk(_A, [], State) ->
{cont, State};
addFileChunk(A, [{head, {_Name, Opts}}|Res], State ) ->
case lists:keysearch(filename, 1, Opts) of
{value, {_, Fname0}} ->
Fname = yaws_api:sanitize_file_name(filename:basename(Fname0)),
%file:make_dir(?DIR),
case file:open([?DIR, Fname] ,[write]) of
{ok, Fd} ->
S2 = State#upload{filename = Fname,fd = Fd},
addFileChunk(A, Res, S2);
_ ->
{done, err()}
end;
false -> addFileChunk(A,Res,State)
end;
addFileChunk(A, [{body, Data}|Res], State) when State#upload.filename /= undefined ->
case file:write(State#upload.fd, Data) of
ok ->
addFileChunk(A, Res, State);
_ ->
{done, err()}
end.`
_________崩溃数据________________ 内部错误,雅司代码崩溃
ERROR erlang code threw an uncaught exception:
File: /var/lib/yaws/www/dpagepost.yaws:1
Class: error
Exception: function_clause
Req: {http_request,'POST',{abs_path,"/dpagepost.yaws?action=addf"},{1,1}}
Stack: [{cwpage,addFileChunk,
[{arg,
{ssl,
{sslsocket,
{gen_tcp,#Port<0.1480>,tls_connection},
<0.73.0>}},
{{192,168,0,133},54630},
{headers,"keep-alive",
"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"192.168.0.190",undefined,undefined,undefined,undefined,
undefined,undefined,"https://192.168.0.190/upload.yaws",
"Mozilla/5.0 (X11; Linux x86_64; rv:26.0) Gecko/20100101 Firefox/26.0",
undefined,
["__atuvc=30%7C35; cwhoa_sid=nonode@nohost-211833414978628805947952202420298501124"],
undefined,undefined,"229",
"multipart/form-data; boundary=---------------------------501916758553745487488260262",
undefined,undefined,undefined,undefined,
[{http_header,10,'Accept-Encoding',undefined,
"gzip, deflate"},
{http_header,11,'Accept-Language',undefined,
"en-US,en;q=0.5"}]},
{http_request,'POST',
{abs_path,"/dpagepost.yaws?action=addf"},
{1,1}},
{http_request,'POST',
{abs_path,"/dpagepost.yaws?action=addf"},
{1,1}},
<<"-----------------------------501916758553745487488260262\r\nContent-Disposition: form-data; name=\"fname\"; filename=\"Hello.txt\"\r\nContent-Type: text/plain\r\n\r\nHello, World\n\r\n-----------------------------501916758553745487488260262--\r\n">>,
"/dpagepost.yaws","action=addf",undefined,
"/var/lib/yaws/www","/","/var/lib/yaws/www/dpagepost.yaws",
undefined,undefined,<0.72.0>,[],undefined,"/",undefined},
[{body,"Hello, World\n"}],
{upload,undefined,undefined,true}],
[{file,"cwpage.erl"},{line,239}]},
{cwpage,multipart,2,[{file,"cwpage.erl"},{line,209}]},
{yaws_server,deliver_dyn_part,8,
[{file,"yaws_server.erl"},{line,2801}]},
{yaws_server,aloop,4,[{file,"yaws_server.erl"},{line,1215}]},
{yaws_server,acceptor0,2,[{file,"yaws_server.erl"},{line,1052}]},
{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,239}]}]
最佳答案
很抱歉只回答了部分问题,但这对于评论来说太长了。
错误 function_clause
意味着没有子句匹配给定的参数。
addFileChunk(A, [{part_body, Data}|Res], State) -> ...
addFileChunk(_A, [], State) when State#upload.last==true,State#upload.filename /= undefined,State#upload.fd /= undefined -> ...
addFileChunk(_A, [], State) when State#upload.last==true -> ...
addFileChunk(_A, [], State) -> ...
addFileChunk(A, [{head, {_Name, Opts}}|Res], State ) -> ...
addFileChunk(A, [{body, Data}|Res], State) when State#upload.filename /= undefined -> ...
第一个参数未使用或匹配所有内容,所以让我们看看其他两个。
[{body,"Hello, World\n"}],
{upload,undefined,undefined,true}
如果 upload
记录中有文件名,它可以匹配最后一个子句。所以在 uploadpost/1
中:
case Action of
"addf" ->
State = case A#arg.state of
undefined -> #upload{};
_ -> A#arg.state
end,
例如,您可以从 arg.clidata
中提取文件名并将其添加到 upload
状态。这应该可以解决问题,但我不知道为什么它在没有 SSL 的情况下也能正常工作。
关于ssl - upload.yaws 因 erlang R16B-03.7.el7 和 yaws 1.98-2.el7 而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25575367/
我在 Cloudflare 的域名服务器上有一个域名 example.com。该域指向我的专用服务器的 IP 地址,该服务器运行 CentOS/WHM/cPanel。该站点可访问 - 一切都很好。 我
我正在努力将 SSL 支持添加到我们现有的应用程序中,并已开始考虑向后兼容性。 与我读过的其他帖子不同的一个特殊情况是服务器可能不一定使用 SSL 代码更新。所以我将有一个 SSL 客户端连接到一个对
我有几个 https://*.rest-service.mydomain.com。随着服务数量的增加,我觉得管理 SSL 证书的成本很高。我为 *.mydomain.com 购买了通配符证书。 新添加
我的客户要求我在他的网站上做反向 ssl。但我是这个学期的新手。谁能帮我解决这个问题。 请描述或引用如何做。 最佳答案 查看 this wiki article . In the case of se
关闭。这个问题是opinion-based .它目前不接受答案。 想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它. 去年关闭。 Improve this
我连接到我的网络服务器上的存储库,但是当我尝试推送我的更改时,它显示:“错误 403:需要 ssl”,但在我的存储库设置中我已经激活了 ssl 选项。 有什么建议吗? 最佳答案 当您连接到存储库时,您
抱歉,如果这听起来像是转储问题,我已经阅读了很多关于 SSL 握手和 SSL 工作原理的文章和文档。我对一件事感到困惑,如果有人能澄清我就太好了。 我知道私钥要保密。但是我已经看到通过在请求中指定私钥
随着物联网越来越主流,越来越需要从硬件发送http请求。 一个主要问题是硬件微 Controller 无法发送 ssl 请求,但大多数服务器/网站/服务都在使用 ssl。 所以,问题是,有没有桥(一个
我有一个 ssl 页面,它还从非 ssl 站点下载头像。我能做些什么来隔离该内容,以便浏览器不会警告用户混合内容吗? 最佳答案 只是一个想法 - 或者: 尝试在头像网站上使用 ssl url,如有必要
我在 Digital Ocean droplet(使用 nginx)上设置了两个域。我已经在其中一个(domain1)中安装了一个 SSL 证书,并且那个证书一切正常。第二个域 (domain2) 不
我收到这个错误: Error frontend: 502 Bad gateway 99.110.244:443 2017/09/28 13:03:51 [error] 34080#34080: *10
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 6 年前。 Improve
我遇到了一个问题,我正在构建一个 nginx 反向代理以定向到不同 url 路径上的多个微服务。 该系统完全基于 docker,因此开发和生产使用相同的环境。这在安装 SSL 时给我带来了问题,因为
所以我知道要求 SSL 证书和接受之间的根本区别,一个意味着您必须拥有 SSL 证书,另一个意味着您不需要。 在某个网页的 IIS 管理器中,我有以下设置: 我遇到的问题是,当我设置需要 SSL 证书
我今天才发现 .app 域名需要 SSL 证书。我购买它是为了将 DNS 重定向到已经设置了 SSL 证书的站点,所以我的问题是是否可以设置它? 我正在使用 Google Domains,在将合成临时
堆栈 : react ,NGINX 1.14.0,GUnicorn,Django 2.2.8,Python 3.6.9 错误 : 在浏览器:当 React 调用 Django API(当然是在请求头中
假设我在计算机上编辑主机文件以使 google.com 指向我的 VPS 服务器 IP,并且服务器具有通过 Apache 或 Nginx 配置的 google.com 的虚拟主机/服务器 block
我有一个场景,我正在处理用于 URL 路由的 IIS 网站配置。我已添加网站并在服务器上导入所需的证书。 我的情况是(我有多个网站 URL 和两个 SSL 证书 - 如下所示): qatest1.ab
我知道服务器发送的证书无法伪造(仍然存在 MD5 冲突,但成本高昂),但是伪造客户端又如何呢?在中间人攻击中:我们不能告诉服务器我们是合法客户端并从该服务器获取数据并对其进行操作,然后使用合法客户端公
我已通读相关问题,但无法完全找到我要查找的内容。我设置了一个名为“domain.com”的域,并创建了两个子域“client.domain.com”和“client-intern.domain.com
我是一名优秀的程序员,十分优秀!