api_list_recent_block.go 5.1 KB

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