summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLunny Xiao <xiaolunwen@gmail.com>2014-02-25 18:30:48 +0800
committerLunny Xiao <xiaolunwen@gmail.com>2014-02-25 18:30:48 +0800
commit52984f85d5afc2a74bb3ca04487da7fb277437d6 (patch)
treebe3843f3270c679a01432b86f36b7887d1906398
parentd42c194aadd349ebb2e87d64d764a370fb3f54dc (diff)
downloadgitea-52984f85d5afc2a74bb3ca04487da7fb277437d6.tar.gz
gitea-52984f85d5afc2a74bb3ca04487da7fb277437d6.zip
add publickey
-rw-r--r--models/publickey.go6
-rw-r--r--routers/user/ssh.go17
-rw-r--r--templates/user/publickey_add.tmpl2
-rw-r--r--templates/user/publickey_added.tmpl8
4 files changed, 24 insertions, 9 deletions
diff --git a/models/publickey.go b/models/publickey.go
index 1e58ba0574..2fd1895d6c 100644
--- a/models/publickey.go
+++ b/models/publickey.go
@@ -47,7 +47,7 @@ func GenAuthorizedKey(keyId int64, key string) string {
return fmt.Sprintf(tmplPublicKey, appPath, keyId, key)
}
-func AddPublicKey(key *PublicKey, user string) error {
+func AddPublicKey(key *PublicKey) error {
_, err := orm.Insert(key)
if err != nil {
return err
@@ -67,11 +67,11 @@ func AddPublicKey(key *PublicKey, user string) error {
func SaveAuthorizedKeyFile(key *PublicKey) error {
p := filepath.Join(sshPath, "authorized_keys")
- f, err := os.Create(p)
+ f, err := os.OpenFile(p, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0600)
if err != nil {
return err
}
- os.Chmod(p, 0600)
+ //os.Chmod(p, 0600)
_, err = f.WriteString(GenAuthorizedKey(key.Id, key.Content))
return err
}
diff --git a/routers/user/ssh.go b/routers/user/ssh.go
index 84f41150ff..c7fae4b4b8 100644
--- a/routers/user/ssh.go
+++ b/routers/user/ssh.go
@@ -21,9 +21,16 @@ func AddPublickKey(req *http.Request, r render.Render) {
return
}
- k := &models.PublicKey{}
- err := models.AddPublicKey(k, "")
- r.HTML(403, "status/403", map[string]interface{}{
- "Title": fmt.Sprintf("%v", err),
- })
+ k := &models.PublicKey{OwnerId: 1,
+ Name: req.FormValue("keyname"),
+ Content: req.FormValue("key_content"),
+ }
+ err := models.AddPublicKey(k)
+ if err != nil {
+ r.HTML(403, "status/403", map[string]interface{}{
+ "Title": fmt.Sprintf("%v", err),
+ })
+ } else {
+ r.HTML(200, "user/publickey_added", map[string]interface{}{})
+ }
}
diff --git a/templates/user/publickey_add.tmpl b/templates/user/publickey_add.tmpl
index 2d70d82a31..5ab25b7235 100644
--- a/templates/user/publickey_add.tmpl
+++ b/templates/user/publickey_add.tmpl
@@ -1,7 +1,7 @@
{{template "base/head" .}}
{{template "base/navbar" .}}
<div class="container">
- <form action="/user/delete" method="post" class="form-horizontal">
+ <form action="/user/publickey/add" method="post" class="form-horizontal">
<div class="form-group">
<label class="col-md-4 control-label">Name of this public key: </label>
<div class="col-md-3">
diff --git a/templates/user/publickey_added.tmpl b/templates/user/publickey_added.tmpl
new file mode 100644
index 0000000000..f67da9ed85
--- /dev/null
+++ b/templates/user/publickey_added.tmpl
@@ -0,0 +1,8 @@
+{{template "base/head" .}}
+{{template "base/navbar" .}}
+<div class="container">
+ <div class="form-group">
+ publickey added
+ </div>
+</div>
+{{template "base/footer" .}} \ No newline at end of file