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

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

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

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

Доступ внешней Java-программы к данным текущего пользователя Notes

  • Автор темы ses
  • Дата начала
S

ses

Есть Такая задача: Есть на клиенте Lotus Notes clent он конектикся к серверу...
На клиенте же запускается мое Java приложение
Как получить данные из текущей сессии Lotus Notes из моей проги?
Например как узнать какой текущий документ этой сесси?
какими средставами это можно сделать?
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
214
никак (мне не известны методы такой инъекции), похтелка похожа на вирусный код :blink:
это как инъекция в код рабочего приложения
в общем случае это (похтелка) к java не относится вообще

лучеб задачу рассказали, чем своё видение

ежели хотите знать какой док - дергайте свою джаваапликуху (RMI, CORBA, файл), а абстрактно "получать данные" - без предметный разговор
 
S

ses

Просто есть приложение на делфи, я переношу его на java. Только познания в jave нулевые.
А приложения работало следующим образом: при помощи OLE обьекта брался указатель на текщую сессию.
И от туда извлекалсись Имя, Теулущеуу Рабочее пространство, Текущий документ, Текущая БД
 
K

K-Fire

Доступ к Lotus-объектам из OLE и из Java одинаковый с точки зрения объектной модели. Поэтому берите дельфийский код и переносите 1 в 1 в яву.
 
S

ses

Да но тогда вся кросплатформенность исчезает! или я не прав?
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
214
давайте вернемся к задаче...
вот есть клиент Нотуса, в нем открыл юзер документ, потом этот же юзер открывает приложение (строннее), и хочет в нём получить этот док?
Если так - непонятно зачем, если не так - то описание проблемы неточное...
просто получить в джава приложении сессию и открыть базу - нет проблем...
просто из нотусов вызвать джава код (в агенте) и получить нужные данные (в т.ч. тек. док) - тоже не проблема
 
S

ses

Приложение запускается на клиенте с сервера.
В делфи используется указатель на текущую сессию потому новая не создается... Соответсвенно в приложении доступна база.
Без ole обьектов в java приложении я так сделать я понял не смогу.... Тоесть полюбому придется создавать новую сессию?
А значит спрашивать имя пароль?
Да не ответил зачем.
Приложение запущенное на клиенте является связуещим звеном между Лотусовской бозой и sql ной
Берет данные из Лотуса и поним изменяет определенные на sql ном.
 
K

K-Fire

Хех, задача в старом виде решена наихудшим методом из всех возможных :rolleyes:

По правильному задача должна решаться так (варианты):
1) Использовать LEI или DECS
2) Использовать java/LotusScript агент, который на сервере обрабатывает изменившиеся документы и апдейтит SQL базу

Оба этих решения в разы проще чем писать отдельную программу синхронизации для клиентов.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
214
я опять не пойму...
почему не запустить клиента Нотус, ведь он всё-равно установлен?
И там сделать java агента, кот. выполнит поставленную задачу
Второй вариант - запускать агента на сервере
Третий - писать соединение по IIOP - тогда воще не нужен Нотус клиент на воркстанции
 
S

ses

Нотус клиент решает свои задачи...
Он запущен. Если в нем открывается определенный документ вызывается мое приложение.
От куда есть доступ сразу к 2м базам! Причем это не просто агент который должен апдейтить базу... Сложная полноценная програмина.
Счас переношу на java и ипользую diiop. Проблема в следущем! Программа должна быть полностью автоматизированна... Но как можно все это сделать не используя новую сессию? или так чтобы не приходилось спрашивать пароль юзера.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
214
если агент на сервере или на клиенте - пароль не будут спрашивать
если diiop - тоже (пароль передаётся в сессии)
агент ничем не отличется от программы (тотже код)
Ещё раз - нет смысла в написании внешней программы

уже не раз, здесь, говорил о возможности положить jar в jvm/lib/ext и работать с перманентными объектами

для iiop по шифрованному каналу - надо в путя (класспаз) положить TrustedCerts.class (взять с сервера, он генерится при запуске diiop)

Java:
/**
*
*/
package org.ldn.authority;

import lotus.domino.NotesFactory;

import lotus.domino.Session;

/**
* @author mike
*
*/
public class IIOPSession implements Runnable {
    
    /**
    *
    */
    String host = null, user = "", pwd = "";
    
    public IIOPSession(String argv[]) {
        // TODO Автоматически созданная заглушка конструктора
        host = argv[0];
        if (argv.length >= 2)
            user = argv[1];
        if (argv.length >= 3)
            pwd = argv[2];
    }
    
    /**
    * @param argv
    */
    public static void main(String[] argv) {
        // TODO Автоматически созданная заглушка метода
        if (argv.length < 1) {
            System.out.println("Need to supply Domino server name");
            return;
        }
        //Class.forName("TrustedCerts");
        IIOPSession t = new IIOPSession(argv);
        Thread nt = new Thread((Runnable) t);
        nt.start();
    }
    
    public void run() {
        // TODO Автоматически созданная заглушка метода
        try {
            //String args[] = new String[3];
            //args[1] = "-ORBDebug";
            //args[2] = "-ORBCommTrace";
            String args[] = new String[1];
            args[0] = "-ORBEnableSSLSecurity";
            
            Session s = NotesFactory.createSession(host, args, user, pwd);
            //Session s = NotesFactory.createSession(host, user, pwd);
            
            String p = s.getPlatform();
            System.out.println("Platform = " + p);
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
    
}
 
S

ses

хм.... при diiop пароль передается в сесси? тоесть пароль придется вшить в код?
а если приложение будет запускаться на разных компьютерах с разными учетками?
Как передавать пароль?
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
214
вы издеваетесь :)?
-если надо чтобы исполнялось с правами клиента - делайте код из-под клиента (а не отдельное приложение)
-есть сервисы хранения паролей (кейчейны всякие)
 
S

ses

не издеваюсь =) я просто не знаю первый раз сталкиваюсь
скорее всего буду тогды агента делать. спасибо убедили)
кейчейкины? хм... а по подробней?
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
214
например вот
 
Мы в соцсетях:

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