@@ -3,63 +3,70 @@ package main
3
3
import (
4
4
"fmt"
5
5
"github.com/MG-RAST/Shock/conf"
6
+ "github.com/MG-RAST/Shock/logger"
6
7
"github.com/jaredwilkening/goweb"
7
8
"os"
8
9
)
9
10
11
+ var (
12
+ log = logger .New ()
13
+ )
14
+
15
+ func launchSite (control chan int , port int ) {
16
+ goweb .ConfigureDefaultFormatters ()
17
+ r := & goweb.RouteManager {}
18
+ r .MapFunc ("/raw" , RawDir )
19
+ r .MapFunc ("/assets" , AssetsDir )
20
+ r .MapFunc ("*" , Site )
21
+ err := goweb .ListenAndServeRoutes (fmt .Sprintf (":%d" , conf .SITEPORT ), r )
22
+ if err != nil {
23
+ fmt .Fprintf (os .Stderr , "ERROR: site: %v\n " , err )
24
+ }
25
+ control <- 1 //we are ending
26
+ }
27
+
28
+ func launchAPI (control chan int , port int ) {
29
+ goweb .ConfigureDefaultFormatters ()
30
+ r := & goweb.RouteManager {}
31
+ r .MapRest ("/node" , new (NodeController ))
32
+ r .MapRest ("/user" , new (UserController ))
33
+ r .MapFunc ("*" , ResourceDescription , goweb .GetMethod )
34
+ err := goweb .ListenAndServeRoutes (fmt .Sprintf (":%d" , port ), r )
35
+ if err != nil {
36
+ fmt .Fprintf (os .Stderr , "ERROR: api: %v\n " , err )
37
+ }
38
+ control <- 1 //we are ending
39
+ }
40
+
10
41
func main () {
11
- fmt .Printf ("%s\n ######### Conf #########\n data-root:\t %s\n mongodb:\t %s\n secretkey:\t %s\n site-port:\t %d\n api-port:\t %d\n \n " ,
42
+ fmt .Printf ("%s\n ######### Conf #########\n data-root:\t %s\n access-log: \t %s \n error-log: \t %s \ n mongodb:\t %s\n secretkey:\t %s\n site-port:\t %d\n api-port:\t %d\n \n ####### Anonymous ###### \n read: \t %t \n write: \t %t \n create-user: \t %t \n \n " ,
12
43
logo ,
13
44
conf .DATAPATH ,
45
+ conf .LOGSPATH + "/access.log" ,
46
+ conf .LOGSPATH + "/error.log" ,
14
47
conf .MONGODB ,
15
48
conf .SECRETKEY ,
16
49
conf .SITEPORT ,
17
50
conf .APIPORT ,
51
+ conf .ANONREAD ,
52
+ conf .ANONWRITE ,
53
+ conf .ANONCREATEUSER ,
18
54
)
55
+
56
+ // reload
19
57
if conf .RELOAD != "" {
20
58
fmt .Println ("####### Reloading #######" )
21
59
err := reload (conf .RELOAD )
22
60
if err != nil {
23
61
fmt .Fprintf (os .Stderr , "ERROR: %v\n " , err )
24
- } else {
25
- fmt .Println ("Done" )
26
62
}
27
- } else {
28
- fmt .Println ("####### Starting #######" )
29
- c := make (chan int )
30
- goweb .ConfigureDefaultFormatters ()
31
- // start site
32
- go func () {
33
- r := & goweb.RouteManager {}
34
- r .MapFunc ("/raw" , RawDir )
35
- r .MapFunc ("/assets" , AssetsDir )
36
- r .MapFunc ("*" , Site )
37
- c <- 1
38
- err := goweb .ListenAndServeRoutes (fmt .Sprintf (":%d" , conf .SITEPORT ), r )
39
- if err != nil {
40
- fmt .Fprintf (os .Stderr , "ERROR: unable to start site: %v\n " , err )
41
- }
42
- c <- 1
43
- }()
44
- <- c
45
- fmt .Printf ("site :%d... running\n " , conf .SITEPORT )
46
-
47
- // start api
48
- go func () {
49
- r := & goweb.RouteManager {}
50
- r .MapRest ("/node" , new (NodeController ))
51
- r .MapRest ("/user" , new (UserController ))
52
- r .MapFunc ("*" , ResourceDescription , goweb .GetMethod )
53
- c <- 1
54
- err := goweb .ListenAndServeRoutes (fmt .Sprintf (":%d" , conf .APIPORT ), r )
55
- if err != nil {
56
- fmt .Fprintf (os .Stderr , "ERROR: unable to start api: %v\n " , err )
57
- }
58
- c <- 1
59
- }()
60
- <- c
61
- fmt .Printf ("api :%d... running\n " , conf .APIPORT )
62
- fmt .Printf ("\n ######### Log #########\n " )
63
- <- c
63
+ fmt .Println ("Done" )
64
64
}
65
+
66
+ //launch server
67
+ control := make (chan int )
68
+ go log .Handle ()
69
+ go launchSite (control , conf .SITEPORT )
70
+ go launchAPI (control , conf .APIPORT )
71
+ <- control //block till something dies
65
72
}
0 commit comments