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

hAuthD source code

Hint

Знаменитый
Пользователь
Сообщения
3
Розыгрыши
0
Репутация
188
Реакции
39
Баллы
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 лет и сервера другие, и протоколы, и опыта и знаний у людей больше (в моем случае это были студенческие поделки больше ради хобби), и кому нужно было уже давно написали своё со всеми функциями.
 
Спасибо :) Я давным-давно выпал из L2, ничего делать не планирую (только если еще что-нибудь древнее откопать и опубликовать). Меня нашли в tg на днях и попросили дать исходники. Решил, что если уж давать кому-то, то сразу всем. Да и неужели это еще кому-то нужно?) За 20 лет и сервера другие, и протоколы, и опыта и знаний у людей больше (в моем случае это были студенческие поделки больше ради хобби), и кому нужно было уже давно написали своё со всеми функциями.
Л2 за долгое время превратилась в проект про донаты, но допилы идут. Самое страшное что теперь не игроки приходят, а нужно платить чтобы играли. Но история долгая у л2, думаю это будет вечно. ? У меня например желания пропало, есть вещи которые стоят дороже по времени.
 
Спасибо :) Я давным-давно выпал из L2, ничего делать не планирую (только если еще что-нибудь древнее откопать и опубликовать). Меня нашли в tg на днях и попросили дать исходники. Решил, что если уж давать кому-то, то сразу всем. Да и неужели это еще кому-то нужно?) За 20 лет и сервера другие, и протоколы, и опыта и знаний у людей больше (в моем случае это были студенческие поделки больше ради хобби), и кому нужно было уже давно написали своё со всеми функциями.
мумии в египте ещё древнее, но кому-то до сих пор нужны
Л2 за долгое время превратилась в проект про донаты, но допилы идут. Самое страшное что теперь не игроки приходят, а нужно платить чтобы играли. Но история долгая у л2, думаю это будет вечно. ? У меня например желания пропало, есть вещи которые стоят дороже по времени.
если игрок играет и получает левел 61
так он хочет дальше играть. а как ето сделать после вайпа?
заплатил кому-то чтоб докачал до 61 и играешь дальше
а чем платить? деньгами! а от куда их получить?????
 
мумии в египте ещё древнее, но кому-то до сих пор нужны

если игрок играет и получает левел 61
так он хочет дальше играть. а как ето сделать после вайпа?
заплатил кому-то чтоб докачал до 61 и играешь дальше
а чем платить? деньгами! а от куда их получить?????
На нормальных проектах не должно быть вайпов иначе грошь цена таким проектам, максимум это объединение серверов в 1 с переносом информации и возможно частичной потерей. Другой финансовый момент реклама, но платить игрокам чтобы играли по мне это перебор. В любом случае мне это мало интересно в последнее время, по этому каждый решает сам как и куда вливать финансы.
 
О, здравствуйте, мистер Hint.
 
Ахренеть. Пойду еще раз умоюсь. :oops: Спасибо тебе за труды человек, кто-то по сей день юзает это.


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

MaxConnectionsPerIP — limitation of simultaneous connections with authentication
server from one IP.
Limitation is applied not to the GAME, but to AUTHENTICATION only. Connection
lasts from the moment of clicking the login button until selection of a server
from a list.
 
Спасибо, Hint! Согласен с Maksim, если возможно, пожалуйста, опубликуйте исходный код dll
 
Насколько помню там был еще запрос в базу и отдельно 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)
Тут такого нет функционала?
 
Назад
Сверху Снизу