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

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

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

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

Db и Workspace

  • Автор темы wowa
  • Дата начала
W

wowa

Получаю скриптом любую базу данных из директории.
Как определить, есть ли она у меня на Workspace?

Главная задача: удалить старые реплики, которых нет на WorkSpace.
 
W

wowa

И еще один вопрос. Мы имеем репликатор, где содержиться список реплик, реплицируются базы и т.д.... Как к ниму получить доступ и в частности получить список этих баз(реплик)?
 
N

nayke

И еще один вопрос. Мы имеем репликатор, где содержиться список реплик, реплицируются базы и т.д.... Как к ниму получить доступ и в частности получить список этих баз(реплик)?

Получение Реплик БД делал так.. хотя возможно есть стандартные решения
Из АК получаем список всех БД
Код:
Set db = ss.GetDatabase(CurrentServer,"names.nsf")
Set ServerCol=db.Search({form="Server"},Nothing,0)

с помощью метода OpenByReplicaID пробуем открыть БД на полученных серверах. Проверяем объект NotesDatabase is nothing.. и дальше делаем все что угодно(список серверов с репликами, изменение в бд реплики и т.д.)
 
N

nvyush

nayke
Не проще ли и быстрее взять из "names.nsf" представление "($Servers)", чем лопатить всю базу?
 
W

wowa

Получение Реплик БД делал так.. хотя возможно есть стандартные решения
Из АК получаем список всех БД
Set db = ss.GetDatabase(CurrentServer,"names.nsf")
Set ServerCol=db.Search({form="Server"},Nothing,0)

с помощью метода OpenByReplicaID пробуем открыть БД на полученных серверах. Проверяем объект NotesDatabase is nothing.. и дальше делаем все что угодно(список серверов с репликами, изменение в бд реплики и т.д.)
nayke , пару вопросов:

CurrentServer - Что это за сервер? мой локальный?

Не проще ли и быстрее взять из "names.nsf" представление "($Servers)", чем лопатить всю базу?

Открыл локальную базу, и не вижу вью "($Servers)", вижу: "($ServerAccess)" и "($ServerGroups)"
 
N

nvyush

Открыл локальную базу, и не вижу вью "($Servers)", вижу: "($ServerAccess)" и "($ServerGroups)"
Имеется ввиду серверная АК. В локальной и Set ServerCol=db.Search({form="Server"},Nothing,0) ничего не даст, ну нету там серверных документов.
 
W

wowa

Получение Реплик БД делал так.. хотя возможно есть стандартные решения
Из АК получаем список всех БД
Set db = ss.GetDatabase(CurrentServer,"names.nsf")
Set ServerCol=db.Search({form="Server"},Nothing,0)

с помощью метода OpenByReplicaID пробуем открыть БД на полученных серверах. Проверяем объект NotesDatabase is nothing.. и дальше делаем все что угодно(список серверов с репликами, изменение в бд реплики и т.д.)

Не, все-таки мне это скорее всего не поможет. Попробую описать главную (серьезную проблему).

Есть база данных. Пользователь делает реплику, пользуется ею долгое время. Далее он ее удаляет неправильно, тупо на Workspace кликает delete на клаве и всё. Реплика, как вы понимаете, не была удалена и она не реплицируется.
Далее, база на сервере была перенесена в другое место либо не перенесена, я думаю не важно. И тут через несколько месяцев пользователь решает создать новую реплику. При создании лотус находит старую реплику и предлагает старый путь на компе. Пользователю обычно все равно где его реплика находится и нажимает ОК.
Тут главная ошибка, старая реплика начинает реплицироваться и получается очень много конфликтов, лишних документов и т.д....

Дак вот ищу как удалить на стороне пользователя эти старые реплики.

Более идеальный вариант - это найти список локальных баз по реплики и определить, есть ли значок этой базы на Workspace. Последний пункт я не знаю как реализовать. Думаю инфа храниться где-то в Bookmarks
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
Есть база данных. Пользователь делает реплику, пользуется ею долгое время. Далее он ее удаляет неправильно, тупо на Workspace кликает delete на клаве и всё. Реплика, как вы понимаете, не была удалена и она не реплицируется.
Далее, база на сервере была перенесена в другое место либо не перенесена, я думаю не важно. И тут через несколько месяцев пользователь решает создать новую реплику. При создании лотус находит старую реплику и предлагает старый путь на компе. Пользователю обычно все равно где его реплика находится и нажимает ОК.
Тут главная ошибка, старая реплика начинает реплицироваться и получается очень много конфликтов, лишних документов и т.д....

Дак вот ищу как удалить на стороне пользователя эти старые реплики.

Более идеальный вариант - это найти список локальных баз по реплики и определить, есть ли значок этой базы на Workspace. Последний пункт я не знаю как реализовать. Думаю инфа храниться где-то в Bookmarks
вы сами себе придумали геморой вот с этого места база на сервере была перенесена в другое место
Потому как если вы перенесли базу, то сделайте её КОПИЮ а не реплику, тогда всё будет тип-топ

другой вариант - запрет на создание реплики
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
214
есть метод - взять БД по репликИД
notesDatabase.OpenByReplicaID( server$, replicaID$ )
 
N

nvyush

Более идеальный вариант - это найти список локальных баз по реплики и определить, есть ли значок этой базы на Workspace. Последний пункт я не знаю как реализовать. Думаю инфа храниться где-то в Bookmarks
Насколько я помню, информация хранится в Desktop#.ndk. И, если не подводит мой склероз, поместить ярлык базы в рабочую область есть штатные методы, а вот докопаться до имеющихся ярлыков прямых путей нет.
 
W

wowa

вы сами себе придумали геморой вот с этого места база на сервере была перенесена в другое место
Потому как если вы перенесли базу, то сделайте её КОПИЮ а не реплику, тогда всё будет тип-топ

Дак особо разницы нет, перенесена база или нет. Пользователь удалил реплику, через месяц создал новую, а на самом деле открыл старую реплику

другой вариант - запрет на создание реплики

Нельзя. Пользуется весь мир, не у всех хорошая связь, да и база огромная, пару гигов.

есть метод - взять БД по репликИД
notesDatabase.OpenByReplicaID( server$, replicaID$ )

Пока я этим и пользуюсь. Загвоздка в том, вдруг это нормальная реплика, которая постоянно реплицируется и т.д... А мне надо найти старую, давно реплицирующуюся и удалить ее... Возможно есть какое-то свойство реплики, где указано как давно проходила репликация.
 
Мы в соцсетях:

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