utils.go 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. package utils
  2. import (
  3. "flag"
  4. "fmt"
  5. "math/rand"
  6. "os"
  7. "strings"
  8. "time"
  9. )
  10. // IsFlagPassed 判断是否设置了指定 flag
  11. func IsFlagPassed(name string) bool {
  12. found := false
  13. flag.Visit(func(f *flag.Flag) {
  14. if f.Name == name {
  15. found = true
  16. }
  17. })
  18. return found
  19. }
  20. // NumberOrStringToBool 字符串 1, yes 返回 true 否则 false
  21. func NumberOrStringToBool(input string) bool {
  22. if input == "1" {
  23. return true
  24. }
  25. if input == "yes" {
  26. return true
  27. }
  28. return false
  29. }
  30. // NumberToBool 大于0 返回 true 否则 false
  31. func NumberToBool(input int64) bool {
  32. if input > 0 {
  33. return true
  34. } else {
  35. return false
  36. }
  37. }
  38. // Bool to int true 返回 1 否则 0
  39. func BoolToInt(input bool) int64 {
  40. var output int64
  41. if input {
  42. output = 1
  43. } else {
  44. output = 0
  45. }
  46. return output
  47. }
  48. // BoolToNumber true 返回 "1" false 返回 "0"
  49. func BoolToNumber(input bool) string {
  50. if input {
  51. return "1"
  52. }
  53. return "0"
  54. }
  55. // BoolToString true 返回 "yes" false 返回 "no"
  56. func BoolToString(input bool) string {
  57. if input {
  58. return "yes"
  59. }
  60. return "no"
  61. }
  62. // YesToOn Yes 或 yes 返回 "on" 否则返回 "off"
  63. // 会议 Muted 的值可能是 By admin
  64. func YesToOn(input string) string {
  65. if input == "Yes" || input == "yes" || strings.Contains(input, "By") {
  66. return "on"
  67. }
  68. return "off"
  69. }
  70. // GetRandStr 生成随机密码
  71. func GetRandStr(baseStr string, length int) string {
  72. r := rand.New(rand.NewSource(time.Now().UnixNano() + rand.Int63()))
  73. bytes := make([]byte, length)
  74. l := len(baseStr)
  75. for i := 0; i < length; i++ {
  76. bytes[i] = baseStr[r.Intn(l)]
  77. }
  78. return string(bytes)
  79. }
  80. // SqlLike sql like 头尾添加 %%
  81. func SqlLike(input string) string {
  82. return fmt.Sprintf("%%%s%%", input)
  83. }
  84. // IsChannel 判断输入是否是 Channel
  85. func IsChannel(input string) bool {
  86. if strings.Contains(input, "SIP") {
  87. return true
  88. }
  89. if strings.Contains(input, "Local") {
  90. return true
  91. }
  92. if strings.Contains(input, "DAHDI") {
  93. return true
  94. }
  95. return false
  96. }
  97. // 判断文件是否存在
  98. func PathExists(path string) bool {
  99. _, err := os.Stat(path)
  100. if err == nil {
  101. return true
  102. }
  103. if os.IsNotExist(err) {
  104. return false
  105. }
  106. return false
  107. }
  108. func IndexOf(sliceID []string, value string) int {
  109. for i, v := range sliceID {
  110. if v == value {
  111. return i
  112. }
  113. }
  114. return -1
  115. }