|
|
|
@ -18,12 +18,12 @@
|
|
|
|
|
package org.apache.dolphinscheduler.plugin.alert.script; |
|
|
|
|
|
|
|
|
|
import org.apache.dolphinscheduler.alert.api.AlertResult; |
|
|
|
|
|
|
|
|
|
import java.util.Map; |
|
|
|
|
|
|
|
|
|
import org.slf4j.Logger; |
|
|
|
|
import org.slf4j.LoggerFactory; |
|
|
|
|
|
|
|
|
|
import java.io.File; |
|
|
|
|
import java.util.Map; |
|
|
|
|
|
|
|
|
|
public final class ScriptSender { |
|
|
|
|
private static final Logger logger = LoggerFactory.getLogger(ScriptSender.class); |
|
|
|
|
private static final String ALERT_TITLE_OPTION = " -t "; |
|
|
|
@ -54,6 +54,21 @@ public final class ScriptSender {
|
|
|
|
|
alertResult.setMessage("shell script not support windows os"); |
|
|
|
|
return alertResult; |
|
|
|
|
} |
|
|
|
|
//validate script path in case of injections
|
|
|
|
|
File shellScriptFile = new File(scriptPath); |
|
|
|
|
//validate existence
|
|
|
|
|
if (!shellScriptFile.exists()) { |
|
|
|
|
logger.error("shell script not exist : {}", scriptPath); |
|
|
|
|
alertResult.setMessage("shell script not exist : " + scriptPath); |
|
|
|
|
return alertResult; |
|
|
|
|
} |
|
|
|
|
//validate is file
|
|
|
|
|
if (!shellScriptFile.isFile()) { |
|
|
|
|
logger.error("shell script is not a file : {}", scriptPath); |
|
|
|
|
alertResult.setMessage("shell script is not a file : " + scriptPath); |
|
|
|
|
return alertResult; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
String[] cmd = {"/bin/sh", "-c", scriptPath + ALERT_TITLE_OPTION + "'" + title + "'" + ALERT_CONTENT_OPTION + "'" + content + "'" + ALERT_USER_PARAMS_OPTION + "'" + userParams + "'"}; |
|
|
|
|
int exitCode = ProcessUtils.executeScript(cmd); |
|
|
|
|
|
|
|
|
|