Jump to content

about Stargazer2 bug


Guest maap

Recommended Posts

users.cpp

USERS::Add

...

if(userNum + 1 > settings->maxUsers) {

WriteServLog("...");

return(1);

}

 

необходимо переместить в начало функции, так как

в обратном случае совершается ряд ненужных действий. при userNum=maxUsers.

 

user.h

Везде где фигурирует unsigned long в обозначение ip необходимо заменить на uint32_t или на struct in_addr, хотя с первым работы будет меньше

 

Почеу убрали OnUserAdd/Del Скрипты ?

Link to post
Share on other sites

Первый заключается в том что юзера бодавляются даже после того как их максимальное кол-во было достигнуто

второй баг, может привести к переполнению стека, так как long = 4b int = 2b

, но это чисто гипотетически, на самом деле это просто безобидная ошибка

Link to post
Share on other sites

users.cpp

USERS::Add

...

if(userNum + 1 > settings->maxUsers) {

WriteServLog("...");

return(1);

}

необходимо переместить в начало функции, так как

в обратном случае совершается ряд ненужных действий. при userNum=maxUsers.

 

Абсолютно согласен. Исправил. Спасибо.

 

user.h

Везде где фигурирует unsigned long в обозначение ip необходимо заменить на uint32_t или на struct in_addr, хотя с первым работы будет меньше

Имхо не киритично. Но правильнее было бы uint32.

Кстати,

второй баг, может привести к переполнению стека, так как long = 4b int = 2b

Не может. Скажика-ка чему равно sizeof(long int) на машинке с i386?

Link to post
Share on other sites

у меня следующяя проблемма, стоит впн сервер, и есть два направления одно город(eth1), другой внешний интернет(ppp0 masquerade)

но по какойто причине городской трафик подсчитывает а внешний нехочет.

что может быть причиной ?

Link to post
Share on other sites

еще один баг, user.cpp

::Connect

if (access(str1, X_OK) == 0 && cash > -credit)

{

sprintf(str2, "%s %s %s %f %d", str1, login, inet_ntoa(*(struct in_addr *)&currip), cash, id);

Exec(str2);

}

else

{

WriteServLog("Script OnConnect cannot be executed. File not found.");

}

}

вообщем исходя из этого если денег меньше чем -кредит то в лог он запишет что неможет достучаться до фаила OnConnect

Link to post
Share on other sites
у меня следующяя проблемма, стоит впн сервер, и есть два направления одно город(eth1), другой внешний интернет(ppp0 masquerade)

но по какойто причине городской трафик подсчитывает а внешний нехочет.

что может быть причиной ?

А как у тебя прописаны рулезы и через какой интерфейс подключены юзеры?

Link to post
Share on other sites
вообщем исходя из этого если денег меньше чем -кредит то в лог он запишет что неможет достучаться до фаила OnConnect

Снова сенкс.

Link to post
Share on other sites

rules:

ALL 83.172.18.0/24 DIR0

ALL 239.29.80.0/24 DIR0 //город

...

 

 

ALL 0.0.0.0/0 DIR1 //внешка

 

 

юзера подключены через впн соеденения тоесть ифс: ppp1,ppp2,ppp3,ppp4 ....

 

внешка это ppp0 впн соеденения до провайдера

Link to post
Share on other sites
юзера подключены через впн соеденения тоесть ифс: ppp1,ppp2,ppp3,ppp4 ....

 

внешка это ppp0 впн соеденения до провайдера

А что стоит в настройках юзеров в стг, в параметре интерфейс?

Link to post
Share on other sites

В догонку

 

::Connect

.........

if (access(str1, X_OK) == 0 && cash > -credit)

{

sprintf(str2, "%s %s %s %f %d", str1, login, inet_ntoa(*(struct in_addr *)&currip), cash, id);

..........

 

inet_ntoa - не thread safe функция(возвращет указатель на статический буфер), может в этом проблемы и нету если в других тредах она не используется - тут уж сами смотрите

Link to post
Share on other sites

так что там должно стоять ? интерфеис стоит городской

 

 

2Quarcel

нет, от этого проблемм нет, там и ненадо сафе сред.

Link to post
Share on other sites
так что там должно стоять ? интерфеис стоит городской

Потому и не считает. Должен стоять интерфейс к которому подключен юзер. Т.е. ppp1 или ppp2, ...

Link to post
Share on other sites

он ловит пакеты после пострутинга ?

если я укажу внешний интерфейс ппп0 на который маскарадиться он будет считать ?

Link to post
Share on other sites

Так это невозможно так как все ппп сервисы использующие пппд неимеют возможности применять соотношение юзер-иф

Link to post
Share on other sites
Так это невозможно так как все ппп сервисы использующие пппд неимеют возможности применять соотношение юзер-иф

Вот поэтому потихоньку пишется модуль ВПН для СТГ. :)

Link to post
Share on other sites

Лучше не пишиты модуль для ВПН, а сделайте возможность онлайн изменений в настройках пользователя, через сокет или еще какнибудь , это будет намного гибким решением, да и простым

Link to post
Share on other sites

gg] вообщем проще вам будет посредством либо kill -HUP stargazer либо прослушывания сокета это реализовать,

Link to post
Share on other sites

старгазер не читает из ппп интерфейсов, это можно поправить ?

всмысле если да, то хотелось бы просто что бы вы указали место где надо рыться

Link to post
Share on other sites

и еще есть предложение добавления в скрипты useradd/del/change мак адреса из текущей арп таблицы. готов посодействовать.

Link to post
Share on other sites

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

 

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

Link to post
Share on other sites

еще одна идея, в конфигураторе добавить возможность просматривать, удалять и добавлять список так называемых лан адресов, и еще кнопочку для пересчитывания rules, так вот по нажатиям на кнопочки, строки должны добавляться в некоторый список, и выполняться скрипты для синхронизации с иптаблесами и таблицой маршрутизации.

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...