Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

atob(не_base64) стопорит скрипт Throw error'ом #6

Closed
username1565 opened this issue Feb 12, 2019 · 5 comments
Closed

Comments

@username1565
Copy link

username1565 commented Feb 12, 2019

Посты, содержащие [xmg=не_base64], [img=не_бейс64], [file]не_base64[/file],
и возможно ещё что-то - ложат наноборду.
Они - не отображаются, и их нельзя удалить из-за того,
что throw-error останавливает выполнение скрипта.

Этот баг уже был описан здесь, и здесь

Я использую nanoboard-portable-1.3.2.zip и для себя, я решил этот вопрос следующим образом:

  1. Запустил наноборду, прогрузил всё, безуспешно попытался зайти в категорию test.
    Там внутри - посты с тегами, без бейса.
  2. Пошёл в консоль браузера (клавиша F12), увидел имя скрипта, номер строки и символ.
  3. Пошёл в папку \lib\
  4. Распаковал там jar-файл - nanoboard-server.jar , используя 7-zip.
  5. Пошёл в папку: \nanoboard-portable-1.3.2\lib\nanoboard-server\webapp\scripts\0dd95fa0-a4f8-4117-bdf9-6fba998771b3.js
  6. Нашёл там один единственный вызов функции atob в строке 1538, на символе 75:
h=Gf(Hf()).atob(d);
  1. Заменил всю функцию на это:
//check is base64 without throw error
function isBase64(str) {//return true, or false
    if(str==='' || str.trim()===''){return false;}//if string is empty or not contains base64 characters
    try {
        return btoa(atob(str)) == str; //true if base64
    } catch (err) {
        return false;
    }
}
function vA(h,d,a){
	h=(isBase64(d)) ? Gf(Hf()).atob(d) : d;
	h=lF(hd(),h);d=[];for(var b=0,c=h.b.length;b<c;)d.push(h.b[b]<<24>>24),b=1+b|0;return jv(0,n(G(Bd),d),a)
}
  1. Сохранил 0dd95fa0-a4f8-4117-bdf9-6fba998771b3.js,
    потом выключил наноборду,
    и обновил JAR-файл, как 7z-архив. Просто добавил этот файл, используя 7z.
  2. Запустил наноборду снова, двойным кликом по nanoboard.bat,
    но я всё ещё видел atob-error в консоли.
  3. Я также видел старый скрипт 0dd95fa0-a4f8-4117-bdf9-6fba998771b3.js, без исправлений,
    в кэше браузера Google Chrome.
  4. Поэтому страница наноборды - была обновлена, с обновлением кэша хрома (Ctrl+Shift+R)
  5. Теперь ошибки нет, посты все видно, и их можно удалить...

Вот эти посты:

946d50e33c413a93d7c963424e0846d9

// $('#result').text('[xmg='+res.substring(res.indexOf(',')+1)+']');

  • throw-error функции atob : [xmg=не_base64]

$('#result').text('[file name="'+file.name+'" type="'+file.type+'"]'+res.substring(res.indexOf(',')+1)+'[/file]');

  • throw-error функции atob: [file]не_base64[/file]

c19a06c128f78e5946014883bc018dd9

'[file name="filename.extension" type="mime-type"]BASE64-CONTENT[/file]'

  • throw-error функции atob: [file]не_base64[/file]

4dcf53a58e839e8fddce6959222ed675

Просьба перепаковать nanoboard-portable-1.3.2.zip потому что контейнер с этими постами - висит на доброчане.

@AHOHNMYC
Copy link

Перевожу с русского на русский.
Добавь обработку исключений вот тут.

@username1565
Copy link
Author

bump

1 similar comment
@username1565
Copy link
Author

bump

@username1565
Copy link
Author

Бамп

@username1565
Copy link
Author

Бабамп!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants