| | |
| | | */ |
| | | package com.gitblit.git; |
| | | |
| | | import java.io.File; |
| | | import java.io.IOException; |
| | | import java.text.MessageFormat; |
| | | |
| | |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | |
| | | import com.gitblit.GitBlit; |
| | | import com.gitblit.manager.IRepositoryManager; |
| | | import com.gitblit.manager.ISessionManager; |
| | | import com.gitblit.manager.IGitblit; |
| | | import com.gitblit.models.RepositoryModel; |
| | | import com.gitblit.models.UserModel; |
| | | import com.gitblit.transport.git.GitDaemonClient; |
| | | import com.gitblit.transport.ssh.SshSession; |
| | | |
| | | /** |
| | | * Resolves repositories and grants export access. |
| | |
| | | |
| | | private final Logger logger = LoggerFactory.getLogger(RepositoryResolver.class); |
| | | |
| | | public RepositoryResolver(File repositoriesFolder) { |
| | | super(repositoriesFolder, true); |
| | | private final IGitblit gitblit; |
| | | |
| | | public RepositoryResolver(IGitblit gitblit) { |
| | | super(gitblit.getRepositoriesFolder(), true); |
| | | this.gitblit = gitblit; |
| | | } |
| | | |
| | | /** |
| | |
| | | // git request |
| | | GitDaemonClient client = (GitDaemonClient) req; |
| | | client.setRepositoryName(name); |
| | | } else if (req instanceof SshSession) { |
| | | SshSession s = (SshSession)req; |
| | | s.setRepositoryName(name); |
| | | } |
| | | return repo; |
| | | } |
| | |
| | | */ |
| | | @Override |
| | | protected boolean isExportOk(X req, String repositoryName, Repository db) throws IOException { |
| | | IRepositoryManager repositoryManager = GitBlit.getManager(IRepositoryManager.class); |
| | | ISessionManager sessionManager = GitBlit.getManager(ISessionManager.class); |
| | | RepositoryModel model = repositoryManager.getRepositoryModel(repositoryName); |
| | | RepositoryModel model = gitblit.getRepositoryModel(repositoryName); |
| | | |
| | | String scheme = null; |
| | | UserModel user = null; |
| | |
| | | HttpServletRequest httpRequest = (HttpServletRequest) req; |
| | | scheme = httpRequest.getScheme(); |
| | | origin = httpRequest.getRemoteAddr(); |
| | | user = sessionManager.authenticate(httpRequest); |
| | | user = gitblit.authenticate(httpRequest); |
| | | if (user == null) { |
| | | user = UserModel.ANONYMOUS; |
| | | } |
| | | } else if (req instanceof SshSession) { |
| | | SshSession s = (SshSession) req; |
| | | user = gitblit.authenticate(s); |
| | | if (user == null) { |
| | | throw new IOException(String.format("User %s not found", s.getRemoteUser())); |
| | | } |
| | | } |
| | | |
| | | if (user.canClone(model)) { |