MCPcopy Create free account
hub / github.com/1Panel-dev/1Panel / UpdateStream

Method UpdateStream

agent/app/service/website.go:2418–2477  ·  view source on GitHub ↗
(req request.StreamUpdate)

Source from the content-addressed store, hash-verified

2416}
2417
2418func (w WebsiteService) UpdateStream(req request.StreamUpdate) error {
2419 if req.StreamConfig.StreamPorts == "" {
2420 return buserr.New("ErrTypePortRange")
2421 }
2422 website, err := websiteRepo.GetFirst(repo.WithByID(req.WebsiteID))
2423 if err != nil {
2424 return err
2425 }
2426 nginxFull, err := getNginxFull(&website)
2427 if err != nil {
2428 return nil
2429 }
2430 website.StreamPorts = req.StreamConfig.StreamPorts
2431 ports := strings.Split(req.StreamConfig.StreamPorts, ",")
2432 for _, port := range ports {
2433 portNum, _ := strconv.Atoi(port)
2434 if err = checkWebsitePort(nginxFull.Install.HttpsPort, portNum, website.Type); err != nil {
2435 return err
2436 }
2437 }
2438
2439 config := nginxFull.SiteConfig.Config
2440 servers := config.FindServers()
2441 if len(servers) == 0 {
2442 return errors.New("nginx config is not valid")
2443 }
2444 server := servers[0]
2445 server.Listens = []*components.ServerListen{}
2446 var params []string
2447 if req.UDP {
2448 params = []string{"udp"}
2449 }
2450 for _, port := range ports {
2451 server.UpdateListen(port, false, params...)
2452 if website.IPV6 {
2453 server.UpdateListen("[::]:"+port, false, params...)
2454 }
2455 }
2456 upstream := components.Upstream{
2457 UpstreamName: website.Alias,
2458 }
2459 if req.Algorithm != "default" {
2460 upstream.UpdateDirective(req.Algorithm, []string{})
2461 }
2462 upstream.UpstreamServers = parseUpstreamServers(req.Servers)
2463 for i, dir := range config.Block.Directives {
2464 if dir.GetName() == "upstream" && dir.GetParameters()[0] == website.Alias {
2465 config.Block.Directives[i] = &upstream
2466 }
2467 }
2468
2469 if err := nginx.WriteConfig(config, nginx.IndentedStyle); err != nil {
2470 return err
2471 }
2472 if err = nginxCheckAndReload(nginxFull.SiteConfig.OldContent, config.FilePath, nginxFull.Install.ContainerName); err != nil {
2473 return err
2474 }
2475 website.StreamPorts = req.StreamConfig.StreamPorts

Callers

nothing calls this directly

Calls 12

UpdateDirectiveMethod · 0.95
getNginxFullFunction · 0.85
checkWebsitePortFunction · 0.85
parseUpstreamServersFunction · 0.85
nginxCheckAndReloadFunction · 0.85
FindServersMethod · 0.80
UpdateListenMethod · 0.80
GetFirstMethod · 0.65
WithByIDMethod · 0.65
GetNameMethod · 0.65
GetParametersMethod · 0.65
SaveMethod · 0.65

Tested by

no test coverage detected