MCPcopy Create free account
hub / github.com/chainreactors/EvilProxy / NewServer

Function NewServer

internal/api/server.go:254–394  ·  view source on GitHub ↗

NewServer creates and initializes a new API server instance. It sets up the Gin engine, middleware, routes, and handlers. Parameters: - cfg: The server configuration - authManager: core runtime auth manager - accessManager: request authentication manager Returns: - *Server: A new server instance

(cfg *config.Config, authManager *auth.Manager, accessManager *sdkaccess.Manager, configFilePath string, opts ...ServerOption)

Source from the content-addressed store, hash-verified

252// Returns:
253// - *Server: A new server instance
254func NewServer(cfg *config.Config, authManager *auth.Manager, accessManager *sdkaccess.Manager, configFilePath string, opts ...ServerOption) *Server {
255 optionState := &serverOptionConfig{
256 requestLoggerFactory: defaultRequestLoggerFactory,
257 }
258 for i := range opts {
259 opts[i](optionState)
260 }
261 // Set gin mode
262 if !cfg.Debug {
263 gin.SetMode(gin.ReleaseMode)
264 }
265
266 // Create gin engine
267 engine := gin.New()
268 if optionState.engineConfigurator != nil {
269 optionState.engineConfigurator(engine)
270 }
271
272 // Add middleware
273 engine.Use(logging.GinLogrusLogger())
274 engine.Use(logging.GinLogrusRecovery())
275 for _, mw := range optionState.extraMiddleware {
276 engine.Use(mw)
277 }
278
279 // Add request logging middleware (positioned after recovery, before auth)
280 // Resolve logs directory relative to the configuration file directory.
281 var requestLogger logging.RequestLogger
282 var toggle func(bool)
283 if !cfg.CommercialMode {
284 if optionState.requestLoggerFactory != nil {
285 requestLogger = optionState.requestLoggerFactory(cfg, configFilePath)
286 }
287 if requestLogger != nil {
288 engine.Use(middleware.RequestLoggingMiddleware(requestLogger))
289 if setter, ok := requestLogger.(interface{ SetEnabled(bool) }); ok {
290 toggle = setter.SetEnabled
291 }
292 }
293 }
294
295 engine.Use(corsMiddleware())
296 wd, err := os.Getwd()
297 if err != nil {
298 wd = configFilePath
299 }
300
301 envAdminPassword, envAdminPasswordSet := os.LookupEnv("MANAGEMENT_PASSWORD")
302 envAdminPassword = strings.TrimSpace(envAdminPassword)
303 envManagementSecret := envAdminPasswordSet && envAdminPassword != ""
304
305 // Create server instance
306 s := &Server{
307 engine: engine,
308 handlers: handlers.NewBaseAPIHandlers(effectiveSDKConfig(cfg), authManager),
309 cfg: cfg,
310 accessManager: accessManager,
311 requestLogger: requestLogger,

Callers 2

RunMethod · 0.92
newTestServerWithOptionsFunction · 0.85

Calls 15

applyAccessConfigMethod · 0.95
setupRoutesMethod · 0.95
enableKeepAliveMethod · 0.95
GinLogrusLoggerFunction · 0.92
GinLogrusRecoveryFunction · 0.92
RequestLoggingMiddlewareFunction · 0.92
NewBaseAPIHandlersFunction · 0.92
SetCurrentConfigFunction · 0.92

Tested by 1

newTestServerWithOptionsFunction · 0.68