index.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package app
  2. import (
  3. "fmt"
  4. "os/exec"
  5. "pbx-api-gin/internal/app/ami/action"
  6. "pbx-api-gin/internal/app/mysql"
  7. "pbx-api-gin/internal/app/stc"
  8. "pbx-api-gin/internal/app/stc/active"
  9. "pbx-api-gin/internal/app/stc/socket"
  10. "pbx-api-gin/pkg/lfshook"
  11. "strings"
  12. )
  13. func StartApp() {
  14. //init mysql
  15. mysql.CreateDBInstance()
  16. //Get cab number acording to IP
  17. IP, err := getIPByCommand()
  18. if err != nil {
  19. lfshook.NewLogger().Infof("Get IP err :%+v", err)
  20. }
  21. if IP[len(IP)-2:] == "81" {
  22. active.CabNum = "8"
  23. } else {
  24. active.CabNum = "1"
  25. }
  26. lfshook.NewLogger().Infof("=================cab number:%s===========", active.CabNum)
  27. // 启动带有重连机制的连接管理协程
  28. go stc.StartStcConnection(socket.Conn)
  29. // 启动其他服务...
  30. // 启动 AMI
  31. go func() {
  32. action.StartAMI(func() {
  33. lfshook.NewLogger().Info("ami callback")
  34. }, []func(event map[string]string){})
  35. }()
  36. }
  37. // Get eth0 IP
  38. func getIPByCommand() (string, error) {
  39. cmd := "ifconfig eth0 | grep 'inet addr:' | awk '{print $2}' | cut -d: -f2"
  40. out, err := exec.Command("bash", "-c", cmd).CombinedOutput()
  41. if err != nil {
  42. return "", err
  43. }
  44. ip := strings.TrimSpace(string(out))
  45. if ip == "" {
  46. return "", fmt.Errorf("no IP address found")
  47. }
  48. return ip, nil
  49. }