ssh.go 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. // Copyright 2014 The Gogs Authors. All rights reserved.
  2. // Use of this source code is governed by a MIT-style
  3. // license that can be found in the LICENSE file.
  4. package user
  5. import (
  6. "net/http"
  7. "strconv"
  8. "github.com/martini-contrib/render"
  9. "github.com/martini-contrib/sessions"
  10. "github.com/gogits/gogs/models"
  11. "github.com/gogits/gogs/modules/auth"
  12. "github.com/gogits/gogs/modules/base"
  13. "github.com/gogits/gogs/modules/log"
  14. )
  15. func AddPublicKey(req *http.Request, data base.TmplData, r render.Render, session sessions.Session) {
  16. data["Title"] = "Add Public Key"
  17. if req.Method == "GET" {
  18. r.HTML(200, "user/publickey_add", data)
  19. return
  20. }
  21. k := &models.PublicKey{OwnerId: auth.SignedInId(session),
  22. Name: req.FormValue("keyname"),
  23. Content: req.FormValue("key_content"),
  24. }
  25. err := models.AddPublicKey(k)
  26. if err != nil {
  27. data["ErrorMsg"] = err
  28. log.Error("ssh.AddPublicKey: %v", err)
  29. r.HTML(200, "base/error", data)
  30. } else {
  31. r.HTML(200, "user/publickey_added", data)
  32. }
  33. }
  34. func DelPublicKey(req *http.Request, data base.TmplData, r render.Render, session sessions.Session) {
  35. data["Title"] = "Del Public Key"
  36. if req.Method == "GET" {
  37. r.HTML(200, "user/publickey_add", data)
  38. return
  39. }
  40. if req.Method == "DELETE" {
  41. id, err := strconv.ParseInt(req.FormValue("id"), 10, 64)
  42. if err != nil {
  43. data["ErrorMsg"] = err
  44. log.Error("ssh.DelPublicKey: %v", err)
  45. r.JSON(200, map[string]interface{}{
  46. "ok": false,
  47. "err": err.Error(),
  48. })
  49. return
  50. }
  51. k := &models.PublicKey{
  52. Id: id,
  53. OwnerId: auth.SignedInId(session),
  54. }
  55. err = models.DeletePublicKey(k)
  56. if err != nil {
  57. data["ErrorMsg"] = err
  58. log.Error("ssh.DelPublicKey: %v", err)
  59. r.JSON(200, map[string]interface{}{
  60. "ok": false,
  61. "err": err.Error(),
  62. })
  63. } else {
  64. r.JSON(200, map[string]interface{}{
  65. "ok": true,
  66. })
  67. }
  68. }
  69. }
  70. func ListPublicKey(req *http.Request, data base.TmplData, r render.Render, session sessions.Session) {
  71. data["Title"] = "Public Keys"
  72. keys, err := models.ListPublicKey(auth.SignedInId(session))
  73. if err != nil {
  74. data["ErrorMsg"] = err
  75. log.Error("ssh.ListPublicKey: %v", err)
  76. r.HTML(200, "base/error", data)
  77. return
  78. }
  79. data["Keys"] = keys
  80. r.HTML(200, "user/publickey_list", data)
  81. }