631 |
631 |
632 lazy val init_jdbc: Unit = Class.forName("org.postgresql.Driver") |
632 lazy val init_jdbc: Unit = Class.forName("org.postgresql.Driver") |
633 |
633 |
634 val default_server: SSH.Server = SSH.local_server(port = 5432) |
634 val default_server: SSH.Server = SSH.local_server(port = 5432) |
635 |
635 |
|
636 def open_server( |
|
637 options: Options, |
|
638 host: String = "", |
|
639 port: Int = 0, |
|
640 ssh_host: String = "", |
|
641 ssh_port: Int = 0, |
|
642 ssh_user: String = "" |
|
643 ): SSH.Server = { |
|
644 val server_host = proper_string(host).getOrElse(default_server.host) |
|
645 val server_port = if (port > 0) port else default_server.port |
|
646 |
|
647 if (ssh_host.isEmpty) SSH.local_server(host = server_host, port = server_port) |
|
648 else { |
|
649 SSH.open_server(options, host = ssh_host, port = ssh_port, user = ssh_user, |
|
650 remote_host = server_host, remote_port = server_port) |
|
651 } |
|
652 } |
|
653 |
636 def open_database_server( |
654 def open_database_server( |
637 options: Options, |
655 options: Options, |
638 user: String = "", |
656 user: String = "", |
639 password: String = "", |
657 password: String = "", |
640 database: String = "", |
658 database: String = "", |
|
659 server: SSH.Server = SSH.no_server, |
641 host: String = "", |
660 host: String = "", |
642 port: Int = 0, |
661 port: Int = 0, |
643 ssh_host: String = "", |
662 ssh_host: String = "", |
644 ssh_port: Int = 0, |
663 ssh_port: Int = 0, |
645 ssh_user: String = "", |
664 ssh_user: String = "" |
646 server: SSH.Server = SSH.no_server |
|
647 ): PostgreSQL.Database = { |
665 ): PostgreSQL.Database = { |
648 val (db_server, server_close) = |
666 val db_server = |
649 if (server.defined) (server, false) |
667 if (server.defined) server |
650 else { |
668 else { |
651 val server_host = proper_string(host).getOrElse(default_server.host) |
669 open_server(options, host = host, port = port, ssh_host = ssh_host, |
652 val server_port = if (port > 0) port else default_server.port |
670 ssh_port = ssh_port, ssh_user = ssh_user) |
653 val db_server = |
671 } |
654 if (ssh_host.isEmpty) SSH.local_server(host = server_host, port = server_port) |
672 val server_close = !server.defined |
655 else { |
|
656 SSH.open_server(options, host = ssh_host, port = ssh_port, user = ssh_user, |
|
657 remote_host = server_host, remote_port = server_port) |
|
658 } |
|
659 (db_server, true) |
|
660 } |
|
661 |
|
662 try { |
673 try { |
663 open_database(user = user, password = password, database = database, |
674 open_database(user = user, password = password, database = database, |
664 server = db_server, server_close = server_close) |
675 server = db_server, server_close = server_close) |
665 } |
676 } |
666 catch { case exn: Throwable => if (server_close) db_server.close(); throw exn } |
677 catch { case exn: Throwable if server_close => db_server.close(); throw exn } |
667 } |
678 } |
668 |
679 |
669 def open_database( |
680 def open_database( |
670 user: String, |
681 user: String, |
671 password: String, |
682 password: String, |