powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Вопросы по форуму [закрыт для гостей] / Движок и API дедофорума. Обсуждение. Баги. Тестирование. Задачи.
25 сообщений из 1 023, страница 17 из 41
Движок и API дедофорума. Обсуждение. Баги. Тестирование. Задачи.  
    #1089971
Фотография Дед-Скарабей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Текущая версия API: 1.3
Версия форума: 2.0.51
Дата выхода: 27.07.2025

Просьба писать вопросы и предложения по API в этой теме. Воспросы и предложения в других темах могут быть намотаны на писюлячку. Но и их постинг в этой теме не гарантирует, что предложения будут выполнены.

Ендпоинты:

https://nosql.ru/forum/api/get_forum_list.php
https://nosql.ru/forum/api/get_topic_list.php
https://nosql.ru/forum/api/get_post_list.php
https://nosql.ru/forum/api/get_post.php
https://nosql.ru/forum/api/get_user_data.php
https://nosql.ru/forum/api/get_topic_data.php
https://nosql.ru/forum/api/get_attachment.php
https://nosql.ru/forum/api/post_message.php
https://nosql.ru/forum/api/update_message.php
https://nosql.ru/forum/api/post_attachment.php
https://nosql.ru/forum/api/delete_posts.php
https://nosql.ru/forum/api/restore_posts.php

Валидный тоукен можно получить в профиле своего юзера. Гостевой постинг тоже возможен, но тоукен выдается только зареганным. В провиле появилась галка "Активировать API", при включении и сохранении будет сгенерен тоукен.

Базовый формат отправки такой:
Код: JSON
1.
2.
3.
4.
{
    "language": "ru",
    "api_token": "4285-5291-7113-3500-5919"
}
Примеры вызовов:

https://nosql.ru/forum/api/get_forum_list.php
Код: JSON
1.
2.
3.
4.
{
    "language": "ru",
    "api_token": "4285-5291-7113-3500-5919"
}
https://nosql.ru/forum/api/get_topic_list.php
Код: JSON
1.
2.
3.
4.
5.
6.
7.
8.
9.
{
    "language": "ru",
    "api_token": "4285-5291-7113-3500-5919",
    "forum_id": "8",
    "sort": "desc",
    "limit": 100, // no more than 100 allowed
    "subject": "Фотографии", // if specified only the topics with this name are returned
    "continue_at": "2023-01-01 00:00:00" // if omitted than before now
}
Параметр continue_at может быть использован для пошаговой подгрузки.

Параметр subject может быть использован для проверки, существует ли уже темы с таким названием.

https://nosql.ru/forum/api/get_post_list.php
Код: JSON
1.
2.
3.
4.
5.
6.
7.
8.
{
    "language": "ru",
    "api_token": "4285-5291-7113-3500-5919",
    "topic_id": 19529,
    "sort": "desc",
    "limit": 100, // no more than 100 allowed
    "continue_at": "2024-10-01 00:00:00" // if omitted than before now
}
Параметр continue_at может быть использован для пошаговой подгрузки.

https://nosql.ru/forum/api/get_post.php
Код: JSON
1.
2.
3.
4.
5.
{
    "language": "ru",
    "api_token": "1684-7912-7133-2657",
    "post_id": 1000
}
https://nosql.ru/forum/api/get_topic_data.php
Код: JSON
1.
2.
3.
4.
5.
{
    "language": "ru",
    "api_token": "1753-6212-0242-0888-3460",
    "topic_id": 566
}
https://nosql.ru/forum/api/get_user_data.php
Код: JSON
1.
2.
3.
4.
5.
{
    "language": "ru",
    "api_token": "1753-6212-0242-0888-3460",
    "user_id": 566
}
https://nosql.ru/forum/api/get_attachment.php
Код: JSON
1.
2.
3.
4.
5.
6.
{
    "language": "ru",
    "api_token": "4285-5291-7113-3500-5919",
    "attachment_id": 871959,
    "nr": 2
}
https://nosql.ru/forum/api/delete_posts.php
Код: JSON
1.
2.
3.
4.
5.
6.
7.
{
    "language": "ru",
    "api_token": "1753-6212-0242-0888-3460",
    "posts": [
        872084, 872085
    ]
}
https://nosql.ru/forum/api/restore_posts.php
Код: JSON
1.
2.
3.
4.
5.
6.
7.
{
    "language": "ru",
    "api_token": "1753-6212-0242-0888-3460",
    "posts": [
        872084, 872085
    ]
}
https://nosql.ru/forum/api/post_message.php
Код: JSON
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
{
    "language": "ru",
    "api_token": "4285-5291-7113-3500-5919",
    "forum_id": 8,
    "topic_id": 19546, // omit to create a new topic
    "is_thematic": 0,
    "is_adult": 0,
    "blog": 0,
    "no_guests": 0,
    "request_moderation": 0,
    "post_as_guest": "Карапуз", // omit to post under the user name
    "citated_posts": "",
    "subject": "Привет медвед", // not necessary if posting to an existing topic
    "message": "777"
}
В ответ приходит вся инфа о сделанном посте.

https://nosql.ru/forum/api/post_message.php - с аттачами
Код: JSON
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
{
    "language": "ru",
    "api_token": "4285-5291-7113-3500-5919",
    "forum_id": 8,
    "topic_id": 19546, // omit to create a new topic
    "is_thematic": 0,
    "is_adult": 0,
    "blog": 0,
    "no_guests": 0,
    "request_moderation": 0,
    "post_as_guest": "Карапуз", // omit to post under the user name
    "citated_posts": "",
    "subject": "Привет медвед", // not necessary if posting to an existing topic
    "message": "777",
    "attachments": [
        {
            "file_name": "photo_2024-09-01_18-14-34.jpg",
            "mime_type": "image/jpg",
            "base64_contents": "......"
        }
    ]
}
https://nosql.ru/forum/api/post_attachment.php - постфактумная отправка аттачмента

Аттачмент отправляется в бинарном формате, параметры в таком случае нужно передать GET запросом через переменные

https://nosql.ru/forum/api/post_attachment.php?api_token=1753-6212-0242-0888-3460&file_name=test.jpg&mime_type=image/jpeg&post_id=872072

Параметры:

api_token
file_name
mime_type
post_id

https://nosql.ru/forum/api/update_message.php
Код: JSON
1.
2.
3.
4.
5.
6.
7.
{
    "language": "ru",
    "api_token": "4285-5291-7113-3500-5919",
    "post_id": 8,
    "subject": "Привет медвед", // not necessary if changing of the subject is not necessary
    "message": "Новое сообщение"
}
В ответ приходит вся инфа о сделанном посте.

Ендпоинт поддерживает и замену и удаление аттачей. Чтобы удалить, нужно запостить апдейт без аттачей. И следовательно, если меняешь пост с аттачами, их нужно также указать при апдейте и препостить.

Ендпоинт поддерживает и замену названия топика. Но это работает только при апдейте первого поста темы.
...
Изменено: 27.07.2025, 13:23:50 - Дед-Скарабей
Рейтинг: 3 / 0
Движок и API дедофорума. Обсуждение. Баги. Тестирование. Задачи.
    #1363875
Фотография Дед-Скарабей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Time Stamp дополнительно тоже могу слать.
...
Рейтинг: 0 / 0
Движок и API дедофорума. Обсуждение. Баги. Тестирование. Задачи.
    #1363888
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Густавсберг  24.03.2025, 19:26:12
[игнорируется]
Дед-Скарабей  24.03.2025, 19:25:10
[игнорируется]
Густавсберг  24.03.2025, 19:17:41
[игнорируется]
Я хочу читать сообщеньку и при этом знать
1. Это ответ на что-то?
2. Если да, то какой ID у месаги, на которую ответили.
Тащемта всё.
В одном сообщении могут быть ответы на несколько разныхх. Так что это будет список:)
Нет, не может быть несколько разных, потому что у тебя в интерфейсе кнопка "ответить" у сообщеньки.
Если я нажал "ответить" на одной сообщеньке, а потом пошёл нажал "ответить" у другой, то у меня отвечание может быть только на последнюю нажатую.
У тя логика проёбана, либо ты просто ебанутый либо чо.
Нет. Все норм.
...
Рейтинг: 0 / 0
Движок и API дедофорума. Обсуждение. Баги. Тестирование. Задачи.
    #1364031
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дед-Скарабей  25.03.2025, 08:10:10
[игнорируется]
Time Stamp дополнительно тоже могу слать.
Дата в текстовом формате - норм. Есть и стандарт:
https://www.protokols.ru/WP/rfc3339/

Примеры из этого RFC:
Цитата 
[игнорируется]
1985-04-12T23:20:50.52Z
1996-12-19T16:39:57-08:00
...
Изменено: 25.03.2025, 11:56:54 - s62
Рейтинг: 0 / 0
Движок и API дедофорума. Обсуждение. Баги. Тестирование. Задачи.
    #1364033
Фотография Дед-Скарабей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
s62 [игнорируется] 

Тут дело такое. При запросе указывается язык и все возвращается локализовано, в том числе и дата в локализованном формате.

А так то проще возвращать таймстэмп если он кому то нахер нужен.
...
Рейтинг: 1 / 0
Нравится: s62
Движок и API дедофорума. Обсуждение. Баги. Тестирование. Задачи.
    #1364065
basename
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дед-Скарабей [игнорируется] 

А можно, интересно, как-то к телеге оповещения прикрутить? Понятно, что можно, но я хз как.

Ну например, чтобы в группу жалобы срал. Я бы настроил мониторинг, он бы, хоба, жалоба от сергея11 на пашэ
...
Рейтинг: 0 / 0
Движок и API дедофорума. Обсуждение. Баги. Тестирование. Задачи.
    #1364075
Фотография Густавсберг
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дед-Скарабей  25.03.2025, 08:10:10
[игнорируется]
Time Stamp дополнительно тоже могу слать.
не дополнительно, а вместо
форматированная дата нахой не уссалась
...
Рейтинг: 0 / 0
Движок и API дедофорума. Обсуждение. Баги. Тестирование. Задачи.
    #1364077
Фотография Дед-Скарабей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
basename  25.03.2025, 12:19:29
[игнорируется]
Дед-Скарабей [игнорируется] 

А можно, интересно, как-то к телеге оповещения прикрутить? Понятно, что можно, но я хз как.

Ну например, чтобы в группу жалобы срал. Я бы настроил мониторинг, он бы, хоба, жалоба от сергея11 на пашэ
Бота можно написать. Но и в апи доработать получение уведомлений.
...
Рейтинг: 0 / 0
Движок и API дедофорума. Обсуждение. Баги. Тестирование. Задачи.
    #1364087
Фотография Густавсберг
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фошшэзьон, ты же понимаешь что форматированная дата - это ибана помойка и во всех API мира время идёт как tomestamp?
...
Рейтинг: 0 / 0
Движок и API дедофорума. Обсуждение. Баги. Тестирование. Задачи.
    #1364089
Фотография Густавсберг
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фушшэряточка.
...
Рейтинг: 0 / 0
Движок и API дедофорума. Обсуждение. Баги. Тестирование. Задачи.
    #1364092
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дед-Скарабей  25.03.2025, 11:58:47
[игнорируется]
s62 [игнорируется] 

Тут дело такое. При запросе указывается язык и все возвращается локализовано, в том числе и дата в локализованном формате.

А так то проще возвращать таймстэмп если он кому то нахер нужен.
А можно и в API по ISO/RFC. Так-то это тоже timestamp, просто представленный в текстовом формате. Вообще-то данные, полученные по API тоже ведь как-то используются, и могут и выводиться для людей. Тогда и преобразовывать не надо, как получили, так и вывели. А этот UTC или для программных целей или всё равно преобразовывать в текст для вывода.
Ну это я так, для обсуждения разных вариантов.
...
Изменено: 25.03.2025, 12:36:45 - s62
Рейтинг: 0 / 0
Движок и API дедофорума. Обсуждение. Баги. Тестирование. Задачи.
    #1364096
Фотография Дед-Скарабей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Густавсберг  25.03.2025, 12:33:50
[игнорируется]
Фошшэзьон, ты же понимаешь что форматированная дата - это ибана помойка и во всех API мира время идёт как tomestamp?
Понимаю. Но кролльчатине вроде достаточно было, получил пост отобразил у себя.

Слать таймстэмп не проблема.

Причина этого поять же в повт орном использовании кода. Есть функция для получения списка постов например. Она откргужает данные для пендеринга в HTML. Те же данные я шлю в ответ на апи запрос
...
Рейтинг: 0 / 0
Движок и API дедофорума. Обсуждение. Баги. Тестирование. Задачи.
    #1364099
Фотография Дед-Скарабей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
s62  25.03.2025, 12:36:11
[игнорируется]
Дед-Скарабей  25.03.2025, 11:58:47
[игнорируется]
s62 [игнорируется] 

Тут дело такое. При запросе указывается язык и все возвращается локализовано, в том числе и дата в локализованном формате.

А так то проще возвращать таймстэмп если он кому то нахер нужен.
А можно и в API по ISO/RFC. Так-то это тоже timestamp, просто представленный в текстовом формате. Вообще-то данные, полученные по API тоже ведь как-то используются, и могут и выводиться для людей. Тогда и преобразовывать не надо, как получили, так и вывели. А этот UTC или для программных целей или всё равно преобразовывать в текст для вывода.
Ну это я так, для обсуждения разных вариантов.
Да. В xml обычно исо даты.
...
Рейтинг: 0 / 0
Движок и API дедофорума. Обсуждение. Баги. Тестирование. Задачи.
    #1364105
Фотография Густавсберг
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дед-Скарабей  25.03.2025, 12:37:54
[игнорируется]
s62  25.03.2025, 12:36:11
[игнорируется]
Дед-Скарабей  25.03.2025, 11:58:47
[игнорируется]
s62 [игнорируется] 

Тут дело такое. При запросе указывается язык и все возвращается локализовано, в том числе и дата в локализованном формате.

А так то проще возвращать таймстэмп если он кому то нахер нужен.
А можно и в API по ISO/RFC. Так-то это тоже timestamp, просто представленный в текстовом формате. Вообще-то данные, полученные по API тоже ведь как-то используются, и могут и выводиться для людей. Тогда и преобразовывать не надо, как получили, так и вывели. А этот UTC или для программных целей или всё равно преобразовывать в текст для вывода.
Ну это я так, для обсуждения разных вариантов.
Да. В xml обычно исо даты.
Господули давайте не разговаривать о престарелых технологиях вымерших уибанов.
...
Рейтинг: 0 / 0
Движок и API дедофорума. Обсуждение. Баги. Тестирование. Задачи.
    #1364303
Фотография Густавсберг
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
API TODO

1. Перестать слать какие-то ебануто-форматированные выражения времени. Использовать UTC timestamp как во всём мире.
2. Навести порядок между булевыми полями - все должны быть true/false если оно булево, а не 1/0.
3. Починить срань вида "last_message_date": "6 мин." - поправить на UTC timestamp так же, пользователь сам вычтет из now и получит дальность в секундах. При этом кому-то может быть важно 40 сек назад или 10 сек. Кириллица запиханная в какой-либо формат времени - это двойной пидороёбизм.
...
Рейтинг: 0 / 0
Движок и API дедофорума. Обсуждение. Баги. Тестирование. Задачи.
    #1364394
Фотография Густавсберг
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
API TODO UPDATE

1. Перестать слать какие-то ебануто-форматированные выражения времени. Использовать UTC timestamp как во всём мире.
2. Навести порядок между булевыми полями - все должны быть true/false если оно булево, а не 1/0.
3. Починить срань вида "last_message_date": "6 мин." - поправить на UTC timestamp так же, пользователь сам вычтет из now и получит дальность в секундах. При этом кому-то может быть важно 40 сек назад или 10 сек. Кириллица запиханная в какой-либо формат времени - это двойной пидороёбизм.
4. Перестать срать в HTTP заголовках в API директивами Set-Cookie - куки в API вообще не нужны, потому что есть токен и потому что клиент API эти куки всё равно проигнорирует.
...
Рейтинг: 0 / 0
Движок и API дедофорума. Обсуждение. Баги. Тестирование. Задачи.
    #1364834
Фотография Густавсберг
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Апнем нахуй.

Дед, а ты вообще всё решил отдавать через "chunked"?
Ты ёбнулся чтоли?
Нахуя?
Ты осознаёшь, что это не даёт клиенту понять, когда кончился поток и можно начинать парсить?
Я даже незнаю нахуя ты это заюзал для передачи аудио - аудио у тебя тоже заранее известного размера и браузер их вполне может начать воспроизводить не получив ещё до конца.

А почему ты передаёшь в chunked любой HTML или JSON?
Вот например я клиент пошёл за JSON.
Мне приходит chunked и далее последовательность чанков.
Идёт первый чанк.
В этот первый чанк влез весь JSON например.
Мне когда начинать JSON парсить-то? Мне как понять в первый чанк влез весь джисон или надо ещё чанков ждать и только потом в парсер отдавать?
Или после каждого чанка пихать в парсер всё что пришло в надежде что там законченный json, ловить исключение от парсера и заново начинать пробовать в следующем чанке, если он будет?

Пиздец конечно у тя детство было трудное, чечены тебя бутылкарём ебошили по глазницам.
...
Рейтинг: 0 / 0
Движок и API дедофорума. Обсуждение. Баги. Тестирование. Задачи.
    #1364836
Фотография Густавсберг
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chunked используют только какие-то пузатые старые админы, которые не разобрались с настройками сервера
или люди, которые передают бесконечный видеопоток (стриминг)
или люди, которые решили посередине передачи потока ебануть ещё HTTP хедеров дополнительно (ебанутая идея конечно)
во всех случаях, когда размер наперёд известен, его надо передать в Content-Length.
у тебя первое походу?
...
Изменено: 25.03.2025, 21:14:46 - Густавсберг
Рейтинг: 0 / 0
Движок и API дедофорума. Обсуждение. Баги. Тестирование. Задачи.
    #1364839
Фотография Дед-Скарабей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Густавсберг [игнорируется] 

Что всё? Только аттачи.
...
Рейтинг: 0 / 0
Движок и API дедофорума. Обсуждение. Баги. Тестирование. Задачи.
    #1364851
Фотография Густавсберг
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дед-Скарабей  25.03.2025, 21:15:30
[игнорируется]
Густавсберг [игнорируется] 

Что всё? Только аттачи.
Нет.
1. JSON-ы в API у тебя отдаются как chunked (http/1.1)
2. HTML-страница с профилем юзера у тебя отдалась как chunked.
Аттачи не проверял. И их надо без chunked, чанкед в аттачах не решает никакую полезную задачу.
...
Рейтинг: 0 / 0
Движок и API дедофорума. Обсуждение. Баги. Тестирование. Задачи.
    #1364859
Фотография Дед-Скарабей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Густавсберг  25.03.2025, 21:22:15
[игнорируется]
Дед-Скарабей  25.03.2025, 21:15:30
[игнорируется]
Густавсберг [игнорируется] 

Что всё? Только аттачи.
Нет.
1. JSON-ы в API у тебя отдаются как chunked (http/1.1)
2. HTML-страница с профилем юзера у тебя отдалась как chunked.
Аттачи не проверял. И их надо без chunked, чанкед в аттачах не решает никакую полезную задачу.
Может это веб сервер? Я чанками только аттачи отдаю
...
Рейтинг: 0 / 0
Движок и API дедофорума. Обсуждение. Баги. Тестирование. Задачи.
    #1364865
Фотография Густавсберг
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дед-Скарабей  25.03.2025, 21:24:53
[игнорируется]
Густавсберг  25.03.2025, 21:22:15
[игнорируется]
Дед-Скарабей  25.03.2025, 21:15:30
[игнорируется]
Густавсберг [игнорируется] 

Что всё? Только аттачи.
Нет.
1. JSON-ы в API у тебя отдаются как chunked (http/1.1)
2. HTML-страница с профилем юзера у тебя отдалась как chunked.
Аттачи не проверял. И их надо без chunked, чанкед в аттачах не решает никакую полезную задачу.
Может это веб сервер? Я чанками только аттачи отдаю
Что "это"? Может это. Я ебу что там это.
Местоимения использовать - признак пидорства и обоссаности.
...
Изменено: 25.03.2025, 21:28:19 - Густавсберг
Рейтинг: 0 / 0
Движок и API дедофорума. Обсуждение. Баги. Тестирование. Задачи.
    #1364881
Фотография Дед-Скарабей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проверил, chunked не выставляю в коде совсем. Только реагирую на запрос из браузера

HTTP_RANGE

header('HTTP/1.1 206 Partial Content');
header("Content-Length: $length");
header("Content-Range: bytes $start-$end/$filesize");
Код: PHP
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
    //---------------------------------------------------------------
    function send_attachment_and_exit(&$attachment_data)
    {
        if (empty($attachment_data["indicator"])) {
            if (!empty($attachment_data["path"]) && !file_exists($attachment_data["path"])) {
                header("HTTP/1.1 404 Not Found");
                echo_html("404 " . text("ErrAttachmentNotFound"));
                exit();
            }

            if (empty($attachment_data["path"]) || !empty($attachment_data["deleted"])) {
                header('HTTP/1.0 403 Forbidden');
                echo_html("403 " . text("ErrAttachmentDeleted"));
                exit();
            }

            if (!empty($attachment_data["no_access"])) {
                header('HTTP/1.0 403 Forbidden');
                echo_html("403 " . text("ErrAttachmentNoAccess"));
                exit();
            }
        }

        $HTTP_IF_NONE_MATCH = val_or_empty($_SERVER['HTTP_IF_NONE_MATCH']);

        $headers = apache_request_headers();

        foreach ($headers as $header => $value) {
            if (strcasecmp('If-None-Match', $header) == 0 && !empty($value)) {
                $HTTP_IF_NONE_MATCH = $value;
            }
        }

        $modified = filectime($attachment_data["path"]);
        $etag = System::generateHash(str_replace(APPLICATION_ROOT, "", $attachment_data["path"]) . "-" . $modified . "-" . val_or_empty($attachment_data["deleted"]), SALT_KEY);
        if ($HTTP_IF_NONE_MATCH == $etag) {
            header("HTTP/1.1 304 Not Modified");

            exit();
        }

        header("Cache-Control: no-cache");

        $filesize = sprintf("%u", filesize($attachment_data["path"]));

        $range = false;

        if (isset($_SERVER['HTTP_RANGE'])) {
            $range = $_SERVER['HTTP_RANGE'];
        } elseif ($apache = apache_request_headers()) {
            $headers = array();
            foreach ($apache as $header => $val) {
                $headers[strtolower($header)] = $val;
            }
            if (isset($headers['range'])) {
                $range = $headers['range'];
            }
        }

        $length = $filesize;
        $partial = false;
        if ($range) {
            $partial = true;
            list($param, $range) = explode('=', $range);

            // Bad request - range unit is not 'bytes'
            if (strtolower(trim($param)) != 'bytes') {
                header("HTTP/1.1 400 Invalid Request");
                exit;
            }

            // Get range values
            $range = explode(',', $range);
            $range = explode('-', $range[0]);

            // Deal with range values
            if ($range[0] === '') {
                $end = $filesize - 1;
                $start = $end - intval($range[0]);
                $length = $end - $start + 1;
            } elseif ($range[1] === '') {
                $start = intval($range[0]);
                $end = $filesize - 1;
                $length = $end - $start + 1;
            } else {
                // Both numbers present, return specific range
                $start = intval($range[0]);
                $end = intval($range[1]);
                if ($end >= $filesize || (!$start && (!$end || $end == ($filesize - 1)))) {
                    $partial = false; // Invalid range/whole file specified, return whole file
                    $length = $filesize;
                } else {
                    $length = $end - $start + 1;
                }
            }
        }

        if (!$partial) {
            header("Etag: $etag");
        }

        header('Accept-Ranges: bytes');

        if (preg_match("/image.+/", $attachment_data["type"])) {
            header("Content-type: " . $attachment_data["type"]);
            header("Content-Disposition: inline; filename=\"$attachment_data[name]\"");
        } elseif (preg_match("/.*(audio\\/mpeg|audio\\/ogg|video\\/mp4|video\\/webm|video\\/ogg).*/", $attachment_data["type"])) {
            header("Content-type: " . $attachment_data["type"]);
            header("Content-Disposition: inline; filename=\"$attachment_data[name]\"");
        } elseif (preg_match("/.*(application\\/pdf).*/", $attachment_data["type"])) {
            header("Content-type: " . $attachment_data["type"]);
            header("Content-Disposition: inline; filename=\"$attachment_data[name]\"");
        } else {
            header("Content-type: " . $attachment_data["type"]);
            header("Content-Disposition: attachment; filename=\"$attachment_data[name]\"");
        }

        if ($partial) {
            header('HTTP/1.1 206 Partial Content');
            header("Content-Length: $length");
            header("Content-Range: bytes $start-$end/$filesize");
            if (!$fp = fopen($attachment_data["path"], 'rb')) {
                header("HTTP/1.1 500 Internal Server Error");
                exit();
            }

            if ($start) {
                fseek($fp, $start);
            }

            while ($length) {
                set_time_limit(0);
                $read = ($length > 65536) ? 65536 : $length;
                $length -= $read;
                if ($read > 0) {
                    print(fread($fp, $read));
                }
            }

            fclose($fp);
        } else {
            header("Content-Length: $length");
            readfile($attachment_data["path"]);
        }

        exit();
    } // send_attachment_and_exit
...
Рейтинг: 0 / 0
Движок и API дедофорума. Обсуждение. Баги. Тестирование. Задачи.
    #1364882
Фотография Густавсберг
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот тут например даже не удосужилось прислать "Transfer-Encoding: chunked" заголовок явно.
Причём я ещё специально запросил протоколом HTTP/1.0
По спецификации HTTP/1.0 не существует чанкедов.
Спойлер
Код
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
* IPv6: (none)
* IPv4: 188.244.7.47
*   Trying 188.244.7.47:443...
* Connected to nosql.ru (188.244.7.47) port 443
* ALPN: curl offers http/1.1
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384 / secp384r1 / id-ecPublicKey
* ALPN: server accepted http/1.1
* Server certificate:
*  subject: CN=nosql.ru
*  start date: Mar 17 20:52:10 2025 GMT
*  expire date: Jun 15 20:52:09 2025 GMT
*  subjectAltName: host "nosql.ru" matched cert's "nosql.ru"
*  issuer: C=US; O=Let's Encrypt; CN=E6
*  SSL certificate verify ok.
*   Certificate level 0: Public key type EC/secp384r1 (384/192 Bits/secBits), signed using ecdsa-with-SHA384
*   Certificate level 1: Public key type EC/secp384r1 (384/192 Bits/secBits), signed using sha256WithRSAEncryption
*   Certificate level 2: Public key type RSA (4096/152 Bits/secBits), signed using sha256WithRSAEncryption
* using HTTP/1.x
> GET /forum/view_profile.php?uid=1535 HTTP/1.0
> Host: nosql.ru
> Accept: */*
>
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* old SSL session ID is stale, removing
< HTTP/1.1 200 OK
< Server: nginx
< Date: Tue, 25 Mar 2025 18:41:36 GMT
< Content-Type: text/html; charset=utf-8
< Connection: close
< X-Powered-By: PHP/8.3.8
< Expires: Thu, 19 Nov 1981 08:52:00 GMT
< Cache-Control: no-store, no-cache, must-revalidate
< Pragma: no-cache
< Set-Cookie: PHPSESSID=hrvdt98kc0qvre4p3m824tdvtg
...
Рейтинг: 0 / 0
Движок и API дедофорума. Обсуждение. Баги. Тестирование. Задачи.
    #1364884
Фотография Густавсберг
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дед-Скарабей [игнорируется] 

Строка 142 явно не пролазит через базе-конфиг сервера.
...
Рейтинг: 0 / 0
Движок и API дедофорума. Обсуждение. Баги. Тестирование. Задачи.
    #1364886
Фотография Густавсберг
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блять как тут нахуй по сообщению понять, НА КАКОЕ оно отвечает?
Оказывается надо нажать на символ КАВЫЧЕК справа от деда-скарабея
чтобы перейти на пост, на который это является ответом.
Пиздарики!
...
Рейтинг: 0 / 0
25 сообщений из 1 023, страница 17 из 41
Форумы / Вопросы по форуму [закрыт для гостей] / Движок и API дедофорума. Обсуждение. Баги. Тестирование. Задачи.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]