api_user_info.py 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. from .tool.func import *
  2. def api_user_info(name = ''):
  3. with get_db_connect() as conn:
  4. curs = conn.cursor()
  5. if flask.request.method == 'POST':
  6. try:
  7. data_list = json.loads(flask.request.form.get('title_list', ''))
  8. data_list = list(set(title_list))
  9. except:
  10. data_list = [name]
  11. data_result = {}
  12. for user_name in data_list:
  13. data_result[user_name] = {}
  14. # auth part
  15. curs.execute(db_change("select data from user_set where id = ? and name = 'acl'"), [user_name])
  16. db_data = curs.fetchall()
  17. if db_data:
  18. if db_data[0][0] != 'user':
  19. curs.execute(db_change("select name from alist where name = ?"), [db_data[0][0]])
  20. if curs.fetchall():
  21. data_result[user_name]['auth'] = db_data[0][0]
  22. else:
  23. data_result[user_name]['auth'] = 1
  24. else:
  25. data_result[user_name]['auth'] = 1
  26. else:
  27. data_result[user_name]['auth'] = 0
  28. # user document part
  29. curs.execute(db_change("select title from data where title = ?"), ['user:' + user_name])
  30. if curs.fetchall():
  31. data_result[user_name]['document'] = 1
  32. else:
  33. data_result[user_name]['document'] = 0
  34. # user title part
  35. curs.execute(db_change('select data from user_set where name = "user_title" and id = ?'), [user_name])
  36. db_data = curs.fetchall()
  37. if db_data:
  38. data_result[user_name]['user_title'] = db_data[0][0]
  39. else:
  40. data_result[user_name]['user_title'] = ''
  41. return flask.jsonify(data_result)
  42. else:
  43. if flask.request.args.get('render', None):
  44. plus_d = ''
  45. plus_t = []
  46. curs.execute(db_change("update rb set ongoing = '' where end < ? and end != '' and ongoing = '1'"), [get_time()])
  47. conn.commit()
  48. plus_d = '''
  49. <table class="user_info_table">
  50. <tbody>
  51. <tr>
  52. <td>''' + load_lang('user_name') + '''</td>
  53. <td>{}</td>
  54. </tr>
  55. <tr>
  56. <td>''' + load_lang('authority') + '''</td>
  57. <td>{}</td>
  58. </tr>
  59. <tr>
  60. <td>''' + load_lang('state') + '''</td>
  61. <td>{}</td>
  62. </tr>
  63. </tbody>
  64. </table>
  65. '''
  66. curs.execute(db_change("select data from user_set where id = ? and name = 'acl'"), [name])
  67. data = curs.fetchall()
  68. if data:
  69. if data[0][0] != 'user':
  70. curs.execute(db_change("select name from alist where name = ?"), [data[0][0]])
  71. if curs.fetchall():
  72. plus_t += [data[0][0]]
  73. else:
  74. plus_t += [load_lang('member')]
  75. else:
  76. plus_t += [load_lang('member')]
  77. else:
  78. plus_t += [load_lang('normal')]
  79. if ban_check(name) == 0:
  80. plus_t += [load_lang('normal')]
  81. else:
  82. plus_t += [load_lang('blocked') + '<br>']
  83. regex_ban = 0
  84. curs.execute(db_change("select login, block, end, why from rb where band = 'regex' and ongoing = '1'"))
  85. for test_r in curs.fetchall():
  86. if re.compile(test_r[1]).search(name):
  87. plus_t[1] += load_lang('type') + ' : ' + load_lang('regex')
  88. plus_t[1] += '<br>' + load_lang('period') + ' : ' + (test_r[2] if test_r[2] != '' else load_lang('limitless'))
  89. plus_t[1] += ('<br>' + load_lang('login_able') if test_r[0] == 'O' else '')
  90. plus_t[1] += ('<br>' + load_lang('why') + ' : ' + test_r[3] if test_r[3] != '' else '')
  91. regex_ban = 1
  92. if regex_ban == 0:
  93. curs.execute(db_change("select end, login, band, why from rb where block = ? and ongoing = '1'"), [name])
  94. block_data = curs.fetchall()
  95. if block_data:
  96. plus_t[1] += load_lang('type') + ' : ' + (load_lang('band_blocked') if block_data[0][2] == 'O' else load_lang('normal'))
  97. plus_t[1] += (' (' + load_lang('login_able') + ')' if block_data[0][1] != '' else '')
  98. plus_t[1] += '<br>' + load_lang('period') + ' : ' + (block_data[0][0] if block_data[0][0] != '' else load_lang('limitless'))
  99. plus_t[1] += ('<br>' + load_lang('band_blocked') if block_data[0][2] == 'O' else '')
  100. plus_t[1] += ('<br>' + load_lang('why') + ' : ' + block_data[0][3] if block_data[0][3] != '' else '')
  101. plus_d = plus_d.format(ip_pas(name), plus_t[0], plus_t[1])
  102. return flask.jsonify({ "data" : plus_d })
  103. else:
  104. return flask.jsonify({})