* golint fixed for modules/setting * typo fixed and renamed UNIXSOCKET to UnixSockettags/v1.21.12.1
| @@ -123,7 +123,7 @@ func newMacaron() *macaron.Macaron { | |||
| m.Use(gzip.Gziper()) | |||
| } | |||
| if setting.Protocol == setting.FCGI { | |||
| m.SetURLPrefix(setting.AppSubUrl) | |||
| m.SetURLPrefix(setting.AppSubURL) | |||
| } | |||
| m.Use(macaron.Static( | |||
| path.Join(setting.StaticRootPath, "public"), | |||
| @@ -158,7 +158,7 @@ func newMacaron() *macaron.Macaron { | |||
| localFiles[name] = bindata.MustAsset("conf/locale/" + name) | |||
| } | |||
| m.Use(i18n.I18n(i18n.Options{ | |||
| SubURL: setting.AppSubUrl, | |||
| SubURL: setting.AppSubURL, | |||
| Files: localFiles, | |||
| CustomDirectory: path.Join(setting.CustomPath, "conf/locale"), | |||
| Langs: setting.Langs, | |||
| @@ -172,7 +172,7 @@ func newMacaron() *macaron.Macaron { | |||
| Interval: setting.CacheInterval, | |||
| })) | |||
| m.Use(captcha.Captchaer(captcha.Options{ | |||
| SubURL: setting.AppSubUrl, | |||
| SubURL: setting.AppSubURL, | |||
| })) | |||
| m.Use(session.Sessioner(setting.SessionConfig)) | |||
| m.Use(csrf.Csrfer(csrf.Options{ | |||
| @@ -180,7 +180,7 @@ func newMacaron() *macaron.Macaron { | |||
| Cookie: setting.CSRFCookieName, | |||
| SetCookie: true, | |||
| Header: "X-Csrf-Token", | |||
| CookiePath: setting.AppSubUrl, | |||
| CookiePath: setting.AppSubURL, | |||
| })) | |||
| m.Use(toolbox.Toolboxer(m, toolbox.Options{ | |||
| HealthCheckFuncs: []*toolbox.HealthCheckFuncDesc{ | |||
| @@ -216,7 +216,7 @@ func runWeb(ctx *cli.Context) error { | |||
| m.Get("/", ignSignIn, routers.Home) | |||
| m.Group("/explore", func() { | |||
| m.Get("", func(ctx *context.Context) { | |||
| ctx.Redirect(setting.AppSubUrl + "/explore/repos") | |||
| ctx.Redirect(setting.AppSubURL + "/explore/repos") | |||
| }) | |||
| m.Get("/repos", routers.ExploreRepos) | |||
| m.Get("/users", routers.ExploreUsers) | |||
| @@ -635,17 +635,17 @@ func runWeb(ctx *cli.Context) error { | |||
| // Flag for port number in case first time run conflict. | |||
| if ctx.IsSet("port") { | |||
| setting.AppUrl = strings.Replace(setting.AppUrl, setting.HTTPPort, ctx.String("port"), 1) | |||
| setting.AppURL = strings.Replace(setting.AppURL, setting.HTTPPort, ctx.String("port"), 1) | |||
| setting.HTTPPort = ctx.String("port") | |||
| } | |||
| var listenAddr string | |||
| if setting.Protocol == setting.UNIX_SOCKET { | |||
| if setting.Protocol == setting.UnixSocket { | |||
| listenAddr = fmt.Sprintf("%s", setting.HTTPAddr) | |||
| } else { | |||
| listenAddr = fmt.Sprintf("%s:%s", setting.HTTPAddr, setting.HTTPPort) | |||
| } | |||
| log.Info("Listen: %v://%s%s", setting.Protocol, listenAddr, setting.AppSubUrl) | |||
| log.Info("Listen: %v://%s%s", setting.Protocol, listenAddr, setting.AppSubURL) | |||
| var err error | |||
| switch setting.Protocol { | |||
| @@ -656,7 +656,7 @@ func runWeb(ctx *cli.Context) error { | |||
| err = server.ListenAndServeTLS(setting.CertFile, setting.KeyFile) | |||
| case setting.FCGI: | |||
| err = fcgi.Serve(nil, m) | |||
| case setting.UNIX_SOCKET: | |||
| case setting.UnixSocket: | |||
| os.Remove(listenAddr) | |||
| var listener *net.UnixListener | |||
| @@ -152,8 +152,8 @@ func (a *Action) ShortRepoPath() string { | |||
| // GetRepoLink returns relative link to action repository. | |||
| func (a *Action) GetRepoLink() string { | |||
| if len(setting.AppSubUrl) > 0 { | |||
| return path.Join(setting.AppSubUrl, a.GetRepoPath()) | |||
| if len(setting.AppSubURL) > 0 { | |||
| return path.Join(setting.AppSubURL, a.GetRepoPath()) | |||
| } | |||
| return "/" + a.GetRepoPath() | |||
| } | |||
| @@ -546,7 +546,7 @@ func CommitRepoAction(opts CommitRepoActionOptions) error { | |||
| Ref: opts.RefFullName, | |||
| Before: opts.OldCommitID, | |||
| After: opts.NewCommitID, | |||
| CompareURL: setting.AppUrl + opts.Commits.CompareURL, | |||
| CompareURL: setting.AppURL + opts.Commits.CompareURL, | |||
| Commits: opts.Commits.ToAPIPayloadCommits(repo.HTMLURL()), | |||
| Repo: apiRepo, | |||
| Pusher: apiPusher, | |||
| @@ -317,7 +317,7 @@ func (pr *PullRequest) Merge(doer *User, baseGitRepo *git.Repository) (err error | |||
| Ref: git.BRANCH_PREFIX + pr.BaseBranch, | |||
| Before: pr.MergeBase, | |||
| After: pr.MergedCommitID, | |||
| CompareURL: setting.AppUrl + pr.BaseRepo.ComposeCompareURL(pr.MergeBase, pr.MergedCommitID), | |||
| CompareURL: setting.AppURL + pr.BaseRepo.ComposeCompareURL(pr.MergeBase, pr.MergedCommitID), | |||
| Commits: ListToPushCommits(l).ToAPIPayloadCommits(pr.BaseRepo.HTMLURL()), | |||
| Repo: pr.BaseRepo.APIFormat(nil), | |||
| Pusher: pr.HeadRepo.MustOwner().APIFormat(), | |||
| @@ -246,7 +246,7 @@ func (repo *Repository) FullName() string { | |||
| } | |||
| func (repo *Repository) HTMLURL() string { | |||
| return setting.AppUrl + repo.FullName() | |||
| return setting.AppURL + repo.FullName() | |||
| } | |||
| // Arguments that are allowed to be nil: permission | |||
| @@ -412,7 +412,7 @@ func (repo *Repository) RelLink() string { | |||
| } | |||
| func (repo *Repository) Link() string { | |||
| return setting.AppSubUrl + "/" + repo.FullName() | |||
| return setting.AppSubURL + "/" + repo.FullName() | |||
| } | |||
| func (repo *Repository) ComposeCompareURL(oldCommitID, newCommitID string) string { | |||
| @@ -550,7 +550,7 @@ type CloneLink struct { | |||
| // ComposeHTTPSCloneURL returns HTTPS clone URL based on given owner and repository name. | |||
| func ComposeHTTPSCloneURL(owner, repo string) string { | |||
| return fmt.Sprintf("%s%s/%s.git", setting.AppUrl, owner, repo) | |||
| return fmt.Sprintf("%s%s/%s.git", setting.AppURL, owner, repo) | |||
| } | |||
| func (repo *Repository) cloneLink(isWiki bool) *CloneLink { | |||
| @@ -198,14 +198,14 @@ func (u *User) CanImportLocal() bool { | |||
| // DashboardLink returns the user dashboard page link. | |||
| func (u *User) DashboardLink() string { | |||
| if u.IsOrganization() { | |||
| return setting.AppSubUrl + "/org/" + u.Name + "/dashboard/" | |||
| return setting.AppSubURL + "/org/" + u.Name + "/dashboard/" | |||
| } | |||
| return setting.AppSubUrl + "/" | |||
| return setting.AppSubURL + "/" | |||
| } | |||
| // HomeLink returns the user or organization home page link. | |||
| func (u *User) HomeLink() string { | |||
| return setting.AppSubUrl + "/" + u.Name | |||
| return setting.AppSubURL + "/" + u.Name | |||
| } | |||
| // GenerateEmailActivateCode generates an activate code based on user information and given e-mail. | |||
| @@ -261,7 +261,7 @@ func (u *User) GenerateRandomAvatar() error { | |||
| // which includes app sub-url as prefix. However, it is possible | |||
| // to return full URL if user enables Gravatar-like service. | |||
| func (u *User) RelAvatarLink() string { | |||
| defaultImgUrl := setting.AppSubUrl + "/img/avatar_default.png" | |||
| defaultImgUrl := setting.AppSubURL + "/img/avatar_default.png" | |||
| if u.ID == -1 { | |||
| return defaultImgUrl | |||
| } | |||
| @@ -271,7 +271,7 @@ func (u *User) RelAvatarLink() string { | |||
| if !com.IsExist(u.CustomAvatarPath()) { | |||
| return defaultImgUrl | |||
| } | |||
| return setting.AppSubUrl + "/avatars/" + com.ToStr(u.ID) | |||
| return setting.AppSubURL + "/avatars/" + com.ToStr(u.ID) | |||
| case setting.DisableGravatar, setting.OfflineMode: | |||
| if !com.IsExist(u.CustomAvatarPath()) { | |||
| if err := u.GenerateRandomAvatar(); err != nil { | |||
| @@ -279,7 +279,7 @@ func (u *User) RelAvatarLink() string { | |||
| } | |||
| } | |||
| return setting.AppSubUrl + "/avatars/" + com.ToStr(u.ID) | |||
| return setting.AppSubURL + "/avatars/" + com.ToStr(u.ID) | |||
| } | |||
| return base.AvatarLink(u.AvatarEmail) | |||
| } | |||
| @@ -288,7 +288,7 @@ func (u *User) RelAvatarLink() string { | |||
| func (u *User) AvatarLink() string { | |||
| link := u.RelAvatarLink() | |||
| if link[0] == '/' && link[1] != '/' { | |||
| return setting.AppUrl + strings.TrimPrefix(link, setting.AppSubUrl)[1:] | |||
| return setting.AppURL + strings.TrimPrefix(link, setting.AppSubURL)[1:] | |||
| } | |||
| return link | |||
| } | |||
| @@ -142,7 +142,7 @@ func getSlackPushPayload(p *api.PushPayload, slack *SlackMeta) (*SlackPayload, e | |||
| } | |||
| func getSlackPullRequestPayload(p *api.PullRequestPayload, slack *SlackMeta) (*SlackPayload, error) { | |||
| senderLink := SlackLinkFormatter(setting.AppUrl+p.Sender.UserName, p.Sender.UserName) | |||
| senderLink := SlackLinkFormatter(setting.AppURL+p.Sender.UserName, p.Sender.UserName) | |||
| titleLink := SlackLinkFormatter(fmt.Sprintf("%s/pulls/%d", p.Repository.HTMLURL, p.Index), | |||
| fmt.Sprintf("#%d %s", p.Index, p.PullRequest.Title)) | |||
| var text, title, attachmentText string | |||
| @@ -164,7 +164,7 @@ func getSlackPullRequestPayload(p *api.PullRequestPayload, slack *SlackMeta) (*S | |||
| attachmentText = SlackTextFormatter(p.PullRequest.Body) | |||
| case api.HookIssueAssigned: | |||
| text = fmt.Sprintf("[%s] Pull request assigned to %s: %s by %s", p.Repository.FullName, | |||
| SlackLinkFormatter(setting.AppUrl+p.PullRequest.Assignee.UserName, p.PullRequest.Assignee.UserName), | |||
| SlackLinkFormatter(setting.AppURL+p.PullRequest.Assignee.UserName, p.PullRequest.Assignee.UserName), | |||
| titleLink, senderLink) | |||
| case api.HookIssueUnassigned: | |||
| text = fmt.Sprintf("[%s] Pull request unassigned: %s by %s", p.Repository.FullName, titleLink, senderLink) | |||
| @@ -217,7 +217,7 @@ func AvatarLink(email string) string { | |||
| return setting.GravatarSource + HashEmail(email) | |||
| } | |||
| return setting.AppSubUrl + "/img/avatar_default.png" | |||
| return setting.AppSubURL + "/img/avatar_default.png" | |||
| } | |||
| // Seconds-based time units | |||
| @@ -47,16 +47,16 @@ func (ctx *APIContext) SetLinkHeader(total, pageSize int) { | |||
| page := paginater.New(total, pageSize, ctx.QueryInt("page"), 0) | |||
| links := make([]string, 0, 4) | |||
| if page.HasNext() { | |||
| links = append(links, fmt.Sprintf("<%s%s?page=%d>; rel=\"next\"", setting.AppUrl, ctx.Req.URL.Path[1:], page.Next())) | |||
| links = append(links, fmt.Sprintf("<%s%s?page=%d>; rel=\"next\"", setting.AppURL, ctx.Req.URL.Path[1:], page.Next())) | |||
| } | |||
| if !page.IsLast() { | |||
| links = append(links, fmt.Sprintf("<%s%s?page=%d>; rel=\"last\"", setting.AppUrl, ctx.Req.URL.Path[1:], page.TotalPages())) | |||
| links = append(links, fmt.Sprintf("<%s%s?page=%d>; rel=\"last\"", setting.AppURL, ctx.Req.URL.Path[1:], page.TotalPages())) | |||
| } | |||
| if !page.IsFirst() { | |||
| links = append(links, fmt.Sprintf("<%s%s?page=1>; rel=\"first\"", setting.AppUrl, ctx.Req.URL.Path[1:])) | |||
| links = append(links, fmt.Sprintf("<%s%s?page=1>; rel=\"first\"", setting.AppURL, ctx.Req.URL.Path[1:])) | |||
| } | |||
| if page.HasPrevious() { | |||
| links = append(links, fmt.Sprintf("<%s%s?page=%d>; rel=\"prev\"", setting.AppUrl, ctx.Req.URL.Path[1:], page.Previous())) | |||
| links = append(links, fmt.Sprintf("<%s%s?page=%d>; rel=\"prev\"", setting.AppURL, ctx.Req.URL.Path[1:], page.Previous())) | |||
| } | |||
| if len(links) > 0 { | |||
| @@ -26,7 +26,7 @@ func Toggle(options *ToggleOptions) macaron.Handler { | |||
| return func(ctx *Context) { | |||
| // Cannot view any page before installation. | |||
| if !setting.InstallLock { | |||
| ctx.Redirect(setting.AppSubUrl + "/install") | |||
| ctx.Redirect(setting.AppSubURL + "/install") | |||
| return | |||
| } | |||
| @@ -38,14 +38,14 @@ func Toggle(options *ToggleOptions) macaron.Handler { | |||
| } | |||
| // Check non-logged users landing page. | |||
| if !ctx.IsSigned && ctx.Req.RequestURI == "/" && setting.LandingPageURL != setting.LANDING_PAGE_HOME { | |||
| ctx.Redirect(setting.AppSubUrl + string(setting.LandingPageURL)) | |||
| if !ctx.IsSigned && ctx.Req.RequestURI == "/" && setting.LandingPageURL != setting.LandingPageHome { | |||
| ctx.Redirect(setting.AppSubURL + string(setting.LandingPageURL)) | |||
| return | |||
| } | |||
| // Redirect to dashboard if user tries to visit any non-login page. | |||
| if options.SignOutRequired && ctx.IsSigned && ctx.Req.RequestURI != "/" { | |||
| ctx.Redirect(setting.AppSubUrl + "/") | |||
| ctx.Redirect(setting.AppSubURL + "/") | |||
| return | |||
| } | |||
| @@ -66,8 +66,8 @@ func Toggle(options *ToggleOptions) macaron.Handler { | |||
| return | |||
| } | |||
| ctx.SetCookie("redirect_to", url.QueryEscape(setting.AppSubUrl+ctx.Req.RequestURI), 0, setting.AppSubUrl) | |||
| ctx.Redirect(setting.AppSubUrl + "/user/login") | |||
| ctx.SetCookie("redirect_to", url.QueryEscape(setting.AppSubURL+ctx.Req.RequestURI), 0, setting.AppSubURL) | |||
| ctx.Redirect(setting.AppSubURL + "/user/login") | |||
| return | |||
| } else if !ctx.User.IsActive && setting.Service.RegisterEmailConfirm { | |||
| ctx.Data["Title"] = ctx.Tr("auth.active_your_account") | |||
| @@ -79,8 +79,8 @@ func Toggle(options *ToggleOptions) macaron.Handler { | |||
| // Redirect to log in page if auto-signin info is provided and has not signed in. | |||
| if !options.SignOutRequired && !ctx.IsSigned && !auth.IsAPIPath(ctx.Req.URL.Path) && | |||
| len(ctx.GetCookie(setting.CookieUserName)) > 0 { | |||
| ctx.SetCookie("redirect_to", url.QueryEscape(setting.AppSubUrl+ctx.Req.RequestURI), 0, setting.AppSubUrl) | |||
| ctx.Redirect(setting.AppSubUrl + "/user/login") | |||
| ctx.SetCookie("redirect_to", url.QueryEscape(setting.AppSubURL+ctx.Req.RequestURI), 0, setting.AppSubURL) | |||
| ctx.Redirect(setting.AppSubURL + "/user/login") | |||
| return | |||
| } | |||
| @@ -159,7 +159,7 @@ func Contexter() macaron.Handler { | |||
| Org: &Organization{}, | |||
| } | |||
| // Compute current URL for real-time change language. | |||
| ctx.Data["Link"] = setting.AppSubUrl + strings.TrimSuffix(ctx.Req.URL.Path, "/") | |||
| ctx.Data["Link"] = setting.AppSubURL + strings.TrimSuffix(ctx.Req.URL.Path, "/") | |||
| ctx.Data["PageStartTime"] = time.Now() | |||
| @@ -95,7 +95,7 @@ func HandleOrgAssignment(ctx *Context, args ...bool) { | |||
| ctx.Data["IsOrganizationOwner"] = ctx.Org.IsOwner | |||
| ctx.Data["IsOrganizationMember"] = ctx.Org.IsMember | |||
| ctx.Org.OrgLink = setting.AppSubUrl + "/org/" + org.Name | |||
| ctx.Org.OrgLink = setting.AppSubURL + "/org/" + org.Name | |||
| ctx.Data["OrgLink"] = ctx.Org.OrgLink | |||
| // Team. | |||
| @@ -117,7 +117,7 @@ func RetrieveBaseRepo(ctx *Context, repo *models.Repository) { | |||
| // composeGoGetImport returns go-get-import meta content. | |||
| func composeGoGetImport(owner, repo string) string { | |||
| return path.Join(setting.Domain, setting.AppSubUrl, owner, repo) | |||
| return path.Join(setting.Domain, setting.AppSubURL, owner, repo) | |||
| } | |||
| // earlyResponseForGoGetMeta responses appropriate go-get meta with status 200 | |||
| @@ -331,7 +331,7 @@ func RepoAssignment(args ...bool) macaron.Handler { | |||
| if ctx.Query("go-get") == "1" { | |||
| ctx.Data["GoGetImport"] = composeGoGetImport(owner.Name, repo.Name) | |||
| prefix := setting.AppUrl + path.Join(owner.Name, repo.Name, "src", ctx.Repo.BranchName) | |||
| prefix := setting.AppURL + path.Join(owner.Name, repo.Name, "src", ctx.Repo.BranchName) | |||
| ctx.Data["GoDocDirectory"] = prefix + "{/dir}" | |||
| ctx.Data["GoDocFile"] = prefix + "{/dir}/{file}#L{line}" | |||
| } | |||
| @@ -135,7 +135,7 @@ func (r *Renderer) AutoLink(out *bytes.Buffer, link []byte, kind int) { | |||
| // Since this method could only possibly serve one link at a time, | |||
| // we do not need to find all. | |||
| if bytes.HasPrefix(link, []byte(setting.AppUrl)) { | |||
| if bytes.HasPrefix(link, []byte(setting.AppURL)) { | |||
| m := CommitPattern.Find(link) | |||
| if m != nil { | |||
| m = bytes.TrimSpace(m) | |||
| @@ -225,7 +225,7 @@ func cutoutVerbosePrefix(prefix string) string { | |||
| if prefix[i] == '/' { | |||
| count++ | |||
| } | |||
| if count >= 3+setting.AppSubUrlDepth { | |||
| if count >= 3+setting.AppSubURLDepth { | |||
| return prefix[:i] | |||
| } | |||
| } | |||
| @@ -279,7 +279,7 @@ func RenderSpecialLink(rawBytes []byte, urlPrefix string, metas map[string]strin | |||
| for _, m := range ms { | |||
| m = m[bytes.Index(m, []byte("@")):] | |||
| rawBytes = bytes.Replace(rawBytes, m, | |||
| []byte(fmt.Sprintf(`<a href="%s/%s">%s</a>`, setting.AppSubUrl, m[1:], m)), -1) | |||
| []byte(fmt.Sprintf(`<a href="%s/%s">%s</a>`, setting.AppSubURL, m[1:], m)), -1) | |||
| } | |||
| rawBytes = RenderIssueIndexPattern(rawBytes, urlPrefix, metas) | |||
| @@ -16,7 +16,7 @@ func TestMarkdown(t *testing.T) { | |||
| urlPrefix = "/prefix" | |||
| metas map[string]string = nil | |||
| ) | |||
| setting.AppSubUrlDepth = 0 | |||
| setting.AppSubURLDepth = 0 | |||
| Convey("To the internal issue tracker", func() { | |||
| Convey("It should not render anything when there are no mentions", func() { | |||
| @@ -237,7 +237,7 @@ func TestMarkdown(t *testing.T) { | |||
| }) | |||
| Convey("Rendering an issue URL", t, func() { | |||
| setting.AppUrl = "http://localhost:3000/" | |||
| setting.AppURL = "http://localhost:3000/" | |||
| htmlFlags := 0 | |||
| htmlFlags |= blackfriday.HTML_SKIP_STYLE | |||
| htmlFlags |= blackfriday.HTML_OMIT_CONTENTS | |||
| @@ -279,7 +279,7 @@ func TestMarkdown(t *testing.T) { | |||
| }) | |||
| Convey("Rendering a commit URL", t, func() { | |||
| setting.AppUrl = "http://localhost:3000/" | |||
| setting.AppURL = "http://localhost:3000/" | |||
| htmlFlags := 0 | |||
| htmlFlags |= blackfriday.HTML_SKIP_STYLE | |||
| htmlFlags |= blackfriday.HTML_OMIT_CONTENTS | |||
| @@ -18,10 +18,10 @@ import ( | |||
| "time" | |||
| "github.com/Unknwon/com" | |||
| _ "github.com/go-macaron/cache/memcache" | |||
| _ "github.com/go-macaron/cache/memcache" // memcache plugin for cache | |||
| _ "github.com/go-macaron/cache/redis" | |||
| "github.com/go-macaron/session" | |||
| _ "github.com/go-macaron/session/redis" | |||
| _ "github.com/go-macaron/session/redis" // redis plugin for store session | |||
| "gopkg.in/ini.v1" | |||
| "strk.kbt.io/projects/go/libravatar" | |||
| @@ -30,44 +30,51 @@ import ( | |||
| "code.gitea.io/gitea/modules/user" | |||
| ) | |||
| // Scheme describes protocol types | |||
| type Scheme string | |||
| // enumerates all the scheme types | |||
| const ( | |||
| HTTP Scheme = "http" | |||
| HTTPS Scheme = "https" | |||
| FCGI Scheme = "fcgi" | |||
| UNIX_SOCKET Scheme = "unix" | |||
| HTTP Scheme = "http" | |||
| HTTPS Scheme = "https" | |||
| FCGI Scheme = "fcgi" | |||
| UnixSocket Scheme = "unix" | |||
| ) | |||
| // LandingPage describes the default page | |||
| type LandingPage string | |||
| // enumerates all the landing page types | |||
| const ( | |||
| LANDING_PAGE_HOME LandingPage = "/" | |||
| LANDING_PAGE_EXPLORE LandingPage = "/explore" | |||
| LandingPageHome LandingPage = "/" | |||
| LandingPageExplore LandingPage = "/explore" | |||
| ) | |||
| // settings | |||
| var ( | |||
| // Build information should only be set by -ldflags. | |||
| // BuildTime information should only be set by -ldflags. | |||
| BuildTime string | |||
| BuildGitHash string | |||
| // App settings | |||
| // AppVer settings | |||
| AppVer string | |||
| AppName string | |||
| AppUrl string | |||
| AppSubUrl string | |||
| AppSubUrlDepth int // Number of slashes | |||
| AppURL string | |||
| AppSubURL string | |||
| AppSubURLDepth int // Number of slashes | |||
| AppPath string | |||
| AppDataPath string | |||
| // Server settings | |||
| Protocol Scheme | |||
| Domain string | |||
| HTTPAddr, HTTPPort string | |||
| HTTPAddr string | |||
| HTTPPort string | |||
| LocalURL string | |||
| OfflineMode bool | |||
| DisableRouterLog bool | |||
| CertFile, KeyFile string | |||
| CertFile string | |||
| KeyFile string | |||
| StaticRootPath string | |||
| EnableGzip bool | |||
| LandingPageURL LandingPage | |||
| @@ -242,8 +249,9 @@ var ( | |||
| } | |||
| // I18n settings | |||
| Langs, Names []string | |||
| dateLangs map[string]string | |||
| Langs []string | |||
| Names []string | |||
| dateLangs map[string]string | |||
| // Highlight settings are loaded in modules/template/hightlight.go | |||
| @@ -386,20 +394,20 @@ please consider changing to GITEA_CUSTOM`) | |||
| sec := Cfg.Section("server") | |||
| AppName = Cfg.Section("").Key("APP_NAME").MustString("Gogs: Go Git Service") | |||
| AppUrl = sec.Key("ROOT_URL").MustString("http://localhost:3000/") | |||
| if AppUrl[len(AppUrl)-1] != '/' { | |||
| AppUrl += "/" | |||
| AppURL = sec.Key("ROOT_URL").MustString("http://localhost:3000/") | |||
| if AppURL[len(AppURL)-1] != '/' { | |||
| AppURL += "/" | |||
| } | |||
| // Check if has app suburl. | |||
| url, err := url.Parse(AppUrl) | |||
| url, err := url.Parse(AppURL) | |||
| if err != nil { | |||
| log.Fatal(4, "Invalid ROOT_URL '%s': %s", AppUrl, err) | |||
| log.Fatal(4, "Invalid ROOT_URL '%s': %s", AppURL, err) | |||
| } | |||
| // Suburl should start with '/' and end without '/', such as '/{subpath}'. | |||
| // This value is empty if site does not have sub-url. | |||
| AppSubUrl = strings.TrimSuffix(url.Path, "/") | |||
| AppSubUrlDepth = strings.Count(AppSubUrl, "/") | |||
| AppSubURL = strings.TrimSuffix(url.Path, "/") | |||
| AppSubURLDepth = strings.Count(AppSubURL, "/") | |||
| Protocol = HTTP | |||
| if sec.Key("PROTOCOL").String() == "https" { | |||
| @@ -409,7 +417,7 @@ please consider changing to GITEA_CUSTOM`) | |||
| } else if sec.Key("PROTOCOL").String() == "fcgi" { | |||
| Protocol = FCGI | |||
| } else if sec.Key("PROTOCOL").String() == "unix" { | |||
| Protocol = UNIX_SOCKET | |||
| Protocol = UnixSocket | |||
| UnixSocketPermissionRaw := sec.Key("UNIX_SOCKET_PERMISSION").MustString("666") | |||
| UnixSocketPermissionParsed, err := strconv.ParseUint(UnixSocketPermissionRaw, 8, 32) | |||
| if err != nil || UnixSocketPermissionParsed > 0777 { | |||
| @@ -429,9 +437,9 @@ please consider changing to GITEA_CUSTOM`) | |||
| switch sec.Key("LANDING_PAGE").MustString("home") { | |||
| case "explore": | |||
| LandingPageURL = LANDING_PAGE_EXPLORE | |||
| LandingPageURL = LandingPageExplore | |||
| default: | |||
| LandingPageURL = LANDING_PAGE_HOME | |||
| LandingPageURL = LandingPageHome | |||
| } | |||
| SSH.RootPath = path.Join(homeDir, ".ssh") | |||
| @@ -596,6 +604,7 @@ please consider changing to GITEA_CUSTOM`) | |||
| HasRobotsTxt = com.IsFile(path.Join(CustomPath, "robots.txt")) | |||
| } | |||
| // Service settings | |||
| var Service struct { | |||
| ActiveCodeLives int | |||
| ResetPwdCodeLives int | |||
| @@ -719,7 +728,7 @@ func newSessionService() { | |||
| []string{"memory", "file", "redis", "mysql"}) | |||
| SessionConfig.ProviderConfig = strings.Trim(Cfg.Section("session").Key("PROVIDER_CONFIG").String(), "\" ") | |||
| SessionConfig.CookieName = Cfg.Section("session").Key("COOKIE_NAME").MustString("i_like_gogits") | |||
| SessionConfig.CookiePath = AppSubUrl | |||
| SessionConfig.CookiePath = AppSubURL | |||
| SessionConfig.Secure = Cfg.Section("session").Key("COOKIE_SECURE").MustBool() | |||
| SessionConfig.Gclifetime = Cfg.Section("session").Key("GC_INTERVAL_TIME").MustInt64(86400) | |||
| SessionConfig.Maxlifetime = Cfg.Section("session").Key("SESSION_LIFE_TIME").MustInt64(86400) | |||
| @@ -744,6 +753,7 @@ type Mailer struct { | |||
| } | |||
| var ( | |||
| // MailService the global mailer | |||
| MailService *Mailer | |||
| ) | |||
| @@ -810,6 +820,7 @@ func newWebhookService() { | |||
| Webhook.PagingNum = sec.Key("PAGING_NUM").MustInt(10) | |||
| } | |||
| // NewServices initializes the services | |||
| func NewServices() { | |||
| newService() | |||
| newLogService() | |||
| @@ -33,16 +33,16 @@ func NewFuncMap() []template.FuncMap { | |||
| return strings.Title(runtime.Version()) | |||
| }, | |||
| "UseHTTPS": func() bool { | |||
| return strings.HasPrefix(setting.AppUrl, "https") | |||
| return strings.HasPrefix(setting.AppURL, "https") | |||
| }, | |||
| "AppName": func() string { | |||
| return setting.AppName | |||
| }, | |||
| "AppSubUrl": func() string { | |||
| return setting.AppSubUrl | |||
| return setting.AppSubURL | |||
| }, | |||
| "AppUrl": func() string { | |||
| return setting.AppUrl | |||
| return setting.AppURL | |||
| }, | |||
| "AppVer": func() string { | |||
| return setting.AppVer | |||
| @@ -164,7 +164,7 @@ func Dashboard(ctx *context.Context) { | |||
| } else { | |||
| ctx.Flash.Success(success) | |||
| } | |||
| ctx.Redirect(setting.AppSubUrl + "/admin") | |||
| ctx.Redirect(setting.AppSubURL + "/admin") | |||
| return | |||
| } | |||
| @@ -185,7 +185,7 @@ func SendTestMail(ctx *context.Context) { | |||
| ctx.Flash.Info(ctx.Tr("admin.config.test_mail_sent", email)) | |||
| } | |||
| ctx.Redirect(setting.AppSubUrl + "/admin/config") | |||
| ctx.Redirect(setting.AppSubURL + "/admin/config") | |||
| } | |||
| // Config show admin config page | |||
| @@ -194,7 +194,7 @@ func Config(ctx *context.Context) { | |||
| ctx.Data["PageIsAdmin"] = true | |||
| ctx.Data["PageIsAdminConfig"] = true | |||
| ctx.Data["AppUrl"] = setting.AppUrl | |||
| ctx.Data["AppUrl"] = setting.AppURL | |||
| ctx.Data["Domain"] = setting.Domain | |||
| ctx.Data["OfflineMode"] = setting.OfflineMode | |||
| ctx.Data["DisableRouterLog"] = setting.DisableRouterLog | |||
| @@ -167,7 +167,7 @@ func NewAuthSourcePost(ctx *context.Context, form auth.AuthenticationForm) { | |||
| log.Trace("Authentication created by admin(%s): %s", ctx.User.Name, form.Name) | |||
| ctx.Flash.Success(ctx.Tr("admin.auths.new_success", form.Name)) | |||
| ctx.Redirect(setting.AppSubUrl + "/admin/auths") | |||
| ctx.Redirect(setting.AppSubURL + "/admin/auths") | |||
| } | |||
| // EditAuthSource render editing auth source page | |||
| @@ -236,7 +236,7 @@ func EditAuthSourcePost(ctx *context.Context, form auth.AuthenticationForm) { | |||
| log.Trace("Authentication changed by admin(%s): %s", ctx.User.Name, source.ID) | |||
| ctx.Flash.Success(ctx.Tr("admin.auths.update_success")) | |||
| ctx.Redirect(setting.AppSubUrl + "/admin/auths/" + com.ToStr(form.ID)) | |||
| ctx.Redirect(setting.AppSubURL + "/admin/auths/" + com.ToStr(form.ID)) | |||
| } | |||
| // DeleteAuthSource response for deleting an auth source | |||
| @@ -254,7 +254,7 @@ func DeleteAuthSource(ctx *context.Context) { | |||
| ctx.Flash.Error(fmt.Sprintf("DeleteSource: %v", err)) | |||
| } | |||
| ctx.JSON(200, map[string]interface{}{ | |||
| "redirect": setting.AppSubUrl + "/admin/auths/" + ctx.Params(":authid"), | |||
| "redirect": setting.AppSubURL + "/admin/auths/" + ctx.Params(":authid"), | |||
| }) | |||
| return | |||
| } | |||
| @@ -262,6 +262,6 @@ func DeleteAuthSource(ctx *context.Context) { | |||
| ctx.Flash.Success(ctx.Tr("admin.auths.deletion_success")) | |||
| ctx.JSON(200, map[string]interface{}{ | |||
| "redirect": setting.AppSubUrl + "/admin/auths", | |||
| "redirect": setting.AppSubURL + "/admin/auths", | |||
| }) | |||
| } | |||
| @@ -72,5 +72,5 @@ func EmptyNotices(ctx *context.Context) { | |||
| log.Trace("System notices deleted by admin (%s): [start: %d]", ctx.User.Name, 0) | |||
| ctx.Flash.Success(ctx.Tr("admin.notices.delete_success")) | |||
| ctx.Redirect(setting.AppSubUrl + "/admin/notices") | |||
| ctx.Redirect(setting.AppSubURL + "/admin/notices") | |||
| } | |||
| @@ -49,6 +49,6 @@ func DeleteRepo(ctx *context.Context) { | |||
| ctx.Flash.Success(ctx.Tr("repo.settings.deletion_success")) | |||
| ctx.JSON(200, map[string]interface{}{ | |||
| "redirect": setting.AppSubUrl + "/admin/repos?page=" + ctx.Query("page"), | |||
| "redirect": setting.AppSubURL + "/admin/repos?page=" + ctx.Query("page"), | |||
| }) | |||
| } | |||
| @@ -123,7 +123,7 @@ func NewUserPost(ctx *context.Context, form auth.AdminCrateUserForm) { | |||
| } | |||
| ctx.Flash.Success(ctx.Tr("admin.users.new_success", u.Name)) | |||
| ctx.Redirect(setting.AppSubUrl + "/admin/users/" + com.ToStr(u.ID)) | |||
| ctx.Redirect(setting.AppSubURL + "/admin/users/" + com.ToStr(u.ID)) | |||
| } | |||
| func prepareUserInfo(ctx *context.Context) *models.User { | |||
| @@ -225,7 +225,7 @@ func EditUserPost(ctx *context.Context, form auth.AdminEditUserForm) { | |||
| log.Trace("Account profile updated by admin (%s): %s", ctx.User.Name, u.Name) | |||
| ctx.Flash.Success(ctx.Tr("admin.users.update_profile_success")) | |||
| ctx.Redirect(setting.AppSubUrl + "/admin/users/" + ctx.Params(":userid")) | |||
| ctx.Redirect(setting.AppSubURL + "/admin/users/" + ctx.Params(":userid")) | |||
| } | |||
| // DeleteUser response for deleting a user | |||
| @@ -241,12 +241,12 @@ func DeleteUser(ctx *context.Context) { | |||
| case models.IsErrUserOwnRepos(err): | |||
| ctx.Flash.Error(ctx.Tr("admin.users.still_own_repo")) | |||
| ctx.JSON(200, map[string]interface{}{ | |||
| "redirect": setting.AppSubUrl + "/admin/users/" + ctx.Params(":userid"), | |||
| "redirect": setting.AppSubURL + "/admin/users/" + ctx.Params(":userid"), | |||
| }) | |||
| case models.IsErrUserHasOrgs(err): | |||
| ctx.Flash.Error(ctx.Tr("admin.users.still_has_org")) | |||
| ctx.JSON(200, map[string]interface{}{ | |||
| "redirect": setting.AppSubUrl + "/admin/users/" + ctx.Params(":userid"), | |||
| "redirect": setting.AppSubURL + "/admin/users/" + ctx.Params(":userid"), | |||
| }) | |||
| default: | |||
| ctx.Handle(500, "DeleteUser", err) | |||
| @@ -257,6 +257,6 @@ func DeleteUser(ctx *context.Context) { | |||
| ctx.Flash.Success(ctx.Tr("admin.users.deletion_success")) | |||
| ctx.JSON(200, map[string]interface{}{ | |||
| "redirect": setting.AppSubUrl + "/admin/users", | |||
| "redirect": setting.AppSubURL + "/admin/users", | |||
| }) | |||
| } | |||
| @@ -16,7 +16,7 @@ import ( | |||
| ) | |||
| func composeDeployKeysAPILink(repoPath string) string { | |||
| return setting.AppUrl + "api/v1/repos/" + repoPath + "/keys/" | |||
| return setting.AppURL + "api/v1/repos/" + repoPath + "/keys/" | |||
| } | |||
| // ListDeployKeys list all the deploy keys of a repository | |||
| @@ -34,7 +34,7 @@ func GetUserByParams(ctx *context.APIContext) *models.User { | |||
| } | |||
| func composePublicKeysAPILink() string { | |||
| return setting.AppUrl + "api/v1/user/keys/" | |||
| return setting.AppURL + "api/v1/user/keys/" | |||
| } | |||
| func listPublicKeys(ctx *context.APIContext, uid int64) { | |||
| @@ -16,7 +16,7 @@ func TemplatePreview(ctx *context.Context) { | |||
| ctx.Data["User"] = models.User{Name: "Unknown"} | |||
| ctx.Data["AppName"] = setting.AppName | |||
| ctx.Data["AppVer"] = setting.AppVer | |||
| ctx.Data["AppUrl"] = setting.AppUrl | |||
| ctx.Data["AppUrl"] = setting.AppURL | |||
| ctx.Data["Code"] = "2014031910370000009fff6782aadb2162b4a997acb69d4400888e0b9274657374" | |||
| ctx.Data["ActiveCodeLives"] = setting.Service.ActiveCodeLives / 60 | |||
| ctx.Data["ResetPwdCodeLives"] = setting.Service.ResetPwdCodeLives / 60 | |||
| @@ -42,7 +42,7 @@ func Home(ctx *context.Context) { | |||
| // Check auto-login. | |||
| uname := ctx.GetCookie(setting.CookieUserName) | |||
| if len(uname) != 0 { | |||
| ctx.Redirect(setting.AppSubUrl + "/user/login") | |||
| ctx.Redirect(setting.AppSubURL + "/user/login") | |||
| return | |||
| } | |||
| @@ -89,7 +89,7 @@ func Install(ctx *context.Context) { | |||
| form.Domain = setting.Domain | |||
| form.SSHPort = setting.SSH.Port | |||
| form.HTTPPort = setting.HTTPPort | |||
| form.AppUrl = setting.AppUrl | |||
| form.AppUrl = setting.AppURL | |||
| form.LogRootPath = setting.LogRootPath | |||
| // E-mail service settings | |||
| @@ -91,7 +91,7 @@ func MembersAction(ctx *context.Context) { | |||
| if ctx.Params(":action") != "leave" { | |||
| ctx.Redirect(ctx.Org.OrgLink + "/members") | |||
| } else { | |||
| ctx.Redirect(setting.AppSubUrl + "/") | |||
| ctx.Redirect(setting.AppSubURL + "/") | |||
| } | |||
| } | |||
| @@ -55,5 +55,5 @@ func CreatePost(ctx *context.Context, form auth.CreateOrgForm) { | |||
| } | |||
| log.Trace("Organization created: %s", org.Name) | |||
| ctx.Redirect(setting.AppSubUrl + "/org/" + form.OrgName + "/dashboard") | |||
| ctx.Redirect(setting.AppSubURL + "/org/" + form.OrgName + "/dashboard") | |||
| } | |||
| @@ -64,7 +64,7 @@ func SettingsPost(ctx *context.Context, form auth.UpdateOrgSettingForm) { | |||
| return | |||
| } | |||
| // reset ctx.org.OrgLink with new name | |||
| ctx.Org.OrgLink = setting.AppSubUrl + "/org/" + form.Name | |||
| ctx.Org.OrgLink = setting.AppSubURL + "/org/" + form.Name | |||
| log.Trace("Organization name changed: %s -> %s", org.Name, form.Name) | |||
| } | |||
| // In case it's just a case change. | |||
| @@ -134,7 +134,7 @@ func SettingsDelete(ctx *context.Context) { | |||
| } | |||
| } else { | |||
| log.Trace("Organization deleted: %s", org.Name) | |||
| ctx.Redirect(setting.AppSubUrl + "/") | |||
| ctx.Redirect(setting.AppSubURL + "/") | |||
| } | |||
| return | |||
| } | |||
| @@ -194,11 +194,11 @@ func Diff(ctx *context.Context) { | |||
| ctx.Data["Diff"] = diff | |||
| ctx.Data["Parents"] = parents | |||
| ctx.Data["DiffNotAvailable"] = diff.NumFiles() == 0 | |||
| ctx.Data["SourcePath"] = setting.AppSubUrl + "/" + path.Join(userName, repoName, "src", commitID) | |||
| ctx.Data["SourcePath"] = setting.AppSubURL + "/" + path.Join(userName, repoName, "src", commitID) | |||
| if commit.ParentCount() > 0 { | |||
| ctx.Data["BeforeSourcePath"] = setting.AppSubUrl + "/" + path.Join(userName, repoName, "src", parents[0]) | |||
| ctx.Data["BeforeSourcePath"] = setting.AppSubURL + "/" + path.Join(userName, repoName, "src", parents[0]) | |||
| } | |||
| ctx.Data["RawPath"] = setting.AppSubUrl + "/" + path.Join(userName, repoName, "raw", commitID) | |||
| ctx.Data["RawPath"] = setting.AppSubURL + "/" + path.Join(userName, repoName, "raw", commitID) | |||
| ctx.HTML(200, tplDiff) | |||
| } | |||
| @@ -257,8 +257,8 @@ func CompareDiff(ctx *context.Context) { | |||
| ctx.Data["Commit"] = commit | |||
| ctx.Data["Diff"] = diff | |||
| ctx.Data["DiffNotAvailable"] = diff.NumFiles() == 0 | |||
| ctx.Data["SourcePath"] = setting.AppSubUrl + "/" + path.Join(userName, repoName, "src", afterCommitID) | |||
| ctx.Data["BeforeSourcePath"] = setting.AppSubUrl + "/" + path.Join(userName, repoName, "src", beforeCommitID) | |||
| ctx.Data["RawPath"] = setting.AppSubUrl + "/" + path.Join(userName, repoName, "raw", afterCommitID) | |||
| ctx.Data["SourcePath"] = setting.AppSubURL + "/" + path.Join(userName, repoName, "src", afterCommitID) | |||
| ctx.Data["BeforeSourcePath"] = setting.AppSubURL + "/" + path.Join(userName, repoName, "src", beforeCommitID) | |||
| ctx.Data["RawPath"] = setting.AppSubURL + "/" + path.Join(userName, repoName, "raw", afterCommitID) | |||
| ctx.HTML(200, tplDiff) | |||
| } | |||
| @@ -96,7 +96,7 @@ func editFile(ctx *context.Context, isNewFile bool) { | |||
| ctx.Data["MarkdownFileExts"] = strings.Join(setting.Markdown.FileExtensions, ",") | |||
| ctx.Data["LineWrapExtensions"] = strings.Join(setting.Repository.Editor.LineWrapExtensions, ",") | |||
| ctx.Data["PreviewableFileModes"] = strings.Join(setting.Repository.Editor.PreviewableFileModes, ",") | |||
| ctx.Data["EditorconfigURLPrefix"] = fmt.Sprintf("%s/api/v1/repos/%s/editorconfig/", setting.AppSubUrl, ctx.Repo.Repository.FullName()) | |||
| ctx.Data["EditorconfigURLPrefix"] = fmt.Sprintf("%s/api/v1/repos/%s/editorconfig/", setting.AppSubURL, ctx.Repo.Repository.FullName()) | |||
| ctx.HTML(200, tplEditFile) | |||
| } | |||
| @@ -123,8 +123,8 @@ func Issues(ctx *context.Context) { | |||
| // Must sign in to see issues about you. | |||
| if viewType != "all" && !ctx.IsSigned { | |||
| ctx.SetCookie("redirect_to", "/"+url.QueryEscape(setting.AppSubUrl+ctx.Req.RequestURI), 0, setting.AppSubUrl) | |||
| ctx.Redirect(setting.AppSubUrl + "/user/login") | |||
| ctx.SetCookie("redirect_to", "/"+url.QueryEscape(setting.AppSubURL+ctx.Req.RequestURI), 0, setting.AppSubURL) | |||
| ctx.Redirect(setting.AppSubURL + "/user/login") | |||
| return | |||
| } | |||
| @@ -651,7 +651,7 @@ func ViewIssue(ctx *context.Context) { | |||
| ctx.Data["NumParticipants"] = len(participants) | |||
| ctx.Data["Issue"] = issue | |||
| ctx.Data["IsIssueOwner"] = ctx.Repo.IsWriter() || (ctx.IsSigned && issue.IsPoster(ctx.User.ID)) | |||
| ctx.Data["SignInLink"] = setting.AppSubUrl + "/user/login?redirect_to=" + ctx.Data["Link"].(string) | |||
| ctx.Data["SignInLink"] = setting.AppSubURL + "/user/login?redirect_to=" + ctx.Data["Link"].(string) | |||
| ctx.HTML(200, tplIssueView) | |||
| } | |||
| @@ -107,7 +107,7 @@ func ForkPost(ctx *context.Context, form auth.CreateRepoForm) { | |||
| repo, has := models.HasForkedRepo(ctxUser.ID, forkRepo.ID) | |||
| if has { | |||
| ctx.Redirect(setting.AppSubUrl + "/" + ctxUser.Name + "/" + repo.Name) | |||
| ctx.Redirect(setting.AppSubURL + "/" + ctxUser.Name + "/" + repo.Name) | |||
| return | |||
| } | |||
| @@ -136,7 +136,7 @@ func ForkPost(ctx *context.Context, form auth.CreateRepoForm) { | |||
| } | |||
| log.Trace("Repository forked[%d]: %s/%s", forkRepo.ID, ctxUser.Name, repo.Name) | |||
| ctx.Redirect(setting.AppSubUrl + "/" + ctxUser.Name + "/" + repo.Name) | |||
| ctx.Redirect(setting.AppSubURL + "/" + ctxUser.Name + "/" + repo.Name) | |||
| } | |||
| func checkPullInfo(ctx *context.Context) *models.Issue { | |||
| @@ -376,9 +376,9 @@ func ViewPullFiles(ctx *context.Context) { | |||
| ctx.Data["Username"] = pull.HeadUserName | |||
| ctx.Data["Reponame"] = pull.HeadRepo.Name | |||
| ctx.Data["IsImageFile"] = commit.IsImageFile | |||
| ctx.Data["SourcePath"] = setting.AppSubUrl + "/" + path.Join(headTarget, "src", endCommitID) | |||
| ctx.Data["BeforeSourcePath"] = setting.AppSubUrl + "/" + path.Join(headTarget, "src", startCommitID) | |||
| ctx.Data["RawPath"] = setting.AppSubUrl + "/" + path.Join(headTarget, "raw", endCommitID) | |||
| ctx.Data["SourcePath"] = setting.AppSubURL + "/" + path.Join(headTarget, "src", endCommitID) | |||
| ctx.Data["BeforeSourcePath"] = setting.AppSubURL + "/" + path.Join(headTarget, "src", startCommitID) | |||
| ctx.Data["RawPath"] = setting.AppSubURL + "/" + path.Join(headTarget, "raw", endCommitID) | |||
| ctx.Data["RequireHighlightJS"] = true | |||
| ctx.HTML(200, tplPullFiles) | |||
| @@ -581,9 +581,9 @@ func PrepareCompareDiff( | |||
| ctx.Data["IsImageFile"] = headCommit.IsImageFile | |||
| headTarget := path.Join(headUser.Name, repo.Name) | |||
| ctx.Data["SourcePath"] = setting.AppSubUrl + "/" + path.Join(headTarget, "src", headCommitID) | |||
| ctx.Data["BeforeSourcePath"] = setting.AppSubUrl + "/" + path.Join(headTarget, "src", prInfo.MergeBase) | |||
| ctx.Data["RawPath"] = setting.AppSubUrl + "/" + path.Join(headTarget, "raw", headCommitID) | |||
| ctx.Data["SourcePath"] = setting.AppSubURL + "/" + path.Join(headTarget, "src", headCommitID) | |||
| ctx.Data["BeforeSourcePath"] = setting.AppSubURL + "/" + path.Join(headTarget, "src", prInfo.MergeBase) | |||
| ctx.Data["RawPath"] = setting.AppSubURL + "/" + path.Join(headTarget, "raw", headCommitID) | |||
| return false | |||
| } | |||
| @@ -134,7 +134,7 @@ func CreatePost(ctx *context.Context, form auth.CreateRepoForm) { | |||
| }) | |||
| if err == nil { | |||
| log.Trace("Repository created [%d]: %s/%s", repo.ID, ctxUser.Name, repo.Name) | |||
| ctx.Redirect(setting.AppSubUrl + "/" + ctxUser.Name + "/" + repo.Name) | |||
| ctx.Redirect(setting.AppSubURL + "/" + ctxUser.Name + "/" + repo.Name) | |||
| return | |||
| } | |||
| @@ -208,7 +208,7 @@ func MigratePost(ctx *context.Context, form auth.MigrateRepoForm) { | |||
| }) | |||
| if err == nil { | |||
| log.Trace("Repository migrated [%d]: %s/%s", repo.ID, ctxUser.Name, form.RepoName) | |||
| ctx.Redirect(setting.AppSubUrl + "/" + ctxUser.Name + "/" + form.RepoName) | |||
| ctx.Redirect(setting.AppSubURL + "/" + ctxUser.Name + "/" + form.RepoName) | |||
| return | |||
| } | |||
| @@ -194,7 +194,7 @@ func SettingsPost(ctx *context.Context, form auth.RepoSettingForm) { | |||
| } | |||
| log.Trace("Repository converted from mirror to regular: %s/%s", ctx.Repo.Owner.Name, repo.Name) | |||
| ctx.Flash.Success(ctx.Tr("repo.settings.convert_succeed")) | |||
| ctx.Redirect(setting.AppSubUrl + "/" + ctx.Repo.Owner.Name + "/" + repo.Name) | |||
| ctx.Redirect(setting.AppSubURL + "/" + ctx.Repo.Owner.Name + "/" + repo.Name) | |||
| case "transfer": | |||
| if !ctx.Repo.IsOwner() { | |||
| @@ -233,7 +233,7 @@ func SettingsPost(ctx *context.Context, form auth.RepoSettingForm) { | |||
| } | |||
| log.Trace("Repository transfered: %s/%s -> %s", ctx.Repo.Owner.Name, repo.Name, newOwner) | |||
| ctx.Flash.Success(ctx.Tr("repo.settings.transfer_succeed")) | |||
| ctx.Redirect(setting.AppSubUrl + "/" + newOwner + "/" + repo.Name) | |||
| ctx.Redirect(setting.AppSubURL + "/" + newOwner + "/" + repo.Name) | |||
| case "delete": | |||
| if !ctx.Repo.IsOwner() { | |||
| @@ -314,7 +314,7 @@ func Collaboration(ctx *context.Context) { | |||
| func CollaborationPost(ctx *context.Context) { | |||
| name := strings.ToLower(ctx.Query("collaborator")) | |||
| if len(name) == 0 || ctx.Repo.Owner.LowerName == name { | |||
| ctx.Redirect(setting.AppSubUrl + ctx.Req.URL.Path) | |||
| ctx.Redirect(setting.AppSubURL + ctx.Req.URL.Path) | |||
| return | |||
| } | |||
| @@ -322,7 +322,7 @@ func CollaborationPost(ctx *context.Context) { | |||
| if err != nil { | |||
| if models.IsErrUserNotExist(err) { | |||
| ctx.Flash.Error(ctx.Tr("form.user_not_exist")) | |||
| ctx.Redirect(setting.AppSubUrl + ctx.Req.URL.Path) | |||
| ctx.Redirect(setting.AppSubURL + ctx.Req.URL.Path) | |||
| } else { | |||
| ctx.Handle(500, "GetUserByName", err) | |||
| } | |||
| @@ -332,7 +332,7 @@ func CollaborationPost(ctx *context.Context) { | |||
| // Organization is not allowed to be added as a collaborator. | |||
| if u.IsOrganization() { | |||
| ctx.Flash.Error(ctx.Tr("repo.settings.org_not_allowed_to_be_collaborator")) | |||
| ctx.Redirect(setting.AppSubUrl + ctx.Req.URL.Path) | |||
| ctx.Redirect(setting.AppSubURL + ctx.Req.URL.Path) | |||
| return | |||
| } | |||
| @@ -353,7 +353,7 @@ func CollaborationPost(ctx *context.Context) { | |||
| } | |||
| ctx.Flash.Success(ctx.Tr("repo.settings.add_collaborator_success")) | |||
| ctx.Redirect(setting.AppSubUrl + ctx.Req.URL.Path) | |||
| ctx.Redirect(setting.AppSubURL + ctx.Req.URL.Path) | |||
| } | |||
| // ChangeCollaborationAccessMode response for changing access of a collaboration | |||
| @@ -44,8 +44,8 @@ func AutoSignIn(ctx *context.Context) (bool, error) { | |||
| defer func() { | |||
| if !isSucceed { | |||
| log.Trace("auto-login cookie cleared: %s", uname) | |||
| ctx.SetCookie(setting.CookieUserName, "", -1, setting.AppSubUrl) | |||
| ctx.SetCookie(setting.CookieRememberName, "", -1, setting.AppSubUrl) | |||
| ctx.SetCookie(setting.CookieUserName, "", -1, setting.AppSubURL) | |||
| ctx.SetCookie(setting.CookieRememberName, "", -1, setting.AppSubURL) | |||
| } | |||
| }() | |||
| @@ -65,7 +65,7 @@ func AutoSignIn(ctx *context.Context) (bool, error) { | |||
| isSucceed = true | |||
| ctx.Session.Set("uid", u.ID) | |||
| ctx.Session.Set("uname", u.Name) | |||
| ctx.SetCookie(setting.CSRFCookieName, "", -1, setting.AppSubUrl) | |||
| ctx.SetCookie(setting.CSRFCookieName, "", -1, setting.AppSubURL) | |||
| return true, nil | |||
| } | |||
| @@ -82,17 +82,17 @@ func SignIn(ctx *context.Context) { | |||
| redirectTo := ctx.Query("redirect_to") | |||
| if len(redirectTo) > 0 { | |||
| ctx.SetCookie("redirect_to", redirectTo, 0, setting.AppSubUrl) | |||
| ctx.SetCookie("redirect_to", redirectTo, 0, setting.AppSubURL) | |||
| } else { | |||
| redirectTo, _ = url.QueryUnescape(ctx.GetCookie("redirect_to")) | |||
| } | |||
| if isSucceed { | |||
| if len(redirectTo) > 0 { | |||
| ctx.SetCookie("redirect_to", "", -1, setting.AppSubUrl) | |||
| ctx.SetCookie("redirect_to", "", -1, setting.AppSubURL) | |||
| ctx.Redirect(redirectTo) | |||
| } else { | |||
| ctx.Redirect(setting.AppSubUrl + "/") | |||
| ctx.Redirect(setting.AppSubURL + "/") | |||
| } | |||
| return | |||
| } | |||
| @@ -121,16 +121,16 @@ func SignInPost(ctx *context.Context, form auth.SignInForm) { | |||
| if form.Remember { | |||
| days := 86400 * setting.LogInRememberDays | |||
| ctx.SetCookie(setting.CookieUserName, u.Name, days, setting.AppSubUrl) | |||
| ctx.SetCookie(setting.CookieUserName, u.Name, days, setting.AppSubURL) | |||
| ctx.SetSuperSecureCookie(base.EncodeMD5(u.Rands+u.Passwd), | |||
| setting.CookieRememberName, u.Name, days, setting.AppSubUrl) | |||
| setting.CookieRememberName, u.Name, days, setting.AppSubURL) | |||
| } | |||
| ctx.Session.Set("uid", u.ID) | |||
| ctx.Session.Set("uname", u.Name) | |||
| // Clear whatever CSRF has right now, force to generate a new one | |||
| ctx.SetCookie(setting.CSRFCookieName, "", -1, setting.AppSubUrl) | |||
| ctx.SetCookie(setting.CSRFCookieName, "", -1, setting.AppSubURL) | |||
| // Register last login | |||
| u.SetLastLogin() | |||
| @@ -140,12 +140,12 @@ func SignInPost(ctx *context.Context, form auth.SignInForm) { | |||
| } | |||
| if redirectTo, _ := url.QueryUnescape(ctx.GetCookie("redirect_to")); len(redirectTo) > 0 { | |||
| ctx.SetCookie("redirect_to", "", -1, setting.AppSubUrl) | |||
| ctx.SetCookie("redirect_to", "", -1, setting.AppSubURL) | |||
| ctx.Redirect(redirectTo) | |||
| return | |||
| } | |||
| ctx.Redirect(setting.AppSubUrl + "/") | |||
| ctx.Redirect(setting.AppSubURL + "/") | |||
| } | |||
| // SignOut sign out from login status | |||
| @@ -155,10 +155,10 @@ func SignOut(ctx *context.Context) { | |||
| ctx.Session.Delete("socialId") | |||
| ctx.Session.Delete("socialName") | |||
| ctx.Session.Delete("socialEmail") | |||
| ctx.SetCookie(setting.CookieUserName, "", -1, setting.AppSubUrl) | |||
| ctx.SetCookie(setting.CookieRememberName, "", -1, setting.AppSubUrl) | |||
| ctx.SetCookie(setting.CSRFCookieName, "", -1, setting.AppSubUrl) | |||
| ctx.Redirect(setting.AppSubUrl + "/") | |||
| ctx.SetCookie(setting.CookieUserName, "", -1, setting.AppSubURL) | |||
| ctx.SetCookie(setting.CookieRememberName, "", -1, setting.AppSubURL) | |||
| ctx.SetCookie(setting.CSRFCookieName, "", -1, setting.AppSubURL) | |||
| ctx.Redirect(setting.AppSubURL + "/") | |||
| } | |||
| // SignUp render the register page | |||
| @@ -255,7 +255,7 @@ func SignUpPost(ctx *context.Context, cpt *captcha.Captcha, form auth.RegisterFo | |||
| return | |||
| } | |||
| ctx.Redirect(setting.AppSubUrl + "/user/login") | |||
| ctx.Redirect(setting.AppSubURL + "/user/login") | |||
| } | |||
| // Activate render activate user page | |||
| @@ -303,7 +303,7 @@ func Activate(ctx *context.Context) { | |||
| ctx.Session.Set("uid", user.ID) | |||
| ctx.Session.Set("uname", user.Name) | |||
| ctx.Redirect(setting.AppSubUrl + "/") | |||
| ctx.Redirect(setting.AppSubURL + "/") | |||
| return | |||
| } | |||
| @@ -326,7 +326,7 @@ func ActivateEmail(ctx *context.Context) { | |||
| ctx.Flash.Success(ctx.Tr("settings.add_email_success")) | |||
| } | |||
| ctx.Redirect(setting.AppSubUrl + "/user/settings/email") | |||
| ctx.Redirect(setting.AppSubURL + "/user/settings/email") | |||
| return | |||
| } | |||
| @@ -437,7 +437,7 @@ func ResetPasswdPost(ctx *context.Context) { | |||
| } | |||
| log.Trace("User password reset: %s", u.Name) | |||
| ctx.Redirect(setting.AppSubUrl + "/user/login") | |||
| ctx.Redirect(setting.AppSubURL + "/user/login") | |||
| return | |||
| } | |||
| @@ -390,5 +390,5 @@ func Email2User(ctx *context.Context) { | |||
| } | |||
| return | |||
| } | |||
| ctx.Redirect(setting.AppSubUrl + "/user/" + u.Name) | |||
| ctx.Redirect(setting.AppSubURL + "/user/" + u.Name) | |||
| } | |||
| @@ -52,16 +52,16 @@ func handleUsernameChange(ctx *context.Context, newName string) { | |||
| switch { | |||
| case models.IsErrUserAlreadyExist(err): | |||
| ctx.Flash.Error(ctx.Tr("newName_been_taken")) | |||
| ctx.Redirect(setting.AppSubUrl + "/user/settings") | |||
| ctx.Redirect(setting.AppSubURL + "/user/settings") | |||
| case models.IsErrEmailAlreadyUsed(err): | |||
| ctx.Flash.Error(ctx.Tr("form.email_been_used")) | |||
| ctx.Redirect(setting.AppSubUrl + "/user/settings") | |||
| ctx.Redirect(setting.AppSubURL + "/user/settings") | |||
| case models.IsErrNameReserved(err): | |||
| ctx.Flash.Error(ctx.Tr("user.newName_reserved")) | |||
| ctx.Redirect(setting.AppSubUrl + "/user/settings") | |||
| ctx.Redirect(setting.AppSubURL + "/user/settings") | |||
| case models.IsErrNamePatternNotAllowed(err): | |||
| ctx.Flash.Error(ctx.Tr("user.newName_pattern_not_allowed")) | |||
| ctx.Redirect(setting.AppSubUrl + "/user/settings") | |||
| ctx.Redirect(setting.AppSubURL + "/user/settings") | |||
| default: | |||
| ctx.Handle(500, "ChangeUserName", err) | |||
| } | |||
| @@ -101,7 +101,7 @@ func SettingsPost(ctx *context.Context, form auth.UpdateProfileForm) { | |||
| log.Trace("User settings updated: %s", ctx.User.Name) | |||
| ctx.Flash.Success(ctx.Tr("settings.update_profile_success")) | |||
| ctx.Redirect(setting.AppSubUrl + "/user/settings") | |||
| ctx.Redirect(setting.AppSubURL + "/user/settings") | |||
| } | |||
| // UpdateAvatarSetting update user's avatar | |||
| @@ -162,7 +162,7 @@ func SettingsAvatarPost(ctx *context.Context, form auth.AvatarForm) { | |||
| ctx.Flash.Success(ctx.Tr("settings.update_avatar_success")) | |||
| } | |||
| ctx.Redirect(setting.AppSubUrl + "/user/settings/avatar") | |||
| ctx.Redirect(setting.AppSubURL + "/user/settings/avatar") | |||
| } | |||
| // SettingsDeleteAvatar render delete avatar page | |||
| @@ -171,7 +171,7 @@ func SettingsDeleteAvatar(ctx *context.Context) { | |||
| ctx.Flash.Error(err.Error()) | |||
| } | |||
| ctx.Redirect(setting.AppSubUrl + "/user/settings/avatar") | |||
| ctx.Redirect(setting.AppSubURL + "/user/settings/avatar") | |||
| } | |||
| // SettingsPassword render change user's password page | |||
| @@ -207,7 +207,7 @@ func SettingsPasswordPost(ctx *context.Context, form auth.ChangePasswordForm) { | |||
| ctx.Flash.Success(ctx.Tr("settings.change_password_success")) | |||
| } | |||
| ctx.Redirect(setting.AppSubUrl + "/user/settings/password") | |||
| ctx.Redirect(setting.AppSubURL + "/user/settings/password") | |||
| } | |||
| // SettingsEmails render user's emails page | |||
| @@ -238,7 +238,7 @@ func SettingsEmailPost(ctx *context.Context, form auth.AddEmailForm) { | |||
| } | |||
| log.Trace("Email made primary: %s", ctx.User.Name) | |||
| ctx.Redirect(setting.AppSubUrl + "/user/settings/email") | |||
| ctx.Redirect(setting.AppSubURL + "/user/settings/email") | |||
| return | |||
| } | |||
| @@ -282,7 +282,7 @@ func SettingsEmailPost(ctx *context.Context, form auth.AddEmailForm) { | |||
| } | |||
| log.Trace("Email address added: %s", email.Email) | |||
| ctx.Redirect(setting.AppSubUrl + "/user/settings/email") | |||
| ctx.Redirect(setting.AppSubURL + "/user/settings/email") | |||
| } | |||
| // DeleteEmail reponse for delete user's email | |||
| @@ -295,7 +295,7 @@ func DeleteEmail(ctx *context.Context) { | |||
| ctx.Flash.Success(ctx.Tr("settings.email_deletion_success")) | |||
| ctx.JSON(200, map[string]interface{}{ | |||
| "redirect": setting.AppSubUrl + "/user/settings/email", | |||
| "redirect": setting.AppSubURL + "/user/settings/email", | |||
| }) | |||
| } | |||
| @@ -337,7 +337,7 @@ func SettingsSSHKeysPost(ctx *context.Context, form auth.AddSSHKeyForm) { | |||
| ctx.Flash.Info(ctx.Tr("form.unable_verify_ssh_key")) | |||
| } else { | |||
| ctx.Flash.Error(ctx.Tr("form.invalid_ssh_key", err.Error())) | |||
| ctx.Redirect(setting.AppSubUrl + "/user/settings/ssh") | |||
| ctx.Redirect(setting.AppSubURL + "/user/settings/ssh") | |||
| return | |||
| } | |||
| } | |||
| @@ -358,7 +358,7 @@ func SettingsSSHKeysPost(ctx *context.Context, form auth.AddSSHKeyForm) { | |||
| } | |||
| ctx.Flash.Success(ctx.Tr("settings.add_key_success", form.Title)) | |||
| ctx.Redirect(setting.AppSubUrl + "/user/settings/ssh") | |||
| ctx.Redirect(setting.AppSubURL + "/user/settings/ssh") | |||
| } | |||
| // DeleteSSHKey response for delete user's SSH key | |||
| @@ -370,7 +370,7 @@ func DeleteSSHKey(ctx *context.Context) { | |||
| } | |||
| ctx.JSON(200, map[string]interface{}{ | |||
| "redirect": setting.AppSubUrl + "/user/settings/ssh", | |||
| "redirect": setting.AppSubURL + "/user/settings/ssh", | |||
| }) | |||
| } | |||
| @@ -417,7 +417,7 @@ func SettingsApplicationsPost(ctx *context.Context, form auth.NewAccessTokenForm | |||
| ctx.Flash.Success(ctx.Tr("settings.generate_token_succees")) | |||
| ctx.Flash.Info(t.Sha1) | |||
| ctx.Redirect(setting.AppSubUrl + "/user/settings/applications") | |||
| ctx.Redirect(setting.AppSubURL + "/user/settings/applications") | |||
| } | |||
| // SettingsDeleteApplication response for delete user access token | |||
| @@ -429,7 +429,7 @@ func SettingsDeleteApplication(ctx *context.Context) { | |||
| } | |||
| ctx.JSON(200, map[string]interface{}{ | |||
| "redirect": setting.AppSubUrl + "/user/settings/applications", | |||
| "redirect": setting.AppSubURL + "/user/settings/applications", | |||
| }) | |||
| } | |||
| @@ -452,16 +452,16 @@ func SettingsDelete(ctx *context.Context) { | |||
| switch { | |||
| case models.IsErrUserOwnRepos(err): | |||
| ctx.Flash.Error(ctx.Tr("form.still_own_repo")) | |||
| ctx.Redirect(setting.AppSubUrl + "/user/settings/delete") | |||
| ctx.Redirect(setting.AppSubURL + "/user/settings/delete") | |||
| case models.IsErrUserHasOrgs(err): | |||
| ctx.Flash.Error(ctx.Tr("form.still_has_org")) | |||
| ctx.Redirect(setting.AppSubUrl + "/user/settings/delete") | |||
| ctx.Redirect(setting.AppSubURL + "/user/settings/delete") | |||
| default: | |||
| ctx.Handle(500, "DeleteUser", err) | |||
| } | |||
| } else { | |||
| log.Trace("Account deleted: %s", ctx.User.Name) | |||
| ctx.Redirect(setting.AppSubUrl + "/") | |||
| ctx.Redirect(setting.AppSubURL + "/") | |||
| } | |||
| return | |||
| } | |||