mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-05-22 12:32:36 +08:00
71 lines
1.9 KiB
Go
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())
|
|
}
|