Totum online
135 subscribers
31 photos
8 videos
1 file
36 links
Рассказываем про Totum — базу данных и конструктор корпоративных приложений для неразработчиков.
Download Telegram
Улучшение серверов и оптимизация psql ускорили ядро Тотума в 4 раза за 6 лет. У нас есть один проект шестилетней давности, в котором считается таблица табеля, на которой мы придумывали подходы к оптимизации расчётных таблиц типа...

Если контрольное значение не изменилось, то не надо повторно выполнять код, который там что-то считает (в случае если этот код реально много считает):


=: if(condition: #old.control = #control; then: $#onfv; else: $calc)


Тогда в этой таблице время составляло 2 секунды на открытие таблицы, сейчас — 0,45 сек (это 17-й psql; 18-й будет ещё на 5 % быстрее, и это без JIT — с ним тоже будет на 5 % быстрее).

Это результат на медленных процессорах 2,6 ГГц; на высокочастотных, соответственно, вдвое быстрее.

Раздумываем ещё ускориться, заодно всё запаковать в один бинарник при помощи FrankenPHP.

Так как это будет бинарник — скорость возрастёт, установка и обновления упростятся.
🔥3
Для действующих платный лицензий подключили прокси к OpenAI и Perplexity cо списанием со счета TotumAI с подключением к нашему верифицированному акку.

Эндпойнты:

https://license.totum-online.ru/Remotes/openai/v1/chat/completions

https://license.totum-online.ru/Remotes/openai/v1/embeddings

https://license.totum-online.ru/Remotes/perplexity/chat/completions

Ключ для всех указывается одинаковый — активный ключ Totum AI (в формате запроса openai).

Оплата за токены списывается с баланса Totum AI в течение 1-10 минут

Стоимости и доступные модели (доступны только перечисленные модели, потом расширим): https://license.totum-online.ru/Table/30/76

Приоритетный tier openai (быстрое выполнение запроса за двойную стоимость) — недоступен.

Лог запросов: https://license.totum-online.ru/Table/30/75 (тело запроса и ответа не записываем, только мета-инфу для расчета биллинга).

Ничего сверхестесственного, просто допудобство для платных лицензий (есть и другие сервисы предоставляющие в РФ доступ к API с оплатой за рубли — обычно х3 к стоимости, здесь х1.5)

ps: курс не ЦБ, а тот, по которому мы реально смогли перевести бабки

ps2: суммы больше чем 200 баксов согласовывайте плиз с техподдержкой (мы не банк и не криптообменник, свободных средств на балансе нет)
🔥3
В execSSH() добавлен параметр stdin, который запускает SSH-скрипт в дочернем процессе и передаёт ему содержимое параметра в стандартный ввод. Это нужно из-за ограничения длины командной строки в Linux и необходимости экранирования управляющих символов. В общем, файл так не передать, а через stdin — можно.

Например, у вас есть скриптик на Python, который там что-то доброе делает. Можно сохранить его в Totum в файл и передавать путь к файлу для обработки, а можно взять fileGetContent() и кинуть в stdin (что сильно удобнее, особенно когда это какие-то временные файлы или нужно процессить данные на лету):


= : linkToDataText(title: "*"; text: $proc_open)

proc_open: execSSH(ssh: "/home/totum/pyvenv/bin/python /home/totum/pyvenv/strCount.py"; stdin: $some_file_data)

some_file_data: fileGetContent(...)


Со стороны скрипта при таком подходе нужно читать из стандартного ввода (в конце передачи Totum сообщает, что всё — все данные переданы):


import sys
# Читаем весь ввод из stdin
data = sys.stdin.read()
# Просто выводим длину полученного текста (можно заменить на любую логику)
print(f"Получено {len(data)} символов.")
# Например, можно что-то вернуть в stdout — это увидит Тотум
👍2🔥1
Теперь при загрузке файлов (только новых, уже загруженные не участвуют) сразу определяется MIME-type средствами Linux (в структуре поля «файл» он кладётся в ключ mime):


[
{
"file": "99_h_file.pdf",
"size": 60130,
"ext": "pdf",
"mime": "application/pdf",
"name": "some_name.pdf"
}
]


Благодаря этому Тотум научился распознавать JPEG’и, которые притворяются PNG’шками, и наоборот — и вместо ошибки стал исправлять им расширение.

Также доработали linkToFileDownload, чтобы можно было просто передать в него содержимое поля файл, без возни с получением бинарников:


= : linkToFileDownload(files: #h_some_file)
👍3🔥1
Нам 100500 человек за последний год сказали, что формулировка «для не-программистов» — это отстой. И вообще сайт помойка (можно посмотреть на EN/ES-версии).

Так вот — конверсия у нового бананового, который без «не программистов» на 30% хуже
🤔3🙈1
Самая сложная задача — архитектурная. Именно её пока что AI не решает.
Если выбирать между одной таблицей с разделением по категориям и несколькими отдельными таблицами для каждой категории — то единая сквозная таблица всегда предпочтительнее как с точки зрения нагрузки, так и для дальнейшего расширения.
💯2👌1🤷1
Мы занимаемся производным проектом, поэтому новостей пока не будет
🔥6👍3
меню-дерево по клику правой кнопкой мыши на разделе
🔥9
Ubuntu затронута, так как это эксплойт ядра linux

CVE-2026-31431 «Copy Fail» 7.8 (HIGH)

Это критическая уязвимость локального повышения привилегий (LPE) в ядре Linux, получившая название «Copy Fail». Она позволяет любому аутентифицированному пользователю с обычными правами получить root-доступ к системе.

Вектор атаки: Локальный (требуется учётная запись в системе)
Сложность: Низкая
Привилегии: Требуются обычные права пользователя
Влияние: Полная компрометация: чтение, запись, выполнение

Уязвимость включена в каталог известных эксплуатируемых уязвимостей CISA с дедлайном применения мер до 15 мая 2026
😱2👍1
В итоге аяй нашел в тотуме реальный вектор атаки — обновление на GIT, всем рекомендуем обновиться.
👌5❤2
Короче, кто активно юзает демонов в связке с execSSH (как мы), то супер важно знать, что у демона стартовая точка не /home/totum/totum-mit/http как у всего Тотума, а /home/totum/totum-mit (без http)

Так как демоны запускаются бинарником на GO и у него точка входа — корневая директория.

Поэтому если в execSSH используется относительны путь ../interfaces/bitum..... то для выполнения через демона это будет ./interfaces/bitum (с одной точкой вместо двух)

Соответственно что бы отличить демон это или пользователь ручками жмет — для демона ставится процессная переменная procVar и ее перед определением пути читаете и из этого путь строите.

Еще вариант — в execSSH совать только полные пути от корня сервера, но это может быть неспортивно чтоль
❤2
Totum AI — все, RIP.

У кого остатки на балансе не подарочные, а которые вы дополнительно оплачивали — напишите на totum@totum.online мы их вернем.
😢6
Итак, добро пожаловать уязвимость PHP — уровень опасности Князь Тьмы (выполнение произвольного shell на вашем серваке).

Атакующий НЕ ДОЛЖЕН БЫТЬ АВТОРИЗОВАН ни в тотуме ни на сервере!

там 3 уязвимости

+ CVE-2026-109619 через сессии (подтверждённая RCE на FPM): закрывается session.upload_progress.enabled = off.

+ CVE-2026-109619 через backtraces: на 8.3 отсутствует.

+ CVE-2026-109618 (OOM): OOM при старте запроса на FPM действительно просто убивает воркер. Но если довести до OOM уже работающий скрипт, то есть в коде приложения, сценарий для FPM считается опасным. Рабочего эксплойта пока нет, но и «безопасно» никто не утверждает.

Нормальная защита — обновление php, но там нужна версия не ниже 8.3.36 (ее пока в репо нет и еще некоторое время она будет идти до хостеров тк они держат кэши).

Что сделать на сервере Тотум (команды написаны от root):

Редачим (если он есть, если его нет значит совсем старая установка и надо в PHP.INI отключить, смотреть сл.сообщение тогда):


nano /home/totum/totum-mit/FPM.totum.php.ini


Добавляем:

session.upload_progress.enabled = off


Сохраняем рестартуем FPM:

service php8.3-fpm restart
👍2
Если у вас древняя установка то у вас не будет вынесенного файла настроек ini для FPM воркеров FPM.totum.php.ini

Далее команды от root:

В этом случае выполняем:

sed -i.bak 's/^;\?session\.upload_progress\.enabled = On$/session.upload_progress.enabled = Off/' /etc/php/8.3/fpm/php.ini


Проверка (должно быть OFF):

php-fpm8.3 -i | grep upload_progress.enabled


Рестартуем FPM:

service php8.3-fpm restart
Это временная защита от уязвимости (понижение уровня с Князь Тьмы до Всадник Апокалипсиса) – полная только обновление до PHP 8.3.36 и выше
Обновления PHP в репо! Напоминаю, что речь идет про PHP, а не про Totum

apt update

apt upgrade

выполнять должен человек, который видел хоть раз как консоль работает!
😁5❤2
🔥2😁2
V8 на GitHub

- Ubuntu 26.04
- PHP 8.5
- Только PRO (MIT-репозиторий в архиве, и больше никаких движений по нему не будет)
- PHP-репозиторий через зеркало Yandex
- Базовый поиск через расширение pg_trgm для PostgreSQL
- Всякие штуки для подключаемых интерфейсов, которые нам нужны для платформы интернет-магазинов и по которым пока не будет инструкций
- Исправление ошибок с сессиями

АВТОМАТИЧЕСКОЕ ОБНОВЛЕНИЕ УТИЛИТОЙ `bin/totum git-update` НЕВОЗМОЖНО!

ТОЛЬКО ЧЕРЕЗ РАЗВЁРТЫВАНИЕ НОВОГО СЕРВЕРА И ПЕРЕНОС БД И ФАЙЛОВ.

Тотум как платформа останется на GitHub, и его по-прежнему можно будет устанавливать отдельно. У нас нет времени модифицировать лицензии, поэтому при использовании Тотума как платформы для разработки все лицензии останутся прежними.

ПС: да, теперь устанавливается в /home/totum/totum-pro (учитывайте, если наткнетесь где в старых инструкциях на пути с -mit)
❤3👎1
Сервисы также обновлены на 8.5

Упрощена структура, библиотеки подняты до актуальных версий, короче 🍬

Мы тестировали только с новыми установками Тотум v8 ‹-› New services
❤1👍1