summaryrefslogtreecommitdiffstats
path: root/models/publickey.go
diff options
context:
space:
mode:
authorfzerorubigd <fzerorubigd@gmail.com>2014-12-31 21:37:51 +0330
committerfzerorubigd <fzerorubigd@gmail.com>2015-01-01 02:15:52 +0330
commit6643647687aa2ba8a41f8f95d404407ff6106d8c (patch)
treecae1cd7cddd7c5cb94fe5463ba6869a84476e22e /models/publickey.go
parentb6272d180343d8081941eb56f22fed5ffc830a7e (diff)
downloadgitea-6643647687aa2ba8a41f8f95d404407ff6106d8c.tar.gz
gitea-6643647687aa2ba8a41f8f95d404407ff6106d8c.zip
add afunction to rewrite all public keys on admin request
refs #763
Diffstat (limited to 'models/publickey.go')
-rw-r--r--models/publickey.go29
1 files changed, 26 insertions, 3 deletions
diff --git a/models/publickey.go b/models/publickey.go
index ba15ca4553..fbba691abc 100644
--- a/models/publickey.go
+++ b/models/publickey.go
@@ -163,7 +163,7 @@ func CheckPublicKeyString(content string) (bool, error) {
}
// saveAuthorizedKeyFile writes SSH key content to authorized_keys file.
-func saveAuthorizedKeyFile(key *PublicKey) error {
+func saveAuthorizedKeyFile(keys ...*PublicKey) error {
sshOpLocker.Lock()
defer sshOpLocker.Unlock()
@@ -188,8 +188,13 @@ func saveAuthorizedKeyFile(key *PublicKey) error {
}
}
- _, err = f.WriteString(key.GetAuthorizedString())
- return err
+ for _, key := range keys {
+ _, err = f.WriteString(key.GetAuthorizedString())
+ if err != nil {
+ return err
+ }
+ }
+ return nil
}
// AddPublicKey adds new public key to database and authorized_keys file.
@@ -341,3 +346,21 @@ func DeletePublicKey(key *PublicKey) error {
}
return os.Rename(tmpPath, fpath)
}
+
+// RewriteAllPublicKeys remove any authorized key and re-write all key from database again
+func RewriteAllPublicKeys() error {
+ keys := make([]*PublicKey, 0, 5)
+ err := x.Find(&keys)
+ if err != nil {
+ return err
+ }
+
+ fpath := filepath.Join(SshPath, "authorized_keys")
+ if _, err := os.Stat(fpath); os.IsNotExist(err) {
+ return saveAuthorizedKeyFile(keys...)
+ }
+ if err := os.Remove(fpath); err != nil {
+ return err
+ }
+ return saveAuthorizedKeyFile(keys...)
+}