Extract the username and password from the mirror url (#7651)

* Explode out mirror username and password

* Update models/repo_mirror.go

* Just roundtrip the password

* remove unused declaration

* Update templates/repo/settings/options.tmpl
This commit is contained in:
zeripath 2019-08-16 22:56:57 +01:00 committed by GitHub
parent 867f46f78e
commit bee1227b2f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 69 additions and 10 deletions

View file

@ -7,6 +7,7 @@ package models
import (
"fmt"
"net/url"
"strings"
"time"
@ -119,7 +120,7 @@ func sanitizeOutput(output, repoPath string) (string, error) {
return util.SanitizeMessage(output, remoteAddr), nil
}
// Address returns mirror address from Git repository config without credentials.
// Address returns mirror address from Git repository config with credentials censored.
func (m *Mirror) Address() string {
m.readAddress()
return util.SanitizeURLCredentials(m.address, false)
@ -131,6 +132,41 @@ func (m *Mirror) FullAddress() string {
return m.address
}
// AddressNoCredentials returns mirror address from Git repository config without credentials.
func (m *Mirror) AddressNoCredentials() string {
m.readAddress()
u, err := url.Parse(m.address)
if err != nil {
// this shouldn't happen but just return it unsanitised
return m.address
}
u.User = nil
return u.String()
}
// Username returns the mirror address username
func (m *Mirror) Username() string {
m.readAddress()
u, err := url.Parse(m.address)
if err != nil {
// this shouldn't happen but if it does return ""
return ""
}
return u.User.Username()
}
// Password returns the mirror address password
func (m *Mirror) Password() string {
m.readAddress()
u, err := url.Parse(m.address)
if err != nil {
// this shouldn't happen but if it does return ""
return ""
}
password, _ := u.User.Password()
return password
}
// SaveAddress writes new address to Git repository config.
func (m *Mirror) SaveAddress(addr string) error {
repoPath := m.Repo.RepoPath()