Change summary
server/backend/file/file.go | 5 +++
server/backend/repo.go | 2 +
server/daemon.go | 3 -
server/git/daemon/conn.go | 55 ---------------------------------------
server/ssh.go | 3 -
5 files changed, 9 insertions(+), 59 deletions(-)
Detailed changes
@@ -80,6 +80,11 @@ func (fb *FileBackend) reposPath() string {
return filepath.Join(fb.path, repos)
}
+// RepositoryStorePath returns the path to the repository store.
+func (fb *FileBackend) RepositoryStorePath() string {
+ return fb.reposPath()
+}
+
func (fb *FileBackend) settingsPath() string {
return filepath.Join(fb.path, settings)
}
@@ -11,6 +11,8 @@ type RepositoryStore interface {
Repository(repo string) (Repository, error)
// Repositories returns a list of all repositories.
Repositories() ([]Repository, error)
+ // RepositoryStorePath returns the path to the repository store.
+ RepositoryStorePath() string
// CreateRepository creates a new repository.
CreateRepository(name string, private bool) (Repository, error)
// DeleteRepository deletes a repository.
@@ -207,8 +207,7 @@ func (d *GitDaemon) handleClient(conn net.Conn) {
// git bare repositories should end in ".git"
// https://git-scm.com/docs/gitrepository-layout
repo := name + ".git"
- // FIXME: determine repositories path
- reposDir := filepath.Join(d.cfg.DataPath, "repos")
+ reposDir := d.cfg.Backend.RepositoryStorePath()
if err := ensureWithin(reposDir, repo); err != nil {
fatal(c, err)
return
@@ -1,55 +0,0 @@
-package daemon
-
-import (
- "context"
- "net"
- "time"
-)
-
-type serverConn struct {
- net.Conn
-
- idleTimeout time.Duration
- maxDeadline time.Time
- closeCanceler context.CancelFunc
-}
-
-func (c *serverConn) Write(p []byte) (n int, err error) {
- c.updateDeadline()
- n, err = c.Conn.Write(p)
- if _, isNetErr := err.(net.Error); isNetErr && c.closeCanceler != nil {
- c.closeCanceler()
- }
- return
-}
-
-func (c *serverConn) Read(b []byte) (n int, err error) {
- c.updateDeadline()
- n, err = c.Conn.Read(b)
- if _, isNetErr := err.(net.Error); isNetErr && c.closeCanceler != nil {
- c.closeCanceler()
- }
- return
-}
-
-func (c *serverConn) Close() (err error) {
- err = c.Conn.Close()
- if c.closeCanceler != nil {
- c.closeCanceler()
- }
- return
-}
-
-func (c *serverConn) updateDeadline() {
- switch {
- case c.idleTimeout > 0:
- idleDeadline := time.Now().Add(c.idleTimeout)
- if idleDeadline.Unix() < c.maxDeadline.Unix() || c.maxDeadline.IsZero() {
- c.Conn.SetDeadline(idleDeadline)
- return
- }
- fallthrough
- default:
- c.Conn.SetDeadline(c.maxDeadline)
- }
-}
@@ -94,8 +94,7 @@ func (s *SSHServer) Middleware(cfg *config.Config) wish.Middleware {
// https://git-scm.com/docs/gitrepository-layout
repo := name + ".git"
- // FIXME: determine repositories path
- reposDir := filepath.Join(cfg.DataPath, "repos")
+ reposDir := cfg.Backend.RepositoryStorePath()
if err := ensureWithin(reposDir, repo); err != nil {
sshFatal(s, err)
return