選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

options.go 1.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. package ssh
  2. import (
  3. "io/ioutil"
  4. gossh "golang.org/x/crypto/ssh"
  5. )
  6. // PasswordAuth returns a functional option that sets PasswordHandler on the server.
  7. func PasswordAuth(fn PasswordHandler) Option {
  8. return func(srv *Server) error {
  9. srv.PasswordHandler = fn
  10. return nil
  11. }
  12. }
  13. // PublicKeyAuth returns a functional option that sets PublicKeyHandler on the server.
  14. func PublicKeyAuth(fn PublicKeyHandler) Option {
  15. return func(srv *Server) error {
  16. srv.PublicKeyHandler = fn
  17. return nil
  18. }
  19. }
  20. // HostKeyFile returns a functional option that adds HostSigners to the server
  21. // from a PEM file at filepath.
  22. func HostKeyFile(filepath string) Option {
  23. return func(srv *Server) error {
  24. pemBytes, err := ioutil.ReadFile(filepath)
  25. if err != nil {
  26. return err
  27. }
  28. signer, err := gossh.ParsePrivateKey(pemBytes)
  29. if err != nil {
  30. return err
  31. }
  32. srv.AddHostKey(signer)
  33. return nil
  34. }
  35. }
  36. func KeyboardInteractiveAuth(fn KeyboardInteractiveHandler) Option {
  37. return func(srv *Server) error {
  38. srv.KeyboardInteractiveHandler = fn
  39. return nil
  40. }
  41. }
  42. // HostKeyPEM returns a functional option that adds HostSigners to the server
  43. // from a PEM file as bytes.
  44. func HostKeyPEM(bytes []byte) Option {
  45. return func(srv *Server) error {
  46. signer, err := gossh.ParsePrivateKey(bytes)
  47. if err != nil {
  48. return err
  49. }
  50. srv.AddHostKey(signer)
  51. return nil
  52. }
  53. }
  54. // NoPty returns a functional option that sets PtyCallback to return false,
  55. // denying PTY requests.
  56. func NoPty() Option {
  57. return func(srv *Server) error {
  58. srv.PtyCallback = func(ctx Context, pty Pty) bool {
  59. return false
  60. }
  61. return nil
  62. }
  63. }
  64. // WrapConn returns a functional option that sets ConnCallback on the server.
  65. func WrapConn(fn ConnCallback) Option {
  66. return func(srv *Server) error {
  67. srv.ConnCallback = fn
  68. return nil
  69. }
  70. }