File: dcc.h

package info (click to toggle)
hybserv 1.9.2-4
  • links: PTS
  • area: main
  • in suites: etch-m68k
  • size: 2,848 kB
  • ctags: 1,854
  • sloc: ansic: 37,037; sh: 3,167; makefile: 337
file content (89 lines) | stat: -rw-r--r-- 2,824 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
/*
 * dcc.h
 * Hybserv2 Services by Hybserv2 team
 *
 * $Id: dcc.h 1350 2005-11-29 11:40:00Z kreator $
 */

#ifndef INCLUDED_dcc_h
#define INCLUDED_dcc_h

#include "stdinc.h"
#include "config.h"
#include "hybdefs.h"

/* socket flags */
#define NOSOCKET     (-2) /* unused socket in portlist */
#define SOCK_UNUSED  (1 << 0) /* unused socket */
#define SOCK_TCMBOT  (1 << 1) /* socket is a tcm bot connection */
#define SOCK_BOTHUB  (1 << 2) /* tcm bot is the hub */
#define SOCK_PENDING (1 << 3) /* has the tcm sent the password yet? */
#define SOCK_DCC     (1 << 4) /* socket being used for dcc connection */
#define SOCK_EOF     (1 << 5) /* socket EOF'd during write() */
#define SOCK_NEEDID  (1 << 6) /* need ident reply */
#define SOCK_WRID    (1 << 7) /* need to request ident */
#define SOCK_CONNECT (1 << 8) /* connection has been activated */

/* DccUser flag macros */
#define SetDccConnect(x)   ((x)->flags |= SOCK_CONNECT)
#define IsDccConnect(x)    ((x)->flags &  SOCK_CONNECT)
#define ClearDccConnect(x) ((x)->flags &= ~SOCK_CONNECT)
#define SetDccPending(x)   ((x)->flags |= SOCK_PENDING)
#define IsDccPending(x)    ((x)->flags &  SOCK_PENDING)
#define ClearDccPending(x) ((x)->flags &= ~SOCK_PENDING)

struct PortInfo;
struct Botlist;

/* info for dcc/tcm connections */
struct DccUser
{
	struct DccUser *next, *prev;
	int socket;       /* socket file descriptor */
	int authfd;       /* ident file descriptor */
	int port;         /* remote port */
	char *nick;       /* nickname */
	char *username;   /* username */
	char *hostname;   /* hostname */
	int flags;        /* socket flags */
	char spill[MAXLINE * 2];
	int offset;

	/* time of their last message - for telnet clients who haven't entered
	 * their password yet, time that they connected */
	time_t idle;
};

void BroadcastDcc(int, char *, ...);
void SendUmode(int, char *, ...);
void SendDccMessage(struct DccUser *, char *);
void ConnectClient(struct PortInfo *);
int GreetDccUser(struct DccUser *);
void TelnetGreet(struct DccUser *);
void ExpireIdent(time_t);
void ExpireTelnet(time_t);
void CheckEOF(void);
struct Userlist *DccGetUser(struct DccUser *);
int telnet_check(int, char *);
void readauth(struct DccUser *);
void writeauth(struct DccUser *);
void onctcp(char *, char *, char *);
int ConnectToTCM(char *, struct Botlist *);
void LinkBots(void);
void CloseConnection(struct DccUser *);
void DeleteDccClient(struct DccUser *);
struct Botlist *GoodTCM(struct DccUser *);
struct DccUser *GetBot(char *);
struct DccUser *IsDccSock(int);
struct DccUser *IsOnDcc(char *);
void DccProcess(struct DccUser *, char *);
int BotProcess(struct DccUser *, char *);
void SendMotd(int);
void ServReboot(void);

extern struct DccUser *connections;
#ifdef ADMININFO
extern struct Luser *ClientList;
#endif /* ADMININFO */

#endif /* INCLUDED_dcc_h */