summaryrefslogtreecommitdiff
path: root/src/helsinki.at/rhimportd/main.go
diff options
context:
space:
mode:
authorChristian Pointner <equinox@helsinki.at>2016-01-07 20:32:35 (GMT)
committerChristian Pointner <equinox@helsinki.at>2016-01-07 20:32:35 (GMT)
commit92f96b74e3816214a65973b3b362424d110b3a77 (patch)
tree1c11ac73e9e6ae365f28b9cedb1cb105b397458b /src/helsinki.at/rhimportd/main.go
parent772896795c3799b4595eb6abbc0355184edc91ff (diff)
improved makefile
Diffstat (limited to 'src/helsinki.at/rhimportd/main.go')
-rw-r--r--src/helsinki.at/rhimportd/main.go159
1 files changed, 0 insertions, 159 deletions
diff --git a/src/helsinki.at/rhimportd/main.go b/src/helsinki.at/rhimportd/main.go
deleted file mode 100644
index d941b05..0000000
--- a/src/helsinki.at/rhimportd/main.go
+++ /dev/null
@@ -1,159 +0,0 @@
-//
-// rhimportd
-//
-// The Radio Helsinki Rivendell Import Daemon
-//
-//
-// Copyright (C) 2015-2016 Christian Pointner <equinox@helsinki.at>
-//
-// This file is part of rhimportd.
-//
-// rhimportd is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// any later version.
-//
-// rhimportd is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with rhimportd. If not, see <http://www.gnu.org/licenses/>.
-//
-
-package main
-
-import (
- "flag"
- "fmt"
- "helsinki.at/rhimport"
- "io/ioutil"
- "log"
- "os"
- "os/signal"
- "sync"
-)
-
-var (
- rhl = log.New(os.Stderr, "[rhimportd]\t", log.LstdFlags)
- rhdl = log.New(ioutil.Discard, "[rhimportd-dbg]\t", log.LstdFlags)
-)
-
-func init() {
- if _, exists := os.LookupEnv("RHIMPORTD_DEBUG"); exists {
- rhdl.SetOutput(os.Stderr)
- }
-}
-
-type envStringValue string
-
-func newEnvStringValue(key, dflt string) *envStringValue {
- if envval, exists := os.LookupEnv(key); exists {
- return (*envStringValue)(&envval)
- } else {
- return (*envStringValue)(&dflt)
- }
-}
-
-func (s *envStringValue) Set(val string) error {
- *s = envStringValue(val)
- return nil
-}
-
-func (s *envStringValue) Get() interface{} { return string(*s) }
-
-func (s *envStringValue) String() string { return fmt.Sprintf("%s", *s) }
-
-func main() {
- webAddr := newEnvStringValue("RHIMPORTD_WEB_ADDR", "localhost:4080")
- flag.Var(webAddr, "web-addr", "addr:port to listen on (environment: RHIMPORTD_WEB_ADDR)")
- telnetAddr := newEnvStringValue("RHIMPORTD_TELNET_ADDR", "localhost:4023")
- flag.Var(telnetAddr, "telnet-addr", "addr:port to listen on (environment: RHIMPORTD_TELNET_ADDR)")
- watchDir := newEnvStringValue("RHIMPORTD_WATCH_DIR", "")
- flag.Var(watchDir, "watch-dir", "directory to look for file based requests (environment: RHIMPORTD_WATCH_DIR)")
- rdconf := newEnvStringValue("RHIMPORTD_RD_CONF", "/etc/rd.conf")
- flag.Var(rdconf, "rdconf", "path to the Rivendell config file (environment: RHIMPORTD_RD_CONF)")
- rdxportUrl := newEnvStringValue("RHIMPORTD_RDXPORT_URL", "http://localhost/rd-bin/rdxport.cgi")
- flag.Var(rdxportUrl, "rdxport-url", "the url to the Rivendell web-api (environment: RHIMPORTD_RDXPORT_URL)")
- tempDir := newEnvStringValue("RHIMPORTD_TEMP_DIR", os.TempDir())
- flag.Var(tempDir, "tmp-dir", "path to temporary files (environment: RHIMPORTD_TEMP_DIR)")
- localFetchDir := newEnvStringValue("RHIMPORTD_LOCAL_FETCH_DIR", os.TempDir())
- flag.Var(localFetchDir, "local-fetch-dir", "base path for local:// urls (environment: RHIMPORTD_LOCAL_FETCH_DIR)")
- help := flag.Bool("help", false, "show usage")
-
- flag.Parse()
- if *help {
- flag.Usage()
- return
- }
-
- conf, err := rhimport.NewConfig(rdconf.Get().(string), rdxportUrl.Get().(string), tempDir.Get().(string), localFetchDir.Get().(string))
- if err != nil {
- rhl.Println("Error reading configuration:", err)
- return
- }
-
- rddb, err := rhimport.NewRdDb(conf)
- if err != nil {
- rhl.Println("Error initializing Rivdenll DB:", err)
- return
- }
- defer rddb.Cleanup()
-
- sessions, err := rhimport.NewSessionStore(conf, rddb.GetInterface())
- if err != nil {
- rhl.Println("Error initializing Session Store:", err)
- return
- }
- defer sessions.Cleanup()
-
- var wg sync.WaitGroup
-
- if webAddr.Get().(string) != "" {
- wg.Add(1)
- go func() {
- defer wg.Done()
- rhl.Println("starting web-ctrl")
- StartControlWeb(webAddr.Get().(string), conf, rddb.GetInterface(), sessions.GetInterface())
- rhl.Println("web-ctrl finished")
- }()
- }
-
- if telnetAddr.Get().(string) != "" {
- wg.Add(1)
- go func() {
- defer wg.Done()
- rhl.Println("starting telnet-ctrl")
- StartControlTelnet(telnetAddr.Get().(string), conf, rddb.GetInterface(), sessions.GetInterface())
- rhl.Println("telnet-ctrl finished")
- }()
- }
-
- if watchDir.Get().(string) != "" {
- wg.Add(1)
- go func() {
- defer wg.Done()
- rhl.Println("starting watch-dir-ctrl")
- StartWatchDir(watchDir.Get().(string), conf, rddb.GetInterface())
- rhl.Println("watch-dir-ctrl finished")
- }()
- }
-
- alldone := make(chan bool)
- go func() {
- defer func() { alldone <- true }()
- wg.Wait()
- }()
-
- c := make(chan os.Signal, 1)
- signal.Notify(c, os.Interrupt)
-
- select {
- case <-c:
- rhl.Println("received interrupt, shutdown")
- return
- case <-alldone:
- return
- }
-}