api_list_recent_block.go 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. package route
  2. import (
  3. "database/sql"
  4. "log"
  5. "opennamu/route/tool"
  6. "strconv"
  7. jsoniter "github.com/json-iterator/go"
  8. )
  9. func Api_list_recent_block(call_arg []string) string {
  10. var json = jsoniter.ConfigCompatibleWithStandardLibrary
  11. other_set := map[string]string{}
  12. json.Unmarshal([]byte(call_arg[0]), &other_set)
  13. db := tool.DB_connect()
  14. defer db.Close()
  15. page_int, err := strconv.Atoi(other_set["num"])
  16. if err != nil {
  17. log.Fatal(err)
  18. }
  19. if page_int > 0 {
  20. page_int = (page_int * 50) - 50
  21. } else {
  22. page_int = 0
  23. }
  24. var stmt *sql.Stmt
  25. var rows *sql.Rows
  26. if other_set["set_type"] == "all" {
  27. stmt, err = db.Prepare(tool.DB_change("select why, block, blocker, end, today, band, ongoing from rb order by today desc limit ?, 50"))
  28. if err != nil {
  29. log.Fatal(err)
  30. }
  31. rows, err = stmt.Query(page_int)
  32. if err != nil {
  33. log.Fatal(err)
  34. }
  35. } else if other_set["set_type"] == "ongoing" {
  36. stmt, err = db.Prepare(tool.DB_change("select why, block, blocker, end, today, band, ongoing from rb where ongoing = '1' order by end desc limit ?, 50"))
  37. if err != nil {
  38. log.Fatal(err)
  39. }
  40. rows, err = stmt.Query(page_int)
  41. if err != nil {
  42. log.Fatal(err)
  43. }
  44. } else if other_set["set_type"] == "regex" {
  45. stmt, err = db.Prepare(tool.DB_change("select why, block, blocker, end, today, band, ongoing from rb where band = 'regex' order by today desc limit ?, 50"))
  46. if err != nil {
  47. log.Fatal(err)
  48. }
  49. rows, err = stmt.Query(page_int)
  50. if err != nil {
  51. log.Fatal(err)
  52. }
  53. } else if other_set["set_type"] == "user" {
  54. stmt, err = db.Prepare(tool.DB_change("select why, block, blocker, end, today, band, ongoing from rb where block = ? order by today desc limit ?, 50"))
  55. if err != nil {
  56. log.Fatal(err)
  57. }
  58. rows, err = stmt.Query(other_set["user_name"], page_int)
  59. if err != nil {
  60. log.Fatal(err)
  61. }
  62. } else if other_set["set_type"] == "cidr" {
  63. stmt, err = db.Prepare(tool.DB_change("select why, block, blocker, end, today, band, ongoing from rb where band = 'cidr' order by today desc limit ?, 50"))
  64. if err != nil {
  65. log.Fatal(err)
  66. }
  67. rows, err = stmt.Query(page_int)
  68. if err != nil {
  69. log.Fatal(err)
  70. }
  71. } else {
  72. stmt, err = db.Prepare(tool.DB_change("select why, block, blocker, end, today, band, ongoing from rb where blocker = ? order by today desc limit ?, 50"))
  73. if err != nil {
  74. log.Fatal(err)
  75. }
  76. rows, err = stmt.Query(other_set["user_name"], page_int)
  77. if err != nil {
  78. log.Fatal(err)
  79. }
  80. }
  81. defer stmt.Close()
  82. defer rows.Close()
  83. data_list := [][]string{}
  84. ip_parser_temp := map[string][]string{}
  85. for rows.Next() {
  86. var why string
  87. var block string
  88. var blocker string
  89. var end string
  90. var today string
  91. var band string
  92. var ongoing string
  93. err := rows.Scan(&why, &block, &blocker, &end, &today, &band, &ongoing)
  94. if err != nil {
  95. log.Fatal(err)
  96. }
  97. var ip_pre_blocker string
  98. var ip_render_blocker string
  99. if _, ok := ip_parser_temp[blocker]; ok {
  100. ip_pre_blocker = ip_parser_temp[blocker][0]
  101. ip_render_blocker = ip_parser_temp[blocker][1]
  102. } else {
  103. ip_pre_blocker = tool.IP_preprocess(db, blocker, other_set["ip"])[0]
  104. ip_render_blocker = tool.IP_parser(db, blocker, other_set["ip"])
  105. ip_parser_temp[blocker] = []string{ip_pre_blocker, ip_render_blocker}
  106. }
  107. var ip_pre_block string
  108. var ip_render_block string
  109. if band == "" {
  110. if _, ok := ip_parser_temp[block]; ok {
  111. ip_pre_block = ip_parser_temp[block][0]
  112. ip_render_block = ip_parser_temp[block][1]
  113. } else {
  114. ip_pre_block = tool.IP_preprocess(db, block, other_set["ip"])[0]
  115. ip_render_block = tool.IP_parser(db, block, other_set["ip"])
  116. ip_parser_temp[block] = []string{ip_pre_block, ip_render_block}
  117. }
  118. } else {
  119. ip_pre_block = block
  120. ip_render_block = block
  121. }
  122. data_list = append(data_list, []string{
  123. why,
  124. ip_pre_block,
  125. ip_render_block,
  126. ip_pre_blocker,
  127. ip_render_blocker,
  128. end,
  129. today,
  130. band,
  131. ongoing,
  132. })
  133. }
  134. return_data := make(map[string]interface{})
  135. return_data["language"] = map[string]string{
  136. "all": tool.Get_language(db, "all", false),
  137. "regex": tool.Get_language(db, "regex", false),
  138. "cidr": tool.Get_language(db, "cidr", false),
  139. "in_progress": tool.Get_language(db, "in_progress", false),
  140. "admin": tool.Get_language(db, "admin", false),
  141. "blocked": tool.Get_language(db, "blocked", false),
  142. "limitless": tool.Get_language(db, "limitless", false),
  143. "release": tool.Get_language(db, "release", false),
  144. "start": tool.Get_language(db, "start", false),
  145. "end": tool.Get_language(db, "end", false),
  146. "ban": tool.Get_language(db, "ban", false),
  147. }
  148. return_data["data"] = data_list
  149. auth_name := tool.Get_user_auth(db, other_set["ip"])
  150. auth_info := tool.Get_auth_group_info(db, auth_name)
  151. return_data["auth"] = auth_info
  152. json_data, _ := json.Marshal(return_data)
  153. return string(json_data)
  154. }