ntpd.go 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. // Copyright 2019 Yunion
  2. //
  3. // Licensed under the Apache License, Version 2.0 (the "License");
  4. // you may not use this file except in compliance with the License.
  5. // You may obtain a copy of the License at
  6. //
  7. // http://www.apache.org/licenses/LICENSE-2.0
  8. //
  9. // Unless required by applicable law or agreed to in writing, software
  10. // distributed under the License is distributed on an "AS IS" BASIS,
  11. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. // See the License for the specific language governing permissions and
  13. // limitations under the License.
  14. package system_service
  15. import "fmt"
  16. type SNtpd struct {
  17. *SBaseSystemService
  18. }
  19. func NewNtpdService() *SNtpd {
  20. return &SNtpd{NewBaseSystemService("ntpd", nil)}
  21. }
  22. func (s *SNtpd) GetConfig(kwargs map[string]interface{}) string {
  23. var srvs = []string{}
  24. if servers, ok := kwargs["servers"]; ok {
  25. ss, _ := servers.([]string)
  26. for _, srv := range ss {
  27. srvs = append(srvs, srv[len("ntp://"):])
  28. }
  29. } else {
  30. srvs = []string{"1.cn.pool.ntp.org",
  31. "2.cn.pool.ntp.org",
  32. "3.cn.pool.ntp.org",
  33. "0.cn.pool.ntp.org",
  34. "cn.pool.ntp.org"}
  35. }
  36. conf := ""
  37. conf += "driftfile /var/lib/ntp/drift\n"
  38. conf += "restrict default nomodify notrap nopeer noquery kod limited\n"
  39. conf += "restrict 127.0.0.1\n"
  40. conf += "restrict ::1\n"
  41. for _, srv := range srvs {
  42. conf += fmt.Sprintf("server %s iburst\n", srv)
  43. }
  44. conf += "includefile /etc/ntp/crypto/pw\n"
  45. conf += "keys /etc/ntp/keys\n"
  46. conf += "disable monitor\n"
  47. return conf
  48. }
  49. func (s *SNtpd) GetConfigFile() string {
  50. return "/etc/ntp.conf"
  51. }
  52. func (s *SNtpd) Reload(kwargs map[string]interface{}) error {
  53. return s.reload(s.GetConfig(kwargs), s.GetConfigFile())
  54. }
  55. func (s *SNtpd) BgReload(kwargs map[string]interface{}) {
  56. go s.reload(s.GetConfig(kwargs), s.GetConfigFile())
  57. }
  58. func (s *SNtpd) BgReloadConf(kwargs map[string]interface{}) {
  59. go s.reloadConf(s.GetConfig(kwargs), s.GetConfigFile())
  60. }