mirror of
https://github.com/aljazceru/signal-cli-rest-api.git
synced 2025-12-21 16:44:27 +01:00
added fallback mechanism in case signal-cli-native doesn't exist
This commit is contained in:
@@ -3,6 +3,7 @@ services:
|
|||||||
signal-cli-rest-api:
|
signal-cli-rest-api:
|
||||||
build: "."
|
build: "."
|
||||||
environment:
|
environment:
|
||||||
|
- USE_NATIVE=1
|
||||||
- PORT=8080
|
- PORT=8080
|
||||||
ports:
|
ports:
|
||||||
- "8080:8080" #map docker port 8080 to host port 8080.
|
- "8080:8080" #map docker port 8080 to host port 8080.
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import (
|
|||||||
"github.com/h2non/filetype"
|
"github.com/h2non/filetype"
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
qrcode "github.com/skip2/go-qrcode"
|
qrcode "github.com/skip2/go-qrcode"
|
||||||
|
utils "github.com/bbernhard/signal-cli-rest-api/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
const signalCliV2GroupError = "Cannot create a V2 group as self does not have a versioned profile"
|
const signalCliV2GroupError = "Cannot create a V2 group as self does not have a versioned profile"
|
||||||
@@ -319,10 +320,21 @@ func runSignalCli(wait bool, args []string, stdin string) (string, error) {
|
|||||||
} else {
|
} else {
|
||||||
log.Debug("*) docker exec -it <container id> /bin/bash")
|
log.Debug("*) docker exec -it <container id> /bin/bash")
|
||||||
}
|
}
|
||||||
log.Debug("*) su signal-api")
|
|
||||||
log.Debug("*) signal-cli ", strings.Join(args, " "))
|
|
||||||
|
|
||||||
cmd := exec.Command("signal-cli", args...)
|
signalCliBinary := "signal-cli"
|
||||||
|
if utils.GetEnv("USE_NATIVE", "0") == "1" {
|
||||||
|
if utils.GetEnv("SUPPORTS_NATIVE", "0") == "1" {
|
||||||
|
signalCliBinary = "signal-cli-native"
|
||||||
|
} else {
|
||||||
|
log.Error("signal-cli-native is not support on this system...falling back to signal-cli")
|
||||||
|
signalCliBinary = "signal-cli"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
log.Debug("*) su signal-api")
|
||||||
|
log.Debug("*) ", signalCliBinary, " ", strings.Join(args, " "))
|
||||||
|
|
||||||
|
cmd := exec.Command(signalCliBinary, args...)
|
||||||
if stdin != "" {
|
if stdin != "" {
|
||||||
cmd.Stdin = strings.NewReader(stdin)
|
cmd.Stdin = strings.NewReader(stdin)
|
||||||
}
|
}
|
||||||
|
|||||||
22
src/main.go
22
src/main.go
@@ -2,14 +2,15 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"flag"
|
"flag"
|
||||||
"os"
|
|
||||||
|
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
swaggerFiles "github.com/swaggo/files"
|
swaggerFiles "github.com/swaggo/files"
|
||||||
ginSwagger "github.com/swaggo/gin-swagger"
|
ginSwagger "github.com/swaggo/gin-swagger"
|
||||||
"github.com/bbernhard/signal-cli-rest-api/api"
|
"github.com/bbernhard/signal-cli-rest-api/api"
|
||||||
|
"github.com/bbernhard/signal-cli-rest-api/utils"
|
||||||
_ "github.com/bbernhard/signal-cli-rest-api/docs"
|
_ "github.com/bbernhard/signal-cli-rest-api/docs"
|
||||||
|
"os"
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -57,6 +58,16 @@ func main() {
|
|||||||
|
|
||||||
log.Info("Started Signal Messenger REST API")
|
log.Info("Started Signal Messenger REST API")
|
||||||
|
|
||||||
|
supportsSignalCliNative := "0"
|
||||||
|
if _, err := os.Stat("/usr/bin/signal-cli-native"); err == nil {
|
||||||
|
supportsSignalCliNative = "1"
|
||||||
|
}
|
||||||
|
|
||||||
|
err := os.Setenv("SUPPORTS_NATIVE", supportsSignalCliNative)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal("Couldn't set env variable: ", err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
api := api.NewApi(*signalCliConfig, *attachmentTmpDir, *avatarTmpDir)
|
api := api.NewApi(*signalCliConfig, *attachmentTmpDir, *avatarTmpDir)
|
||||||
v1 := router.Group("/v1")
|
v1 := router.Group("/v1")
|
||||||
{
|
{
|
||||||
@@ -135,7 +146,7 @@ func main() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
swaggerPort := getEnv("PORT", "8080")
|
swaggerPort := utils.GetEnv("PORT", "8080")
|
||||||
|
|
||||||
swaggerUrl := ginSwagger.URL("http://127.0.0.1:" + string(swaggerPort) + "/swagger/doc.json")
|
swaggerUrl := ginSwagger.URL("http://127.0.0.1:" + string(swaggerPort) + "/swagger/doc.json")
|
||||||
router.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler, swaggerUrl))
|
router.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler, swaggerUrl))
|
||||||
@@ -143,9 +154,4 @@ func main() {
|
|||||||
router.Run()
|
router.Run()
|
||||||
}
|
}
|
||||||
|
|
||||||
func getEnv(key string, defaultVal string) string {
|
|
||||||
if value, exists := os.LookupEnv(key); exists {
|
|
||||||
return value
|
|
||||||
}
|
|
||||||
return defaultVal
|
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user