Jump to content

Патч для cтг серврера от 2004.12.09


Recommended Posts

Для тех у кого FreeBSD. Линуксоидам не актуально.

 

 

1. файл msgbuf.h

#deine MSGMAX (1024)

меняем на

#deine MSGMAX (256)

 

2. make clean

 

3. make bsd

 

Наблюдаем за работой. :)

Link to post
Share on other sites

При первой попытки компиляции получил выхлоп:

root@elizovo# cd /usr/home/xor/.share/stg/stg2-2004.12.09-17.32.20

root@elizovo# make bsd

make -f make.bsd

g++ -c -Wall -gstabs+ -DFREEBSD -DTARIFF2 -o    main.o                          main.cpp

In file included from main.cpp:59:

hostallow.h:30:26: sys/inttypes.h: No such file or directory

In file included from main.cpp:60:

antiflood.h:35:26: sys/inttypes.h: No such file or directory

In file included from main.cpp:61:

ping.h:47: warning: `__unused__' attribute ignored

ping.h:47: redeclaration of C++ built-in type `short'

main.cpp: In function `void WalkAroundCallBack(BSPNODE*)':

main.cpp:525: warning: long int format, time_t arg (arg 3)

*** Error code 1

 

Stop in /usr/home/xor/.share/stg/stg2-2004.12.09-17.32.20.

*** Error code 1

 

Stop in /usr/home/xor/.share/stg/stg2-2004.12.09-17.32.20.

Сделал вот что:

1. В hostallow.h:30 "#include <sys/inttypes.h>" на "#include <inttypes.h>"

 

2. В ping.h:47 " __u16 __unused;" закомментировал ("// __u16 __unused;")

 

3. В antiflood.h:35 "#include <sys/inttypes.h>" на "#include <inttypes.h>"

 

После этого компиляция проходит без проблем, получил только эти warnings:

main.cpp: In function `void WalkAroundCallBack(BSPNODE*)':

main.cpp:525: warning: long int format, time_t arg (arg 3)

parser.cpp: In function `void AllUsersCreateAnswer(USER*, void*)':

parser.cpp:248: warning: long int format, time_t arg (arg 3)

parser.cpp:251: warning: long int format, time_t arg (arg 3)

parser.cpp:254: warning: long int format, time_t arg (arg 3)

 

Это я компилил без вышеуказанного патча.

 

Запускать не пробовал =)))

Система FreeBSD 5.1

 

2stg-34: Все будет хорошо, сервер и так и так движется вперед с бешеной скоростью =))

Link to post
Share on other sites

2 STG: так что делать с проблемой которую описал XoRe? У меня такая же ... FreeBSD 5.3.

 

Что бы не было ворнингов:

Совет by romlee: __u16 __unused; меняем на unsigned short __unused;

Link to post
Share on other sites
2 STG: так что делать с проблемой которую описал XoRe? У меня такая же ... FreeBSD 5.3.

 

Что бы не было ворнингов:

Совет by romlee: __u16 __unused; меняем на unsigned short __unused;

Сделай то что описал XoRe

Link to post
Share on other sites

2 СТГ: закоментарить куски структуры??? Бред какой-то ... Другого способа нет???

 

2 MityaginSpbRu: А как ты под Фри его прокомпилил? Закоменравил "проблемыне" строки?

Link to post
Share on other sites

Подо фрей 4.х компилится без проблем.

Я вроде уже исправил всё, со след. билдом будет всё красиво.

А пока сделай, то, что описал XoRe

Link to post
Share on other sites
Я вроде уже исправил всё, со след. билдом будет всё красиво.

Следующий билд будет включать практически одни фиксы?

да

 

и возомжно что следующий билд будет уже не бета, а РЦ, т. е. предрелиз :)

 

тьфу 3 раза чтоб не сглазить :)

Link to post
Share on other sites
И когда же родиться этот билд?

Да, вот пофикшу баги котрые были указаны в теме про последний билд и выложу. Думаю достаточно скоро. Т.е. несколько дней

Link to post
Share on other sites

Вопрос: Какие параметры предаются скрипту OnUserAdd, а именно больше всего интерессует: IP_address.

 

И второе Xore к тебе вопрос: как ты задаёш номера правил в IPFW при создании нового пользователя, если использовать OnUserAdd??

 

И сразу к stg-34 а нельзя ли как то добавить в конфигуратор при добавлении пользователя поля для добавления № правил в ipfw? А то я тут решил автоматизировать процесс зодания новго пользователя, а при его создании ipfw надо сообщать номер правила (иначе при удалении правил тоесть при дисконнекте какие правила удалять?)???

Link to post
Share on other sites
И второе Xore к тебе вопрос: как ты задаёш номера правил в IPFW при создании нового пользователя, если использовать OnUserAdd??

У каждого пользователя есть свой уникальный ID.

При создании пользоваеля stg сам назначает ему этот ID.

При коннекте пользователя создается правило с номером 5000 + ID, как число.

А при дисконнекте удаляется правило с номером 5000 + ID, как число.

Поэтому при создании пользователя мне с ipfw ничего делать не надо.

 

У меня все это дело решается грамотной настройкой правил ipfw =)

Link to post
Share on other sites

Заметил интересную фишку...процесс stargazer практически нечего нежрет из ресурсов но в один из моментов просто бац и отхватывает процентов 20 =( Повисит как будто что то парсит и все опять нормульно...

 

кстати хотелось бы понять можно-ли отключить детальную статистику ? она мне ненужна ввиду того что пишет убогие файлы...вот если MySQL или PostgreSQL то другое дело а мусор на жестком диске держать нехочу да и загрузка лишняя тоже...

Link to post
Share on other sites
У каждого пользователя есть свой уникальный ID.

При создании пользоваеля stg сам назначает ему этот ID.

 

Тогда встречный вопрос, а где можно посмотреть этот ID?

И не мог бы ты показать хоть пример реализации того как енто всё работает, поточму что у меня все скрипты статические, т.е. сначала создаётся пользователь в стг, а уже потом сторонний скрипт на sh создаёт в каталоге /etc/stargazer/user_connect и /etc/stargazer/user_disconnect файл со статическими правилами и номерами этих правил, но гемор вот в чём что ети номера правил нужно самому прописывать в ручную, вот я прошу скрипты в студию, если не сложно.

Link to post
Share on other sites

Я хуз, как этот ID получается.

У меня вправилах сделано просто: начиная с 5000 идут разрешающие правила для каждого пользователя.

Вот примеры скриптов онконнект и ондисконнект:

OnConnect:

#!/bin/sh

LOGIN=${1}
IP=${2}
CASH=${3}
ID=${4}

NUM=`expr 5000 + ${ID}`

/sbin/ipfw -q delete ${NUM}
/sbin/ipfw -q delete ${NUM}
/sbin/ipfw -q add ${NUM} skipto 10000 ip from ${IP} to any

 

OnDisconnect:

#!/bin/sh

LOGIN=${1}
IP=${2}
CASH=${3}
ID=${4}

NUM=`expr 5000 + ${ID}`

/sbin/ipfw -q delete ${NUM}

 

Тока учти, эти скрипты подогнанны под мои правила для ipfw.

У меня есть правило 09110 reject ip from моя_сеть/24 to any, которое по дефолту запрещает юзеру какие-либо действия.

А при коннекте юзера создается правило skipto 10000 ip from ${IP} to any, позволяющее "проскакивать" правило с номером 9110.

 

OnUserAdd и OnUserDel у меня не используются, т.к. они не поддерживались в прошлых билдах. Как перейду на новый билд - задействую =)

Но, как ты, наверно, уже понял, у меня нет надобности в скриптах /etc/stargazer/user_connect и /etc/stargazer/user_disconnect.

Такие скрипты - это изврат, имхо, если задача - просто открывать/закрывать доступ юзерам.

 

Предваряя твой вопрос по правилам файрвола: Ссылка на почитать + man ipfw.

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

Link to post
Share on other sites

Да уроков никто и не просит, просто было интересно как ето у тебя реализовано.

 

Ну вопрос действительно имеется, тогда что за правило такое $NUM (в смысле что оно делает, запрещает или как, ведь ты указал что 09110 всё запрещает!), и почему ты его два раза удаляешь?

 

А со skipto это ты интересно завернул.

Link to post
Share on other sites
Я хуз, как этот ID получается.

Я тоже не знаю как он получается :)

Знаю точно одно.

Пока сервер работает каждый юзер имеет неизменный ID. ID начинаются с нуля (или единицы :) ) и идут вверх до кол-ва пользователей. Если в процессе работы сервера кто-то из юзеров был удален в ID-ах может быть дырка т.е.

 

1

2 <Дырка.

4 <нет тройки

5

 

После перезапуска сервера, в принципе, соответствие ID-юзер может изменится

Link to post
Share on other sites

2stg-34: гы =) Круто =) Немного офигел, ну да ладно =) Для моей задачи твоя реализация ID'ов вполне подходит. Хотя, если они не привязаны за пользователями, хорошо бы мне тогда написать скрипт, очищающий мои эти правила и засунуть его в stop, в скрипте, запускающем stargazer =) Кстати, ID начинается с 0.

 

P.S. Вносишь ли ты изменения в исходники, которые уже выложил на сервере, при обнаружении новых багов или при необходимости патча?

 

2Max: NUM - это не правило, а номер.

NUM=`expr 5000 + ${ID}`

man expr

Link to post
Share on other sites

Полноценно пропатченный сервер под FreeBSD

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

 

Для линуксоидов не актуально.

 

http://www.stargazer.dp.ua/download/stg2-2...15-23.34.31.tgz

Link to post
Share on other sites
Как я понимаю, это временно, и указанный патч войдет в следующий релиз с помощью #ifdef BSD e.t.c. .?

Это полноценный, а не временный сервер.

 

ПС. Теперь под Фрей по команде ps ax будет видно два процесса

Link to post
Share on other sites
NUM=`expr 5000 + ${ID}`

man expr

Ну хачем так строго, сразу в маны. Это я знаю, ты просто меня не понял, я имел ввиду само правило с этим НОМЕРОМ. Зачем ты его два раза удаляешь? Или это опечатка?

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...