summaryrefslogtreecommitdiffstats
path: root/models/repo_mirror.go
diff options
context:
space:
mode:
Diffstat (limited to 'models/repo_mirror.go')
-rw-r--r--models/repo_mirror.go38
1 files changed, 37 insertions, 1 deletions
diff --git a/models/repo_mirror.go b/models/repo_mirror.go
index 7f703a1c97..02c87daf69 100644
--- a/models/repo_mirror.go
+++ b/models/repo_mirror.go
@@ -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()