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-06 00:33:56 +02:00
"fmt"
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-06 00:33:56 +02:00
"github.com/ewhal/nyaa/router"
"github.com/ewhal/nyaa/util/log"
2017-05-07 23:01:06 +02:00
"github.com/ewhal/nyaa/util/search" // super hacky fix
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-02 12:39:53 +02:00
"time"
)
2017-05-07 02:32:32 +02:00
func initI18N ( ) {
/* Initialize the languages translation */
i18n . MustLoadTranslationFile ( "service/user/locale/en-us.all.json" )
}
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,
2017-05-07 01:58:15 +02:00
addr := fmt . Sprintf ( "%s:%d" , conf . Host , conf . Port )
2017-05-02 12:39:53 +02:00
srv := & http . Server {
2017-05-07 01:58:15 +02:00
Addr : addr ,
2017-05-02 12:39:53 +02:00
WriteTimeout : 15 * time . Second ,
ReadTimeout : 15 * time . Second ,
}
2017-05-07 01:58:15 +02:00
log . Infof ( "listening on %s" , addr )
2017-05-02 12:39:53 +02:00
err := srv . ListenAndServe ( )
2017-05-05 14:20:51 +02:00
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 )
}
db . ORM , _ = db . GormInit ( conf )
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-07 23:01:06 +02:00
search . Init ( conf . DBType ) // super hacky fix
2017-05-05 14:10:35 +02:00
RunServer ( conf )
}
2017-05-07 01:58:15 +02:00
}