|
1 | 1 | package main
|
2 | 2 |
|
3 | 3 | import (
|
4 |
| - "fmt" |
5 | 4 | "os"
|
6 | 5 | "path/filepath"
|
7 | 6 | "runtime/debug"
|
8 | 7 |
|
9 |
| - "github.com/asaskevich/govalidator" |
10 | 8 | "github.com/urfave/cli"
|
11 | 9 |
|
12 | 10 | "github.com/free5gc/udm/internal/logger"
|
13 |
| - "github.com/free5gc/udm/internal/util" |
| 11 | + "github.com/free5gc/udm/pkg/factory" |
14 | 12 | "github.com/free5gc/udm/pkg/service"
|
| 13 | + logger_util "github.com/free5gc/util/logger" |
15 | 14 | "github.com/free5gc/util/version"
|
16 | 15 | )
|
17 | 16 |
|
18 |
| -var UDM = &service.UDM{} |
| 17 | +var UDM *service.UdmApp |
19 | 18 |
|
20 | 19 | func main() {
|
21 | 20 | defer func() {
|
22 | 21 | if p := recover(); p != nil {
|
23 | 22 | // Print stack for panic to log. Fatalf() will let program exit.
|
24 |
| - logger.AppLog.Fatalf("panic: %v\n%s", p, string(debug.Stack())) |
| 23 | + logger.MainLog.Fatalf("panic: %v\n%s", p, string(debug.Stack())) |
25 | 24 | }
|
26 | 25 | }()
|
27 | 26 |
|
28 | 27 | app := cli.NewApp()
|
29 | 28 | app.Name = "udm"
|
30 | 29 | app.Usage = "5G Unified Data Management (UDM)"
|
31 | 30 | app.Action = action
|
32 |
| - app.Flags = UDM.GetCliCmd() |
| 31 | + app.Flags = []cli.Flag{ |
| 32 | + cli.StringFlag{ |
| 33 | + Name: "config, c", |
| 34 | + Usage: "Load configuration from `FILE`", |
| 35 | + }, |
| 36 | + cli.StringSliceFlag{ |
| 37 | + Name: "log, l", |
| 38 | + Usage: "Output NF log to `FILE`", |
| 39 | + }, |
| 40 | + } |
| 41 | + |
33 | 42 | if err := app.Run(os.Args); err != nil {
|
34 |
| - fmt.Printf("UDM Run error: %v\n", err) |
| 43 | + logger.MainLog.Errorf("UDM Run error: %v\n", err) |
35 | 44 | }
|
36 | 45 | }
|
37 | 46 |
|
38 |
| -func action(c *cli.Context) error { |
39 |
| - if err := initLogFile(c.String("log"), c.String("log5gc")); err != nil { |
40 |
| - logger.AppLog.Errorf("%+v", err) |
| 47 | +func action(cliCtx *cli.Context) error { |
| 48 | + tlsKeyLogPath, err := initLogFile(cliCtx.StringSlice("log")) |
| 49 | + if err != nil { |
41 | 50 | return err
|
42 | 51 | }
|
43 | 52 |
|
44 |
| - if err := UDM.Initialize(c); err != nil { |
45 |
| - switch errType := err.(type) { |
46 |
| - case govalidator.Errors: |
47 |
| - validErrs := err.(govalidator.Errors).Errors() |
48 |
| - for _, validErr := range validErrs { |
49 |
| - logger.CfgLog.Errorf("%+v", validErr) |
50 |
| - } |
51 |
| - default: |
52 |
| - logger.CfgLog.Errorf("%+v", errType) |
53 |
| - } |
54 |
| - logger.CfgLog.Errorf("[-- PLEASE REFER TO SAMPLE CONFIG FILE COMMENTS --]") |
55 |
| - return fmt.Errorf("Failed to initialize !!") |
56 |
| - } |
| 53 | + logger.MainLog.Infoln("UDM version: ", version.GetVersion()) |
57 | 54 |
|
58 |
| - logger.AppLog.Infoln(c.App.Name) |
59 |
| - logger.AppLog.Infoln("UDM version: ", version.GetVersion()) |
| 55 | + cfg, err := factory.ReadConfig(cliCtx.String("config")) |
| 56 | + if err != nil { |
| 57 | + return err |
| 58 | + } |
| 59 | + factory.UdmConfig = cfg |
| 60 | + udm, err := service.NewApp(cfg) |
| 61 | + if err != nil { |
| 62 | + return err |
| 63 | + } |
| 64 | + UDM = udm |
60 | 65 |
|
61 |
| - UDM.Start() |
| 66 | + udm.Start(tlsKeyLogPath) |
62 | 67 |
|
63 | 68 | return nil
|
64 | 69 | }
|
65 | 70 |
|
66 |
| -func initLogFile(logNfPath, log5gcPath string) error { |
67 |
| - UDM.KeyLogPath = util.UdmDefaultKeyLogPath |
| 71 | +func initLogFile(logNfPath []string) (string, error) { |
| 72 | + logTlsKeyPath := "" |
68 | 73 |
|
69 |
| - if err := logger.LogFileHook(logNfPath, log5gcPath); err != nil { |
70 |
| - return err |
71 |
| - } |
| 74 | + for _, path := range logNfPath { |
| 75 | + if err := logger_util.LogFileHook(logger.Log, path); err != nil { |
| 76 | + return "", err |
| 77 | + } |
72 | 78 |
|
73 |
| - if logNfPath != "" { |
74 |
| - nfDir, _ := filepath.Split(logNfPath) |
| 79 | + if logTlsKeyPath != "" { |
| 80 | + continue |
| 81 | + } |
| 82 | + |
| 83 | + nfDir, _ := filepath.Split(path) |
75 | 84 | tmpDir := filepath.Join(nfDir, "key")
|
76 | 85 | if err := os.MkdirAll(tmpDir, 0o775); err != nil {
|
77 | 86 | logger.InitLog.Errorf("Make directory %s failed: %+v", tmpDir, err)
|
78 |
| - return err |
| 87 | + return "", err |
79 | 88 | }
|
80 |
| - _, name := filepath.Split(util.UdmDefaultKeyLogPath) |
81 |
| - UDM.KeyLogPath = filepath.Join(tmpDir, name) |
| 89 | + _, name := filepath.Split(factory.UdmDefaultTLSKeyLogPath) |
| 90 | + logTlsKeyPath = filepath.Join(tmpDir, name) |
82 | 91 | }
|
83 | 92 |
|
84 |
| - return nil |
| 93 | + return logTlsKeyPath, nil |
85 | 94 | }
|
0 commit comments