Mishiranu / Dashchan-Extensions

Dashchan extensions
GNU General Public License v3.0
48 stars 29 forks source link

#nulldvachin #1

Open lisanyan opened 8 years ago

lisanyan commented 8 years ago

I suck at intros..

В общем, если файл загружен на pomf.cat, то src получается вида //a.pomf.cat/plapla.webm (линк без протокола) и в итоге аппендится к домену борды. В массиве файла есть ключ external_upload (1/0), можно по нему проверять, и не аппендить линк или добавлять к нему протокол (e.g. "https:" + //a.pomf.cat/plapla.webm).

Еще в апи пару новых фич добавила Удаление постов теперь может отдавать json, параметр ajax=1 в запрос

{
   "error" : {
      "1325" : "Неверный пароль для удаления.",
      "1327" : "Неверный пароль для удаления.",
      "1292" : "Неверный пароль для удаления.",
      "766" : "Неверный пароль для удаления."
   },
   "error_code" : 200
}

При успешном удалении вернет { "redir" : "/b/thread/num" } или если был удален тред { "redir" : "/b/" }

Еще желательно добавлять параметр parent с номером треда к delete task, если пост из треда удаляется, чтобы правильный редирект был.

Список борд теперь можно забирать по /board/api/getboards

Алсо, теги sup/sub в разметку можно добавить и инпут no_pomf (не грузить файлы на внешний сервер) в форму отправки (если не сложно).

Mishiranu commented 8 years ago

У меня чего-то не получается, выдаёт html страницу.

lisanyan commented 8 years ago

Так должно работать

<form id="postform" action="/wakaba.pl" method="post" enctype="multipart/form-data">
<input type="hidden" name="section" value="b">
<input type="hidden" name="task" value="json">
<input type="hidden" name="json" value="authorize">
<input type="text" name="auth" value="">
</forrm>
Mishiranu commented 8 years ago

Лол, а я шлю запрос на b/api/authorize. Попробую тогда.

lisanyan commented 8 years ago

rewrite правило /api/ не работает с POST запросами Оки

lisanyan commented 8 years ago

Well, параметр task тут не нужен.

Mishiranu commented 8 years ago

section, как оказывается, тоже. Ну это логично.

lisanyan commented 8 years ago

section == b, если нет аргумента.

Mishiranu commented 8 years ago

Всё, выпустил 1.4 с поддержкой авторизации.

lisanyan commented 8 years ago

Thanks again

lisanyan commented 8 years ago

Хм, а флаги стран прикрутить можно? Поля location, location_full в объекте поста, geoip_enabled в конфиг объекте, флаги лежат в /img/flags/ (файлнеймы капсом)

И еще auth cookie добавить к /api/thread,/api/threads (клиент же оттуда берет конфиг?) и проверку c authorizedTripcode != null можно убрать тогда, если names_allowed будет отдавать 1.

И тут вроде должно быть int attachmentCount = configObject.optInt("max_files", 4); вместо int attachmentCount = configObject.optInt("max_res", 4);

Mishiranu commented 8 years ago

Хм, а флаги стран прикрутить можно?

Готово

и проверку c authorizedTripcode != null можно убрать тогда

Я, помню, специально делал именно так, как это сделано сейчас, но это было когда ещё кука auth не поддерживалась. Сейчас, наверное, можно убрать эту проверку.

И тут вроде должно быть

Точно, невнимательно копировал же. Сделал нормально.

Всё, заливать обновление, или ещё что-то?

lisanyan commented 8 years ago

Спасибо, пока вроде всё, заливай.

Mishiranu commented 8 years ago

Залил.

lisanyan commented 8 years ago

Оки.

lisanyan commented 7 years ago

Можешь допилить хандлер чтобы показывал ip/причину/срок когда истекает(0 - never)?

Новый апи для банов (return функции поста)

бан as-сети

{
   "banned" : 1,
   "bans" : [
      {
         "showmask" : 0,
         "ip" : "94.242.58.252",
         "reason" : "AS Network is banned",
         "expires" : "0"
      }
   ],
   "error" : "Бан :&lt;",
   "error_code" : 200
}

обычный ip-бан

{
   "banned" : 1,
   "bans" : [
      {
         "network" : "94.242.58.252",
         "showmask" : 0,
         "ip" : "94.242.58.252",
         "reason" : "test",
         "setbits" : 32,
         "expires" : "1468527252"
      }
   ],
   "error" : "Бан :&lt;",
   "error_code" : 200
}

бан dnsbl

{
   "banned" : 1,
   "bans" : [
      {
         "showmask" : 0,
         "ip" : "176.10.104.240",
         "reason" : "This IP was listed in tor.dnsbl.sectoor.de blacklist!",
         "expires" : 0
      }
   ],
   "error" : "Найдена прокси.",
   "error_code" : 200
}

и еще печеньку auth добавь к /api/post.

Mishiranu commented 7 years ago

Готово. Обновлять?

lisanyan commented 7 years ago

Сек, еще вопрос, можно у Icon менять размер шрифта/позицию текста или это в самом клиенте захардкожено?

Mishiranu commented 7 years ago

Не понял. У иконки поста? Что за размер шрифта и позиция текста?

lisanyan commented 7 years ago

У меня на старой мобилке с низкоразрешением не влезала геоинфа в диалоге по клику на флаг (получалось что-то вроде RUSSIAN FEDERATION, SAINT PETERS), пришлось урезать строку до вида RU, Saint Petersburg.

Алсо, функция поста не всегда отдает поле banned, не будет exception из-за того что его нет, или лучше добавить его во все ошибки?

Mishiranu commented 7 years ago

А, да, текст должен быть коротким и влезать в 1 строку. Оно на что-то более серьёзное не было рассчитано.

Mishiranu commented 7 years ago

Алсо, функция поста не всегда отдает поле banned, не будет exception из-за того что его нет, или лучше добавить его во все ошибки?

int banned = jsonObject.optInt("banned", 0);

Не будет. Если оно отсутствует или оно не преобразуется в число — вернёт 0.

lisanyan commented 7 years ago

Тогда окей.

Поиск по борде еще можно прикрутить? /api/search Параметры

find - строка для поиска
op - искать только в оп-постах
comment - поиск по тексту в посте (должен быть 1)
subject - поиск по теме
Mishiranu commented 7 years ago

Тоже готово.

lisanyan commented 7 years ago

Thx~

Обновляй.

lisanyan commented 7 years ago

crash

В общем, если я отключаю флажки на борде, и рефрешу полностью тред (который закешировался с флажками), то клиент вылетает.

Device: Sony Ericsson hallon (MT15i)
SDK: 18 (4.3.1)
Application: 1031 (2.8.0)
----------------------------------------
java.lang.RuntimeException: An error occured while executing doInBackground()
    at android.os.AsyncTask$3.done(AsyncTask.java:299)
    at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
    at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
    at java.util.concurrent.FutureTask.run(FutureTask.java:239)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
    at java.lang.Thread.run(Thread.java:841)
Caused by: java.lang.NullPointerException
    at chan.content.model.Post.contentEquals(Post.java:559)
    at chan.content.model.Posts.pendingMerge(Posts.java:339)
    at com.mishiranu.dashchan.async.ReadPostsTask.doInBackground(ReadPostsTask.java:184)
    at com.mishiranu.dashchan.async.ReadPostsTask.doInBackground(ReadPostsTask.java:1)
    at android.os.AsyncTask$2.call(AsyncTask.java:287)
    at java.util.concurrent.FutureTask.run(FutureTask.java:234)
    ... 3 more
Mishiranu commented 7 years ago

Да, глупая ошибка. Попробуй удали пока что тред из кэша (или вообще кэш очисти), а я сейчас исправлю.

Mishiranu commented 7 years ago

Это ошибка не в модуле, а в клиенте, так что только с его обновлением что-то изменится.

lisanyan commented 7 years ago

Оки.

lisanyan commented 7 years ago

Done.

Mishiranu commented 7 years ago

Эх, я только подумал, что мне будет проще локально у себя их просто убрать для теста, и удалил прошлое сообщение... Ну да ладно.

Mishiranu commented 7 years ago

Да я уже всё проверил. На будущее — лучше создай issue у самого проекта, если подобный вылет происходит, расширение само по себе не может приводить к вылету (нет, ну может конечно, если постараться), а если всё таки приводит — это баг клиента.

lisanyan commented 7 years ago

Получилось пофиксить?

Alrighty.

Mishiranu commented 7 years ago

Да, получилось.

lisanyan commented 7 years ago

API update

Новые поля в конфиге

max_comment_length //Maximum number of characters in a comment
max_field_length //Maximum number of characters in subject, name, and email
default_name //Дефолтный нейм (аноним итд)

Скорость борды (постов в час) - поле board_speed в boardinfo.

Печенька auth переименована в wakaauth

Алсо, категории борд можешь прикрутить? Только я не знаю как их лучше реализовать (чтобы динамически подгружалось), сейчас есть поле board_cat в объекте массива с досками.

Могу добавить пару строк, чтобы делать сплит по "|" в массивы

"info" : {
     "category_order" : "Обсуждения|Общее|Японская культура",
     "board_order" : "a|b|d|diy|elf|h|l|mg|mu"
}

Или добавить сортированные массивы

"info" : {
      "category_array" : [
         "Обсуждения",
         "Общее",
         "Японская культура"
      ],
      "board_array" : [
         "a",
         "b",
         "d",
         "diy",
         "elf",
         "h",
         "l",
         "mg",
         "mu"
      ],
}

UPD: Welp, думаю оставлю массивы UPD: Алсо, добавь капкод мода

adminpost == 1 //capcode - Team
adminpost == 2 //capcode - Mod
Mishiranu commented 7 years ago

max_comment_length

Точно максимальное число символов? Не байт?

lisanyan commented 7 years ago

Байт, но сейчас исправлю.

Mishiranu commented 7 years ago

Печенька auth переименована в wakaauth

А b/api/authorize как работает? Его параметр тоже wakaauth называется или по прежнему auth?

Mishiranu commented 7 years ago

Байт, но сейчас исправлю.

Лол, я сейчас в d пытался пост отправить, мне в качестве кода ошибки возвращалась длина строки. Я так и понял, что ты длину строки тестируешь.

lisanyan commented 7 years ago

Лол, я сейчас в d пытался пост отправить, мне в качестве кода ошибки возвращалась длина строки. Я так и понял, что ты длину строки тестируешь.

Да, лол.

Done, теперь чекает по символам.

Параметр по прежнему auth называется.

Mishiranu commented 7 years ago

Готово всё. Обновлять?

lisanyan commented 7 years ago

Йеп.

lisanyan commented 7 years ago

Можешь альт. домен обновить?

02ch.info мертв, новый - buttflaps.pp.ua

Mishiranu commented 7 years ago

Готово.

lisanyan commented 6 years ago

Сменили движок на meguca (на тохочане тоже), соотвественно апи поменялся, можешь запилить?

Описание здесь Алсо у объекта треда еще поля sticky и locked, но в доке не описаны.