:: Не фоксом единым
Сбор статистики по клиентам
sphinx
Автор

Сообщений: 31893
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
Коллеги, есть идея реализовать сбор информации (IP, ОС и др.) по клиентам.
Вопрос как лучше это сделать? (Желательно сразу на свой комп)

1) Поднять на домашнем компе FTP-сервер. Плюсы: нет зависимости от платных/ненадежных/простоплохих серверов, быстрее передается информация (нет передачи служебной информации, только файлы), удобства сбора информации. Минусы: безопасность (?), блокировка порта на стороне клиента фаерволлом или антивирусом.

2) Почта. Плюсы: порт открыт у всех, не паримся за безопасность при развертывании FTP-сервера. Минусы: сильно страшных не вижу, просто как-то громоздко что-ли...

3) Гоним куда-то в инет, в облако (платно не рассматриваю, бесплатные решения не знаю годные), из него забираем.


Поделитесь, как вы реализовали у себя. :hi:


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: Сбор статистики по клиентам
Гулин Федор

Сообщений: 4659
Откуда: Минск
Дата регистрации: 24.10.2002
давно в рамках локальной сети (новелл)
спец. утилита - уж не помню как
в логин скрпите (1 раз в неделю или как то так ) был вызов этой утилиты - ну оно собирало отсыало файл со всей инфой по железу и по софту
там - то ли самодельно (скорей все таки самописынми скриптами ) это парсилось и писалось в БД.

т.е если в это рамках одной локальнорй сети - то вообще без проблем
если ж это об удаленных клиентах -
тут же еще вопрос безопасности - хотят чего они запускать то у себя
как вариант пункт меню в апп - сбор техн. инфы и отсылка ее (на почту или фтп или еще куда )
тут больше вопрос в соотношении трудозатраты/польза от всего этого ...
Ratings: 0 negative/0 positive
Re: Сбор статистики по клиентам
sphinx
Автор

Сообщений: 31893
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
Вопрос или не понят, или не читался.
Ладно, раз идей ни у кого нет - попробую через почту.


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: Сбор статистики по клиентам
sphinx
Автор

Сообщений: 31893
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
Получилась такая функция по сбору статистики:

FUNCTION GetStatistic
*-- Опеределим COMPUTER
lcComputer = GETENV('COMPUTERNAME')
*-- Опеределим USER
lcUser = GETENV('USERNAME')
*-- Определим IP (в локальной сети)
oWS = createobject("mswinsock.winsock")
lcIpInternal = oWS.LocalIP
*-- Определим IP (внешний, за роутером)
TRY
LOCAL oHttp as MSXML2.XMLHttp
oHttp = CREATEOBJECT('MSXML2.ServerXMLHTTP')
oHttp.open('GET', 'https://2ip.ru')
oHttp.Send()
lcIpExternal = SUBSTR(oHttp.responseText, AT('IP адрес: ', oHttp.responseText)+10, 15 )
lcIpExternal = LEFT(lcIpExternal, AT(' ', lcIpExternal)-1)
CATCH
lcIpExternal = '*.*.*.*'
ENDTRY
*-- Определим ОС && HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
lcProductName = RegGetValueHKLM('SOFTWARE\Microsoft\Windows NT\CurrentVersion', 'ProductName' )
lcVersion = RegGetValueHKLM('SOFTWARE\Microsoft\Windows NT\CurrentVersion', 'DisplayVersion' )
lcInfo = 'COMPUTER: ' + lcComputer + CHR(13) + ;
'USER: ' + lcUser + CHR(13) + ;
'IP (internal): ' + lcIpInternal + CHR(13) + ;
'IP (external): ' + lcIpExternal + CHR(13) + ;
'VERSION OS: ' + lcProductName + ' (' + lcVersion + ')'
RETURN lcInfo

Буду рад замечаниям и предложениям.


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: Сбор статистики по клиентам
MikhsR

Сообщений: 14
Откуда: Москва
Дата регистрации: 19.12.2022
[attachment 36929 Screenshot_1.jpg]

Внешний ip не сработал.
На свежую голову еще посмотрю.



Исправлено 2 раз(а). Последнее : MikhsR, 20.08.24 20:41
Ratings: 0 negative/0 positive
Re: Сбор статистики по клиентам
Joys

Сообщений: 3571
Дата регистрации: 25.06.2000
sphinx
*-- Определим IP (внешний, за роутером)
Идея вытаскивания подстроки с тела страницы мне кажется не очень.. Лучше использовать DOMXML или вовсе сервис, который отдает только IP, например checkip.amazonaws.com
могу на foxclub.ru такое сделать



Исправлено 1 раз(а). Последнее : Joys, 21.08.24 07:54
Ratings: 0 negative/0 positive
Re: Сбор статистики по клиентам
sphinx
Автор

Сообщений: 31893
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
Joys
sphinx
*-- Определим IP (внешний, за роутером)
Идея вытаскивания подстроки с тела страницы мне кажется не очень.. Лучше использовать DOMXML или вовсе сервис, который отдает только IP, например checkip.amazonaws.com
могу на foxclub.ru такое сделать

Цитата:
Лучше использовать DOMXML
Ога, лень было ковыряться и вспоминать. Хотя несложно, сам писал немало парсинга через DOM. Если труда немного - пример реализации, я на слух не все понимаю, старею, видимо. ))))

А тегов не нашел. Или туповат немного, что простительно. ))))


Юр, я как Пива - на коленке писал один вечер. Побился в разные алгоритмы на форуме - ну НЕ ТО! Не дают они внешний (за роутером адрес). Тупо на 2ip.ru зашел, пусть не большой спец по парсингу сайтов, но это уж напишу.

Да. Потестировать, что работает, что нет. Есть идеи лучше - чтоб не гадал и не мучался - кидайте правильную, надежную реализацию.
Я тестил только на своем ПК, про локальный адрес вкурил быстро, сравнил, что в модераторе мне показывает. Ога, хрень, значит полезем за роутер. API и системными вещами не достать? Покажите, если не прав.

Я ЗА обсуждение и ПРАВИЛЬНЫЕ решения! :bi:


------------------
"Veni, vidi, vici!"(с)




Исправлено 3 раз(а). Последнее : sphinx, 21.08.24 11:54
Ratings: 0 negative/0 positive
Re: Сбор статистики по клиентам
sphinx
Автор

Сообщений: 31893
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
MikhsR
[attachment 36929 Screenshot_1.jpg]
Внешний ip не сработал.
На свежую голову еще посмотрю.

Спасибо Вам за тестирование. Посмотрите, желательно с разных компов.
Кодом поделился, не ахти чего сурьезного, но с целью развития идеи.

1) Потестировать в целом, как работает, в разных странах (меня СНГ больше интересует).
2) Предложить лучшее решение (касательно определения IP за роутером). Адрес до роутера можно 5-6 способами считать, это все на форуме есть.


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: Сбор статистики по клиентам
MikhsR

Сообщений: 14
Откуда: Москва
Дата регистрации: 19.12.2022
На рабочем компе отработало нормально.

С небольшим курьезом получилось.
Сначала не работало, начал голову ломать, а оказалось, что просто 2ip не отзывался какое-то время по каким-то своим причинам.
Ratings: 0 negative/0 positive
Re: Сбор статистики по клиентам
Joys

Сообщений: 3571
Дата регистрации: 25.06.2000
TRY
LOCAL loHttp, lcURL, loResponse, lnMaxLength
lcURL = "https://api.ipify.org"
**lcURL = "https://checkip.amazonaws.com"
loHttp = CREATEOBJECT("Msxml2.ServerXMLHTTP")
loHttp.setTimeouts(2000, 2000, 2000, 2000) && Задаем тайм-аут в 2 секунды
loHttp.open("GET", lcURL, .F.)
loHttp.send()
IF loHttp.status = 200
loResponse = loHttp.responseText
lnMaxLength = 15 && Максимальная длина строки IP-адреса
IF LEN(loResponse) <= lnMaxLength
lcIpExternal = loResponse
ELSE
lcIpExternal = '*.*.*.*' && Строка ответа превышает максимальную длину
ENDIF
ELSE
lcIpExternal = '*.*.*.*' && Ошибка получения IP-адреса
ENDIF
CATCH
lcIpExternal = '*.*.*.*' && Ошибка получения IP-адреса
ENDTRY
Ratings: 0 negative/0 positive
Re: Сбор статистики по клиентам
ssa

Сообщений: 13085
Откуда: Москва
Дата регистрации: 23.03.2005
Где ж вы такой ужас то берёте?
Local loHttp, lcURL, loResponse, lnMaxLength
lcURL = "https://api.ipify.org"
**lcURL = "https://checkip.amazonaws.com"
lnMaxLength = 15 && Максимальная длина строки IP-адреса
lcIpExternal = '*.*.*.*' && Ошибка получения IP-адреса
Try
loHttp = Createobject("Msxml2.ServerXMLHTTP")
loHttp.setTimeouts(2000, 2000, 2000, 2000) && Задаем тайм-аут в 2 секунды
loHttp.Open("GET", lcURL, .F.)
loHttp.Send()
If loHttp.Status = 200 And Len(loHttp.responseText) <= lnMaxLength
lcIpExternal = loHttp.responseText
Endif
Catch
Endtry


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: Сбор статистики по клиентам
Joys

Сообщений: 3571
Дата регистрации: 25.06.2000
ssa
Где ж вы такой ужас то берёте?
Из недр сознания ))



Исправлено 2 раз(а). Последнее : Joys, 24.08.24 17:58
Ratings: 0 negative/0 positive
Re: Сбор статистики по клиентам
sphinx
Автор

Сообщений: 31893
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
За код спасибо! :hi:

Потестирую, прикрутим. :bi:


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: Сбор статистики по клиентам
Владимир Максимов

Сообщений: 14146
Откуда: Москва
Дата регистрации: 02.09.2000
Joys
ssa
Где ж вы такой ужас то берёте?
из недр сознания ))
а что нет так, не по феншую?
(я вообще удивился, что Fox у себя на компе нашел)

Насколько я понимаю, это вопрос привычного стиля программирования. Грубо - вопрос привычки

1. "Константы" (в данном случае - фиксированные значения переменных) должны определяться в начале процедуры вне try..catch

Цель - упростить поиск места присвоения значения

2. По возможности, избегать "иерархических" конструкций с несколькими уровнями вложенности

Цель - упростить понимание логики кода. В данном случае еще и присвоение значения переменной уходит в начало процедуры


С FoxPro как проблема в том, что у него нет собственного "стиля программирования" или каких-то формализованных правил написания кода. На момент создания этого языка о таких понятиях еще не очень думали
Ratings: 0 negative/1 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 4 (Гостей: 4)

© 2000-2025 Fox Club 
Яндекс.Метрика