Merge pull request #40 from fl42/fix/message-looks-as-arg

Fix issue when message looks like a CLI arg (like "--test")
This commit is contained in:
Bernhard B
2020-11-22 13:28:54 +01:00
committed by GitHub

View File

@@ -90,7 +90,7 @@ func cleanupTmpFiles(paths []string) {
func send(c *gin.Context, attachmentTmpDir string, signalCliConfig string, number string, message string, func send(c *gin.Context, attachmentTmpDir string, signalCliConfig string, number string, message string,
recipients []string, base64Attachments []string, isGroup bool) { recipients []string, base64Attachments []string, isGroup bool) {
cmd := []string{"--config", signalCliConfig, "-u", number, "send", "-m", message} cmd := []string{"--config", signalCliConfig, "-u", number, "send"}
if len(recipients) == 0 { if len(recipients) == 0 {
c.JSON(400, gin.H{"error": "Please specify at least one recipient"}) c.JSON(400, gin.H{"error": "Please specify at least one recipient"})
@@ -163,7 +163,7 @@ func send(c *gin.Context, attachmentTmpDir string, signalCliConfig string, numbe
cmd = append(cmd, attachmentTmpPaths...) cmd = append(cmd, attachmentTmpPaths...)
} }
_, err := runSignalCli(true, cmd) _, err := runSignalCli(true, cmd, message)
if err != nil { if err != nil {
cleanupTmpFiles(attachmentTmpPaths) cleanupTmpFiles(attachmentTmpPaths)
c.JSON(400, gin.H{"error": err.Error()}) c.JSON(400, gin.H{"error": err.Error()})
@@ -177,7 +177,7 @@ func send(c *gin.Context, attachmentTmpDir string, signalCliConfig string, numbe
func getGroups(number string, signalCliConfig string) ([]GroupEntry, error) { func getGroups(number string, signalCliConfig string) ([]GroupEntry, error) {
groupEntries := []GroupEntry{} groupEntries := []GroupEntry{}
out, err := runSignalCli(true, []string{"--config", signalCliConfig, "-u", number, "listGroups", "-d"}) out, err := runSignalCli(true, []string{"--config", signalCliConfig, "-u", number, "listGroups", "-d"}, "")
if err != nil { if err != nil {
return groupEntries, err return groupEntries, err
} }
@@ -234,8 +234,11 @@ func getGroups(number string, signalCliConfig string) ([]GroupEntry, error) {
return groupEntries, nil return groupEntries, nil
} }
func runSignalCli(wait bool, args []string) (string, error) { func runSignalCli(wait bool, args []string, stdin string) (string, error) {
cmd := exec.Command("signal-cli", args...) cmd := exec.Command("signal-cli", args...)
if stdin != "" {
cmd.Stdin = strings.NewReader(stdin)
}
if wait { if wait {
var errBuffer bytes.Buffer var errBuffer bytes.Buffer
var outBuffer bytes.Buffer var outBuffer bytes.Buffer
@@ -338,7 +341,7 @@ func (a *Api) RegisterNumber(c *gin.Context) {
command = append(command, "--voice") command = append(command, "--voice")
} }
_, err := runSignalCli(true, command) _, err := runSignalCli(true, command, "")
if err != nil { if err != nil {
c.JSON(400, gin.H{"error": err.Error()}) c.JSON(400, gin.H{"error": err.Error()})
return return
@@ -391,7 +394,7 @@ func (a *Api) VerifyRegisteredNumber(c *gin.Context) {
cmd = append(cmd, pin) cmd = append(cmd, pin)
} }
_, err := runSignalCli(true, cmd) _, err := runSignalCli(true, cmd, "")
if err != nil { if err != nil {
c.JSON(400, gin.H{"error": err.Error()}) c.JSON(400, gin.H{"error": err.Error()})
return return
@@ -495,7 +498,7 @@ func (a *Api) Receive(c *gin.Context) {
timeout := c.DefaultQuery("timeout", "1") timeout := c.DefaultQuery("timeout", "1")
command := []string{"--config", a.signalCliConfig, "-u", number, "receive", "-t", timeout, "--json"} command := []string{"--config", a.signalCliConfig, "-u", number, "receive", "-t", timeout, "--json"}
out, err := runSignalCli(true, command) out, err := runSignalCli(true, command, "")
if err != nil { if err != nil {
c.JSON(400, gin.H{"error": err.Error()}) c.JSON(400, gin.H{"error": err.Error()})
return return
@@ -544,7 +547,7 @@ func (a *Api) CreateGroup(c *gin.Context) {
cmd := []string{"--config", a.signalCliConfig, "-u", number, "updateGroup", "-n", req.Name, "-m"} cmd := []string{"--config", a.signalCliConfig, "-u", number, "updateGroup", "-n", req.Name, "-m"}
cmd = append(cmd, req.Members...) cmd = append(cmd, req.Members...)
out, err := runSignalCli(true, cmd) out, err := runSignalCli(true, cmd, "")
if err != nil { if err != nil {
c.JSON(400, gin.H{"error": err.Error()}) c.JSON(400, gin.H{"error": err.Error()})
return return
@@ -600,7 +603,7 @@ func (a *Api) DeleteGroup(c *gin.Context) {
return return
} }
_, err = runSignalCli(true, []string{"--config", a.signalCliConfig, "-u", number, "quitGroup", "-g", string(groupId)}) _, err = runSignalCli(true, []string{"--config", a.signalCliConfig, "-u", number, "quitGroup", "-g", string(groupId)}, "")
if err != nil { if err != nil {
c.JSON(400, gin.H{"error": err.Error()}) c.JSON(400, gin.H{"error": err.Error()})
return return
@@ -624,7 +627,7 @@ func (a *Api) GetQrCodeLink(c *gin.Context) {
command := []string{"--config", a.signalCliConfig, "link", "-n", deviceName} command := []string{"--config", a.signalCliConfig, "link", "-n", deviceName}
tsdeviceLink, err := runSignalCli(false, command) tsdeviceLink, err := runSignalCli(false, command, "")
if err != nil { if err != nil {
log.Error("Couldn't create QR code: ", err.Error()) log.Error("Couldn't create QR code: ", err.Error())
c.JSON(400, Error{Msg: "Couldn't create QR code: " + err.Error()}) c.JSON(400, Error{Msg: "Couldn't create QR code: " + err.Error()})