为安全服务器证书创建文件相对路径
Create a file relative path for secure server certificate
我正在使用 SSL 开发 Dart HttpServer,它看起来像这样:
class Server {
//The path for the database is relative to the code's entry point (main.dart)
static const String CERTIFICATE_DB_PATH = '../lib/server/';
static const String CERTIFICATE_DB_PASS = '*******';
static const String CERTIFICATE_NAME = 'CN=mycert';
Future start() async {
SecureSocket.initialize(database: CERTIFICATE_DB_PATH, password: CERTIFICATE_DB_PASS);
httpServer = await HttpServer.bindSecure(ADDRESS, PORT, certificateName: CERTIFICATE_NAME);
listenSubscription = httpServer.listen(onRequest, onError: onError);
}
//more server code here
}
这一切都按预期工作,因此实际证书或服务器代码没有问题。第一条评论中提到了我遇到问题的部分。 CERTIFICATE_DB_PATH
似乎与定义 Server
class 的文件无关,而是与包含 main()
方法的文件相关。这意味着当我尝试为此 class 编写单元测试时,路径不再指向正确的目录。如果这是导入,我会使用 package:packageName/path/to/cert
语法,但它似乎不适用于此处。我怎样才能以适用于多个入口点的方式指定证书的路径(实际上 运行 服务器与单元测试)?
我认为没有办法定义路径,所以它是相对于源文件的。
您可以做的是在 运行 main()
之前更改当前工作目录,或者将工作目录路径作为参数传递给 main()
并让 main()
将此目录设为当前目录工作目录。
Directory.current = someDirectory;
我正在使用 SSL 开发 Dart HttpServer,它看起来像这样:
class Server {
//The path for the database is relative to the code's entry point (main.dart)
static const String CERTIFICATE_DB_PATH = '../lib/server/';
static const String CERTIFICATE_DB_PASS = '*******';
static const String CERTIFICATE_NAME = 'CN=mycert';
Future start() async {
SecureSocket.initialize(database: CERTIFICATE_DB_PATH, password: CERTIFICATE_DB_PASS);
httpServer = await HttpServer.bindSecure(ADDRESS, PORT, certificateName: CERTIFICATE_NAME);
listenSubscription = httpServer.listen(onRequest, onError: onError);
}
//more server code here
}
这一切都按预期工作,因此实际证书或服务器代码没有问题。第一条评论中提到了我遇到问题的部分。 CERTIFICATE_DB_PATH
似乎与定义 Server
class 的文件无关,而是与包含 main()
方法的文件相关。这意味着当我尝试为此 class 编写单元测试时,路径不再指向正确的目录。如果这是导入,我会使用 package:packageName/path/to/cert
语法,但它似乎不适用于此处。我怎样才能以适用于多个入口点的方式指定证书的路径(实际上 运行 服务器与单元测试)?
我认为没有办法定义路径,所以它是相对于源文件的。
您可以做的是在 运行 main()
之前更改当前工作目录,或者将工作目录路径作为参数传递给 main()
并让 main()
将此目录设为当前目录工作目录。
Directory.current = someDirectory;