Иконка ресурса

hAuthD source code

Hint

Знаменитый
Пользователь
Сообщения
3
Розыгрыши
0
Репутация
188
Реакции
38
Баллы
1 243
Написано где-то в 2007 году или раньше. Может какому-нибудь археологу пригодится в коллекции. Для компиляции придётся найти Delphi 7 из 2002
 
Ого, какие люди
 
Спасибо
 
Немного погуглил и оказалось, что часто патчили exe, чтобы можно было добавить в окно выбора сервера несколько строк для одного реального игрового сервера. На самом деле эта функциональность всегда была, но я забыл написать о ней в документации. Информация была только на форумах, но уже потерялась.

Расширенный формат поля IP в lin2db.dbo.server

Пример:
192.168.1.*:192.168.1.10; 10.*:10.1.1.1,10.1.1.2; 87.213.67.1,87.213.67.2,87.213.67.3

Игрокам с IP 192.168.1.* будет выдан IP 192.168.1.10. Для игроков с IP 10.* будут выдаваться 10.1.1.1 и 10.1.1.2 (случайным образом). Всем остальным: 87.213.67.1, 87.213.67.2 или 87.213.67.3.

Пользовательские аккаунты могут иметь разные уровни доступа (от 0 до 9). Уровень доступа указывается у аккаунта в колонке special_gates (int). У каждой группы IP может быть указан минимальный требуемый уровень доступа (префиксы от s до s9). Если уровень доступа группы IP выше уровня доступа пользователя, то эти IP ему выдаваться не будут.

Пример:
1.1.1.1; s:2.2.2.2; s2:3.3.3.3,3.3.3.4

Игрокам с уровнем доступа 2 и выше будет выдан 3.3.3.3 или 3.3.3.4. Игрокам с уровнем доступа 1 - 2.2.2.2. Всем остальным - 1.1.1.1.

Поле master_id в lin2db.dbo.server

Для одного сервера можно добавить несколько строк в таблицу с разными IP и названиями. Можно использовать для добавления в список проксирующих серверов. В master_id указывается id главного сервера. Дополнительные сервера будут иметь статус offline, если главный сервер имеет статус offline.
 
Приятно видеть знакомых людей на форуме, авторегистрация есть в плане реализации?
 
Спасибо Я давным-давно выпал из L2, ничего делать не планирую (только если еще что-нибудь древнее откопать и опубликовать). Меня нашли в tg на днях и попросили дать исходники. Решил, что если уж давать кому-то, то сразу всем. Да и неужели это еще кому-то нужно?) За 20 лет и сервера другие, и протоколы, и опыта и знаний у людей больше (в моем случае это были студенческие поделки больше ради хобби), и кому нужно было уже давно написали своё со всеми функциями.
 
Л2 за долгое время превратилась в проект про донаты, но допилы идут. Самое страшное что теперь не игроки приходят, а нужно платить чтобы играли. Но история долгая у л2, думаю это будет вечно. У меня например желания пропало, есть вещи которые стоят дороже по времени.
 
мумии в египте ещё древнее, но кому-то до сих пор нужны
если игрок играет и получает левел 61
так он хочет дальше играть. а как ето сделать после вайпа?
заплатил кому-то чтоб докачал до 61 и играешь дальше
а чем платить? деньгами! а от куда их получить?????
 
На нормальных проектах не должно быть вайпов иначе грошь цена таким проектам, максимум это объединение серверов в 1 с переносом информации и возможно частичной потерей. Другой финансовый момент реклама, но платить игрокам чтобы играли по мне это перебор. В любом случае мне это мало интересно в последнее время, по этому каждый решает сам как и куда вливать финансы.
 
О, здравствуйте, мистер Hint.
 
Ахренеть. Пойду еще раз умоюсь. Спасибо тебе за труды человек, кто-то по сей день юзает это.


 
Насколько помню там был еще запрос в базу и отдельно dll для защиты.
Если это можно приложить на гитхаб было бы здорово.
 
Any idea why MaxConnectionsPerIP not working? Do i need to enable any other configuration?
 
Well, i got it.. in the manual it says

 
Спасибо, Hint! Согласен с Maksim, если возможно, пожалуйста, опубликуйте исходный код dll
 
Do you mean that ones?

Код:
Performs logging.
Auth (0 or 1) — save authentication results to files.
Guard (0 or 1) — save protection messages to files.
All (0 or 1) — save all messages from program window in files.
DB (0 or 1) — save information about entering the game in database.

If DB parameter equals to 1, then following table is required:

USE [lin2db]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[hauthd_log](
        [time] [datetime] NOT NULL,
        [account] [varchar](14) NOT NULL,
        [ip] [varchar](15) NOT NULL,
        [hkey] [varchar](16)
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF

Код:
Attention! Use this function only if you completely understand its meaning and
consequences!

ExecLogin (0 or 1) — allows to call MSSQL procedure after every successful
authentication.
If the value is 1, then hAuthD calls hauthd_login (Stored Procedure) after all
checks. Procedure receives account id (@uid parameter), IP (@ip) and hKey (@hkey).
Login to the game is blocked if procedure returns ok with 0 value.
Example of hauthd_login procedure:

USE [lin2db]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[hauthd_login]
@uid int,
@ip varchar(15),
@hkey varchar(16)
AS
SELECT pay_stat AS ok FROM user_account WITH (nolock) WHERE uid = @uid
 
I wonder if there is any reference for the research on the login process?
 
Hint
на постили патченый hauth
и добавили в секцию, такю настройку
Код:
[Adv]
ServerEndpoints = 2
When l2server connects, it takes first n servers with matching internal address from database (where n = ServerEndpoints)
Тут такого нет функционала?