signal-cli-http/main.go

56 lines
No EOL
1.4 KiB
Go

package main
/* This is the main function of this program. It handles setting everything up */
import (
"signal-cli-http/args"
"signal-cli-http/auth"
"signal-cli-http/subprocess"
"signal-cli-http/web"
"time"
"log"
"sync"
)
func main() {
var wg sync.WaitGroup; wg.Add(1);
// Read arguments
args.Parse();
authLocation, ok := args.GetAuthJson();
if !ok {
log.Default().Print("No auth config value!");
return;
}
log.Default().Print("Reading auth config value from ", authLocation);
// Set up authentication
err := auth.SetupAuthConfig(authLocation);
if err != nil {log.Default().Print("Error reading config: ", err); return;}
log.Default().Print("Read auth config data");
// Setup Subprocess
binary, binarySet := args.GetBinaryLocation();
if !binarySet {log.Default().Print("Read auth config data"); return;};
err = subprocess.SetupCMD(binary);
if err != nil {log.Default().Print("Error running subprocess at ", binary, ": ", err); return;};
log.Default().Print("Started subprocess at ", binary);
subprocess.StartCacheClear();
// HTTP Listen
port, portSet := args.GetHTTPPort();
if !portSet {log.Default().Print("No port value!"); return;}
go func() {
defer wg.Done();
log.Default().Print("Error with web server: ", web.StartWebserver(port));
}()
log.Default().Print("Listening on port ", port);
log.Default().Print("Startup tasks complete!");
time.Sleep(time.Millisecond * 500);
// Needed to not kill program
wg.Wait();
}