|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"log"
|
|
|
|
"os"
|
|
|
|
"os/signal"
|
|
|
|
"syscall"
|
|
|
|
|
|
|
|
"github.com/hugot/whapp-deltachat/bridge"
|
|
|
|
"github.com/hugot/whapp-deltachat/core"
|
|
|
|
)
|
|
|
|
|
|
|
|
func main() {
|
|
|
|
argLen := len(os.Args)
|
|
|
|
|
|
|
|
if argLen != 2 {
|
|
|
|
fmt.Fprintln(os.Stderr, "Usage: whapp-deltachat CONFIG_FILE")
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
configPath := os.Args[1]
|
|
|
|
|
|
|
|
config, err := core.ConfigFromFile(configPath)
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
log.Fatal(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
ensureDirectoryOrDie(config.App.DataFolder)
|
|
|
|
ensureDirectoryOrDie(config.App.DataFolder + "/tmp")
|
|
|
|
|
|
|
|
bridge := &bridge.Bridge{}
|
|
|
|
err = bridge.Init(config)
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
log.Fatal(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
defer bridge.Close()
|
|
|
|
|
|
|
|
wait := make(chan os.Signal, 1)
|
|
|
|
signal.Notify(wait, os.Interrupt, syscall.SIGTERM)
|
|
|
|
|
|
|
|
for {
|
|
|
|
select {
|
|
|
|
case sig := <-wait:
|
|
|
|
log.Println(sig)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
func ensureDirectory(dir string) error {
|
|
|
|
if _, err := os.Stat(dir); os.IsNotExist(err) {
|
|
|
|
err = os.MkdirAll(dir, 0700)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
err := os.Chmod(dir, 0700)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func ensureDirectoryOrDie(dir string) {
|
|
|
|
err := ensureDirectory(dir)
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
log.Fatal(err)
|
|
|
|
}
|
|
|
|
}
|