DmitrMakeev commited on
Commit
2d5a5e5
·
verified ·
1 Parent(s): 92d5424

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +21 -80
app.py CHANGED
@@ -936,106 +936,47 @@ def handle_calculation():
936
 
937
  # Глобальные переменные
938
  messages = []
939
- users = {}
940
-
941
- # Шифрование (используем пароль для генерации ключа)
942
- SECRET_PASSWORD = "my_secret_chat_password" # Можете вдвоём придумать свой
943
-
944
- def get_cipher():
945
- """Генерируем ключ шифрования на основе пароля"""
946
- password = SECRET_PASSWORD.encode()
947
- salt = b"fixed_salt_for_chat" # Можно сделать уникальным для каждой сессии
948
- kdf = PBKDF2HMAC(
949
- algorithm=hashes.SHA256(),
950
- length=32,
951
- salt=salt,
952
- iterations=100000,
953
- )
954
- key = base64.urlsafe_b64encode(kdf.derive(password))
955
- return Fernet(key)
956
-
957
- def encrypt_message(text):
958
- """Шифруем сообщение"""
959
- cipher = get_cipher()
960
- encrypted_text = cipher.encrypt(text.encode())
961
- return encrypted_text.decode()
962
-
963
- def decrypt_message(encrypted_text):
964
- """Расшифровываем сообщение"""
965
- try:
966
- cipher = get_cipher()
967
- decrypted_text = cipher.decrypt(encrypted_text.encode())
968
- return decrypted_text.decode()
969
- except Exception:
970
- return "[не удалось расшифровать]"
971
-
972
-
973
 
974
  @app.route('/chat')
975
- def chat_index():
976
  user_id = str(uuid.uuid4())[:8]
977
- users[user_id] = {
978
- 'joined': datetime.now().strftime("%H:%M:%S")
979
- }
980
  return render_template('chat.html', user_id=user_id)
981
 
982
  @app.route('/send_message', methods=['POST'])
983
  def send_message():
984
  data = request.json
985
- user_id = data.get('user_id', 'anonymous')
986
- message_text = data.get('message', '').strip()
987
-
988
- if message_text:
989
- # Шифруем сообщение перед сохранением
990
- encrypted_text = encrypt_message(message_text)
991
-
992
- message = {
993
- 'id': len(messages) + 1,
994
- 'user_id': user_id,
995
- 'encrypted_text': encrypted_text, # Сохраняем зашифрованный текст
996
- 'timestamp': datetime.now().strftime("%H:%M:%S"),
997
- 'username': f"User_{user_id}"
998
- }
999
- messages.append(message)
1000
-
1001
- if len(messages) > 100:
1002
- messages.pop(0)
1003
-
1004
- return jsonify({'status': 'success'})
1005
-
1006
- return jsonify({'status': 'error', 'message': 'Empty message'})
1007
 
1008
  @app.route('/get_messages')
1009
  def get_messages():
1010
- # Расшифровываем сообщения перед отправкой клиенту
1011
- decrypted_messages = []
1012
- for msg in messages:
1013
- decrypted_msg = msg.copy()
1014
- decrypted_msg['text'] = decrypt_message(msg['encrypted_text'])
1015
- decrypted_messages.append(decrypted_msg)
1016
-
1017
- return jsonify({'messages': decrypted_messages})
1018
 
1019
  @app.route('/get_new_messages')
1020
  def get_new_messages():
1021
  last_id = request.args.get('last_id', 0, type=int)
1022
- new_messages = [msg for msg in messages if msg['id'] > last_id]
1023
-
1024
- # Расшифровываем новые сообщения
1025
- decrypted_messages = []
1026
- for msg in new_messages:
1027
- decrypted_msg = msg.copy()
1028
- decrypted_msg['text'] = decrypt_message(msg['encrypted_text'])
1029
- decrypted_messages.append(decrypted_msg)
1030
-
1031
- return jsonify({'messages': decrypted_messages})
1032
 
1033
  @app.route('/clear_chat', methods=['POST'])
1034
  def clear_chat():
1035
- """Очистка всех сообщений"""
1036
  global messages
1037
  messages.clear()
1038
- return jsonify({'status': 'success', 'message': 'Чат очищен'})
1039
 
1040
 
1041
 
 
936
 
937
  # Глобальные переменные
938
  messages = []
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
939
 
940
  @app.route('/chat')
941
+ def chat_page():
942
  user_id = str(uuid.uuid4())[:8]
 
 
 
943
  return render_template('chat.html', user_id=user_id)
944
 
945
  @app.route('/send_message', methods=['POST'])
946
  def send_message():
947
  data = request.json
948
+ user_id = data.get('user_id', 'anon')
949
+ encrypted_text = data.get('encrypted_text', '')
950
+ if not encrypted_text:
951
+ return jsonify({'status': 'error', 'message': 'Empty encrypted message'})
952
+
953
+ message = {
954
+ 'id': len(messages) + 1,
955
+ 'user_id': user_id,
956
+ 'encrypted_text': encrypted_text,
957
+ 'timestamp': datetime.now().strftime("%H:%M:%S"),
958
+ 'username': f"User_{user_id}"
959
+ }
960
+ messages.append(message)
961
+ if len(messages) > 200:
962
+ messages.pop(0)
963
+ return jsonify({'status': 'success'})
 
 
 
 
 
 
964
 
965
  @app.route('/get_messages')
966
  def get_messages():
967
+ return jsonify({'messages': messages})
 
 
 
 
 
 
 
968
 
969
  @app.route('/get_new_messages')
970
  def get_new_messages():
971
  last_id = request.args.get('last_id', 0, type=int)
972
+ new_messages = [m for m in messages if m['id'] > last_id]
973
+ return jsonify({'messages': new_messages})
 
 
 
 
 
 
 
 
974
 
975
  @app.route('/clear_chat', methods=['POST'])
976
  def clear_chat():
 
977
  global messages
978
  messages.clear()
979
+ return jsonify({'status': 'success', 'message': 'Chat cleared'})
980
 
981
 
982