| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
* Previously, a 200 (OK) was sent when the user was unauthorised or the project was not found (or the user didn't have access)
* We still treat 401 and 404 as 'success' but we need to explicitly handle them
|
| |
|
|
|
|
|
|
|
|
|
| |
After the cleanup in https://gitlab.com/gitlab-org/gitlab-shell/merge_requests/231
gitlab-shell mishandled the non 200 response codes. This commit removes
another few lines of codes, which fixes this. Also now we test against
this case through mocking.
Fixes https://gitlab.com/gitlab-org/gitlab-shell/issues/152
|
|
|
|
|
|
|
|
|
|
|
| |
Given the gitaly-* now proxy the data from the client to the Gitaly
server, the environment variables aren't used. Therefor we don't have to
set them either. Only exception to the rule, is the GITALY_TOKEN.
These changes also remove the `GIT_TRACE` options, introduced by
192e2bd367494bf66746c8971896a2d9cb84fc92.
Part of: https://gitlab.com/gitlab-org/gitaly/issues/1300
|
|
|
|
|
|
|
| |
All shell access goes through Gitaly, so dead code paths exist to
support the legacy way too.
This change mostly removes the dead code from `#process_cmd`.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The internal api returns '/' from gitlab, since
`8fad07383ada021fc995294fd0fe0f77fe37da35` from GitLab CE. To clean up
later, https://gitlab.com/gitlab-org/gitlab-shell/issues/135 was
created.
This change closes that issue, making it possible to remove the field
from the response on GitLab-CE too. Given the Rails app always returns
`/` as the repository_path, the associated checks are basically a noop
too. The tests are updated and at times look a little fishy, but those
are testing code that is to be removed in another MR.
Closes https://gitlab.com/gitlab-org/gitlab-shell/issues/135
|
| |
|
| |
|
|\
| |
| |
| | |
148-merge-8-1-1-to-master
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Fix two regressions in my 2e8b670 ("Add support for SSH certificate
authentication", 2018-06-14) merged in gitlab-org/gitlab-shell!207.
This fixes the issue noted in gitlab-org/gitlab-shell#145 where the
command-line contains things other than the key/user/username, and
also a regression where SSH certificates are being used, and the
username presented in the key is unknown to GitLab.
In that case, we should log the user in as "Anonymous" (on an instance
that allows public access), but because of how the error checking
around api.discover() was implemented we ended up erroring out
instead.
|
| |
| |
| |
| | |
This reverts commit 764f6f47fa6a8698ae033532ae49875a87030518.
|
| |
| |
| |
| |
| | |
This reverts commit 3aaf4751e09262c53544a1987f59b1308af9b6c1, reversing
changes made to c6577e0d75f51b017f2f332838b97c3ca5b497c0.
|
| |
| |
| |
| | |
This reverts commit f4ce4a3c31a9a7fb2fa0bb7daa185d34b8c03c00.
|
|\ \
| | |
| | |
| | |
| | | |
Pass custom git_config_options to Gitaly
See merge request gitlab-org/gitlab-shell!221
|
| | |
| | |
| | |
| | |
| | | |
The /api/internal/allowed endpoint on GitLab has been updated to return some
custom git options that can be used with git commands, we need to pass these received options to Gitaly.
|
|/ / |
|
| | |
|
|\ \
| |/ |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
|\ \
| |/ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This along with the code submitted to gitlab-ce in the
gitlab-org/gitlab-ce! MR implements SSH certificate
authentication. See the docs added to gitlab-ce for why and how to
enable this. This, along with that MR, closes
gitlab-org/gitlab-ce#3457
Implementation notes:
- Because it's easy to do, and because an earlier nascent version of
this would pass user-ID to gitlab-shell, that's now supported, even
though the SSH certificate authentication uses username-USERNAME.
- The astute reader will notice that not all the API calls in
gitlab-ce's lib/api/internal.rb support a "username" argument, some
only support "user_id".
There's a few reasons for this:
a) For this to be efficient, I am bending over backwards to avoid
extra API calls when using SSH certificates.
Therefore the /allowed API call will now return a "user id" to
us if we're allowed to proceed further. This is then fed to
existing APIs that would only be called after a successful
call to /allowed.
b) Not all of the git-shell codepaths go through
/internal/allowed, or ever deal with a repository, e.g. the
argument-less "Welcome to GitLab", and
/internal/2fa_recovery_codes. These need to use
/internal/discover to figure out details about the user, so
support looking that up by username.
c) Once we have the "user id", the GL_ID gets passed down to
e.g. user-authored hooks. I don't want to have those all break
by having to handle a third GL_ID mode of "username" in
addition to the current "key id" and "user id".
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| | |
* Use gl_id when we don't know if it's a key-X or user-X
* Use Actor.new_from(gl_id) which will figure out if it's a Key or User
* Use key_str when we're referring to key-X as key_id is confusing
|
| | |
|
| |
| |
| |
| |
| | |
- Is possible that gl_id could be a 'user_id'
- Is a more accurate variable name
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* Move gitaly, git-lfs and 2FA logic out from gitlab_shell.rb
* Streamline parsing of origin_cmd in GitlabShell
* Utilise proper HTTP status codes sent from the API
* Also support 200 OK with status of true/false (ideally get rid of this)
* Use HTTP status constants
* Use attr_reader definitions (var over @var)
* Rspec deprecation fixes
|
| |
| |
| |
| |
| | |
* Use constants for git commands
* private instead of protected
|
| |
| |
| |
| |
| | |
* Remove HTTP related requires
* Make protocol = GL_PROTOCOL the default
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| | |
* Rename actor to key_id
* protected to private
* Move attr_reader defintions under private
|
| | |
|
| | |
|
| | |
|