为安全服务器证书创建文件相对路径

时间:2015-02-04 19:48:48

标签: dart

我正在使用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类的文件,而是相对于包含main()方法的文件。这意味着当我尝试为此类编写单元测试时,路径不再指向正确的目录。如果这是导入,我会使用package:packageName/path/to/cert语法,但这似乎不适用于此处。如何以多种入口点(实际运行服务器与单元测试)的方式指定证书路径?

1 个答案:

答案 0 :(得分:1)

我认为没有办法定义路径,因此它相对于源文件 您可以做的是在运行main()之前更改当前工作目录,或者将工作目录路径作为参数传递给main(),让main()使此目录成为当前工作目录。

Directory.current = someDirectory;