Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

💬 Pretty anonymous portable web-based chat with the ability to transfer files

License

NotificationsYou must be signed in to change notification settings

ddan9/webchat

Repository files navigation


Demo:

MainAttachments
Demo 1Demo 2

Install:

  • Dependencies: php, webserver (apache2/nginx), js-compatible browser
  • Download project archive into your web directory and unpack it
  • Do: "chmod 666" or "chown %username%:www-data" to databases/files.json and databases/messages.json
  • Change config variables in files if you need
  • [ ! ] : On Linux systems you can just use embedded php server instead of nginx or apache2. Do "php -S 127.0.0.1:8080" in unpacked project and enjoy it! Also you don't need to make databases writeable

Features:

  • This project is in active development (no)
  • Fully standalone
  • You can use it as primary engine to build your own app
  • Basically ready to use
  • Stack: js, html, css, php, json, noSQL
  • Fully RESTful. No sockets
  • Semi-realtime work
  • It uses json as portable databases
  • Multiple file uploading
  • Fully manual code (no frameworks)
  • Fully open-source
  • You don't need to register to use it
  • You can share files with it
  • Pretty good style
  • Very good client security
  • Databases encryption with openssl (optional)
  • It have pretty good compability with old browsers
  • A detailed description will come later
  • File viewer
  • Many other! (See the sources)

Изменения | Changes:

  • Для того чтобы понять, какие были изменения, следите за правками README


TODO:

Касаемо просмотрщика файлов
  • флексом отцентрировать контент в просмотрщике, сделать красиво, анимации, проверить с изменением полного экрана - в целом решено, но нужно доработать

Разное
  • поправить вид функций (кривовато), нужно в целом весь код привести к одному +- виду, чтобы все одинаково было

  • комментарии в коде

  • глянуть, какие нотифи можно ещё выводить

  • решить косяк с форматированием текста при копировании из чата (задетектил на winXP)

  • кнопка "назад" при переходе с другого места для тесной интеграции с другими сервисами

  • поработать над условиями воспроизведения звукового уведомления (она ведь не постоянно должна отыгрывать)

  • бан пользователя по адресу (либо белый список) (можно еще типо список запрещенных ников ввести)

  • js выполнение функций при закрытии

  • изменение имени вкладки типо в скобках кол-во новых сообщений

  • экспорт сообщений из клиента

  • окрасить плейсхолдеры?

  • окрасить флат-кнопки? (была попытка)

  • сохранять недописанное сообщение?

  • авторство в хелпу

  • поменять стили своих сообщений, сделать как в обычных мессенджерах

  • проблемы с полным экраном на старых версиях

  • html мета тэг для мобильной версии (как писали, проверить)

  • попытаться сделать обрезку (функцию) названий, типов файлов, сообщений, ников

  • в целом можно многое накодить на клиентской стороне

  • кнопка + для добавления файлов для тупых

  • косяк в чате с исчезновением кнопки (неплавное)

  • косяк в просмотрщике с кнопкой фулскрина

  • черный и белый списки (ip и ник)

  • сжатие файлов

  • оптимизировать работу базы файлов (рассосать на инфу (мету) и сами файлы, можно попробовать просто дублировать без тела)

  • понадобится:https://nuancesprog.ru/p/16673/

  • если делать какие-то юзер-настройки\данные, можно шифровать по паролю с проверкой на хэш

  • на клиентской стороне выводить даты (начала дНя) для сообщений

  • часть вещей можно спихнуть на пользователя (запоминание, настройки)

  • возможность ответа на сообщения (система ответов на хэшах)

  • черный/белый список слов? (опционально, пыха, жс)

  • черный/белый список ников? (опционально, пыха, жс)

  • черный/белый список адресов? (опционально, пыха, жс)

  • скрипт для калибровки бд (бд почистить напрочь, в скрипте будут тестовые данные)

  • сделать проверки на "а пишущиеся ли базы?"

  • можно попробовать сделать слушатель на окно, и типо если окно закрывается слать дисконнект

  • сброс вывода при ошибках базы (если сообщений стало меньше, сделать после реорганизации)

  • оттестировать на 4 пыхе

  • доделать вместо алертов на клиенте кастомные формы

  • доделать dry run на регистрации?

  • доделать алгоритм сообщение дисконнекта, т.к. есть косяк внесения через логаут - нужно будет сделать проверку на наличие юзера в базе (ну и мб другие стандартные и пароль) (+ часто просто не срабатывает) (ВОЗМОЖНО ДЫРА)

  • сделать потом полный рефакторинг кода, всё раздробить на функции

  • кодировать все запросы, ответы и креды в base64

  • попробовать сделать проверку на фрейм (для хромов по крайней мере) и если в фрейме делать бланк (для комнат)

  • везде ввести тримы

  • в будущем добавить переключение видимости паролей на формы

  • проверку на подключение модуля клиентских сообщений к серверу и выдача ошибки при отстутствии

  • возможно продумать потом такую тему, держать базы дешифрованные (но кодированные) в какой-нить tmp директории чтобы сервак чуть разгрузить

  • постинг сообщений и файлов через жс, кодировать всё

  • обрабатывать 401 запросы в формах

  • можно каждому пользователю выдавать уникальный ключ для получения баз

  • последний раз пытался сделать прогресс бар для файлов и кастомные запросы

  • добавить обработку ошибок сети при передаче данных сообщений, файлов и т.д. (сейчас всё очень просто сделано)

  • добавить обратоку разных кодировок (замечен косяк при загрузке win-1251 файла)

  • ajax на просмотрщик файлов

  • при плохом соединении при остылке пакетов бьётся база (возможно не сама база а логика клиента)

  • добавить перекодировку из одной в другую

  • сделать тень при скролле

  • client intended to send too large body: 36700680 bytes, [PHP]

  • поиск в клиента

  • статус сообщения, сделать скрытие вместо удаления

  • в базу пользователей добавить статусы для черного и белого списка

  • значит алерты должны: либо создаваться и удаляться динамически, либо просто изменять свою видимость. Они должны перехватыть ввод, управление, не давать делать что-либо (можно достигнуть с помощью дива, который перекрывает весь экран), ну и соответственно акцент внимания иметь

  • по аналогии выше сделать диалоговые окна (и другие)

  • проблема с кнопкой в мейне при разных зумах страницы (лимит расчёт через процентное соотношение?)

  • currentheight в проценты вместо лимита?

  • hack bypass php http basic auth

  • при изменении картинки на кнопке, они не прогружаются

  • залить ещё пару демок (на каждую форму)

  • добавить тайтлы в нотифи и сделать их обрезание аки файлы (добавить то же самое в ники сообщений (и в нотифи))

  • в общем оказалось что косяк с аутентификацией на фаерфоксе это моих рук дело на JS, а не в PHP модулях (надо этот вопрос прочекать), и только потом убирать индекс фрейм

  • ещё оказалось что да, ломаются не базы, а клиент (строчка 203). Связано с тем, что видимо посты кодируются неправильно перед отправкой, т.к. без кодирования косяка нет, НО не отправляются некоторые спецсимволы (по крайней мере замечено на мобилах)

  • а ещё на мобилах JS работает через зад при обработке форм на исключения и работе со стилями по случаю

  • проверить на инъекции по аналогии с фигнёй выше (дописать на принимающей стороне эскейпы)

  • люди писали что можно намутить токены для BA, надо глянуть

  • а ещё нужно изучить возможность К\Д для авторизаций

  • а ещё продумать вариант блокирования IP при неудачных попытках

  • изучить другие варианты запросов (GET, POST, PUT, PATCH)

  • разница между realm и digest и могу ли я заюзать это

  • как сделать BA безопасной

  • есть ли разница между BA и другими вариантами auth в плане взлома

  • избавиться от последнего фрейма


Настройки
  • поменять некоторые переменные на php-серверные для универсальности
  • клиентские настройки ввода
  • больше настроек и изменяемости сделать под всёеее
  • куки БД

Оптимизация сети
  • можно типо отсылать не всю базу сообщений а только то, чего нет у клиента (так можно разгрузить сеть, но потребуется переработка клиентского кода (возможно полностью))
  • придумать как экономить и ускорить трафик (можно например не получать сообщения если свернут чат, или что-то подобное), сжимать там мб
  • придумать как уменьшить кол-во/частоту запросов к серверу
  • получше изучить работу соединения через сокеты, попытаться сделать максимально похожим
  • синхронизация
  • "забывчивость" клиента относительно кол-ва сообщения для предотвращения ошибки при удалении сообщений из базы (возможно пофиксится с изменением алгоритма, делать потом)
  • вывод ошибки при отсутствии сети
  • учет онлайна?

Непрочитанные сообщения
  • кол-во непрочитанных сообщений
  • счетчик пропущенных сообщений?
  • намутить такое что типо прокручивать не сразу прям вниз а до первого непрочитанного сообщения?

Касаемо файлов и баз
  • сразу проверять файл на требования, чтобы не захламлять базу
  • custom limits for file size?
  • custom limits for messages count?
  • затирание баз (лимит, время, удаление старых вместо перезаписи (всё опционально))
  • скрипты для редактирования/удаления файлов/сообщений (мб примитивную админку всё-таки сделать)
  • возможность ограничить вывод на клиентской стороне? (резать либо не выводить слишком длинные сообщения)
  • удаление сообщений пользователем с проверками
  • удаление файлов
  • кастомные ограничения по типу файла
  • кастомнные ограничения по размеру сообщения | php
  • загрузка файлов частями?
  • фильтрация по типу (черный и белый список) и имени файла (pathinfo)
  • ограничение по количеству файлов
  • клиент-серверно ограничивать количество входящих символов
  • обратная совместимость с предыдущими версиями? (По крайней мере возможность импорта бд?). Решение: намутить функцию импорта-экспорта
  • экспорт в файл, импорт из файла (загрузка извне)

Для режима клиента
  • функция получения списка файлов
  • переменную для префикса для клиента
  • префикс для скачивания файлов если клиент
  • remote files sending
  • нужно в общем проработать клиент-серверный режим (защиту и т.д.)

Разные новые окна
  • окна ошибок/отказа
  • окно процесса
  • дописать фул хелпу
  • может сделать граф. пункт настройки??? Вынести переменные в базы и привязать к адресу с шифровкой
  • можно кинуть хелпу в настройки потом
  • credits?

Касаемо безопасности
  • защита от xss (глупо но да)
  • можно юзать шифрование для контроля доступа к бд, и попытаться гасить левые запросы
  • токены/пароли для удаленных клиентов?
  • обфусцировать для продакшена при необходимости
  • вообще надо широко изучить вопросы безопасности и доступа (скриптов, файлов, бд)
  • ускорение записи в бд доп. запись без перезаписи?
  • шифрование на стороне клиента?
  • шифрование при передаче инфы?
  • сжатие смс/файлов/баз?
  • расширить валидацию (клиентскую безопасность), добавить в просмотрщик | js, php
  • php basic auth against web server
  • noSQL injection?
  • по итогу протестить на безопасность ещё раз
  • можно закатать в докер для бОльшей безопасности (намутить готоую приложуху)
  • организовать проверки на стадии ввода?
  • проверять вообще всё что выводится
  • js отображение тупо символов в чистом виде если есть такое (characterescape)
  • xss escape через title
  • защита запросов
  • RFI, LFI, RCE, CSRF, IDOR
  • WAF
  • контроль загружаемых файлов
  • htmlspecialchars (или экранирование символов)
  • php вывод инфы через уже обработанные переменные
  • проверять всее входящие данные и валидировать их
  • фильтр ввода
  • кодирование url
  • найти более правильный/безопасный chmod или chown для баз

Косметические удобства
  • авто закрытие ненужной вкладки (не знаю есть косяк или нет, просто)
  • ники юзеров разными цветами
  • может всё-таки локаль?
  • drag-n-drop? Во все инпуты
  • рекурсивный выбор файлов в папке
  • анимация автопрокрутки инфы (подсказок) в инпутах (при недостаточной широте экрана например)
  • кастомный скроллбар?
  • кнопка очистки инпутов?
  • плавные переходы между страницами - html equiv page-enter page-exit
  • тень внизу сообщений??? (Может всё-таки да?)
  • мигать при слишком большом сообщении
  • мигать при лимите кол-ва файлов
  • расширять и возможность листать textarea? (но тогда надо убрать скроллбар)
  • выводить даты посередине (теперь реально)
  • анимация отправки (просто чтоб покрасивее поплавнее)

Адаптивность
  • на мобильных скрыть некоторые кнопки
  • сделать адаптацию для мобильных устройств (в последнюю очередь) | js, css

Расширения
  • потом добавить файлы с кодом от комнат, хтпасс и т.д.
  • обновить дефолтные базы (произойд[ут|шли] некоторые изменения)
  • на мобильных (когда доберусь) фоновоую работу, уведомления, светодиод, вибро

Темы
  • true material default theme (щас не тру)
  • сделать дефолтную тему без голубых элементов (на основе нынешней, нынешнюю переименовать)
  • разные темы понаделать
  • угловатая тема (светлая + темная) | css
  • очень компактная тема (светлая + темная) | css
  • темная тема (в самую последнюю очередь) | css

Описания
  • описание концепта комнат, т.к. не всем они нужны | html, css, markdown
  • описание | markdown
  • описание basic auth | markdown, cfg
  • документацию по итогу
  • расписать требования, используемые расширения и функции, и миним браузер для работы

Keywords:

  • webchat chat messenger chatroom anonim

[8]ページ先頭

©2009-2025 Movatter.jp