2017-05-02 12:39:53 +02:00
package main
import (
2017-05-06 00:33:56 +02:00
"bufio"
2017-05-05 14:10:35 +02:00
"flag"
2017-05-09 17:07:42 +02:00
2017-05-07 02:32:32 +02:00
"github.com/nicksnyder/go-i18n/i18n"
2017-05-05 14:20:51 +02:00
2017-05-05 15:08:02 +02:00
"github.com/ewhal/nyaa/config"
2017-05-06 20:27:26 +02:00
"github.com/ewhal/nyaa/db"
2017-05-07 21:51:37 +02:00
"github.com/ewhal/nyaa/network"
2017-05-06 00:33:56 +02:00
"github.com/ewhal/nyaa/router"
"github.com/ewhal/nyaa/util/log"
2017-05-07 14:07:20 +02:00
"github.com/ewhal/nyaa/util/signals"
2017-05-05 16:39:15 +02:00
2017-05-02 12:39:53 +02:00
"net/http"
2017-05-05 14:10:35 +02:00
"os"
2017-05-09 19:46:16 +02:00
"path/filepath"
2017-05-02 12:39:53 +02:00
"time"
)
2017-05-07 02:32:32 +02:00
func initI18N ( ) {
/* Initialize the languages translation */
2017-05-09 03:44:25 +02:00
i18n . MustLoadTranslationFile ( "translations/en-us.all.json" )
2017-05-09 19:46:16 +02:00
paths , err := filepath . Glob ( "translations/*.json" )
if err == nil {
for _ , path := range paths {
i18n . LoadTranslationFile ( path )
}
}
2017-05-07 02:32:32 +02:00
}
2017-05-05 15:08:02 +02:00
func RunServer ( conf * config . Config ) {
2017-05-05 16:39:15 +02:00
http . Handle ( "/" , router . Router )
2017-05-03 19:45:18 +02:00
2017-05-02 12:39:53 +02:00
// Set up server,
srv := & http . Server {
WriteTimeout : 15 * time . Second ,
ReadTimeout : 15 * time . Second ,
}
2017-05-07 21:51:37 +02:00
l , err := network . CreateHTTPListener ( conf )
2017-05-05 14:20:51 +02:00
log . CheckError ( err )
2017-05-07 21:51:37 +02:00
if err == nil {
log . Infof ( "listening on %s" , l . Addr ( ) )
err := srv . Serve ( l )
log . CheckError ( err )
}
2017-05-02 12:39:53 +02:00
}
2017-05-05 14:10:35 +02:00
func main ( ) {
2017-05-05 15:08:02 +02:00
conf := config . NewConfig ( )
2017-05-06 20:27:26 +02:00
process_flags := conf . BindFlags ( )
2017-05-05 14:10:35 +02:00
defaults := flag . Bool ( "print-defaults" , false , "print the default configuration file on stdout" )
flag . Parse ( )
if * defaults {
stdout := bufio . NewWriter ( os . Stdout )
conf . Pretty ( stdout )
stdout . Flush ( )
os . Exit ( 0 )
} else {
2017-05-06 20:27:26 +02:00
err := process_flags ( )
if err != nil {
log . CheckError ( err )
}
2017-05-09 19:23:21 +02:00
db . ORM , err = db . GormInit ( conf )
if err != nil {
log . Fatal ( err . Error ( ) )
}
2017-05-07 02:32:32 +02:00
initI18N ( )
2017-05-07 14:07:20 +02:00
go signals . Handle ( )
2017-05-07 15:55:34 +02:00
if len ( config . TorrentFileStorage ) > 0 {
os . MkdirAll ( config . TorrentFileStorage , 0755 )
}
2017-05-05 14:10:35 +02:00
RunServer ( conf )
}
2017-05-07 01:58:15 +02:00
}