2014-02-19 13:50:53 +04:00
// Copyright 2014 The Gogs Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package main
import (
"fmt"
2014-02-19 23:49:08 +04:00
"html/template"
2014-02-19 13:50:53 +04:00
"net/http"
"github.com/codegangsta/cli"
"github.com/codegangsta/martini"
"github.com/martini-contrib/render"
2014-03-03 18:44:51 +04:00
"github.com/martini-contrib/sessions"
2014-02-19 13:50:53 +04:00
"github.com/gogits/gogs/routers"
2014-02-20 06:45:43 +04:00
"github.com/gogits/gogs/routers/repo"
2014-02-19 13:50:53 +04:00
"github.com/gogits/gogs/routers/user"
"github.com/gogits/gogs/utils"
"github.com/gogits/gogs/utils/log"
)
var CmdWeb = cli . Command {
Name : "web" ,
Usage : "just run" ,
Description : `
gogs web ` ,
Action : runWeb ,
Flags : [ ] cli . Flag {
//cli.BoolFlag{"update, u", "update pakcage(s) and dependencies if any"},
//cli.BoolFlag{"verbose, v", "show process details"},
} ,
}
2014-02-19 23:49:08 +04:00
var AppHelpers template . FuncMap = map [ string ] interface { } {
"AppName" : func ( ) string {
return utils . Cfg . MustValue ( "" , "APP_NAME" )
} ,
}
2014-02-19 13:50:53 +04:00
func runWeb ( * cli . Context ) {
log . Info ( "%s %s" , utils . Cfg . MustValue ( "" , "APP_NAME" ) , APP_VER )
m := martini . Classic ( )
// Middleware.
2014-02-19 23:49:08 +04:00
m . Use ( render . Renderer ( render . Options { Funcs : [ ] template . FuncMap { AppHelpers } } ) )
2014-02-19 13:50:53 +04:00
2014-03-03 18:44:51 +04:00
// TODO: should use other store because cookie store is not secure.
store := sessions . NewCookieStore ( [ ] byte ( "secret123" ) )
m . Use ( sessions . Sessions ( "my_session" , store ) )
2014-02-19 13:50:53 +04:00
// Routers.
m . Get ( "/" , routers . Dashboard )
2014-03-04 04:03:08 +04:00
m . Any ( "/user/login" , user . SignIn )
2014-03-02 11:31:06 +04:00
2014-03-04 04:03:08 +04:00
m . Any ( "/user/sign_up" , user . SignUp )
2014-03-02 11:31:06 +04:00
2014-03-02 17:47:55 +04:00
m . Get ( "/user/profile" , user . Profile ) // should be /username
2014-02-19 22:13:02 +04:00
m . Any ( "/user/delete" , user . Delete )
2014-03-02 11:31:06 +04:00
m . Any ( "/user/publickey/add" , user . AddPublicKey )
2014-02-20 06:45:43 +04:00
m . Any ( "/repo/create" , repo . Create )
m . Any ( "/repo/delete" , repo . Delete )
2014-02-19 13:50:53 +04:00
listenAddr := fmt . Sprintf ( "%s:%s" ,
utils . Cfg . MustValue ( "server" , "HTTP_ADDR" ) ,
utils . Cfg . MustValue ( "server" , "HTTP_PORT" , "3000" ) )
log . Info ( "Listen: %s" , listenAddr )
http . ListenAndServe ( listenAddr , m )
}