From 4ec231e24dfb6ad85810267f81c7fedecce75ed6 Mon Sep 17 00:00:00 2001 From: gaoxinxing <15031259256@163.com> Date: Mon, 20 Mar 2023 15:29:18 +0800 Subject: [PATCH] add check --- .../mlops/backup/db/MysqlBackupService.java | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/server/controller/src/main/java/ai/starwhale/mlops/backup/db/MysqlBackupService.java b/server/controller/src/main/java/ai/starwhale/mlops/backup/db/MysqlBackupService.java index a3af7f707b..70772e2ca9 100644 --- a/server/controller/src/main/java/ai/starwhale/mlops/backup/db/MysqlBackupService.java +++ b/server/controller/src/main/java/ai/starwhale/mlops/backup/db/MysqlBackupService.java @@ -56,18 +56,22 @@ private static Connection doConnect(String driver, String url, String username, } public static String extractDatabaseFromUrl(String url) { - if (url == null || url.isEmpty()) { - throw new RuntimeException("Null or Empty JDBC URL supplied: " + url); + if (!hasDatabase(url)) { + throw new RuntimeException("Invalid JDBC URL supplied: " + url); } + return url.substring(url.lastIndexOf("/") + 1, url.indexOf("?")); + } - String urlWithoutParams; - if (url.contains("?")) { - urlWithoutParams = url.substring(0, url.indexOf("?")); - } else { - urlWithoutParams = url; + public static boolean hasDatabase(String url) { + if (url == null || url.isEmpty()) { + return false; } - - return urlWithoutParams.substring(urlWithoutParams.lastIndexOf("/") + 1); + int index = url.indexOf("://"); + if (index == -1) { + return false; + } + index = url.indexOf("/", index + 3); + return index != -1; } private static TablesResponse getAllTablesAndViews(Statement statement, String database) throws SQLException {