Перейти к содержимому
Local
Max

Расширение авторизатора

Рекомендованные сообщения

О! madf, ты отказался от фиксированного порта источника, это радует, сразу решается проблема работы через роутер.

 

С это версией, при входе-выходе из настроек, клиент перестает отвечать на keepalive серверу.

Убрал вызов clnp->SetServer(settings.serverIP, settings.serverPort);

из формы настроек и поставил в нажатие на подключиться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

О! madf, ты отказался от фиксированного порта источника, это радует, сразу решается проблема работы через роутер.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

собрал новую версию, главная фича - проверка обновлений:

 

- в веб ссылку можно добавлять дополнительный текст, при нажатии будет выделен

и открыт фрагмент с http://

- исправлен баг: если в момент автоподключения нажать отключиться,

то срабатывало автосворачивание

 

- исправлена ошибка, когда при отсутствии направлений не выводятся сообщения

об ошибках

- написана функция проверки обновлений. Поиск обновления ведется на сервере,

который указан в настройках, по протоколу HTTP загружается файл /iaversion.txt

в котором первой строкой идет текущая версия в таком формате, как подписано

в авторизаторе, а второй строкой - ссылка на файл обновления.

Проверка обновления происходит в момент первого подключения.

Нажатие на ссылку открывает браузер.

- внесена задержка при закрытии авторизатора для успешного отключения на сервере

 

- новая библиотека ia_auth_c позволяет слать запрос с произвольного порта авторизатора,

что решает проблему работы через роутеры типа d-link... Взята из qia.

 

Обнаружена фича:

- В ini файле можно вручную задать параметры IPEditable=0 и PortEditable=0

чтобы запретить пользователю менять адрес и порт сервера.

 

Важное добавление:

- запрещен запуск второй копии приложения

 

 

http://icenet.net.ua/inetaccess2.61-11.8w_src.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

madf, такой момент еще мне не понятен в работе ia_auth_c:

пробую пропустить авторизацию через NAT, в этом случае подключение нормально происходит, но на keepalive посылки авторизатор не отвечает вообще.

Может сервер где то кодирует посылку адресом интерфейса отправителя?

...

Разрулил свою проблему ДНСом, вопрос теряет актуальность

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

madf, такой момент еще мне не понятен в работе ia_auth_c:

пробую пропустить авторизацию через NAT, в этом случае подключение нормально происходит, но на keepalive посылки авторизатор не отвечает вообще.

Может сервер где то кодирует посылку адресом интерфейса отправителя?

...

Разрулил свою проблему ДНСом, вопрос теряет актуальность

Не кодирует. Но с NAT там действительно заморочка может быть. Это UDP все-таки, без установки соединения. Инициирующий пакет приходит от авторизатора, но потом инициатором диалога становится сервер. Может от этого сносит крышу NAT'у. Надо посмотреть tcpdump.

Но DNS решает, да. Мы у себя уже год как на DNS авторизатор перевели. Это позволило избавиться от NAT на access'ах и переполнений таблиц conntrack.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Не кодирует. Но с NAT там действительно заморочка может быть. Это UDP все-таки, без установки соединения. Инициирующий пакет приходит от авторизатора, но потом инициатором диалога становится сервер. Может от этого сносит крышу NAT'у. Надо посмотреть tcpdump.

смотрел tcpdump и windump - сто процентов пакет с измененным адресом источника доходит до авторизатора, но авторизатор не отвечает на него.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Дуже цікаво про оновлення авторизатора :( Воно працює, звідки оновлюється?

 

Хочу в авторизатор вставити замість статистики банер, який буде малюваться і віддаваться в авторизатор. Зараз зробив через tcpbrowser, але це треш якийсь виходить. Як витягнути зображення в авторизатор іншими "правильними" методами, а то я в с++ не дуже))

post-4773-047141000 1285835128_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Дуже цікаво про оновлення авторизатора :( Воно працює, звідки оновлюється?

- написана функция проверки обновлений. Поиск обновления ведется на сервере,

который указан в настройках, по протоколу HTTP загружается файл /iaversion.txt

в котором первой строкой идет текущая версия в таком формате, как подписано

в авторизаторе, а второй строкой - ссылка на файл обновления.

Проверка обновления происходит в момент первого подключения.

Нажатие на ссылку открывает браузер.

 

Хочу в авторизатор вставити замість статистики банер, який буде малюваться і віддаваться в авторизатор. Зараз зробив через tcpbrowser, але це треш якийсь виходить. Як витягнути зображення в авторизатор іншими "правильними" методами, а то я в с++ не дуже))

а чем не способ? по моему лучше не придумать

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

це ж якби використовує екслорер, хотілось би якесь інше рішення. Чи це саме те? ))

 

Чи можна оновляти так як в мозіллі наприклад, при запуску авторизатор викачує нову версію, оновляється і перезапускається? Чи це вже я на грані фантастіки)))

 

 

Моє рішення баннера

 

browser->Navigate(WideString("http://host/banner_public.php"));

 

 

banner_public.php:

<html>                                                                                                                                                                                                                                       
<head>                                                                                                                                                                                                                                       
<style>                                                                                                                                                                                                                                      
*{                                                                                                                                                                                                                                           
margin:0;                                                                                                                                                                                                                                    
padding:0;                                                                                                                                                                                                                                   
border:none;                                                                                                                                                                                                                                 
background-color:threedface;                                                                                                                                                                                                                 
}                                                                                                                                                                                                                                            
</style>                                                                                                                                                                                                                                     
</head>                                                                                                                                                                                                                                      
<body oncontextmenu="return false" onselectstart="return false" oncopy="return false" ondragstart="return false" scroll="no">                                                                                                                

<?php                                                                                                                                                                                                                                        
//print getenv('REMOTE_ADDR');                                                                                                                                                                                                               
?>                                                                                                                                                                                                                                           
<DIV STYLE="height:90px; width:401px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://host/img_public.php', sizingMethod='scale');"></DIV>                                                                       
</body>                                                                                                                                                                                                                                      
</html> 

 

img_public.php:

error_reporting(0);                                                                                                                                                                                                                          
$ip = getenv('REMOTE_ADDR');                                                                                                                                                                                                                 
mysql_connect('localhost', 'user', 'pass');                                                                                                                                                                                       
mysql_select_db('stg') or (die('error'));                                                                                                                                                                                                    
$q = mysql_query('select * from users where IP = "' . $ip . '" ') or die('error');                                                                                                                                                           
$r = mysql_fetch_array($q) or die('error');                                                                                                                                                                                                  
$q1 = mysql_query('select * from tariffs where name= "' . $r['Tariff'] . '"') or die('error');                                                                                                                                               
$r1 = mysql_fetch_array($q1) or die('error');                                                                                                                                                                                                


$fee = $r1['Fee'];                                                                                                                                                                                                                           

$cash = $r['Cash'];                                                                                                                                                                                                                          

$tariff = $r['Tariff'];                                                                                                                                                                                                                      


if ($cash == 0) {                                                                                                                                                                                                                            
   $month = 1;                                                                                                                                                                                                                              
} elseif ($cash > 0) {                                                                                                                                                                                                                       
   $month = $cash / $fee;                                                                                                                                                                                                                   
}                                                                                                                                                                                                                                            

$starttime = strtotime("now");                                                                                                                                                                                                               
// strtotime("+$month month");                                                                                                                                                                                                               
$endtime = mktime(0, 0, 0,  date("n",strtotime("+$month month")),5, date("Y",strtotime("+$month month")));                                                                                                                                   


$days = round((  $endtime - $starttime )/60/60/24);                                                                                                                                                                                          

if(substr($days, -1) == 1 )                                                                                                                                                                                                                  
{                                                                                                                                                                                                                                            
   $d = " ........";                                                                                                                                                                                                                        
}                                                                                                                                                                                                                                            
elseif(substr($days, -1) == 2 || substr($days, -1) == 2 || substr($days, -1) == 3 || substr($days, -1) == 4)                                                                                                                                 
{                                                                                                                                                                                                                                            
   $d = " ......";                                                                                                                                                                                                                          
}                                                                                                                                                                                                                                            
else{                                                                                                                                                                                                                                        

   $d = " ........";                                                                                                                                                                                                                        
}                                                                                                                                                                                                                                            



header("Content-type: image/png");                                                                                                                                                                                                           
$img = imagecreate(400, 80);                                                                                                                                                                                                                 
$black = ImageColorAllocate($img, 0, 0, 0);                                                                                                                                                                                                  
$green = ImageColorAllocate($img, 0, 255, 0);                                                                                                                                                                                                
$white = ImageColorAllocate($img, 255, 255, 255);                                                                                                                                                                                            
$trans = ImageColorTransparent($img, $white);                                                                                                                                                                                                
imagefill($img, 0, 0, $white);                                                                                                                                                                                                               
putenv('GDFONTPATH=' . realpath('.'));                                                                                                                                                                                                       
$font = '/usr/local/www/apache22/data/tahoma.ttf';                                                                                                                                                                                           
$tariff = "..........: " . $tariff;                                                                                                                                                                                                          
$money = "....................: " . $days . $d;                                                                                                                                                                                              
imagettftext($img, 10, 0, 0, 10, $black, $font, $tariff);                                                                                                                                                                                    
imagettftext($img, 10, 0, 0, 25, $black, $font, $money);                                                                                                                                                                                     
imagepng($img);                                                                                                                                                                                                                              
imagedestroy($img);                                                                                                                                                                                                                          
?> 

 

 

tcpwebbrowser зберігає в кеші зображення, і воно оновляється тільки при перезапуску авторизатора( але коли як)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

це ж якби використовує екслорер, хотілось би якесь інше рішення. Чи це саме те? ))

 

Чи можна оновляти так як в мозіллі наприклад, при запуску авторизатор викачує нову версію, оновляється і перезапускається? Чи це вже я на грані фантастіки)))

 

не эксплорер, а браузер по умолчанию открывается. я не стал заморачиваться

 

tcpwebbrowser зберігає в кеші зображення, і воно оновляється тільки при перезапуску авторизатора( але коли як)

 

а если так:

	<META HTTP-EQUIV="Cache-Control" content="no-cache">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META http-equiv=CONTENT-TYPE content="text/html; charset=windows-1251">
<META HTTP-EQUIV=Refresh CONTENT="60; URL=/desired.html">

?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

<META HTTP-EQUIV="Cache-Control" content="no-cache">

<META HTTP-EQUIV="Pragma" CONTENT="no-cache">

 

Не подумав, дякую)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×