blob: ab6396a5dc4b5d84a1bf071fef058b1d2837ed65 (
plain) (
tree)
|
|
// Copyright (c) Athena Dev Teams - Licensed under GNU GPL
// For more information, see LICENCE in the main folder
#ifndef _LOGIN_H_
#define _LOGIN_H_
#include "../common/mmo.h" // NAME_LENGTH
#define LOGIN_CONF_NAME "conf/login_athena.conf"
#define LAN_CONF_NAME "conf/subnet_athena.conf"
// supported encryption types: 1- passwordencrypt, 2- passwordencrypt2, 3- both
#define PASSWORDENC 3
struct mmo_account {
int version;
char userid[NAME_LENGTH];
char passwd[NAME_LENGTH];
int passwdenc;
int account_id;
long login_id1;
long login_id2;
long char_id;
char lastlogin[24];
char sex;
//uint8 level;
};
struct mmo_char_server {
char name[20];
int fd;
uint32 ip;
uint16 port;
uint16 users; // user count on this server
uint16 maintenance; // in maintenance mode?
uint16 new_; // allows creating new chars?
};
extern struct Login_Config {
uint32 login_ip; // the address to bind to
uint16 login_port; // the port to bind to
unsigned int ip_sync_interval; // interval (in minutes) to execute a DNS/IP update (for dynamic IPs)
bool log_login; // whether to log login server actions or not
char date_format[32]; // date format used in messages
bool console; // console input system enabled?
bool new_account_flag; // autoregistration via _M/_F ?
// bool case_sensitive; // are logins case sensitive ?
bool use_md5_passwds; // work with password hashes instead of plaintext passwords?
// bool login_gm_read; // should the login server handle info about gm accounts?
int min_level_to_connect; // minimum level of player/GM (0: player, 1-99: GM) to connect
bool online_check; // reject incoming players that are already registered as online ?
bool check_client_version; // check the clientversion set in the clientinfo ?
int client_version_to_connect; // the client version needed to connect (if checking is enabled)
// bool ipban; // perform IP blocking (via contents of `ipbanlist`) ?
// bool dynamic_pass_failure_ban; // automatic IP blocking due to failed login attemps ?
// unsigned int dynamic_pass_failure_ban_interval; // how far to scan the loginlog for password failures
// unsigned int dynamic_pass_failure_ban_limit; // number of failures needed to trigger the ipban
// unsigned int dynamic_pass_failure_ban_duration; // duration of the ipban
bool use_dnsbl; // dns blacklist blocking ?
char dnsbl_servs[1024]; // comma-separated list of dnsbl servers
} login_config;
// TXT-specific account database
// holds info about all existing accounts (entire contents of account.txt)
extern struct auth_data {
int account_id;
uint8 sex; // 0, 1, 2
char userid[24];
char pass[32+1]; // 23+1 for normal, 32+1 for md5-ed passwords
char lastlogin[24];
int logincount;
uint32 state; // packet 0x006a value + 1 (0: compte OK)
char email[40]; // e-mail (by default: a@a.com)
char error_message[20]; // Message of error code #6 = Your are Prohibited to log in until %s (packet 0x006a)
time_t ban_until_time; // # of seconds 1/1/1970 (timestamp): ban time limit of the account (0 = no ban)
time_t connect_until_time; // # of seconds 1/1/1970 (timestamp): Validity limit of the account (0 = unlimited)
char last_ip[16]; // save of last IP of connection
char memo[255]; // a memo field
int account_reg2_num;
struct global_reg account_reg2[ACCOUNT_REG2_NUM]; // account script variables (stored on login server)
} *auth_dat;
// stores auth information of incoming clients
// used during charserver auth validation process
#define AUTH_FIFO_SIZE 256
extern struct _auth_fifo {
int account_id;
uint32 login_id1, login_id2;
uint32 ip;
uint8 sex;
bool delflag;
} auth_fifo[AUTH_FIFO_SIZE];
#endif /* _LOGIN_H_ */
|