如何在 Nerves 设备上复制 CRT 文件

问题描述 投票:0回答:1

我想复制ca文件建立ssl连接。我把 CA 放在里面

lib

lib/
   mymodule.ex #using the ca path here
   mycrt.crt

然后使用

mix firmware
我给出这样的相对路径

 def getPath() do
    {path,0} = System.cmd("pwd",[])
    String.replace(path,"\n","/lib/mycrt.crt")
   end

但是我们使用

iex -S mix
在主机上运行所以我必须在
/lib
之前加上
mycrt.crt

我不确定它是否在

/lib
中正确复制或
pwd
在设备上刻录后是否获得正确的路径。这是正确的做法吗?因为当我在设备上做
ls
时,我看不到
mycrt.crt
复制到目录中

使用 Nerves 通过设备复制文件的正确方法是什么?

elixir mqtt nerves-project
1个回答
3
投票

而不是

lib
使用
priv
,所以:

priv/mycrt.crt

然后在代码中:

Path.join(:code.priv_dir(:my_app), "mycrt.crt")

https://erlang.org/doc/man/code.html#priv_dir-1.

或者,您可以使用模块属性在编译时读取文件内容:

@crt_bin File.read!("lib/mycrt.crt")

无论您只是希望文件在目标上可用,还是想要模块属性版本,我建议将文件存储在

priv
中:http://erlang.org/doc/design_principles/applications.html# 7.4。特别是:

  • priv
    - 可选。用于特定于应用程序的文件。

和:

priv 目录保存应用程序在运行期间需要的资产 运行。可执行文件应驻留在 priv/bin 中并动态链接 库应该驻留在 priv/lib 中。其他资产可自由驻留 在 priv 目录中,但建议它在 结构化方式。

© www.soinside.com 2019 - 2024. All rights reserved.