2
0

user_setting_email.py 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. from .tool.func import *
  2. async def user_setting_email():
  3. with get_db_connect() as conn:
  4. curs = conn.cursor()
  5. ip = ip_check()
  6. if ip_or_user(ip) != 0:
  7. return redirect(conn, '/login')
  8. if flask.request.method == 'POST':
  9. # c_key 같은 이름 대신 한 기능에 고유 명칭 부여 필요
  10. re_set_list = ['c_key']
  11. flask.session['c_key'] = load_random_key(32)
  12. user_email = re.sub(r'\\', '', flask.request.form.get('email', ''))
  13. email_data = re.search(r'@([^@]+)$', user_email)
  14. if email_data:
  15. curs.execute(db_change("select html from html_filter where html = ? and kind = 'email'"), [email_data.group(1)])
  16. if not curs.fetchall():
  17. for i in re_set_list:
  18. flask.session.pop(i, None)
  19. return redirect(conn, '/filter/email_filter')
  20. else:
  21. for i in re_set_list:
  22. flask.session.pop(i, None)
  23. return await re_error(conn, 36)
  24. curs.execute(db_change('select data from other where name = "email_title"'))
  25. sql_d = curs.fetchall()
  26. t_text = html.escape(sql_d[0][0]) if sql_d and sql_d[0][0] != '' else ((await wiki_set())[0] + ' key')
  27. curs.execute(db_change('select data from other where name = "email_text"'))
  28. sql_d = curs.fetchall()
  29. if sql_d and sql_d[0][0] != '':
  30. i_text = html.escape(sql_d[0][0]) + '\n\nKey : ' + flask.session['c_key']
  31. else:
  32. i_text = 'Key : ' + flask.session['c_key']
  33. curs.execute(db_change('select id from user_set where name = "email" and data = ?'), [user_email])
  34. if curs.fetchall():
  35. for i in re_set_list:
  36. flask.session.pop(i, None)
  37. return await re_error(conn, 35)
  38. if await send_email(conn, user_email, t_text, i_text) == 0:
  39. for i in re_set_list:
  40. flask.session.pop(i, None)
  41. return await re_error(conn, 18)
  42. flask.session['c_email'] = user_email
  43. return redirect(conn, '/change/email/check')
  44. else:
  45. curs.execute(db_change('select data from other where name = "email_insert_text"'))
  46. sql_d = curs.fetchall()
  47. b_text = (sql_d[0][0] + '<hr class="main_hr">') if sql_d and sql_d[0][0] != '' else ''
  48. return await render_template(
  49. await get_lang('email'),
  50. '''
  51. <a href="/filter/email_filter">(''' + await get_lang('email_filter_list') + ''')</a>
  52. <hr class="main_hr">
  53. ''' + b_text + '''
  54. <form method="post">
  55. <input class="__ON_INPUT__" placeholder="''' + await get_lang('email') + '''" name="email" type="text">
  56. <hr class="main_hr">
  57. <button class="__ON_BUTTON__" type="submit">''' + await get_lang('save') + '''</button>
  58. </form>
  59. ''',
  60. 0,
  61. [['user', await get_lang('return')]]
  62. )