MCPcopy
hub / github.com/deepops-ai/deepops / overrideApiServerAddrInLocalUI

Function overrideApiServerAddrInLocalUI

backend/internal/uiConfig.go:118–180  ·  view source on GitHub ↗

overrideApiServerAddrInLocalUI is used to override api server address in local ui automatically

()

Source from the content-addressed store, hash-verified

116
117// overrideApiServerAddrInLocalUI is used to override api server address in local ui automatically
118func overrideApiServerAddrInLocalUI() {
119 root := config.Data.Server.UiStaticPath
120 filepath.Walk(root, func(path string, info os.FileInfo, err error) error {
121 paths := strings.Split(path, "/")
122 if len(paths) >= 1 {
123 filename := paths[len(paths)-1]
124 // if strings.HasPrefix(filename, "index-") {
125 if strings.HasSuffix(filename, ".js") {
126 content, err := os.ReadFile(path)
127 if err != nil {
128 log.Fatal(err.Error() + ":" + filename)
129 }
130
131 base := "VITE_API_SERVER_PROD:"
132 index := bytes.Index(content, []byte("VITE_API_SERVER_PROD:"))
133 if index >= 0 {
134 start := index + 22
135 var end int
136 for i := start + 1; i < len(content); i++ {
137 if content[i] == '"' {
138 end = i
139 break
140 }
141 }
142
143 var newAddr string
144
145 if strings.TrimSpace(config.Data.Server.OverrideApiServerAddrForUI) != "" {
146 newAddr = config.Data.Server.OverrideApiServerAddrForUI
147 } else {
148 newAddr = "http://" + config.Data.Server.ListeningAddr
149 }
150 newAddr = fmt.Sprintf(`%s"%s"`, base, newAddr)
151 old := fmt.Sprintf(`%s"%s"`, base, string(content[start:end]))
152 content = bytes.Replace(content, []byte(old), []byte(newAddr), 1)
153
154 f, err := os.OpenFile(path, os.O_WRONLY|os.O_TRUNC|os.O_CREATE|os.O_SYNC, 0644)
155 if err != nil {
156 logger.Crit("open ui static file error", "error", err, "path", path)
157 } else {
158 // offset
159 //os.Truncate(filename, 0) //clear
160 n, _ := f.Seek(0, io.SeekEnd)
161 c, err := f.WriteAt([]byte(content), n)
162 if err != nil {
163 logger.Crit("write content to ui static file error", "error", err, "path", path, "length", c)
164 }
165 err = f.Sync()
166 if err != nil {
167 logger.Crit("sync ui static file error", "error", err, "path", path)
168 }
169 logger.Info("Successfully override api server address for ui", "path", path, "old_addr", string(old), "new_addr", newAddr)
170 defer f.Close()
171 }
172 }
173
174 }
175 }

Callers 1

StartMethod · 0.85

Calls 4

CloseMethod · 0.80
FatalMethod · 0.65
ErrorMethod · 0.65
InfoMethod · 0.65

Tested by

no test coverage detected