Files
cloudpods/pkg/hostman/system_service/ntpd.go
2020-06-16 14:52:18 +08:00

71 lines
1.9 KiB
Go

// Copyright 2019 Yunion
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package system_service
import "fmt"
type SNtpd struct {
*SBaseSystemService
}
func NewNtpdService() *SNtpd {
return &SNtpd{NewBaseSystemService("ntpd", nil)}
}
func (s *SNtpd) GetConfig(kwargs map[string]interface{}) string {
var srvs = []string{}
if servers, ok := kwargs["servers"]; ok {
ss, _ := servers.([]string)
for _, srv := range ss {
srvs = append(srvs, srv[len("ntp://"):])
}
} else {
srvs = []string{"1.cn.pool.ntp.org",
"2.cn.pool.ntp.org",
"3.cn.pool.ntp.org",
"0.cn.pool.ntp.org",
"cn.pool.ntp.org"}
}
conf := ""
conf += "driftfile /var/lib/ntp/drift\n"
conf += "restrict default nomodify notrap nopeer noquery kod limited\n"
conf += "restrict 127.0.0.1\n"
conf += "restrict ::1\n"
for _, srv := range srvs {
conf += fmt.Sprintf("server %s iburst\n", srv)
}
conf += "includefile /etc/ntp/crypto/pw\n"
conf += "keys /etc/ntp/keys\n"
conf += "disable monitor\n"
return conf
}
func (s *SNtpd) GetConfigFile() string {
return "/etc/ntp.conf"
}
func (s *SNtpd) Reload(kwargs map[string]interface{}) error {
return s.reload(s.GetConfig(kwargs), s.GetConfigFile())
}
func (s *SNtpd) BgReload(kwargs map[string]interface{}) {
go s.reload(s.GetConfig(kwargs), s.GetConfigFile())
}
func (s *SNtpd) BgReloadConf(kwargs map[string]interface{}) {
go s.reloadConf(s.GetConfig(kwargs), s.GetConfigFile())
}