На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты

GIS Server

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: 1 2 След.
RSS
GIS Server, Не разрешает подключить пользователя
 
Var
res : integer;
res1 : boolean;
begin
// Здесь открываем нужную карту
res := form_main.MapGisServer1.OpenConnect('194.247.15.147',2047);
ShowMessage ('res = '+IntToStr(res)); // Результат res = 1

res1 := form_main.MapGisServer1.RegisterUser(1,'GUEST','GUEST'); // Результат Доступ для пользователя не разрешен - GUEST
ShowMessage ('res1 = '+BoolToStr(res1)); // res1 = 0

В тоже время программа ГИС Панорама с этого же компьютера регистрирует пользователя GUEST с паролем GUEST хорошо.

Что я делаю не правильно.
Screenshort1.PNG (29.54 КБ)
 
Ответ на Ваш вопрос содержится в описании используемого Вами метода TMapGisServer.RegisterUser:

Цитата

TMapGisServer

Зарегистрировать пользователя на сервере.

function RegisterUser(number : integer; login, password : string): boolean;


Входные параметры:
- number - номер активного подключения к ГИС Серверу (нумерация осуществляется с 1).
- login и password – логин и пароль пользователя на ГИС Сервере соответственно.

Описание:
При ошибке возвращает false.
Пароль необходимо передавать в зашифрованном виде по алгоритму MD5, для чего следует использовать метод StringToHash.
 
Похоже я не понимаю как зашифровать пароль по алгоритму MD5
Поиск в Яндексе StringToHash Delphi ничего не дал.
Просьба подсказать как это написать в коде программы?
 
Яндекс - вещь хорошая. А в документации по TMapGisServer пробовали.

Преобразовать строку в хэш по алгоритму MD5.

function StringToHash(source : PChar;  target : PChar; asize : integer):  integer;

Описание:

Предназначена для обработки сроки пароля для  последующей передачи его в функцию RegisterUser для регистрации пользователя на  сервере.

Входные параметры:

- aSource  - исходная строка ANSI;

- aTarget   - строка результата (32 символа и  замыкающий ноль);

- aSize      - число байт, зарезервированных в  строке (не менее 33);

При ошибке параметров возвращает ноль.

 
В комплекте инструментария есть пример GServer, где есть пример подключения к серверу.


//==========================================================­====================
// Подключение
//==========================================================­====================
procedure TfrmConnect.btnConnectClick(Sender: TObject);
var
 strHost,
 strLogin,
 strPassw : string;
 intPort  : integer;
 iRes     : integer;
 bRes     : boolean;
begin
 if MapGisServer=nil
   then begin
     raise Exception.Create('Не установлен компонент TMapGisServer');
     ModalResult := mrAbort;
   end;

 try
   if edPort.Text<>''
     then intPort := StrToInt(edPort.Text)
     else intPort := 0;
   strHost  := Trim(cbHost.Text);
   strLogin := Trim(edUser.Text);
   strPassw := edPassw.Text;

   if (strHost='') then raise Exception.Create('Не указан сервер!');
   if not chWinAuth.Checked
     then begin
       if (strLogin='') then raise Exception.Create('Не указан пользователь!');
       if (strPassw='') then raise Exception.Create('Не введен пароль!');
     end;
 except
   on e:Exception do begin
     raise Exception.Create('Ошибка ввода исходных данных!'+#10#13+e.Message);
     ModalResult := mrAbort;
   end;
 end;


 // Подключение
 iRes := MapGisServer.OpenConnect(strHost, intPort);
 if (iRes = 0)
   then begin
     raise Exception.Create('Не удалось соединиться с сервером ' + strHost);
     ModalResult := mrAbort;
   end;

 // Регистрация пользователя
 if chWinAuth.Checked
   then bRes := MapGisServer.RegisterSystemUser(iRes)                // Win-авторизация
   else begin
     // По логину/паролю
     if (MapGisServer.StringToHash(strPassw, strPassw)<>0)  // Кодируем пароль по алгоритму MD5
       then bRes := MapGisServer.RegisterUser(iRes, strLogin, strPassw)  // Логин и хэш пароля передаем на регистрацию
       else bRes := false;
   end;    

 if bRes
   then FResult := iRes
   else FResult := 0;

 if FResult<>0
   then ModalResult := mrOk;  // если подключиличь - выходим с хорошим результатом
end;
//==========================================================­====================
 
Цитата
Andrey Gheleznyakov написал:
В комплекте инструментария есть пример GServer, где есть пример подключения к серверу.
Да, спасибо, хороший исходник.
Если не сложно еще,
хочу попросить у вас еще одну строку к выше приведенному коду,
как только GIS Server подключился успешно,
теперь узнать что-то типа этого, но уже с сервера:
MapFileName := Directory+'\Karta\Karta.sit';
Интуитивно догадываюсь, что по номеру карты и с использованием GetMapList
Но как это сделать, не понимаю.
 

Запросить список доступных пользователю векторных  карт на ГИС-сервере.

function  GetMapList(number : integer; buffer : PTMCMAPLIST; length :  integer): integer;

Входные  параметры:

- number - номер активного подключения к ГИС  Серверу (нумерация осуществляется с 1);

- buffer - адрес памяти для размещения списка  карт;

- length - размер выделенной области памяти в  байтах.

Описание:

Возвращает общий размер считанной записи или 0 - при  отсутствии данных или ошибке.

Метод помещает в память по адресу buffer список  данных для подключенного пользователя в такой же иерархии, как они были  сгруппированы в Администраторе ГИС Сервера. То есть  не каждый возвращаемый  элемент является алиасом, ссылающимся на карту, а может являться также  заголовком группы, что определяется полем TypeLevel – для комментариев  (заголовков групп) его значение равно 0.

Перед запросом перечня доступных пользователю  данных можно с помощью этого же метода сделать запрос необходимого размера  выделяемой памяти для размещения перечня данных. Для этого данный метод  вызывается с нулевыми параметрами buffer  и length. В этом случае метод  возвращает размер необходимого блока памяти в байтах.

type

TMCMAPLISTITEM =  packed record                // описание элемента дерева проекта

   Level :  longint;                            // Уровень вложенности элемента с 1 до  MaxLevel

   Flags :  longint;                            // флаг редактирования 0 - нет прав  редактировать

   TypeLevel :  longint;                         // Тип файла MAPFILES, Если это 0 -  комментарий

   Reserve :  longint;    

   Name :  array[0 .. 255]  of GtkChar;        // Имя элемента (Алиас)

  end;

// СПИСОК  ДОСТУПНЫХ КАРТ

TMCMAPLIST  =  packed record      

Ident : longint;                     // Идентификатора записи 0x7F7F7F7F

Length :  longint;            // Общая длина записи

Count : longint;             // Число элементов в списке

MaxLevel :  longint;            // Максимальный уровень вложенности элементов  (дерево)

// Массив  элементов списка доступных карт (в количестве Count)

Item : array  [0..1] of TMCMAPLISTITEM;

  end;

PTMCMAPLIST =  ^TMCMAPLIST;

Перед передачей адреса структуры в функцию,  необходимо в нее установить следующие значения:

Ident =  0x7F7F7F7F;

Length =  sizeof(TMCMAPLIST);

Count =  0;

MaxLevel = 1;

 
var
 fTreeMaps : TfrmServerMaps;

этот класс не находит при  компиляции,
что нужно добавить в uses?

сейчас:
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, Buttons, ComCtrls, ExtCtrls, UxTheme, Mask, FileCtrl,
 Vcl.DBCtrls, xmldom, XMLIntf, msxmldom, XMLDoc, mapgsrv, mapproc, maptype;
Изменено: Сергей Викторович - 03.10.2019 17:35:52
 
Это форма из примера. Что вы собственно собираете, пример?
 
Цитата
Andrey Gheleznyakov написал:
Это форма из примера. Что вы собственно собираете, пример?
Мы успешно подключились к GIS Server -у !!!

Теперь нужно открыть карту с GIS Server -а с алиасом Vlasiha

procedure Tform_Setting.SpeedButton10Click(Sender: TObject);
var
 alias  : string;
begin
alias := 'Vlasiha';
form_main.mvMap.MapOpen(alias, true); // Alias карты которая опубликована на GIS Server -е известен это Vlasiha но пишет: Файл не найден - Vlasiha
end;

Что-то я не понимаю или делаю не правильно.
1.PNG (31.42 КБ)
Изменено: Сергей Викторович - 04.10.2019 11:53:17
Страницы: 1 2 След.
Читают тему (гостей: 1)



© КБ Панорама, 1991-2024

Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности