MCPcopy
hub / github.com/OpenNHP/opennhp / Start

Method Start

endpoints/server/udpserver.go:166–282  ·  view source on GitHub ↗

* dirPath: the path of app or shared library entry point logLevel: 0: silent, 1: error, 2: info, 3: debug, 4: verbose */ UDP server never actively sends first packet outwards. It only reacts to received packet then sends response.

(dirPath string, logLevel int)

Source from the content-addressed store, hash-verified

164*/
165// UDP server never actively sends first packet outwards. It only reacts to received packet then sends response.
166func (s *UdpServer) Start(dirPath string, logLevel int) (err error) {
167 plugins.ExeDirPath = dirPath
168 ExeDirPath = dirPath
169
170 // init logger
171 s.log = log.NewLogger("NHP-Server", logLevel, filepath.Join(ExeDirPath, "logs"), "server")
172 log.SetGlobalLogger(s.log)
173
174 log.Info("=========================================================")
175 log.Info("=== NHP-Server %s started ===", version.Version)
176 log.Info("=== REVISION %s ===", version.CommitId)
177 log.Info("=== RELEASE %s ===", version.BuildTime)
178 log.Info("=========================================================")
179
180 // load remote config,init etcd client
181 err = s.initRemoteConn()
182 if err == nil && s.etcdConn == nil {
183 // init config
184 err = s.loadBaseConfig()
185 } else {
186 // nhp server base config must be loaded first.
187 err = s.loadRemoteBaseConfig()
188 }
189 if err != nil {
190 return err
191 }
192
193 var netIP net.IP
194 if len(s.config.ListenIp) > 0 {
195 netIP = net.ParseIP(s.config.ListenIp)
196 if netIP == nil {
197 log.Error("udp listen ip address is incorrect!")
198 return fmt.Errorf("udp listen ip address is incorrect")
199 }
200 } else {
201 netIP = net.IPv4zero // will both listen on ipv4 0.0.0.0:port and ipv6 [::]:port
202 }
203
204 s.listenConn, err = net.ListenUDP("udp", &net.UDPAddr{
205 IP: netIP,
206 Port: s.config.ListenPort,
207 })
208 if err != nil {
209 log.Error("listen error: %v", err)
210 return fmt.Errorf("listen error %v", err)
211 }
212
213 // retrieve local port
214 laddr := s.listenConn.LocalAddr()
215 s.listenAddr, err = net.ResolveUDPAddr(laddr.Network(), laddr.String())
216 if err != nil {
217 log.Error("resolve local UDPAddr error: %v", err)
218 return fmt.Errorf("resolve UDPAddr error %v", err)
219 }
220
221 prk, err := base64.StdEncoding.DecodeString(s.config.PrivateKeyBase64)
222 if err != nil {
223 log.Error("private key parse error: %v", err)

Callers 1

runAppFunction · 0.95

Calls 15

initRemoteConnMethod · 0.95
loadBaseConfigMethod · 0.95
loadRemoteBaseConfigMethod · 0.95
loadRemoteConfigMethod · 0.95
loadPeersMethod · 0.95
loadHttpConfigMethod · 0.95
loadSourceIpsMethod · 0.95
loadResourcesMethod · 0.95
recvPacketRoutineMethod · 0.95
sendMessageRoutineMethod · 0.95
recvMessageRoutineMethod · 0.95

Tested by

no test coverage detected