On-line: Andrey, гостей 1. Всего: 2 [подробнее..]
АвторСообщение
Dima
администратор




Пост N: 2728
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 12.03.13 11:27. Заголовок: Leto DB Server (продолжение 9)


Продолжаем тут

Спасибо: 0 
Профиль
Ответов - 301 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 All [только новые]


Pasha
Администратор




Пост N: 2808
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 29.03.13 15:02. Заголовок: Чуть позже напишу, с..


Чуть позже напишу, сейчас некогда, надо самому глянуть, что за флаги
Но скорее всего:

#define LETO_VCREAT 1 если переменной нет, она создается
#define LETO_VOWN 2 переменная этого пользователя (соединения)
#define LETO_VDENYWR 4 запрет присвоения для другого пользователя
#define LETO_VDENYRD 8 запрет чтения другим пользователем
#define LETO_VPREVIOUS 1 надо смотреть

Спасибо: 0 
Профиль
AlexMyr



Пост N: 797
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 29.03.13 16:08. Заголовок: Dima пишет: хочу ко..


Dima пишет:

 цитата:
хочу контролировать вход юзеров



Есть опция Pass_for_Login=.T., раньше с ней игрался, так вот какая мысль, если добавить еще опцию допустим Multi_login (по умолчанию .F. - один пользователь, сервер сам проверяет, если пользователь залогинился, такой уже не зайдет), если .T. - значит допускается больше одного коннекта для одного юзера. Если Pass_for_Login = .F., то MultiLogin не обрабатывается. Вроде так будет лучше и правильней чем игры с переменными и флагами со стороны клиента.

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 2900
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 29.03.13 16:53. Заголовок: AlexMyr Начну с пер..


AlexMyr
Начну с переменных а там посмотрим. Вроде и особо играться там не надо. При входе проверил переменную , если
ее нет , завел. Если есть то юзер не войдет.
Ее даже убивать не надо при выходе из программы (убивается на автомате после LETO_DISCONNECT если я верно понял)

Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 2809
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 29.03.13 17:42. Заголовок: sashaBG пишет: Leto..


sashaBG пишет:

 цитата:
LetoDB у меня работает как демон а не как сервиз не знаю может в етом проблема

сначала я кинулся убирать AVAST но не в нем проблема , несмотря что он враждебно относится к LetoDB .

иногда падает при закрытии одной обласи или всех рабочих облостей со стороны клиента . Лечится ето через Leto_Commit() перед закрытием
на локаьном соединении ето нельзя воспроизвести только через сеть. Ошибка получается не кажды раз .



У меня такая ошибка никогда не возникала. Судя по тому, что она лечится через Leto_Commit, возможно, перед dbCloseArea остались данные, которые не переданы на сервер, и блокированные записи. Хотя я таких ситуаций стараюсь избегать, смоделировал их, и ошибки не получил. Посмотрел по сырцам - если такая ситуация возникнет, то измененные записи перед закрытием будут переданы на сервер, и список блокированных записей очищается. Причина ошибки пока непонятна.


Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 2810
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 29.03.13 17:48. Заголовок: Pasha пишет: #defin..


Pasha пишет:

 цитата:
#define LETO_VPREVIOUS 1



Функция leto_varset присваивает переменной новое значение, и возвращает ее предыдущее значение


Спасибо: 0 
Профиль
Dima
администратор




Пост N: 2901
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 29.03.13 18:08. Заголовок: Pasha пишет: Функци..


Pasha пишет:

 цитата:
Функция leto_varset присваивает переменной новое значение, и возвращает ее предыдущее значение


Спасибо за разъяснения !

Pasha
Порадуешь на счет MAC адреса ?

Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 2811
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 29.03.13 20:13. Заголовок: Dima пишет: Порадуе..


Dima пишет:

 цитата:
Порадуешь на счет MAC адреса ?



А что надо с MAC-адресом ? Возврашать MAC-адрес сервера, что ли ?

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 2902
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 29.03.13 20:16. Заголовок: Pasha пишет: Возвра..


Pasha пишет:

 цитата:
Возврашать MAC-адрес сервера, что ли ?


Да MAC адрес сетевой платы cервера.
Или к примеру volserial() винта откуда стартовал LetoDB сервер.


Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 2812
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 29.03.13 20:34. Заголовок: В source\server&..


В source\server\server.prg надо добавить функцию:

FUNCTION leto_VolSerial( nUserStru )
RETURN VolSerial()

линковать сервер с hbct.lib

Вызов с клиента:
leto_UDF("leto_VolSerial")

Тоже самое можно сделать с mac-адресом, надо только найти такую функцию в харборе.
Только в сырцы letodb я это включать не хочу, все-таки другая специфика.


Спасибо: 0 
Профиль
Dima
администратор




Пост N: 2903
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 29.03.13 20:48. Заголовок: Pasha Спасибо. Pas..


Pasha
Спасибо.

Pasha пишет:

 цитата:
Тоже самое можно сделать с mac-адресом, надо только найти такую функцию в харборе.


Уже искал и не нашел.
Но есть GetAdaptersInfo в iphlpapi.lib , но одной прилинковки этой библы не достаточно.
Видать что то еще надо.

Как вариант можно так
 
#include "hbwin.ch"

PROCEDURE Main
LOCAL nHKey := WIN_HKEY_LOCAL_MACHINE
LOCAL cRegPath := "SOFTWARE\Microsoft\Windows Genuine Advantage"
LOCAL cRegKey := "MAC"

? GetRegistry( nHKey, cRegPath, cRegKey )
RETURN



Спасибо: 0 
Профиль
Dima
администратор




Пост N: 2914
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 02.04.13 12:41. Заголовок: Если EnableFileFunc ..


Если EnableFileFunc = 1
То функция FILE() сможет определять наличие файла на сервере или нужно юзать LETO_FILE () ?

Будут ли функции в будущем ?
Leto_Fcreate()
Leto_Fseek()
Leto_Fopen()


Как проверить существование папки на сервере ?


Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 2816
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 02.04.13 17:04. Заголовок: Добавлять в letodb э..


Добавлять в letodb эту функциональность как-то не хочется, так как это несвойственные ему задачи, да и дублирование существующих возможностей.

File() и прочие файловые функции будут работать:
1. Если есть файловый доступ к данному сетевому ресурсу: сетевой диск или через unc

2. Посредством netio. На сервере должен быть кроме letodb запущен netio-сервер, и тогда можно к нему сконнектиться и использовать файловые операции вида:

Local nH := FOpen("net:" + cFileName, ...)

Правда, для windows netiosrv работает как приложение, а не как служба, что создаст некоторые трудности.

Дополню: конечно, в letodb это можно реализовать посредством udf-функций

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 2915
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 02.04.13 17:22. Заголовок: Pasha пишет: File()..


Pasha пишет:

 цитата:
File() и прочие файловые функции будут работать:
1. Если есть файловый доступ к данному сетевому ресурсу: сетевой диск или через unc



Базу предполагалось спрятать от юзеров и папку с базой расшаривать не предполагалось.
Спрошу иначе ;)
Когда запускается программа (моя) она проверяет наличие баз данных.
Если какой то базы нет ,она создается (проверяю с помощью FILE())
Что бы не париться с NET: мне достаточно с RDD LETO проверить существование файла
на сервере Leto с помощью File() или надо юзать Leto_File() ?



Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 2817
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 02.04.13 18:33. Заголовок: Если папка не расшар..


Если папка не расшарена, то file и все остальные файловые функции работать не будут. Надо использовать leto_file

leto_file('//127.0.0.1:2812/' + cFile)

путь к файлу надо указывать относительно DataPath из letodb.ini

Для проверки существования папки можно использовать leto_Directory. Параметры такие же, что и Directory
Все существующие файловые функции описаны в разделе 7.6 readme

Можно написать свой набор функций, через механизм udf.
Пример:
На сервере добавляется функция

Function leto_FCreate(nUserStru, cFileName, nAttr)
Return FCreate(leto_GetAppOptions( 1 ) + cFileName, nAttr)

leto_GetAppOptions( 1 ) возвращает DataPath

Вызов с клиента:

leto_UDF('leto_FCreate', cFileName, nAttr)

и так далее


Спасибо: 0 
Профиль
Dima
администратор




Пост N: 2916
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 02.04.13 18:35. Заголовок: Pasha Спасибо за ра..


Pasha
Спасибо за развернутый ответ.

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 199
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 03.04.13 09:38. Заголовок: Dima пишет:Когда зап..


Dima пишет:
 цитата:
Когда запускается программа (моя) она проверяет наличие баз данных.
Если какой то базы нет ,она создается (проверяю с помощью FILE())


Может будет интересно. Т.к. у нас в прогах на clipper каталоги для баз создаются динамически и их много, то при переводе на letodb сохранили такую же схему работы, добавив в сервер в функцию hs_createtable(...) проверку и создание каталогов. Вот текст: Скрытый текст


Спасибо: 0 
Профиль
Dima
администратор




Пост N: 2917
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 03.04.13 10:34. Заголовок: SergKis Спасибо !..


SergKis
Спасибо !

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 2918
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 03.04.13 17:05. Заголовок: Застрял на ерунде. ..


Застрял на ерунде.

? leto_file(pathleto+"\dbf\test.dbf") // .t.
set path to (pathleto+"\dbf\")
? leto_file("test.dbf") // почему то .f. с обычным RDD .t. впрочем как и в Clipper

Куда копать ?


Спасибо: 0 
Профиль
PSP
постоянный участник


Пост N: 858
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 03.04.13 17:07. Заголовок: Видимо, сервер ничег..


Видимо, сервер ничего не знает про установку SET PATH TO

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 2919
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 03.04.13 17:15. Заголовок: PSP пишет: Видимо, ..


PSP пишет:

 цитата:
Видимо, сервер ничего не знает про установку SET PATH TO


Вероятно должен знать
Выдержка из доки
 
Для открытия файла dbf на сервере необходимо вставить в оператор SET PATH TO,
или в команду USE путь к серверу в стандартной форме:
//ip_address:port/data_path/file_name.


Правда тут ни чего не сказано насчет файловых функций таких как File() к примеру.
Но ведь в Harbour как и в Clipper SET PATH TO распространяется и на функцию File() в том числе.

Спасибо: 0 
Профиль
Ответов - 301 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 All [только новые]
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 85
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет