Browse Source

add publickey

Lunny Xiao 11 years ago
parent
commit
52984f85d5

+ 3 - 3
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
 }

+ 12 - 5
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{}{})
+	}
 }

+ 1 - 1
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">

+ 8 - 0
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" .}}