Отловить ошибку Http

NetWood

Lotus team
17.04.2008
372
19
#1
Вот такая загогулина :ph34r:
По WQO агент заполняет RTF поле Html кодом.
В коде встречаются конструкции типа <img src="pages/unsorted/$File/oem1.jpg" alt="" border="0">
Все бы ничего, но бывает (лог пас не тот), что доступ к доку pages/unsorted закрыт полем READERS и /$File/oem1.jpg не отображается по понятным причинам.
Соответственно в логах видим
HTTP Web Server: Lotus Notes Exception - Entry not found in index [/base.nsf/pages/unsorted/$File/oem1.jpg]

Вопрос. Как бы эту "ошибку" отловить заранее в агенте LS чтоб вывести какую нить мессагу или другой html подсунуть?
может проверить есть ли доступ к доку у соответствующего юзера заранее? во?

ку:
Кусочек кода такой
Код:
				If ( rtitem.Type = RICHTEXT ) Then
Forall o In rtitem.EmbeddedObjects
If ( o.Type = EMBED_ATTACHMENT ) Then
''	Messagebox ( o.Name )
'''' вот тут надо по условию заранее отловить 	HTTP Web Server: Lotus Notes Exception - Entry not found in index 
out = out +|<a title="|+vDoc.Category2(0)+|" href="pages/|+Cstr(vDoc.PageName(0))+_
|?open&start=1&count=|+Cstr(profile.getItemValue("DefaultDisplayCount")(0))+_
|"><img src="pages/| +Cstr(vDoc.PageName(0))+ |/$File/| + Cstr(o.Name) + |" alt="| + Cstr(vDoc.Title(0)) + |" border=0 ></a>|+|<BR>|						
End If
End Forall
End If
 
K

K-Fire

#2
Самый простой способ, ИМХО, перенести картинки в документы с общим доступом.
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 231
18
#3
может проверить есть ли доступ к доку у соответствующего юзера заранее? во?
конечно есть
Код:
level% = notesDatabase.QueryAccess( name$ )
privileges& = notesDatabase.QueryAccessPrivileges( name$ )
roles = notesDatabase.QueryAccessRoles( name$ )
получите по юзеру всё что требуется и роли и доступ
ну или на крайняк если всё явно в доке, придется проверить ридерс поле на присутствие имени
 

NetWood

Lotus team
17.04.2008
372
19
#5
Сэнкс но это не годится. Нужен доступ к конкретному доку а не к базе.
Покуда вот так заткнул

Код:
	Set dbreggroup = web.session.GetDatabase("",profile.GetItemValue("NABGroupFile")(0))
Set viewreg=dbreg.GetView("($VIMGroups)")
...

If ( rtitem.Type = RICHTEXT ) Then
Forall o In rtitem.EmbeddedObjects
If ( o.Type = EMBED_ATTACHMENT ) Then
''	Messagebox ( o.Name )	
'' ===========================================
'' устранение ошибки нет доступа к имеджу если док под Readers 
'' если AuthorizedReaders пустое - выводим картинку
''если AuthorizedReaders не пустое - ищем юзера в группе и выводим img

user= Cstr(web.session.DocumentContext.Remote_User(0)) ' имя юзера, Anonymous = ""							
If vDoc.AuthorizedReaders(0)="" Then	
nomemb = True
Else								
'' проверить наличие юзера в группе доступа к доку
Forall dr In vDoc.AuthorizedReaders
Set docUserGroup = viewreg.GetDocumentByKey(dr,True) ' найти группу с юзерами
If Not (docUserGroup Is Nothing) Then ' в этой группе ищем юзера
Forall memb In docUserGroup.Members
If user = memb Then												
ismemb = True '' попался голубец
Else											
End If
End Forall
End If								
End Forall	
End If
'' =============================================	
If ismemb Or nomemb Then '' доступ возможен по readers и анонимусу								
out = out +|<a title="|+vDoc.Category2(0)+|" href="pages/|+Cstr(vDoc.PageName(0))+_
|?open&start=1&count=|+Cstr(profile.getItemValue("DefaultDisplayCount")(0))+_
|"><img src="pages/| +Cstr(vDoc.PageName(0))+ |/$File/| + Cstr(o.Name) + |" alt="| + Cstr(vDoc.Title(0)) + |" border=0 ></a> |+|<BR>|													
Else '' все остальные пошли нафиг
out = out +_
|<table width="100%"><tr><td align="center" class="REDALERT" width="100%"><span>|+_
... строгая надпись...
|</span></td></tr></table>|													
End If								
End If
End Forall
End If
роль не проверяю...
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 231
18
#6
ну ладно, узнали мы, что нету доступа, а дальше?
как WQO агенту сказать, что делать дальше?
а что мешает запускать агент от лица сервера или того кто имеет доступ?
тогда и проверять ничего не нужно
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#7
а что мешает запускать агент от лица сервера или того кто имеет доступ?
тогда и проверять ничего не нужно
даже если это возможно (не пробовал)
не понял, а как это меняет суть дела?
Тоха, читай внимательнее
В коде встречаются конструкции типа <img src="pages/unsorted/$File/oem1.jpg" alt="" border="0">
... но бывает ..., что доступ к доку pages/unsorted закрыт полем READERS и /$File/oem1.jpg не отображается по понятным причинам.
Соответственно в логах видим
HTTP Web Server: Lotus Notes Exception - Entry not found in index [/base.nsf/pages/unsorted/$File/oem1.jpg]
доступ нужен не в агенте, а из броузера
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 586
272
#8
есть редайрект. есть форма ошибок ($$ReturnGeneralError), где можно писать и редайректить куда хошь
как пример, поле: @If(@Like(@LowerCase(messagestring);"document%deleted");"1";"0")
в завис. от него формируем HTML Header Content:
@If(newpath!="";"<META HTTP-EQUIV=\"Refresh\" Content=\"0; URL="+newpath+"\">";"")

можно контент забирать по адресу и парсить