api_list_recent_block.go 4.8 KB

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