• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Выгрузка лотусовых данных в sugarCrm

Mikle_GB

Lotus Team
07.07.2016
68
25
BIT
46
Друзья, если кто-нибудь занимался сабжем, прошу откликнуться!
Требуется организовать периодическую выгрузку в шугар, вариантов что-то дописать в шугаре нет. Как я понимаю, единственный рабочий вариант - доступ через web api поправьте если ошибаюсь.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
177
свяжитесь с саппортом на предмет REST API описания
далее берем java и шлем/получаем что нам нужно
 

Mikle_GB

Lotus Team
07.07.2016
68
25
BIT
46
Спасибо, тёзка, я знал, что ты скажешь JAVA:) а другие варианты связи с шугаром реальны?
Ещё поясни плз, зачем саппорт - ведь api известно ( link removed
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
177
Спасибо, тёзка, я знал, что ты скажешь JAVA:) а другие варианты связи с шугаром реальны?
Ещё поясни плз, зачем саппорт - ведь api известно ( )
не совсем понял про другие варианты...
давай по-порядку:
  • эта ЦРМ писана на пыхе и экзампелы (по ссылке) для него же. Разгребать пыховый код, вычленяя из него JSON - не самое благодарное занятие
  • если у саппорта есть примеры JSON для работы (а они должны быть) - то адаптировать их будет легче
  • java прекрасно (эффективнее всего остального) справляется с общими задачами (не специфичными) и это подтверждает её подавляющая распространенность (как бы это кому не нравилось)
не хватит штатного отправлялщика и обработчика хттп запросов - существует 100500 библиотек (разной степени сложности)
все что надо - отправить хттп запрос и распарсить ответ - какие еще могут быть варианты кроме java? (если мы говорим о платформе LDN)
 

Mikle_GB

Lotus Team
07.07.2016
68
25
BIT
46
Конечно, LND. Тут уж точно без вариантов.
не совсем понял про другие варианты...
Вот и я не знаю - кроме этого АПИ какие-то способы вмандить документы в Шугар имеются ли? файлы, емайл, прямая запись в СУБД - теоретически варианты есть. Потому и интересуюсь, знает ли кто толк в извращениях.

все что надо - отправить хттп запрос и распарсить ответ - какие еще могут быть варианты кроме java? (если мы говорим о платформе LDN)
Какие варианты вообще или реальные? вообще - есть web service customer; mssoap; ls2j. А реальные - я не в курсе, не занимался раньше.
Ты мог бы живой пример java агента такого рода дать? Мне просто в тему джавы придётся долго въезжать, а ещё и с шугаром наверняка не всё гладко пойдёт.
 

garrick

Lotus Team
26.10.2009
1 349
151
BIT
164
Структура базы известна? Или хотя бы разобраться в ней реально? Если "да", то подключаемся к базе и заливаем туда всё что угодно. Если "нет", то только импорт данных через само SugarCRM, встроенными средствами. То API, что по ссылке - полная лажа. Ищи что-нибудь вроде этого
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
177
@garrick ну в хехель то писать придется, а потом его аплоадить - опять http
Ты мог бы живой пример java агента такого рода дать?
такого рода - это типа http запрос отправляющего?

отправка и парсинг, использует апачевскую реализацию
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
177
пример без использования внешних либ, кот. делает post на сервер
Java:
import lotus.domino.*;
import java.io.*;
import java.net.*;
import java.util.*;

public class JavaAgentExample extends AgentBase {

    public void NotesMain() {

        try {
            Session session = getSession();
            AgentContext agentContext = session.getAgentContext();
            Database db = agentContext.getCurrentDatabase();
            View view = db.getView("[VIEWNAME]");
            DocumentCollection dc = view.getAllDocumentsByKey("[CATEGORYVALUE]", true);
            int ndocs = dc.getCount();

            int i = 0;
            Document doc = dc.getFirstDocument();
            while( doc != null ) {
                i++;
                String field1 = doc.getItemValueString("field1");
                String enc_field1 = URLEncoder.encode(field1);
//(more fields)
                String content= "field1=" + enc_field1;//+"&&enc_field2="+enc_field2+...(more params);
                URL url = new URL("[URL]");
                HttpURLConnection connection = (HttpURLConnection)url.openConnection();
                // Sets the request method to POST, and enable to send data
                connection.setRequestMethod("POST");
                connection.setAllowUserInteraction(false);
                connection.setDoOutput(true);
                connection.setDoInput(true);
                connection.setUseCaches(false);
                // Sets the defaul Content-type and content lenght for POST requests
                connection.setRequestProperty( "Content-type", "application/x-www-form-urlencoded" );
                connection.setRequestProperty( "Content-length", Integer.toString(content.length()));

                DataOutputStream out = new DataOutputStream (connection.getOutputStream ());
                out.writeBytes (content);
                out.flush ();
                out.close ();
                connection.disconnect();

                BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
                String line;
                while(null != (line = in.readLine())) {
                    System.out.println(line);
                }

                String title = db.getTitle();
                System.out.println("Current database is \"" + title + "\"");

                doc = dc.getNextDocument();
            }


        }catch(NotesException ne) {
            System.out.println("NotesError " + ne.text);}catch(Exception e) {
                e.printStackTrace();
            }
    }
}
адрес, разумеется и параметры логина и пароля - надо по контексту задать (зависит от того как сервер принимает запорсы и аутентификацию, в т.ч.)
например, при интеграции с Zoho мне нужно было генерить токен и передавать его в отдельном запросе
делал на хехеле VBA - много матерных слов вырывалось про COM и прочую хню от МС, ибо перехват ошибок из мсхмл... коряв, ЯП убогий...
 

Mikle_GB

Lotus Team
07.07.2016
68
25
BIT
46
Структура базы известна? Или хотя бы разобраться в ней реально? Если "да", то подключаемся к базе и заливаем туда всё что угодно. Если "нет", то только импорт данных через само SugarCRM, встроенными средствами. То API, что по ссылке - полная лажа. Ищи что-нибудь вроде этого
К сожалению, база даже не у нашего клиента, а у каких-то немцев - за семью печатями, за семью паролями. Никаких шансов туда влезть нету. Про импорт данных я читал, но это ручная операция, если даже её можно по расписанию вызывать (хотя я не знаю, как) - всё равно нам не дадут. Все работы только на нашей стороне, в лотусах.
Объясни пожалуйста, почему апи по лажа? Функций мало, но вроде бы и создавать и модифицировать записи можно.
 

garrick

Lotus Team
26.10.2009
1 349
151
BIT
164
К сожалению, база даже не у нашего клиента, а у каких-то немцев - за семью печатями, за семью паролями. Никаких шансов туда влезть нету.
Что мешает поставить себе такую же? Даже если она сильно "перепилена" под конкретного заказчика, всё равно основные таблицы и поля в них должны соответствовать оригиналу.
Объясни пожалуйста, почему апи по лажа? Функций мало, но вроде бы и создавать и модифицировать записи можно.
Это API для PHP. Можно написать процедуры и запускать их только на том же сервере, где установлен SugarCRM. Даже если ты сможешь это сделать, в чём я сильно сомневаюсь в связи с вышеизложенным ("у каких-то немцев - за семью печатями"), то остаётся вопрос: "Кто-нибудь умеет из PHP лазить в Lotus Notes?". Я думаю, следует у этих самых немцев официально запросить возможность писать что-то в их систему, а заодно и способ как это сделать. А то будут потом разборки: "Чего это вы тут нам понаделали?" Ещё мне видится другой вариант - эмитировать отправку формы с заполненными данными по HTTP. Потому как, опять же в связи в вышеизложенным, подозреваю, что прямой доступ к СУБД отсутствует.
 

garrick

Lotus Team
26.10.2009
1 349
151
BIT
164
Про импорт данных я читал, но это ручная операция, если даже её можно по расписанию вызывать (хотя я не знаю, как) - всё равно нам не дадут.
Операция с ручным приводом, но при наличии соответствующих прав, сможешь выполнять её самостоятельно. Там же всё через браузер работает, по HTTP.
 

Mikle_GB

Lotus Team
07.07.2016
68
25
BIT
46
Это API для PHP. Можно написать процедуры и запускать их только на том же сервере, где установлен SugarCRM.
Я так понял, что апи один, просто пример на пыхе. А в принципе всё что нужно - это собрать правильную строку подключения и передать запрос:
"user_auth": {"user_name":"user","password":"somemd5hash","version":"1.0"},"application_name":"RestTest"}
получить из ответа сессию и работать дальше:
"session":"sessNum", "module_name":"contacts", "name_value_list":{"name":"newName","value":"newValue"}}

Поправьте, пожалуйста, если ошибаюсь!

остаётся вопрос: "Кто-нибудь умеет из PHP лазить в Lotus Notes?"
Кувшинников умеет :)
но мне надо фарш в обратную сторону крутить, добираться из шугара в лотус не дадут, да и квалификации у меня такой нет.

Операция с ручным приводом, но при наличии соответствующих прав, сможешь выполнять её самостоятельно. Там же всё через браузер работает, по HTTP.
Намекаешь на возмжность рулить импортом программно? мне кажется, это сложнее в реализации, но если апи не прокатит по возможнстям или быстродействию - отчего бы и нет! спасибо за идею.
 
Последнее редактирование:
Мы в соцсетях:

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