• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Сохранить из @ HTML в страницу...?

NetWood

Lotus Team
17.04.2008
545
93
BIT
8
Задачка. Есть тяжеловесная конструкция на собаках. Лукапов штук пять шесть восемь... Вычисляет меню на сайте. Несколько собак надо, иначе не влезает в ограничение текста.
Вроде как надо один раз вычислить и потом брать готовое статиком. Тоха такое любит. При необходимости пересчитать. Иначе это по скорости самая затратная операция на странице.

Типа такого на подформе и так несколько раз
Код:
cat :="Рога и копыта";
cat2a := @DbLookup("":""; ""; "(LookupCategory2)";cat; 5);
cat2a := @If(@IsError(cat2a);"";cat2a);

cat2 := @DbLookup("":""; ""; "(LookupCategory2)";cat; "Category2");
cat2 := @If(@IsError(cat2);"";cat2);

cat_ :="";
n := 1;
    @DoWhile(
        @Do(
            cat3 := "<li>"+@DbLookup("":""; ""; "(LookupCategory_Category2)";cat +"_"+cat2[n]; 4)+"</li>";
            cat3 := @Trim(@If(@IsError(cat3);@Nothing;cat3));
            cat2li := "<li>":cat2a[n];
            cat3ul:= @If(cat3=@Nothing;@Nothing;"<ul>":cat3:"</ul>");
            cat_ := cat_:cat2li:cat3ul:"</li>"
        );
        n := n + 1;
    n <= @Elements(cat2)
);

@Implode(cat_;@NewLine)

Как бы ее один раз вычислить и сохранить в страницу дизайна? Ну или в страницу html. Вычислил, сохранил и я потом ее аяксом заберу.
Понятно, что агентом, но переписывать с собак лениво. Может есть изворотливый способ?
Надо мне с Вами поговорить. Обычно нахожу решение сам, но что-то подтупливаю... На странице дизайна же полей нет.
Собственно вопрос как из собак статик html автоматом сохранить.
 
Последнее редактирование:

savl

Lotus Team
28.10.2011
2 597
310
BIT
180
я правильно понимаю, что требуется сделать некий html шаблон, куда надо вставлять значения?
И что этот шаблон хочется получить из готовой страницы?
или нужно что-то иное?
 

NetWood

Lotus Team
17.04.2008
545
93
BIT
8
Не совсем. Шаблона нет. Он формируется из собак. Хочется страницу получить вычисленную из собак. Поскольку содержимое меню может меняться, то шаблон не очень подходит.
По факту я эту страницу генерю каждый раз и забираю аяксом. А можно же из готовой статиком.
 

savl

Lotus Team
28.10.2011
2 597
310
BIT
180
Не совсем. Шаблона нет. Он формируется из собак. Хочется страницу получить вычисленную из собак. Поскольку содержимое меню может меняться, то шаблон не очень подходит.
По факту я эту страницу генерю каждый раз и забираю аяксом. А можно же из готовой статиком.
а вычисления всегда разные или есть 5-6 наборов постоянных?
 

NetWood

Lotus Team
17.04.2008
545
93
BIT
8
Уточню задачу. Сделал спец форму и вычисляю меню в документе, с перспективой вынуть из него. Сделал набор полей с вычисляемыми формулами как выше...
Это работает, НО! то, что работало на вычисляемом тексте на подформе, натыкается на 32 к в поле. Сама менюха около 150k. Считается 200мсек.
 
Последнее редактирование:

duchan

Green Team
20.09.2006
127
11
BIT
110
У меня была похожая задача, генерил на сабаках html, но для показа в карточке, и так же напоролся на 32К. Обошел следующим образом: создал несколько полей с приставками в конце "_0"-"_9"(у меня они вычисляемые для показа сами на себя [@ThisValue], т.к. мне их не надо хранить - Вам простые поля, чтоб сохранялись в доке), в отдельном поле считаю html, заводим счетчик = изначально 0, html генерится циклами и на каждой итерации, проверяю размер получившегося html, если он превышает 16К (русские буквы то у нас 2 байта), то сбрасываю html в поле с "_"+счетчик, счетчик+1, html="", и пошли на новый круг. в конце остаток html в новое "_"+счетчик поле...
по итогу html сгенерирован, но по кускам лежит в 10 полях, сшить которые, для показа, уже без проблем....
 
  • Нравится
Реакции: VladSh и NetWood

NetWood

Lotus Team
17.04.2008
545
93
BIT
8
html генерится циклами и на каждой итерации, проверяю размер получившегося html, если он превышает 16К (русские буквы то у нас 2 байта)
Да, это оно. И борьба за 50-100мсек, чтобы было быстрее. Или забить или потом переписать...
duchan а не осталось ли с той задачки потрохов, глянуть на расстановку "знаков препинания" ?
 
Последнее редактирование:

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
215
если вычисляется один раз - зачем собаками?
 

NetWood

Lotus Team
17.04.2008
545
93
BIT
8
если вычисляется один раз - зачем собаками?
Ну так проще было. И не совсем один раз. Менюшка же меняться может. Вот тут подумалось, что можно этот огород вычислять по-прежнему и простым агентом из урла запихивать в RTF и потом как из дока доставать...
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
215
Ну так проще было. И не совсем один раз. Менюшка же меняться может. Вот тут подумалось, что можно этот огород вычислять по-прежнему и простым агентом из урла запихивать в RTF и потом как из дока доставать...
да и сделать на ЛС, тогда не будет заморочек с ограничениями
 
  • Нравится
Реакции: VladSh

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
да ну, что-то вы без энтузиазма ;)

собачки с лукапами можно сделать и вот так @GetDocField или @GetProfileField берём значение которое заранее рендерит агент по расписанию, или раз в день ;)
особенно для меню, которое порой пересчитать нужно только при изменении дока и его свойств

ну и чистая статика, агент накидывает в поля Field_Х сам нарезая по 16К
 
  • Нравится
Реакции: VladSh

NetWood

Lotus Team
17.04.2008
545
93
BIT
8
вот так @GetDocField или @GetProfileField
О да! С @GetProfileField отдельный карнавал.
Покуда переписывать лениво, я с менюшкой сделал так: Вначале загружается шапка. Она статичная. А потом гружу в нее уже аяксом вычисляемые кишки.
Код:
$(function() {
        Link ='doSub?readform&sub=menu';
         $.get(Link, function(htmlStr) {
            // insert menu structure
            $('#main-menu').html(htmlStr);
            // SmartMenus initialization code
            $('#main-menu').smartmenus();       
        }); 
    
});
Ведь сразу ломиться в меню никто не будет. Получается, что страница грузится влет, а танки подходят позже.

Спасибо. Приятно пообщался со сторожилами ).
 
Последнее редактирование:
  • Нравится
Реакции: VladSh

rinsk

Lotus Team
12.11.2009
1 151
125
BIT
4
Уточню задачу. Сделал спец форму и вычисляю меню в документе, с перспективой вынуть из него. Сделал набор полей с вычисляемыми формулами как выше...
Это работает, НО! то, что работало на вычисляемом тексте на подформе, натыкается на 32 к в поле. Сама менюха около 150k. Считается 200мсек.
150 к менюха??? Может в json на бэк отдавать - а там отрисовывать уж..
И да - лучше хранить все в профильных докахб которые вычисляются 1 раз...
Еще вариант - динамический запрос и сохранение в localStorage браузера. Я так храню много чего с сервера. списки для select и т.д.
 

rinsk

Lotus Team
12.11.2009
1 151
125
BIT
4
О да! С @GetProfileField отдельный карнавал.
Покуда переписывать лениво, я с менюшкой сделал так: Вначале загружается шапка. Она статичная. А потом гружу в нее уже аяксом вычисляемые кишки.
Код:
$(function() {
        Link ='doSub?readform&sub=menu';
         $.get(Link, function(htmlStr) {
            // insert menu structure
            $('#main-menu').html(htmlStr);
            // SmartMenus initialization code
            $('#main-menu').smartmenus();      
        });
   
});
Ведь сразу ломиться в меню никто не будет. Получается, что страница грузится влет, а танки подходят позже.

Спасибо. Приятно пообщался со сторожилами ).
Вот верно :)
и бегать постояноо не надо на сервер - хранить в localStorage в ключе типа user+role+трампампам
я использую JStorage - GitHub - andris9/jStorage: jStorage is a simple key/value database to store data on browser side
 
  • Нравится
Реакции: NetWood

NetWood

Lotus Team
17.04.2008
545
93
BIT
8
Спасибо за подгон! Изучнул ее слегка. Так она ключи в открытом виде хранит в локалсторадж. Возникла мысль для авторизации использовать, но... И яблоки относятся к ней приватно...
Я намедни пильнул регистрацию и авторизацию без пароля только по кодам на email. Пароли автоматом генерятся и хранятся не на локал. Само понятие логин исчезло, так как он 123@321.com=123_321_com и в интернете уникален. На каждое действие в браузере выдаться ключ из ID, которых у нас полная база. А при реге аж два. SSO LtpaToken или single DomAuthSessId без разницы. Ну там куки задействованы, естественно, и автологин...
Вот эту либу можно еще сверху для секюритности подумать как повесить.
 
Последнее редактирование:

rinsk

Lotus Team
12.11.2009
1 151
125
BIT
4
Спасибо за подгон! Изучнул ее слегка. Так она ключи в открытом виде хранит в локалсторадж. Возникла мысль для авторизации использовать, но... И яблоки относятся к ней приватно...
Я намедни пильнул регистрацию и авторизацию без пароля только по кодам на email. Пароли автоматом генерятся и хранятся не на локал. Само понятие логин исчезло, так как он 123@321.com=123_321_com и в интернете уникален. На каждое действие в браузере выдаться ключ из ID, которых у нас полная база. А при реге аж два. SSO LtpaToken или single DomAuthSessId без разницы. Ну там куки задействованы, естественно, и автологин...
Вот эту либу можно еще сверху для секюритности подумать как повесить.
Ну если пароли в MD5 \etc храниятся, пофиг где хранить.
А вот при SSO можно генерить штатный LtpaToken и даже если юзера нет нигде в ак, он будет виден доминой и можно использовать. Имя юзера без разницы.
 

NetWood

Lotus Team
17.04.2008
545
93
BIT
8
А вот при SSO можно генерить штатный LtpaToken и даже если юзера нет нигде в ак, он будет виден доминой и можно использовать. Имя юзера без разницы.
Уже читаю https://codeby.net/threads/smena-sostojanija-polzovatelskoj-veb-sessi.56756/ . Надо обнять эту инфу. Яву не люблю.
То бишь если включен SSO и сгенерить LtpaToken и подсунуть его в куки, то Domino это слопает без пароля и без юзера в AK или в DA?
 
Последнее редактирование:

rinsk

Lotus Team
12.11.2009
1 151
125
BIT
4
  • Нравится
Реакции: NetWood

NetWood

Lotus Team
17.04.2008
545
93
BIT
8
И вот интересная вещь обнаружилась #хозяйкеназаметку. Я уже тут напишу коль разговор пошел...
Обнаружил по ходу тестов, что на Хроме и Edge LtpaToken не ставится в куки на тестовый сервер у которого домен без точки. Скажем, если домен test - не работает. test.ru - работает.
Голову сломал, чего не работало на тестовом сервере.
На DomAuthSessId такой проблемы нет, так как нет директивы домена.
1644703339737.png

А на FireFox все работает. Куки LtpaToken прекрасно ставятся и на тестовом домене и на боевом. Такие дела...
 

rinsk

Lotus Team
12.11.2009
1 151
125
BIT
4
И вот интересная вещь обнаружилась #хозяйкеназаметку. Я уже тут напишу коль разговор пошел...
Обнаружил по ходу тестов, что на Хроме и Edge LtpaToken не ставится в куки на тестовый сервер у которого домен без точки. Скажем, если домен test - не работает. test.ru - работает.
Голову сломал, чего не работало на тестовом сервере.
На DomAuthSessId такой проблемы нет, так как нет директивы домена.
Посмотреть вложение 57017
А на FireFox все работает. Куки LtpaToken прекрасно ставятся и на тестовом домене и на боевом. Такие дела...
Имхо - SSO ключ ставится именно на домен и оно вообще не должно работать если FQDN хоста не <host>.<domain>
В данном случае тестовый сервер должен адресоваться как test.local например и SSO должно выдаваться на .local.
Короткое имя - пережиток NetBios )))
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!