| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185 |
- package route
- import (
- "database/sql"
- "encoding/json"
- "log"
- "opennamu/route/tool"
- "strconv"
- )
- func Api_list_recent_block(call_arg []string) string {
- other_set := map[string]string{}
- json.Unmarshal([]byte(call_arg[0]), &other_set)
- db := tool.DB_connect()
- defer db.Close()
- page_int, err := strconv.Atoi(other_set["num"])
- if err != nil {
- log.Fatal(err)
- }
- if page_int > 0 {
- page_int = (page_int * 50) - 50
- } else {
- page_int = 0
- }
- var stmt *sql.Stmt
- var rows *sql.Rows
- if other_set["set_type"] == "all" {
- stmt, err = db.Prepare(tool.DB_change("select why, block, blocker, end, today, band, ongoing from rb order by today desc limit ?, 50"))
- if err != nil {
- log.Fatal(err)
- }
- rows, err = stmt.Query(page_int)
- if err != nil {
- log.Fatal(err)
- }
- } else if other_set["set_type"] == "ongoing" {
- 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"))
- if err != nil {
- log.Fatal(err)
- }
- rows, err = stmt.Query(page_int)
- if err != nil {
- log.Fatal(err)
- }
- } else if other_set["set_type"] == "regex" {
- 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"))
- if err != nil {
- log.Fatal(err)
- }
- rows, err = stmt.Query(page_int)
- if err != nil {
- log.Fatal(err)
- }
- } else if other_set["set_type"] == "user" {
- 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"))
- if err != nil {
- log.Fatal(err)
- }
- rows, err = stmt.Query(other_set["user_name"], page_int)
- if err != nil {
- log.Fatal(err)
- }
- } else if other_set["set_type"] == "cidr" {
- 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"))
- if err != nil {
- log.Fatal(err)
- }
- rows, err = stmt.Query(page_int)
- if err != nil {
- log.Fatal(err)
- }
- } else {
- 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"))
- if err != nil {
- log.Fatal(err)
- }
- rows, err = stmt.Query(other_set["user_name"], page_int)
- if err != nil {
- log.Fatal(err)
- }
- }
- defer stmt.Close()
- defer rows.Close()
- var data_list [][]string
- ip_parser_temp := map[string][]string{}
- for rows.Next() {
- var why string
- var block string
- var blocker string
- var end string
- var today string
- var band string
- var ongoing string
- err := rows.Scan(&why, &block, &blocker, &end, &today, &band, &ongoing)
- if err != nil {
- log.Fatal(err)
- }
- var ip_pre_blocker string
- var ip_render_blocker string
- if _, ok := ip_parser_temp[blocker]; ok {
- ip_pre_blocker = ip_parser_temp[blocker][0]
- ip_render_blocker = ip_parser_temp[blocker][1]
- } else {
- ip_pre_blocker = tool.IP_preprocess(db, blocker, other_set["ip"])[0]
- ip_render_blocker = tool.IP_parser(db, blocker, other_set["ip"])
- ip_parser_temp[blocker] = []string{ip_pre_blocker, ip_render_blocker}
- }
- var ip_pre_block string
- var ip_render_block string
- if band == "" {
- if _, ok := ip_parser_temp[block]; ok {
- ip_pre_block = ip_parser_temp[block][0]
- ip_render_block = ip_parser_temp[block][1]
- } else {
- ip_pre_block = tool.IP_preprocess(db, block, other_set["ip"])[0]
- ip_render_block = tool.IP_parser(db, block, other_set["ip"])
- ip_parser_temp[block] = []string{ip_pre_block, ip_render_block}
- }
- } else {
- ip_pre_block = block
- ip_render_block = block
- }
- data_list = append(data_list, []string{
- why,
- ip_pre_block,
- ip_render_block,
- ip_pre_blocker,
- ip_render_blocker,
- end,
- today,
- band,
- ongoing,
- })
- }
- return_data := make(map[string]interface{})
- return_data["language"] = map[string]string{
- "all": tool.Get_language(db, "all", false),
- "regex": tool.Get_language(db, "regex", false),
- "cidr": tool.Get_language(db, "cidr", false),
- "in_progress": tool.Get_language(db, "in_progress", false),
- "admin": tool.Get_language(db, "admin", false),
- "blocked": tool.Get_language(db, "blocked", false),
- "limitless": tool.Get_language(db, "limitless", false),
- "release": tool.Get_language(db, "release", false),
- "start": tool.Get_language(db, "start", false),
- "end": tool.Get_language(db, "end", false),
- "ban": tool.Get_language(db, "ban", false),
- }
- if len(data_list) == 0 {
- return_data["data"] = map[string]string{}
- } else {
- return_data["data"] = data_list
- }
- auth_name := tool.Get_user_auth(db, other_set["ip"])
- auth_info := tool.Get_auth_group_info(db, auth_name)
- return_data["auth"] = auth_info
- json_data, _ := json.Marshal(return_data)
- return string(json_data)
- }
|