mirror of
https://github.com/anope/anope.git
synced 2026-07-08 11:23:13 +02:00
BUILD : 1.7.8 (606) BUGS : NOTES : Removed proxy detector code from the core, threads stuff still there. Needs good testing
git-svn-id: svn://svn.anope.org/anope/trunk@606 31f1291d-b8d6-0310-a050-a5561fc1590b git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@454 5417fbe8-f217-4b02-8779-1006273d7864
This commit is contained in:
parent
5ae91e374c
commit
2f44331e17
@@ -30,6 +30,7 @@ Provided by Anope Dev. <dev@anope.org> - 2005
|
||||
01/30 F ChanServ help to reflect the avaiable commands. [ #00]
|
||||
01/30 F ChanServ used some commands that were not valid on all ircds. [ #00]
|
||||
01/30 F Compiling modules under Mac OSX. [#285]
|
||||
03/07 R Removed Proxy Detector from core. [ #00]
|
||||
|
||||
Provided by crazytoon <da.crew@gmx.net> - 2005
|
||||
02/05 A Updated German language file. [ #00]
|
||||
|
||||
+132
@@ -27,6 +27,138 @@ Anope Version S V N
|
||||
|
||||
** DELETED CONFIGURATION DIRECTIVES **
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
# Proxy detection
|
||||
#
|
||||
###########################################################################
|
||||
|
||||
# Note: if ProxyDetect is not set, all parameters after it in this section
|
||||
# are optional.
|
||||
|
||||
# ProxyDetect [OPTIONAL]
|
||||
#
|
||||
# Enables insecure proxy detection. Services will automatically
|
||||
# scan each incoming user and akill those that use insecure proxy.
|
||||
#
|
||||
# Anope currently supports detection of Wingate (port 23), SOCKS4/5
|
||||
# (port 1080), and HTTP proxy (ports 3128 and 8080). It uses the
|
||||
# protocol of each proxy type to connect to an IRC server, it does
|
||||
# not only check if the port is open (so your users may still have
|
||||
# an open telnet server on their port 23 for example).
|
||||
#
|
||||
# WARNING: You should get the authorization of the administrator of
|
||||
# the computer which runs the proxy detector before enabling it; not
|
||||
# all administrators will accept it. Also note that in certain
|
||||
# countries, port scanning is prohibited.
|
||||
#
|
||||
# This feature requires threading support to be compiled into Anope.
|
||||
|
||||
#ProxyDetect
|
||||
|
||||
# ProxyThreads <number> [REQUIRED]
|
||||
#
|
||||
# Sets the number of threads Services will launch when starting. Each
|
||||
# thread will have the responsibility to scan queued hostname for
|
||||
# proxies.
|
||||
#
|
||||
# This value must be set depending of the number of users you have
|
||||
# on your network. The more threads are used, the more simultaneous
|
||||
# checks can be done. Remember however, that threads are
|
||||
# resource-consuming.
|
||||
#
|
||||
# WARNING: On Linux, each thread takes a background process, and there
|
||||
# is an additional process used for thread management; this is a problem
|
||||
# if you are limited in the number of background process you can use
|
||||
# (on a paid shell for example).
|
||||
|
||||
ProxyThreads 5
|
||||
|
||||
# ProxyMessage... <message> [RECOMMENDED]
|
||||
#
|
||||
# Sets the notices that will be sent out to users before Services
|
||||
# scan them for proxy. You may not use all of them, but just as much as
|
||||
# necessary.
|
||||
|
||||
ProxyMessage1 "I will now detect if you're using an insecure proxy."
|
||||
ProxyMessage2 "If you see a connection on port 23, 1080, 3128 or 8080 from"
|
||||
ProxyMessage3 "my.box.net, please disregard it, as it is the detector in action."
|
||||
ProxyMessage4 "See http://proxy.myirc.net/ for information about our proxy policy."
|
||||
#ProxyMessage5 "Enter"
|
||||
#ProxyMessage6 "whatever"
|
||||
#ProxyMessage7 "you want"
|
||||
#ProxyMessage8 "here."
|
||||
|
||||
# ProxyCheck... [OPTIONAL]
|
||||
#
|
||||
# Determines what types of proxy Anope will try to find (respectively
|
||||
# Wingate on port 23, SOCKS4 on port 1080, SOCKS5 on port 1080, HTTP
|
||||
# proxy on port 3128, HTTP proxy on port 8080 and HTTP proxy on port
|
||||
# 80).
|
||||
|
||||
ProxyCheckWingate
|
||||
ProxyCheckSocks4
|
||||
ProxyCheckSocks5
|
||||
ProxyCheckHTTP1
|
||||
ProxyCheckHTTP2
|
||||
ProxyCheckHTTP3
|
||||
|
||||
# ProxyTimeout <time> [REQUIRED]
|
||||
|
||||
# Sets the maximum length of time we allow a connect/read operation to
|
||||
# take. If you set this value too high, your threads may hang on a single
|
||||
# check for a very long time. The best is to try different values
|
||||
# and see which one is the more efficient for your network.
|
||||
|
||||
ProxyTimeout 15s
|
||||
|
||||
# ProxyTestServer <ip> <port> [REQUIRED]
|
||||
#
|
||||
# Sets the *IP* and port of the IRC server to use as a target when
|
||||
# testing users for proxy.
|
||||
|
||||
ProxyTestServer "1.2.3.4" 6667
|
||||
|
||||
# ProxyExpire <time> [RECOMMENDED]
|
||||
#
|
||||
# Sets the length of time before a proxy host cache entry expires, if
|
||||
# not used. If this is not set the default time is 2 days.
|
||||
|
||||
ProxyExpire 30d
|
||||
|
||||
# ProxyCacheExpire <time> [REQUIRED]
|
||||
#
|
||||
# Sets the length of time before a normal host cache entry expires, if
|
||||
# not used. This cannot be set to 0d.
|
||||
#
|
||||
# Every non-proxy hosts will be stored in cache (to avoid too many scans
|
||||
# to the same host), so you should set this enough low to not fill your
|
||||
# memory, especially on large networks.
|
||||
|
||||
ProxyCacheExpire 1d
|
||||
|
||||
# ProxyAkillReason <reason> [REQUIRED]
|
||||
#
|
||||
# Sets the reason that will be used to AKILL an user from the network
|
||||
# if a proxy is detected.
|
||||
|
||||
ProxyAkillReason "You're using an insecure proxy. See http://proxy.myirc.net/config.html for information about how to config your proxy in a safe manner."
|
||||
|
||||
# WallProxy [OPTIONAL]
|
||||
#
|
||||
# Sends a WALLOPS/GLOBOPS when an user using an insecure proxy is being
|
||||
# AKILLed.
|
||||
|
||||
WallProxy
|
||||
|
||||
# ProxyMax <number> [REQUIRED]
|
||||
#
|
||||
# Sets the maximum proxy cache entries that can be displayed in a single
|
||||
# call to OperServ CACHE.
|
||||
|
||||
ProxyMax 50
|
||||
|
||||
|
||||
Anope Version 1.7.8
|
||||
-------------------
|
||||
** ADDED CONFIGURATION DIRECTIVES **
|
||||
|
||||
@@ -10,6 +10,22 @@ Anope Version S V N
|
||||
|
||||
*** Del Strings:
|
||||
CHAN_HELP_ULTIMATE
|
||||
OPER_STATS_PROXY_MEM
|
||||
OPER_CACHE_SYNTAX
|
||||
OPER_CACHE_DISABLED
|
||||
OPER_CACHE_NOT_FOUND
|
||||
OPER_CACHE_REMOVED
|
||||
OPER_CACHE_HEADER
|
||||
OPER_CACHE_LIST
|
||||
OPER_CACHE_FOOTER
|
||||
OPER_CACHE_QUEUED
|
||||
OPER_CACHE_PROGRESS
|
||||
OPER_CACHE_NORMAL
|
||||
OPER_CACHE_WINGATE
|
||||
OPER_CACHE_SOCKS4
|
||||
OPER_CACHE_SOCKS5
|
||||
OPER_CACHE_HTTP
|
||||
OPER_HELP_CACHE
|
||||
|
||||
Anope Version 1.7.8
|
||||
-------------------
|
||||
|
||||
@@ -558,137 +558,6 @@ MailDelay 5m
|
||||
|
||||
#DontQuoteAddresses
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
# Proxy detection
|
||||
#
|
||||
###########################################################################
|
||||
|
||||
# Note: if ProxyDetect is not set, all parameters after it in this section
|
||||
# are optional.
|
||||
|
||||
# ProxyDetect [OPTIONAL]
|
||||
#
|
||||
# Enables insecure proxy detection. Services will automatically
|
||||
# scan each incoming user and akill those that use insecure proxy.
|
||||
#
|
||||
# Anope currently supports detection of Wingate (port 23), SOCKS4/5
|
||||
# (port 1080), and HTTP proxy (ports 3128 and 8080). It uses the
|
||||
# protocol of each proxy type to connect to an IRC server, it does
|
||||
# not only check if the port is open (so your users may still have
|
||||
# an open telnet server on their port 23 for example).
|
||||
#
|
||||
# WARNING: You should get the authorization of the administrator of
|
||||
# the computer which runs the proxy detector before enabling it; not
|
||||
# all administrators will accept it. Also note that in certain
|
||||
# countries, port scanning is prohibited.
|
||||
#
|
||||
# This feature requires threading support to be compiled into Anope.
|
||||
|
||||
#ProxyDetect
|
||||
|
||||
# ProxyThreads <number> [REQUIRED]
|
||||
#
|
||||
# Sets the number of threads Services will launch when starting. Each
|
||||
# thread will have the responsibility to scan queued hostname for
|
||||
# proxies.
|
||||
#
|
||||
# This value must be set depending of the number of users you have
|
||||
# on your network. The more threads are used, the more simultaneous
|
||||
# checks can be done. Remember however, that threads are
|
||||
# resource-consuming.
|
||||
#
|
||||
# WARNING: On Linux, each thread takes a background process, and there
|
||||
# is an additional process used for thread management; this is a problem
|
||||
# if you are limited in the number of background process you can use
|
||||
# (on a paid shell for example).
|
||||
|
||||
ProxyThreads 5
|
||||
|
||||
# ProxyMessage... <message> [RECOMMENDED]
|
||||
#
|
||||
# Sets the notices that will be sent out to users before Services
|
||||
# scan them for proxy. You may not use all of them, but just as much as
|
||||
# necessary.
|
||||
|
||||
ProxyMessage1 "I will now detect if you're using an insecure proxy."
|
||||
ProxyMessage2 "If you see a connection on port 23, 1080, 3128 or 8080 from"
|
||||
ProxyMessage3 "my.box.net, please disregard it, as it is the detector in action."
|
||||
ProxyMessage4 "See http://proxy.myirc.net/ for information about our proxy policy."
|
||||
#ProxyMessage5 "Enter"
|
||||
#ProxyMessage6 "whatever"
|
||||
#ProxyMessage7 "you want"
|
||||
#ProxyMessage8 "here."
|
||||
|
||||
# ProxyCheck... [OPTIONAL]
|
||||
#
|
||||
# Determines what types of proxy Anope will try to find (respectively
|
||||
# Wingate on port 23, SOCKS4 on port 1080, SOCKS5 on port 1080, HTTP
|
||||
# proxy on port 3128, HTTP proxy on port 8080 and HTTP proxy on port
|
||||
# 80).
|
||||
|
||||
ProxyCheckWingate
|
||||
ProxyCheckSocks4
|
||||
ProxyCheckSocks5
|
||||
ProxyCheckHTTP1
|
||||
ProxyCheckHTTP2
|
||||
ProxyCheckHTTP3
|
||||
|
||||
# ProxyTimeout <time> [REQUIRED]
|
||||
|
||||
# Sets the maximum length of time we allow a connect/read operation to
|
||||
# take. If you set this value too high, your threads may hang on a single
|
||||
# check for a very long time. The best is to try different values
|
||||
# and see which one is the more efficient for your network.
|
||||
|
||||
ProxyTimeout 15s
|
||||
|
||||
# ProxyTestServer <ip> <port> [REQUIRED]
|
||||
#
|
||||
# Sets the *IP* and port of the IRC server to use as a target when
|
||||
# testing users for proxy.
|
||||
|
||||
ProxyTestServer "1.2.3.4" 6667
|
||||
|
||||
# ProxyExpire <time> [RECOMMENDED]
|
||||
#
|
||||
# Sets the length of time before a proxy host cache entry expires, if
|
||||
# not used. If this is not set the default time is 2 days.
|
||||
|
||||
ProxyExpire 30d
|
||||
|
||||
# ProxyCacheExpire <time> [REQUIRED]
|
||||
#
|
||||
# Sets the length of time before a normal host cache entry expires, if
|
||||
# not used. This cannot be set to 0d.
|
||||
#
|
||||
# Every non-proxy hosts will be stored in cache (to avoid too many scans
|
||||
# to the same host), so you should set this enough low to not fill your
|
||||
# memory, especially on large networks.
|
||||
|
||||
ProxyCacheExpire 1d
|
||||
|
||||
# ProxyAkillReason <reason> [REQUIRED]
|
||||
#
|
||||
# Sets the reason that will be used to AKILL an user from the network
|
||||
# if a proxy is detected.
|
||||
|
||||
ProxyAkillReason "You're using an insecure proxy. See http://proxy.myirc.net/config.html for information about how to config your proxy in a safe manner."
|
||||
|
||||
# WallProxy [OPTIONAL]
|
||||
#
|
||||
# Sends a WALLOPS/GLOBOPS when an user using an insecure proxy is being
|
||||
# AKILLed.
|
||||
|
||||
WallProxy
|
||||
|
||||
# ProxyMax <number> [REQUIRED]
|
||||
#
|
||||
# Sets the maximum proxy cache entries that can be displayed in a single
|
||||
# call to OperServ CACHE.
|
||||
|
||||
ProxyMax 50
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
# NickServ configuration
|
||||
|
||||
+4
-9
@@ -52,31 +52,26 @@ Anope for Windows
|
||||
path one of two ways, either with \ or /. If you use \ you must
|
||||
add a secondary \; so c:\mysql would be c:\\mysql.
|
||||
|
||||
C) To use Anope's built in Proxy scanner you need to change
|
||||
PROXY_SCANNER to be equal to 1 (i.e. PROXY_SCANNER=1). Please note
|
||||
that the Anope's built in proxy scanner is not the best available,
|
||||
and that it's recommended to use another third party scanner.
|
||||
|
||||
D) Do you want to use the MD5 message-digest algorithm to encrypt
|
||||
C) Do you want to use the MD5 message-digest algorithm to encrypt
|
||||
passwords? Selecting "yes" protects your passwords from being
|
||||
stolen if someone gains access to the Services databases, but
|
||||
makes it impossible to recover forgotten passwords. There is no
|
||||
way to reverse this operation, so make sure you really want to
|
||||
enable it. Change DB_ENCRYPTION to be equal to 1 to enable it.
|
||||
|
||||
E) If you are using Visual Studio 6, this next line can be very
|
||||
D) If you are using Visual Studio 6, this next line can be very
|
||||
important. If you are getting an error during compile about
|
||||
"unresolved external symbol __ftol2", remove the # in front of
|
||||
VC6=/QIfist and attempt to compile again.
|
||||
|
||||
F) If you get an error about "Cannot find wsock32.lib" or
|
||||
E) If you get an error about "Cannot find wsock32.lib" or
|
||||
"Cannot find msvcrt.lib" when compiling, you need to define the
|
||||
libpath, in the LIBPATH directive. You can define the path in one
|
||||
of two ways: either with \ or /. If you use \ you must add a
|
||||
secondary \; so c:\sdk\lib would be c:\\sdk\\lib. Be sure to
|
||||
remove the # in front of LFLAGS.
|
||||
|
||||
G) Most import is to set the DATDEST to be the folder name where the
|
||||
F) Most import is to set the DATDEST to be the folder name where the
|
||||
database will be stored. This does not need to be the full path,
|
||||
just the folder under the main executable in which data will
|
||||
exist. In our example we will use "data"
|
||||
|
||||
+4
-34
@@ -326,24 +326,6 @@ E int RestrictMail;
|
||||
E int MailDelay;
|
||||
E int DontQuoteAddresses;
|
||||
|
||||
E int ProxyDetect;
|
||||
E int ProxyThreads;
|
||||
E char *ProxyMessage[8];
|
||||
E int ProxyCheckWingate;
|
||||
E int ProxyCheckSocks4;
|
||||
E int ProxyCheckSocks5;
|
||||
E int ProxyCheckHTTP1;
|
||||
E int ProxyCheckHTTP2;
|
||||
E int ProxyCheckHTTP3;
|
||||
E int ProxyTimeout;
|
||||
E char *ProxyTestServer;
|
||||
E int ProxyTestPort;
|
||||
E int ProxyExpire;
|
||||
E int ProxyCacheExpire;
|
||||
E char *ProxyAkillReason;
|
||||
E int WallProxy;
|
||||
E int ProxyMax;
|
||||
|
||||
E int NSDefFlags;
|
||||
E int NSDefLanguage;
|
||||
E int NSRegDelay;
|
||||
@@ -485,8 +467,7 @@ E void rdb_save_bs_core(BotInfo * bi);
|
||||
E void rdb_save_bs_rdb_core(BotInfo * bi);
|
||||
E void rdb_save_hs_core(HostCore * hc);
|
||||
E void rdb_save_os_db(unsigned int maxucnt, unsigned int maxutime,
|
||||
SList * ak, SList * sgl, SList * sql, SList * szl,
|
||||
HostCache * hc);
|
||||
SList * ak, SList * sgl, SList * sql, SList * szl);
|
||||
E void rdb_save_news(NewsItem * ni);
|
||||
E void rdb_save_exceptions(Exception * e);
|
||||
E void rdb_load_bs_dbase(void);
|
||||
@@ -693,6 +674,8 @@ E u_int32_t getrandom32(void);
|
||||
|
||||
E char *str_signed(unsigned char *str);
|
||||
|
||||
E void ntoa(struct in_addr addr, char *ipaddr, int len);
|
||||
|
||||
/**** modules.c ****/
|
||||
E void moduleCallBackRun(void);
|
||||
E void moduleCleanStruct(ModuleData **moduleData);
|
||||
@@ -804,19 +787,6 @@ E IgnoreData *get_ignore(const char *nick);
|
||||
E int split_buf(char *buf, char ***argv, int colon_special);
|
||||
E void process(void);
|
||||
|
||||
/**** proxy.c ****/
|
||||
|
||||
E HostCache *hcache[1024];
|
||||
|
||||
E HostCache *proxy_cache_add(char *host);
|
||||
E void get_proxy_stats(long *nrec, long *memuse);
|
||||
E void ntoa(struct in_addr addr, char *ipaddr, int len);
|
||||
E int proxy_check(char *nick, char *host, uint32 ip);
|
||||
E void proxy_expire();
|
||||
E int proxy_init(void);
|
||||
|
||||
E int do_cache(User *u);
|
||||
|
||||
/**** send.c ****/
|
||||
|
||||
E void send_cmd(const char *source, const char *fmt, ...)
|
||||
@@ -966,7 +936,7 @@ E void db_mysql_save_ns_req(NickRequest * nr);
|
||||
E void db_mysql_save_cs_info(ChannelInfo * ci);
|
||||
E void db_mysql_save_os_db(unsigned int maxucnt, unsigned int maxutime,
|
||||
SList * ak, SList * sgl, SList * sql,
|
||||
SList * szl, HostCache * hc);
|
||||
SList * szl);
|
||||
E void db_mysql_save_news(NewsItem * ni);
|
||||
E void db_mysql_save_exceptions(Exception * e);
|
||||
E void db_mysql_save_hs_core(HostCore * hc);
|
||||
|
||||
@@ -198,7 +198,6 @@ typedef struct akill_ Akill;
|
||||
typedef struct sxline_ SXLine;
|
||||
typedef struct hostcore_ HostCore;
|
||||
typedef struct newsitem_ NewsItem;
|
||||
typedef struct hostcache_ HostCache;
|
||||
typedef struct exception_ Exception;
|
||||
typedef struct cbmode_ CBMode;
|
||||
typedef struct cbmodeinfo_ CBModeInfo;
|
||||
@@ -1024,32 +1023,6 @@ struct session_ {
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
/* Proxy stuff */
|
||||
|
||||
|
||||
|
||||
struct hostcache_ {
|
||||
HostCache *prev, *next;
|
||||
|
||||
char *host; /* The hostname */
|
||||
uint32 ip; /* The IP address */
|
||||
|
||||
int16 status; /* HC_* below */
|
||||
time_t used; /* When was this entry last used? */
|
||||
};
|
||||
|
||||
/* We assume that values < 0 are in-progress values, and values > 0 are
|
||||
* proxy value. 0 is the normal value.
|
||||
*/
|
||||
|
||||
#define HC_QUEUED -2 /* Waiting to be scanned */
|
||||
#define HC_PROGRESS -1 /* Currently being scanned */
|
||||
#define HC_NORMAL 0 /* No proxy found on this host */
|
||||
#define HC_WINGATE 1 /* Wingate found */
|
||||
#define HC_SOCKS4 2 /* Socks4 found */
|
||||
#define HC_SOCKS5 3 /* Socks5 found */
|
||||
#define HC_HTTP 4 /* HTTP proxy found */
|
||||
|
||||
/**
|
||||
* DEFCON Defines
|
||||
**/
|
||||
|
||||
-58
@@ -2305,8 +2305,6 @@ OPER_STATS_OPERSERV_MEM
|
||||
OperServ : %6d registres, %5d kB
|
||||
OPER_STATS_SESSIONS_MEM
|
||||
Sessions : %6d registres, %5d kB
|
||||
OPER_STATS_PROXY_MEM
|
||||
Proxies : ^B%6d^B registres, ^B%5d^B kB
|
||||
OPER_STATS_AKILL_COUNT
|
||||
Numero actual de AKILLs: %d
|
||||
OPER_STATS_AKILL_EXPIRE_DAYS
|
||||
@@ -2787,42 +2785,6 @@ OPER_USERLIST_END
|
||||
Fi de la llista d'usuaris.
|
||||
|
||||
# CACHE responses
|
||||
OPER_CACHE_SYNTAX
|
||||
CACHE {DEL | LIST} {hostname | patró} [QUEUED | ALL]
|
||||
OPER_CACHE_DISABLED
|
||||
Detecció de Proxy deshabilitada.
|
||||
OPER_CACHE_NOT_FOUND
|
||||
%s no trobat al cau.
|
||||
OPER_CACHE_REMOVED
|
||||
%s ha estat esborrat del cau.
|
||||
OPER_CACHE_HEADER
|
||||
Hostname Estatus
|
||||
OPER_CACHE_LIST
|
||||
%-48s %s
|
||||
OPER_CACHE_FOOTER
|
||||
Fi de la llista - %d/%d instàncies mostrades.
|
||||
OPER_CACHE_QUEUED
|
||||
Encuat
|
||||
OPER_CACHE_PROGRESS
|
||||
En progrès
|
||||
OPER_CACHE_NORMAL
|
||||
Normal
|
||||
OPER_CACHE_WINGATE
|
||||
Wingate
|
||||
OPER_CACHE_SOCKS4
|
||||
SOCKS 4
|
||||
OPER_CACHE_SOCKS5
|
||||
SOCKS 5
|
||||
OPER_CACHE_HTTP
|
||||
Proxy HTTP
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
# Session Limiting and Exception messages
|
||||
#
|
||||
###########################################################################
|
||||
|
||||
# EXCEPTION responses
|
||||
OPER_SUPER_ADMIN_ON
|
||||
You are now a SuperAdmin
|
||||
OPER_SUPER_ADMIN_OFF
|
||||
@@ -5821,26 +5783,6 @@ OPER_HELP_USERLIST
|
||||
|
||||
Limitat a administradors de serveis.
|
||||
|
||||
OPER_HELP_CACHE
|
||||
Sintàxi: CACHE DEL hostname
|
||||
CACHE LIST patró [QUEUED | ALL]
|
||||
|
||||
La comanda CACHE DEL esborra el host especificat del cau.
|
||||
Això nomès esta indicat per a propòsits de debug.
|
||||
|
||||
La comanda CACHE LIST llista tots els proxies trobats que
|
||||
concordin amb el patró especificat. Si s'especifica l'opció QUEUED,
|
||||
llistara tots els processos encuats o en progres, i si s'especifica
|
||||
l'opció ALL, llistara tots els hostnames a cau.
|
||||
|
||||
Limitat a administradors de serveis.
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
# BotServ help messages
|
||||
#
|
||||
###########################################################################
|
||||
|
||||
OPER_HELP_MODLOAD
|
||||
Syntax: MODLOAD FileName
|
||||
|
||||
|
||||
@@ -2297,8 +2297,6 @@ OPER_STATS_OPERSERV_MEM
|
||||
OperServ : %6d Einträge, %5d kB
|
||||
OPER_STATS_SESSIONS_MEM
|
||||
Verbindungen : %6d Einträge, %5d kB
|
||||
OPER_STATS_PROXY_MEM
|
||||
Proxies : %6d records, %5d kB
|
||||
OPER_STATS_AKILL_COUNT
|
||||
Aktuelle Anzahl von AKILLs: %d
|
||||
OPER_STATS_AKILL_EXPIRE_DAYS
|
||||
@@ -2781,34 +2779,6 @@ OPER_USERLIST_END
|
||||
###########################################################################
|
||||
|
||||
# EXCEPTION responses
|
||||
OPER_CACHE_SYNTAX
|
||||
CACHE {DEL | LIST} {Hostname | Muster} [QUEUED | ALL]
|
||||
OPER_CACHE_DISABLED
|
||||
Proxy Detektor ist deaktiviert.
|
||||
OPER_CACHE_NOT_FOUND
|
||||
%s wurde nicht im Cache gefunden.
|
||||
OPER_CACHE_REMOVED
|
||||
%s wurde aus dem Cache gelöscht.
|
||||
OPER_CACHE_HEADER
|
||||
Hostname Status
|
||||
OPER_CACHE_LIST
|
||||
%-48s %s
|
||||
OPER_CACHE_FOOTER
|
||||
Ende der Liste - %d/%d passende Einträge angezeigt.
|
||||
OPER_CACHE_QUEUED
|
||||
in der Warteschlange
|
||||
OPER_CACHE_PROGRESS
|
||||
in Bearbeitung
|
||||
OPER_CACHE_NORMAL
|
||||
Normal
|
||||
OPER_CACHE_WINGATE
|
||||
Wingate
|
||||
OPER_CACHE_SOCKS4
|
||||
SOCKS 4
|
||||
OPER_CACHE_SOCKS5
|
||||
SOCKS 5
|
||||
OPER_CACHE_HTTP
|
||||
HTTP proxy
|
||||
OPER_SUPER_ADMIN_ON
|
||||
Du bist jetzt ein Super-Admin.
|
||||
OPER_SUPER_ADMIN_OFF
|
||||
@@ -6024,27 +5994,6 @@ OPER_HELP_USERLIST
|
||||
#
|
||||
###########################################################################
|
||||
|
||||
OPER_HELP_CACHE
|
||||
Syntax: CACHE DEL Hostname
|
||||
CACHE LIST Muster [QUEUED | ALL]
|
||||
|
||||
Der CACHE DEL Befehl löscht den angegeben Hostnamen aus dem
|
||||
Cache. Dieser Befehl ist ausschließlich für DEBUG Zwecke.
|
||||
|
||||
Der CACHE LIST Befehl listet alle Proxies auf, die dem
|
||||
angegebenen Muster entsprechen. Falls die QUEUED Option
|
||||
mitangegeben wird, werden alle Scans in der Warteschlange und
|
||||
alle Scans die gerade laufen angezeigt. Wenn die ALL Option
|
||||
mitangegeben wird, werden alle Hostnamen aufgelistet.
|
||||
|
||||
Beschränkt auf Services Administratoren.
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
# BotServ help messages ## 19.10.2004 ##
|
||||
#
|
||||
###########################################################################
|
||||
|
||||
OPER_HELP_MODLOAD
|
||||
Syntax: MODLOAD Modul-Name
|
||||
|
||||
|
||||
@@ -2234,8 +2234,6 @@ OPER_STATS_OPERSERV_MEM
|
||||
OperServ : %6d records, %5d kB
|
||||
OPER_STATS_SESSIONS_MEM
|
||||
Sessions : %6d records, %5d kB
|
||||
OPER_STATS_PROXY_MEM
|
||||
Proxies : %6d records, %5d kB
|
||||
OPER_STATS_AKILL_COUNT
|
||||
Current number of AKILLs: %d
|
||||
OPER_STATS_AKILL_EXPIRE_DAYS
|
||||
@@ -2705,35 +2703,6 @@ OPER_USERLIST_RECORD
|
||||
OPER_USERLIST_END
|
||||
End of users list.
|
||||
|
||||
# CACHE responses
|
||||
OPER_CACHE_SYNTAX
|
||||
CACHE {DEL | LIST} {hostname | pattern} [QUEUED | ALL]
|
||||
OPER_CACHE_DISABLED
|
||||
Proxy detection is disabled.
|
||||
OPER_CACHE_NOT_FOUND
|
||||
%s was not found in the cache.
|
||||
OPER_CACHE_REMOVED
|
||||
%s has been removed from the cache.
|
||||
OPER_CACHE_HEADER
|
||||
Hostname Status
|
||||
OPER_CACHE_LIST
|
||||
%-48s %s
|
||||
OPER_CACHE_FOOTER
|
||||
End of list - %d/%d matches shown.
|
||||
OPER_CACHE_QUEUED
|
||||
Queued
|
||||
OPER_CACHE_PROGRESS
|
||||
In progress
|
||||
OPER_CACHE_NORMAL
|
||||
Normal
|
||||
OPER_CACHE_WINGATE
|
||||
Wingate
|
||||
OPER_CACHE_SOCKS4
|
||||
SOCKS 4
|
||||
OPER_CACHE_SOCKS5
|
||||
SOCKS 5
|
||||
OPER_CACHE_HTTP
|
||||
HTTP proxy
|
||||
OPER_SUPER_ADMIN_ON
|
||||
You are now a SuperAdmin
|
||||
OPER_SUPER_ADMIN_OFF
|
||||
@@ -4975,7 +4944,6 @@ OPER_HELP_ADMIN_CMD
|
||||
OPERNEWS Define messages to be shown to users who oper
|
||||
SESSION View the list of host sessions
|
||||
EXCEPTION Modify the session-limit exception list
|
||||
CACHE Lists hostname cache used by the proxy detector
|
||||
NOOP Temporarily remove all O:lines of a server
|
||||
remotely
|
||||
JUPE "Jupiter" a server
|
||||
@@ -5580,20 +5548,6 @@ OPER_HELP_USERLIST
|
||||
|
||||
Limited to Services admins.
|
||||
|
||||
OPER_HELP_CACHE
|
||||
Syntax: CACHE DEL hostname
|
||||
CACHE LIST pattern [QUEUED | ALL]
|
||||
|
||||
The CACHE DEL command deletes the specified hostname from
|
||||
the cache. This is meant for debug purpose only.
|
||||
|
||||
The CACHE LIST command lists all found proxies that match the
|
||||
given pattern. If the QUEUED option is given, it will list
|
||||
the queued or in progress scans instead, and if the ALL option
|
||||
is given, it will list all cached hostnames.
|
||||
|
||||
Limited to Services admins.
|
||||
|
||||
OPER_HELP_MODLOAD
|
||||
Syntax: MODLOAD FileName
|
||||
|
||||
|
||||
@@ -2276,8 +2276,6 @@ OPER_STATS_OPERSERV_MEM
|
||||
OperServ : %6d records, %5d kB
|
||||
OPER_STATS_SESSIONS_MEM
|
||||
Sesiones : %6d records, %5d kB
|
||||
OPER_STATS_PROXY_MEM
|
||||
Proxies : ^B%6d^B records, ^B%5d^B kB
|
||||
OPER_STATS_AKILL_COUNT
|
||||
Numero actual de AKILLs: %d
|
||||
OPER_STATS_AKILL_EXPIRE_DAYS
|
||||
@@ -2759,42 +2757,6 @@ OPER_USERLIST_END
|
||||
Fin de la lista de usuarios.
|
||||
|
||||
# CACHE responses
|
||||
OPER_CACHE_SYNTAX
|
||||
CACHE {DEL | LIST} {hostname | patron} [QUEUED | ALL]
|
||||
OPER_CACHE_DISABLED
|
||||
Deteccion de Proxy deshabilitada.
|
||||
OPER_CACHE_NOT_FOUND
|
||||
%s no encontrado en el cache.
|
||||
OPER_CACHE_REMOVED
|
||||
%s ha sido removido del cache.
|
||||
OPER_CACHE_HEADER
|
||||
Hostname Estatus
|
||||
OPER_CACHE_LIST
|
||||
%-48s %s
|
||||
OPER_CACHE_FOOTER
|
||||
Fin de la lista - %d/%d instancias mostradas.
|
||||
OPER_CACHE_QUEUED
|
||||
Encolado
|
||||
OPER_CACHE_PROGRESS
|
||||
En progreso
|
||||
OPER_CACHE_NORMAL
|
||||
Normal
|
||||
OPER_CACHE_WINGATE
|
||||
Wingate
|
||||
OPER_CACHE_SOCKS4
|
||||
SOCKS 4
|
||||
OPER_CACHE_SOCKS5
|
||||
SOCKS 5
|
||||
OPER_CACHE_HTTP
|
||||
Proxy HTTP
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
# Session Limiting and Exception messages
|
||||
#
|
||||
###########################################################################
|
||||
|
||||
# EXCEPTION responses
|
||||
OPER_SUPER_ADMIN_ON
|
||||
Ahora eres un SuperAdmin.
|
||||
OPER_SUPER_ADMIN_OFF
|
||||
@@ -5800,26 +5762,6 @@ OPER_HELP_USERLIST
|
||||
|
||||
Limitado a administradores de Servicios.
|
||||
|
||||
OPER_HELP_CACHE
|
||||
Sintaxis: CACHE DEL hostname
|
||||
CACHE LIST patron [QUEUED | ALL]
|
||||
|
||||
El comando CACHE DEL borra el host especificado del cache.
|
||||
Esto esta dispuesto solo para propositos de debug.
|
||||
|
||||
El comando CACHE LIST lista todos los proxies encontrados que
|
||||
concuerden con el patron dado. Si la opcion QUEUED es dada,
|
||||
listara los procesos encolados o en progreso en vez, y si la
|
||||
opcion ALL es dada, listara todos los hostnames en cache.
|
||||
|
||||
Limitado a administradores de Servicios.
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
# BotServ help messages
|
||||
#
|
||||
###########################################################################
|
||||
|
||||
OPER_HELP_MODLOAD
|
||||
Sintaxis: MODLOAD NombreArchivo
|
||||
|
||||
|
||||
@@ -2316,8 +2316,6 @@ OPER_STATS_OPERSERV_MEM
|
||||
OperServ : %6d enregistrements, %5d ko
|
||||
OPER_STATS_SESSIONS_MEM
|
||||
Sessions : %6d enregistrements, %5d ko
|
||||
OPER_STATS_PROXY_MEM
|
||||
Proxies : %6d enregistrements, %5d ko
|
||||
OPER_STATS_AKILL_COUNT
|
||||
Nombre d'AKILLs actuel: %d
|
||||
OPER_STATS_AKILL_EXPIRE_DAYS
|
||||
@@ -2800,42 +2798,6 @@ OPER_USERLIST_END
|
||||
Fin de la liste des utilisateurs.
|
||||
|
||||
# CACHE responses
|
||||
OPER_CACHE_SYNTAX
|
||||
CACHE {DEL | LIST} {hostname | pattern} [QUEUED | ALL]
|
||||
OPER_CACHE_DISABLED
|
||||
La détection de proxies est désactivée.
|
||||
OPER_CACHE_NOT_FOUND
|
||||
%s n'a pas été trouvé dans le cache.
|
||||
OPER_CACHE_REMOVED
|
||||
%s a été supprimé du cache.
|
||||
OPER_CACHE_HEADER
|
||||
Nom d'hôte Status
|
||||
OPER_CACHE_LIST
|
||||
%-48s %s
|
||||
OPER_CACHE_FOOTER
|
||||
Fin de la liste - %d/%d correspondances affichées.
|
||||
OPER_CACHE_QUEUED
|
||||
En attente
|
||||
OPER_CACHE_PROGRESS
|
||||
En cours
|
||||
OPER_CACHE_NORMAL
|
||||
Normal
|
||||
OPER_CACHE_WINGATE
|
||||
Wingate
|
||||
OPER_CACHE_SOCKS4
|
||||
SOCKS 4
|
||||
OPER_CACHE_SOCKS5
|
||||
SOCKS 5
|
||||
OPER_CACHE_HTTP
|
||||
Proxy HTTP
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
# Session Limiting and Exception messages
|
||||
#
|
||||
###########################################################################
|
||||
|
||||
# EXCEPTION responses
|
||||
OPER_SUPER_ADMIN_ON
|
||||
Vous êtes maintenant SuperAdmin.
|
||||
OPER_SUPER_ADMIN_OFF
|
||||
@@ -5843,28 +5805,6 @@ OPER_HELP_USERLIST
|
||||
|
||||
Réservée aux Services admins.
|
||||
|
||||
OPER_HELP_CACHE
|
||||
Syntaxe: CACHE DEL nom d'hôte
|
||||
CACHE LIST modèle [QUEUED | ALL]
|
||||
|
||||
La commande CACHE DEL supprime du cache le nom d'hôte
|
||||
spécifié. Cette commande ne devrait être utilisée que
|
||||
pour le déboguage.
|
||||
|
||||
La commande CACHE LIST liste tous les proxies
|
||||
correspondants au modèle donné, ou, si l'option QUEUED
|
||||
est donnée, les scans en attente ou en cours, ou, si
|
||||
l'option ALL est donnée, tous les noms d'hôtes présents
|
||||
dans la cache.
|
||||
|
||||
Réservée aux administrateurs des services.
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
# BotServ help messages
|
||||
#
|
||||
###########################################################################
|
||||
|
||||
OPER_HELP_MODLOAD
|
||||
Syntax: MODLOAD FileName
|
||||
|
||||
|
||||
@@ -2294,8 +2294,6 @@ OPER_STATS_OPERSERV_MEM
|
||||
OperServ : %6d âÜóåéò, %5d kB
|
||||
OPER_STATS_SESSIONS_MEM
|
||||
Sessions : %6d âÜóåéò, %5d kB
|
||||
OPER_STATS_PROXY_MEM
|
||||
Proxies : %6d âÜóåéò, %5d kB
|
||||
OPER_STATS_AKILL_COUNT
|
||||
Ùò ôþñá õðÜñ÷ïõí AKILLs: %d
|
||||
OPER_STATS_AKILL_EXPIRE_DAYS
|
||||
@@ -2776,42 +2774,6 @@ OPER_USERLIST_END
|
||||
ÔÝëïò ëßóôáò ÷ñçóôþí.
|
||||
|
||||
# CACHE responses
|
||||
OPER_CACHE_SYNTAX
|
||||
CACHE {DEL | LIST} {hostname | pattern} [QUEUED | ALL]
|
||||
OPER_CACHE_DISABLED
|
||||
Ç Proxy áíß÷íåõóç åßíáé áðåíåñãïðïéçìÝíç.
|
||||
OPER_CACHE_NOT_FOUND
|
||||
%s äåí âñÝèçêå óôï cache.
|
||||
OPER_CACHE_REMOVED
|
||||
%s äéáãñÜöçêå áðü ôï cache.
|
||||
OPER_CACHE_HEADER
|
||||
ÌÜóêá-host Status
|
||||
OPER_CACHE_LIST
|
||||
%-48s %s
|
||||
OPER_CACHE_FOOTER
|
||||
ÔÝëïò ëßóôáò - %d/%d âñÝèçêáí.
|
||||
OPER_CACHE_QUEUED
|
||||
Queued
|
||||
OPER_CACHE_PROGRESS
|
||||
In progress
|
||||
OPER_CACHE_NORMAL
|
||||
Normal
|
||||
OPER_CACHE_WINGATE
|
||||
Wingate
|
||||
OPER_CACHE_SOCKS4
|
||||
SOCKS 4
|
||||
OPER_CACHE_SOCKS5
|
||||
SOCKS 5
|
||||
OPER_CACHE_HTTP
|
||||
HTTP proxy
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
# Session Limiting and Exception messages
|
||||
#
|
||||
###########################################################################
|
||||
|
||||
# EXCEPTION responses
|
||||
OPER_SUPER_ADMIN_ON
|
||||
You are now a SuperAdmin
|
||||
OPER_SUPER_ADMIN_OFF
|
||||
@@ -5713,26 +5675,6 @@ OPER_HELP_USERLIST
|
||||
|
||||
Ìüíï ãéá ôïõò Services admins.
|
||||
|
||||
OPER_HELP_CACHE
|
||||
Óýíôáîç: CACHE DEL hostname
|
||||
CACHE LIST åðéëïãÞ [QUEUED | ALL]
|
||||
|
||||
Ç åíôïëÞ CACHE DEL äéáãñÜöåé ôá óõãêåêñéìÝíá hostname áðü
|
||||
ôçí cache.
|
||||
|
||||
Ç åíôïëÞ CACHE LIST åìöáíßæåé ôçí ëßóôá ìå üëá ôá proxies ðïõ
|
||||
âñÝèçêáí êáé ôáéñéÜæïõí ìå ôçí åðéëïãÞ ðïõ äþóáôå. Áí äþóåôå QUEUED
|
||||
åðéëïãÞ, èá åìöáíßóåé ëßóôá ìå ôá queued Þ ôá scans, êáé ìå ôçí
|
||||
ALL åðéëïãÞ èá åìöáíßóåé üëá ôá cached hostnames.
|
||||
|
||||
Ìüíï ãéá ôïõò Services admins.
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
# BotServ help messages
|
||||
#
|
||||
###########################################################################
|
||||
|
||||
OPER_HELP_MODLOAD
|
||||
Syntax: MODLOAD FileName
|
||||
|
||||
|
||||
-44
@@ -2260,8 +2260,6 @@ OPER_STATS_OPERSERV_MEM
|
||||
OperServ : %6d bejegyzés, %5d kB
|
||||
OPER_STATS_SESSIONS_MEM
|
||||
Session : %6d bejegyzés, %5d kB
|
||||
OPER_STATS_PROXY_MEM
|
||||
Proxik : %6d bejegyzés, %5d kB
|
||||
OPER_STATS_AKILL_COUNT
|
||||
Aktuális AKILLek száma: %d
|
||||
OPER_STATS_AKILL_EXPIRE_DAYS
|
||||
@@ -2738,34 +2736,6 @@ OPER_USERLIST_END
|
||||
Vége a felhasználó listának.
|
||||
|
||||
# CACHE válaszok
|
||||
OPER_CACHE_SYNTAX
|
||||
CACHE {DEL | LIST} {hosztnév | pattern} [QUEUED | ALL]
|
||||
OPER_CACHE_DISABLED
|
||||
Proxy ellenörzés tiltva.
|
||||
OPER_CACHE_NOT_FOUND
|
||||
%s nem használt rejtést.
|
||||
OPER_CACHE_REMOVED
|
||||
%s törölve lesz rejtés használatáért(proxi).
|
||||
OPER_CACHE_HEADER
|
||||
Hosztnév Státusz
|
||||
OPER_CACHE_LIST
|
||||
%-48s %s
|
||||
OPER_CACHE_FOOTER
|
||||
Vége a listának - %d/%d bejegyzés mutatása.
|
||||
OPER_CACHE_QUEUED
|
||||
Várakozik
|
||||
OPER_CACHE_PROGRESS
|
||||
Folyamatban
|
||||
OPER_CACHE_NORMAL
|
||||
Normál
|
||||
OPER_CACHE_WINGATE
|
||||
Wingate
|
||||
OPER_CACHE_SOCKS4
|
||||
SOCKS 4
|
||||
OPER_CACHE_SOCKS5
|
||||
SOCKS 5
|
||||
OPER_CACHE_HTTP
|
||||
HTTP proxy
|
||||
OPER_SUPER_ADMIN_ON
|
||||
Most már Szuper-Admin vagy
|
||||
OPER_SUPER_ADMIN_OFF
|
||||
@@ -5606,20 +5576,6 @@ OPER_HELP_USERLIST
|
||||
|
||||
Korlátozva Szervíz adminoknak.
|
||||
|
||||
OPER_HELP_CACHE
|
||||
Syntax: CACHE DEL hostnév
|
||||
CACHE LIST pattern [QUEUED | ALL]
|
||||
|
||||
The CACHE DEL command deletes the specified hostname from
|
||||
the cache. This is meant for debug purpose only.
|
||||
|
||||
The CACHE LIST command lists all found proxies that match the
|
||||
given pattern. If the QUEUED option is given, it will list
|
||||
the queued or in progress scans instead, and if the ALL option
|
||||
is given, it will list all cached hostnames.
|
||||
|
||||
Korlátozva Szervíz adminoknak.
|
||||
|
||||
OPER_HELP_MODLOAD
|
||||
Syntax: MODLOAD Fájlnév
|
||||
|
||||
|
||||
@@ -2301,8 +2301,6 @@ OPER_STATS_OPERSERV_MEM
|
||||
OperServ: %6d records, %5d kB
|
||||
OPER_STATS_SESSIONS_MEM
|
||||
Sessioni: %6d records, %5d kB
|
||||
OPER_STATS_PROXY_MEM
|
||||
Proxy: %6d records, %5d kB
|
||||
OPER_STATS_AKILL_COUNT
|
||||
Numero attuale di AKILL: %d
|
||||
OPER_STATS_AKILL_EXPIRE_DAYS
|
||||
@@ -2781,41 +2779,6 @@ OPER_USERLIST_END
|
||||
Fine della lista dei nick.
|
||||
|
||||
# CACHE responses
|
||||
OPER_CACHE_SYNTAX
|
||||
CACHE {DEL | LIST} {hostname | pattern} [QUEUED | ALL]
|
||||
OPER_CACHE_DISABLED
|
||||
Il riconoscimento dei proxy è disabilitato.
|
||||
OPER_CACHE_NOT_FOUND
|
||||
Impossibile trovare %s nella cache.
|
||||
OPER_CACHE_REMOVED
|
||||
%s è stato rimosso dalla cache.
|
||||
OPER_CACHE_HEADER
|
||||
Hostname Stato
|
||||
OPER_CACHE_LIST
|
||||
%-48s %s
|
||||
OPER_CACHE_FOOTER
|
||||
Fine della lista - %d/%d risultati mostrati
|
||||
OPER_CACHE_QUEUED
|
||||
In coda
|
||||
OPER_CACHE_PROGRESS
|
||||
In corso
|
||||
OPER_CACHE_NORMAL
|
||||
Normale
|
||||
OPER_CACHE_WINGATE
|
||||
Wingate
|
||||
OPER_CACHE_SOCKS4
|
||||
SOCKS 4
|
||||
OPER_CACHE_SOCKS5
|
||||
SOCKS 5
|
||||
OPER_CACHE_HTTP
|
||||
Proxy HTTP
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
# Session Limiting and Exception messages
|
||||
#
|
||||
###########################################################################
|
||||
|
||||
OPER_SUPER_ADMIN_ON
|
||||
Ora sei un SuperAdmin.
|
||||
OPER_SUPER_ADMIN_OFF
|
||||
@@ -5865,26 +5828,6 @@ OPER_HELP_USERLIST
|
||||
|
||||
Limitato ai Services admin.
|
||||
|
||||
OPER_HELP_CACHE
|
||||
Sintsasi: CACHE DEL hostname
|
||||
CACHE LIST pattern [QUEUED | ALL]
|
||||
|
||||
Il comando CACHE DEL rimuove l'hostname specificato dalla
|
||||
cache. Questo comando va usato solo a scopo di debug.
|
||||
|
||||
Il comando CACHE LIST mostra tutti i proxy che corrispondono
|
||||
al pattern specificato. Se viene indicata l'opzione QUEUED,
|
||||
mostra invece gli scan in coda e in corso, e se viene indicata
|
||||
l'opzione ALL, mostrerà tutti gli hostname nella cache.
|
||||
|
||||
Limitato ai Services admin.
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
# BotServ help messages
|
||||
#
|
||||
###########################################################################
|
||||
|
||||
OPER_HELP_MODLOAD
|
||||
Syntax: MODLOAD FileName
|
||||
|
||||
|
||||
@@ -2276,8 +2276,6 @@ OPER_STATS_OPERSERV_MEM
|
||||
OperServ : %6d records, %5d kB
|
||||
OPER_STATS_SESSIONS_MEM
|
||||
Sessies : %6d records, %5d kB
|
||||
OPER_STATS_PROXY_MEM
|
||||
Proxies : %6d records, %5d kB
|
||||
OPER_STATS_AKILL_COUNT
|
||||
Huidig aantal AKILLs: %d
|
||||
OPER_STATS_AKILL_EXPIRE_DAYS
|
||||
@@ -2750,34 +2748,6 @@ OPER_USERLIST_END
|
||||
Einde van gebruikers lijst.
|
||||
|
||||
# CACHE responses
|
||||
OPER_CACHE_SYNTAX
|
||||
CACHE {DEL | LIST} {hostname | trefbeeld} [QUEUED | ALL]
|
||||
OPER_CACHE_DISABLED
|
||||
Proxy detectie is uitgeschakeld.
|
||||
OPER_CACHE_NOT_FOUND
|
||||
%s is niet gevonden in de cache.
|
||||
OPER_CACHE_REMOVED
|
||||
%s is verwijderd uit de cache.
|
||||
OPER_CACHE_HEADER
|
||||
Hostname Status
|
||||
OPER_CACHE_LIST
|
||||
%-48s %s
|
||||
OPER_CACHE_FOOTER
|
||||
Eind lijst - %d/%d overeenkomsten weergegeven.
|
||||
OPER_CACHE_QUEUED
|
||||
In de wachtrij
|
||||
OPER_CACHE_PROGRESS
|
||||
In behandeling
|
||||
OPER_CACHE_NORMAL
|
||||
Normaal
|
||||
OPER_CACHE_WINGATE
|
||||
Wingate
|
||||
OPER_CACHE_SOCKS4
|
||||
SOCKS 4
|
||||
OPER_CACHE_SOCKS5
|
||||
SOCKS 5
|
||||
OPER_CACHE_HTTP
|
||||
HTTP proxy
|
||||
OPER_SUPER_ADMIN_ON
|
||||
Je bent nu een SuperAdministrator
|
||||
OPER_SUPER_ADMIN_OFF
|
||||
@@ -5735,28 +5705,6 @@ OPER_HELP_USERLIST
|
||||
|
||||
Gelimiteerd tot Services admins.
|
||||
|
||||
OPER_HELP_CACHE
|
||||
Gebruik: CACHE DEL hostname
|
||||
CACHE LIST trefbeeld [QUEUED | ALL]
|
||||
|
||||
Het CACHE DEL commando verwijderd de gegeven hostname uit
|
||||
de cache. Dit commando is alleen bedoeld voor debugging.
|
||||
|
||||
Het CACHE LIST commando geeft alle gevonden proxies weer
|
||||
die overeenkomen met het gegeven trefbeeld. Als de QUEUED
|
||||
optie is meegegeven zullen alleen scans die in de wachtrij
|
||||
staan of op het moment bezig zijn weergegeven worden, en als
|
||||
de ALL optie is gegeven zullen alle gecachde hostnames
|
||||
worden weergegeven.
|
||||
|
||||
Gelimiteerd tot Services admins.
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
# BotServ help messages
|
||||
#
|
||||
###########################################################################
|
||||
|
||||
OPER_HELP_MODLOAD
|
||||
Gebruik: MODLOAD bestandsnaam
|
||||
|
||||
|
||||
@@ -2470,8 +2470,6 @@ OPER_STATS_OPERSERV_MEM
|
||||
OperServ : %6d rekordów, %5d kB
|
||||
OPER_STATS_SESSIONS_MEM
|
||||
Sesji : %6d rekordów, %5d kB
|
||||
OPER_STATS_PROXY_MEM
|
||||
Proxy : %6d rekordów, %5d kB
|
||||
OPER_STATS_AKILL_COUNT
|
||||
Aktualna ilo¶æ AKILLów: %d
|
||||
OPER_STATS_AKILL_EXPIRE_DAYS
|
||||
@@ -2965,34 +2963,6 @@ OPER_USERLIST_END
|
||||
Koniec listy u¿ytkowników.
|
||||
|
||||
# CACHE responses
|
||||
OPER_CACHE_SYNTAX
|
||||
CACHE {DEL | LIST} {host | wzór} [QUEUED | ALL]
|
||||
OPER_CACHE_DISABLED
|
||||
Detekcja proxy jest wy³±czona.
|
||||
OPER_CACHE_NOT_FOUND
|
||||
%s nie znaleziono w cache.
|
||||
OPER_CACHE_REMOVED
|
||||
%s usuniêto z cache.
|
||||
OPER_CACHE_HEADER
|
||||
Host Status
|
||||
OPER_CACHE_LIST
|
||||
%-48s %s
|
||||
OPER_CACHE_FOOTER
|
||||
Koniec listy - %d/%d wyników pokazano.
|
||||
OPER_CACHE_QUEUED
|
||||
Kolejkowane
|
||||
OPER_CACHE_PROGRESS
|
||||
W trakcie
|
||||
OPER_CACHE_NORMAL
|
||||
Normalne
|
||||
OPER_CACHE_WINGATE
|
||||
Wingate
|
||||
OPER_CACHE_SOCKS4
|
||||
SOCKS 4
|
||||
OPER_CACHE_SOCKS5
|
||||
SOCKS 5
|
||||
OPER_CACHE_HTTP
|
||||
HTTP proxy
|
||||
OPER_SUPER_ADMIN_ON
|
||||
Jeste¶ teraz SuperAdminem.
|
||||
OPER_SUPER_ADMIN_OFF
|
||||
@@ -6155,20 +6125,6 @@ OPER_HELP_USERLIST
|
||||
|
||||
Limited to Services admins.
|
||||
|
||||
OPER_HELP_CACHE
|
||||
Syntax: CACHE DEL hostname
|
||||
CACHE LIST pattern [QUEUED | ALL]
|
||||
|
||||
The CACHE DEL command deletes the specified hostname from
|
||||
the cache. This is meant for debug purpose only.
|
||||
|
||||
The CACHE LIST command lists all found proxies that match the
|
||||
given pattern. If the QUEUED option is given, it will list
|
||||
the queued or in progress scans instead, and if the ALL option
|
||||
is given, it will list all cached hostnames.
|
||||
|
||||
Limited to Services admins.
|
||||
|
||||
OPER_HELP_MODLOAD
|
||||
Syntax: MODLOAD FileName
|
||||
|
||||
|
||||
@@ -2246,8 +2246,6 @@ OPER_STATS_OPERSERV_MEM
|
||||
OperServ : %6d registros, %5d kB
|
||||
OPER_STATS_SESSIONS_MEM
|
||||
Sessões : %6d registros, %5d kB
|
||||
OPER_STATS_PROXY_MEM
|
||||
Proxies : %6d registros, %5d kB
|
||||
OPER_STATS_AKILL_COUNT
|
||||
Número atual de AKILLs: %d
|
||||
OPER_STATS_AKILL_EXPIRE_DAYS
|
||||
@@ -2722,34 +2720,6 @@ OPER_USERLIST_END
|
||||
Fim da listagem.
|
||||
|
||||
# CACHE responses
|
||||
OPER_CACHE_SYNTAX
|
||||
CACHE {DEL | LIST} {host | padrão} [QUEUED | ALL]
|
||||
OPER_CACHE_DISABLED
|
||||
Detecção de Proxy está desabilitada.
|
||||
OPER_CACHE_NOT_FOUND
|
||||
%s não foi encontrado no cache.
|
||||
OPER_CACHE_REMOVED
|
||||
%s foi removido do cache.
|
||||
OPER_CACHE_HEADER
|
||||
Hostname Status
|
||||
OPER_CACHE_LIST
|
||||
%-48s %s
|
||||
OPER_CACHE_FOOTER
|
||||
Fim da lista - %d/%d resultados mostrados.
|
||||
OPER_CACHE_QUEUED
|
||||
Queued
|
||||
OPER_CACHE_PROGRESS
|
||||
Em progresso
|
||||
OPER_CACHE_NORMAL
|
||||
Normal
|
||||
OPER_CACHE_WINGATE
|
||||
Wingate
|
||||
OPER_CACHE_SOCKS4
|
||||
SOCKS 4
|
||||
OPER_CACHE_SOCKS5
|
||||
SOCKS 5
|
||||
OPER_CACHE_HTTP
|
||||
HTTP proxy
|
||||
OPER_SUPER_ADMIN_ON
|
||||
Você é agora um SuperAdmin
|
||||
OPER_SUPER_ADMIN_OFF
|
||||
@@ -5645,21 +5615,6 @@ OPER_HELP_USERLIST
|
||||
|
||||
Limitado aos Administradores dos Services.
|
||||
|
||||
OPER_HELP_CACHE
|
||||
Sintaxe: CACHE DEL host
|
||||
CACHE LIST padrão [QUEUED | ALL]
|
||||
|
||||
O comando CACHE DEL apaga do cache o host especificado.
|
||||
Isto é intensionado apenas para propósito de depuração.
|
||||
|
||||
O comando CACHE LIST lista todas as proxies encontradas
|
||||
que combinam com o padrão fornecido. Se a opção QUEUED
|
||||
for fornecida, serão listados os scans (varreduras) em espera
|
||||
ou em progresso, e se a opção ALL for fornecida, serão
|
||||
listados todos os hosts no cache.
|
||||
|
||||
Limitado aos Administradores dos Services.
|
||||
|
||||
OPER_HELP_MODLOAD
|
||||
Sintaxe: MODLOAD NomeDoArquivo
|
||||
|
||||
|
||||
@@ -2272,8 +2272,6 @@ OPER_STATS_OPERSERV_MEM
|
||||
OperServ : %6d çàïèñåé, %5d kB
|
||||
OPER_STATS_SESSIONS_MEM
|
||||
Ñåññèè : %6d çàïèñåé, %5d kB
|
||||
OPER_STATS_PROXY_MEM
|
||||
Ïðîêñè : %6d çàïèñåé, %5d kB
|
||||
OPER_STATS_AKILL_COUNT
|
||||
Êîëè÷åñòâî AKILL'îâ : %d
|
||||
OPER_STATS_AKILL_EXPIRE_DAYS
|
||||
@@ -2746,34 +2744,6 @@ OPER_USERLIST_END
|
||||
Êîíåö ñïèñêà ïîëüçîâàòåëåé.
|
||||
|
||||
# CACHE responses
|
||||
OPER_CACHE_SYNTAX
|
||||
CACHE {DEL | LIST} {èìÿ õîñòà | ñèìâîëüíàÿ ìàñêà} [QUEUED | ALL]
|
||||
OPER_CACHE_DISABLED
|
||||
Äåòåêòîð ïðîêñè îòêëþ÷åí.
|
||||
OPER_CACHE_NOT_FOUND
|
||||
%s íå íàéäåí â êýøå.
|
||||
OPER_CACHE_REMOVED
|
||||
%s óäàëåí èç êýøà.
|
||||
OPER_CACHE_HEADER
|
||||
Èìÿ õîñòà Ñòàòóñ
|
||||
OPER_CACHE_LIST
|
||||
%-48s %s
|
||||
OPER_CACHE_FOOTER
|
||||
Êîíåö ñïèñêà - %d/%d çàïèñåé íàéäåíî.
|
||||
OPER_CACHE_QUEUED
|
||||
Î÷åðåäü
|
||||
OPER_CACHE_PROGRESS
|
||||
Âûïîëíÿåòñÿ
|
||||
OPER_CACHE_NORMAL
|
||||
Normal
|
||||
OPER_CACHE_WINGATE
|
||||
Wingate
|
||||
OPER_CACHE_SOCKS4
|
||||
SOCKS 4
|
||||
OPER_CACHE_SOCKS5
|
||||
SOCKS 5
|
||||
OPER_CACHE_HTTP
|
||||
HTTP ïðîêñè
|
||||
OPER_SUPER_ADMIN_ON
|
||||
Òåïåðü Âû Ñóïåð-Àäìèí
|
||||
OPER_SUPER_ADMIN_OFF
|
||||
@@ -5629,20 +5599,6 @@ OPER_HELP_USERLIST
|
||||
|
||||
Ýòó êîìàíäó ìîãóò èñïîëüçîâàòü òîëüêî Àäìèíèñòðàòîðû ñåðâèñîâ.
|
||||
|
||||
OPER_HELP_CACHE
|
||||
Ñèíòàêñèñ: CACHE DEL õîñò
|
||||
CACHE LIST ñèìâîëüíàÿ ìàñêà [QUEUED | ALL]
|
||||
|
||||
Êîìàíäà CACHE DEL óäàëÿåò óêàçàííûé õîñò èç
|
||||
êýøà. Ýòà êîìàíäà ïðåäíàçíà÷åíà òîëüêî äëÿ îòëàäêè.
|
||||
|
||||
Êîìàíäà CACHE LIST ïîêàçûâàåò ñïèñêî âñåõ íàéäåííûõ ïðîêñè, ïîäïàäàþùèõ ïîä
|
||||
óêàçàííóþ ñèìâîëüíóþ ìàñêó. Åñëè óêàçàòü ïàðàìåòð QUEUED, òî áóäåò ïîêàçàíà
|
||||
î÷åðåäü ñêàíîâ, è åñëè óêàçàòü ïàðàìåòð ALL,
|
||||
òî áóäóò ïîêàçàíû âñå êýøèðîâàííûå õîñòû.
|
||||
|
||||
Ýòó êîìàíäó ìîãóò èñïîëüçîâàòü òîëüêî Àäìèíèñòðàòîðû ñåðâèñîâ.
|
||||
|
||||
OPER_HELP_MODLOAD
|
||||
Ñèíòàêñèñ: MODLOAD ÈìÿÔàéëà
|
||||
|
||||
|
||||
@@ -2299,8 +2299,6 @@ OPER_STATS_OPERSERV_MEM
|
||||
OperServ : %6d kayýt, %5d kB
|
||||
OPER_STATS_SESSIONS_MEM
|
||||
Oturumlar : %6d kayýt, %5d kB
|
||||
OPER_STATS_PROXY_MEM
|
||||
Proxyler : %6d kayit, %5d kB
|
||||
OPER_STATS_AKILL_COUNT
|
||||
Þu anki AKILL sayýsý: %d
|
||||
OPER_STATS_AKILL_EXPIRE_DAYS
|
||||
@@ -2781,42 +2779,6 @@ OPER_USERLIST_END
|
||||
Kullanýcý listesi sonu.
|
||||
|
||||
# CACHE responses
|
||||
OPER_CACHE_SYNTAX
|
||||
CACHE {DEL | LIST} {host | model} [QUEUED | ALL]
|
||||
OPER_CACHE_DISABLED
|
||||
Proxy taramasi devre disi.
|
||||
OPER_CACHE_NOT_FOUND
|
||||
%s cache te bulunamadi.
|
||||
OPER_CACHE_REMOVED
|
||||
%s cache ten çikarildi.
|
||||
OPER_CACHE_HEADER
|
||||
Host Durum
|
||||
OPER_CACHE_LIST
|
||||
%-48s %s
|
||||
OPER_CACHE_FOOTER
|
||||
Liste sonu - %d/%d kayit gösterildi.
|
||||
OPER_CACHE_QUEUED
|
||||
Siraya alindi
|
||||
OPER_CACHE_PROGRESS
|
||||
Islemde
|
||||
OPER_CACHE_NORMAL
|
||||
Normal
|
||||
OPER_CACHE_WINGATE
|
||||
Wingate
|
||||
OPER_CACHE_SOCKS4
|
||||
SOCKS 4
|
||||
OPER_CACHE_SOCKS5
|
||||
SOCKS 5
|
||||
OPER_CACHE_HTTP
|
||||
HTTP proxy
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
# Session Limiting and Exception messages
|
||||
#
|
||||
###########################################################################
|
||||
|
||||
# EXCEPTION responses
|
||||
OPER_SUPER_ADMIN_ON
|
||||
You are now a SuperAdmin
|
||||
OPER_SUPER_ADMIN_OFF
|
||||
@@ -5662,26 +5624,6 @@ OPER_HELP_USERLIST
|
||||
|
||||
Servis adminlerinin Kullanýmýyla sýnýrlýdýr.
|
||||
|
||||
OPER_HELP_CACHE
|
||||
Kullanimi: CACHE DEL hostadi
|
||||
CACHE LIST model [QUEUED | ALL]
|
||||
|
||||
CACHE DEL komutu belirtilen hostadini cache ten siler.
|
||||
sadece hata kontrolü için kullanilir.
|
||||
|
||||
CACHE LIST komutu belirtilen modele uyan tüm proxy leri
|
||||
listeler. Eger QUEUED özelligi belirtilmisse, siradaki veya
|
||||
aktif taramalardaki proxy leri listeler. Eger ALL özelligi
|
||||
belirtilmis ise tüm cache teki hostadlarini listeler.
|
||||
|
||||
Servis adminlerinin kullanimiyla sinirlidir..
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
# BotServ help messages
|
||||
#
|
||||
###########################################################################
|
||||
|
||||
OPER_HELP_MODLOAD
|
||||
Syntax: MODLOAD FileName
|
||||
|
||||
|
||||
@@ -38,9 +38,6 @@ USE_MYSQL=0
|
||||
# Set this to the path where the MySQL libraries can be found
|
||||
#MYSQL_LIB="c:\\mysql\\lib\\opt\\"
|
||||
|
||||
# Set this to 1 to enable the proxy scanner
|
||||
PROXY_SCANNER=0
|
||||
|
||||
# Set this to 1 to enable database encryption
|
||||
DB_ENCRYPTION=0
|
||||
|
||||
@@ -160,10 +157,6 @@ MYPASQL_BUILD=$(CC) /LD $(MYSQL_INC_PATH) src\mypasql.c /link $(MYSQL_LIB_PATH)
|
||||
LIBS=$(LIBS) libmysql.lib zlib.lib
|
||||
!ENDIF
|
||||
|
||||
!IF $(PROXY_SCANNER) == 1
|
||||
BASE_CFLAGS=/D USE_THREADS $(BASE_CFLAGS)
|
||||
!ENDIF
|
||||
|
||||
!IF $(DB_ENCRYPTION) == 1
|
||||
BASE_CFLAGS=/D USE_ENCRYPTION /D ENCRYPT_MD5 $(BASE_CFLAGS)
|
||||
!ENDIF
|
||||
|
||||
+2
-5
@@ -4,14 +4,12 @@ IRCD_OBJ = $(IRCDFILE:.c=.o)
|
||||
OBJS = actions.o base64.o botserv.o channels.o chanserv.o commands.o compat.o converter.o \
|
||||
config.o datafiles.o encrypt.o events.o helpserv.o hostserv.o init.o language.o list.o log.o mail.o main.o \
|
||||
memory.o memoserv.o messages.o misc.o modules.o news.o nickserv.o operserv.o \
|
||||
process.o proxy.o send.o servers.o sessions.o slist.o sockutil.o \
|
||||
timeout.o users.o \
|
||||
process.o send.o servers.o sessions.o slist.o sockutil.o timeout.o users.o \
|
||||
$(VSNPRINTF_O) $(RDB_OBJ) $(MYSQL_OBJ) $(IRCD_OBJ)
|
||||
SRCS = actions.c base64.c botserv.c channels.c chanserv.c commands.c compat.c converter.c \
|
||||
config.c datafiles.c encrypt.c events.c helpserv.c hostserv.c init.c language.c list.c log.c mail.c main.c \
|
||||
memory.c memoserv.c messages.c misc.c modules.c news.c nickserv.c operserv.c \
|
||||
process.c proxy.c send.c servers.c sessions.c slist.c sockutil.c \
|
||||
timeout.c users.c \
|
||||
process.c send.c servers.c sessions.c slist.c sockutil.c timeout.c users.c \
|
||||
$(VSNPRINTF_C) $(RDB) $(MYSQL) $(IRCDFILE)
|
||||
|
||||
INCLUDES = ../include/commands.h ../include/defs.h ../include/language.h \
|
||||
@@ -73,7 +71,6 @@ news.o: news.c $(INCLUDES)
|
||||
nickserv.o: nickserv.c $(INCLUDES)
|
||||
operserv.o: operserv.c $(INCLUDES)
|
||||
process.o: process.c $(INCLUDES)
|
||||
proxy.o: proxy.c $(INCLUDES)
|
||||
send.o: send.c $(INCLUDES)
|
||||
servers.o: servers.c $(INCLUDES)
|
||||
sessions.o: sessions.c $(INCLUDES)
|
||||
|
||||
@@ -125,24 +125,6 @@ int RestrictMail;
|
||||
int MailDelay;
|
||||
int DontQuoteAddresses;
|
||||
|
||||
int ProxyDetect;
|
||||
int ProxyThreads;
|
||||
char *ProxyMessage[8];
|
||||
int ProxyCheckWingate;
|
||||
int ProxyCheckSocks4;
|
||||
int ProxyCheckSocks5;
|
||||
int ProxyCheckHTTP1;
|
||||
int ProxyCheckHTTP2;
|
||||
int ProxyCheckHTTP3;
|
||||
int ProxyTimeout;
|
||||
char *ProxyTestServer;
|
||||
int ProxyTestPort;
|
||||
int ProxyExpire;
|
||||
int ProxyCacheExpire;
|
||||
char *ProxyAkillReason;
|
||||
int WallProxy;
|
||||
int ProxyMax;
|
||||
|
||||
static int NSDefNone;
|
||||
char *NSGuestNickPrefix;
|
||||
int NSAllowKillImmed;
|
||||
@@ -567,30 +549,6 @@ Directive directives[] = {
|
||||
{"OperServAlias", {{PARAM_STRING, 0, &s_OperServAlias},
|
||||
{PARAM_STRING, 0, &desc_OperServAlias}}},
|
||||
{"PIDFile", {{PARAM_STRING, 0, &PIDFilename}}},
|
||||
{"ProxyAkillReason",
|
||||
{{PARAM_STRING, PARAM_RELOAD, &ProxyAkillReason}}},
|
||||
{"ProxyCacheExpire", {{PARAM_TIME, PARAM_RELOAD, &ProxyCacheExpire}}},
|
||||
{"ProxyCheckWingate", {{PARAM_SET, PARAM_RELOAD, &ProxyCheckWingate}}},
|
||||
{"ProxyCheckSocks4", {{PARAM_SET, PARAM_RELOAD, &ProxyCheckSocks4}}},
|
||||
{"ProxyCheckSocks5", {{PARAM_SET, PARAM_RELOAD, &ProxyCheckSocks5}}},
|
||||
{"ProxyCheckHTTP1", {{PARAM_SET, PARAM_RELOAD, &ProxyCheckHTTP1}}},
|
||||
{"ProxyCheckHTTP2", {{PARAM_SET, PARAM_RELOAD, &ProxyCheckHTTP2}}},
|
||||
{"ProxyCheckHTTP3", {{PARAM_SET, PARAM_RELOAD, &ProxyCheckHTTP3}}},
|
||||
{"ProxyDetect", {{PARAM_SET, 0, &ProxyDetect}}},
|
||||
{"ProxyExpire", {{PARAM_TIME, PARAM_RELOAD, &ProxyExpire}}},
|
||||
{"ProxyMax", {{PARAM_POSINT, PARAM_RELOAD, &ProxyMax}}},
|
||||
{"ProxyMessage1", {{PARAM_STRING, PARAM_RELOAD, &ProxyMessage[0]}}},
|
||||
{"ProxyMessage2", {{PARAM_STRING, PARAM_RELOAD, &ProxyMessage[1]}}},
|
||||
{"ProxyMessage3", {{PARAM_STRING, PARAM_RELOAD, &ProxyMessage[2]}}},
|
||||
{"ProxyMessage4", {{PARAM_STRING, PARAM_RELOAD, &ProxyMessage[3]}}},
|
||||
{"ProxyMessage5", {{PARAM_STRING, PARAM_RELOAD, &ProxyMessage[4]}}},
|
||||
{"ProxyMessage6", {{PARAM_STRING, PARAM_RELOAD, &ProxyMessage[5]}}},
|
||||
{"ProxyMessage7", {{PARAM_STRING, PARAM_RELOAD, &ProxyMessage[6]}}},
|
||||
{"ProxyMessage8", {{PARAM_STRING, PARAM_RELOAD, &ProxyMessage[7]}}},
|
||||
{"ProxyTestServer", {{PARAM_STRING, PARAM_RELOAD, &ProxyTestServer},
|
||||
{PARAM_PORT, PARAM_RELOAD, &ProxyTestPort}}},
|
||||
{"ProxyThreads", {{PARAM_POSINT, 0, &ProxyThreads}}},
|
||||
{"ProxyTimeout", {{PARAM_TIME, PARAM_RELOAD, &ProxyTimeout}}},
|
||||
{"ReadTimeout", {{PARAM_TIME, PARAM_RELOAD, &ReadTimeout}}},
|
||||
{"RemoteServer", {{PARAM_STRING, 0, &RemoteServer},
|
||||
{PARAM_PORT, 0, &RemotePort},
|
||||
@@ -656,7 +614,6 @@ Directive directives[] = {
|
||||
{"WallOSSGLine", {{PARAM_SET, PARAM_RELOAD, &WallOSSGLine}}},
|
||||
{"WallOSSQLine", {{PARAM_SET, PARAM_RELOAD, &WallOSSQLine}}},
|
||||
{"WallOSSZLine", {{PARAM_SET, PARAM_RELOAD, &WallOSSZLine}}},
|
||||
{"WallProxy", {{PARAM_SET, PARAM_RELOAD, &WallProxy}}},
|
||||
{"WallSetpass", {{PARAM_SET, PARAM_RELOAD, &WallSetpass}}},
|
||||
{"WallSGLineExpire", {{PARAM_SET, PARAM_RELOAD, &WallSGLineExpire}}},
|
||||
{"WallSQLineExpire", {{PARAM_SET, PARAM_RELOAD, &WallSQLineExpire}}},
|
||||
@@ -1367,15 +1324,6 @@ int read_config(int reload)
|
||||
CHECK(SendFrom);
|
||||
}
|
||||
|
||||
if (ProxyDetect) {
|
||||
CHECK(ProxyThreads);
|
||||
CHECK(ProxyTimeout);
|
||||
CHECK(ProxyTestServer);
|
||||
CHECK(ProxyCacheExpire);
|
||||
CHECK(ProxyAkillReason);
|
||||
CHECK(ProxyMax);
|
||||
}
|
||||
|
||||
if (GlobalOnCycle) {
|
||||
if (!GlobalOnCycleMessage && !GlobalOnCycleUP) {
|
||||
alog("GlobalOnCycleMessage and GlobalOnCycleUP are not defined disabling GlobalOnCycle");
|
||||
|
||||
@@ -592,14 +592,6 @@ int init(int ac, char **av)
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Initialize proxy detection */
|
||||
#ifdef USE_THREADS
|
||||
if (ProxyDetect && !proxy_init()) {
|
||||
perror("proxy_init()");
|
||||
return -1;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* load any custom modules */
|
||||
modules_init();
|
||||
|
||||
|
||||
@@ -128,10 +128,6 @@ extern void expire_all(void)
|
||||
expire_szlines();
|
||||
}
|
||||
expire_exceptions();
|
||||
#ifdef USE_THREADS
|
||||
if (ProxyDetect)
|
||||
proxy_expire();
|
||||
#endif
|
||||
send_event(EVENT_DB_EXPIRE, EVENT_STOP);
|
||||
}
|
||||
|
||||
|
||||
+2
-3
@@ -21,13 +21,13 @@ OBJS = actions.obj base64.obj botserv.obj channels.obj chanserv.obj commands.ob
|
||||
converter.obj config.obj datafiles.obj encrypt.obj events.obj helpserv.obj hostserv.obj \
|
||||
init.obj language.obj list.obj log.obj mail.obj main.obj memory.obj memoserv.obj \
|
||||
messages.obj misc.obj modules.obj news.obj nickserv.obj operserv.obj \
|
||||
process.obj proxy.obj send.obj servers.obj sessions.obj slist.obj sockutil.obj \
|
||||
process.obj send.obj servers.obj sessions.obj slist.obj sockutil.obj \
|
||||
timeout.obj users.obj $(RDB_O) $(MYSQL_O) $(CAPAB_O)
|
||||
|
||||
SRCS = actions.c base64.c botserv.c channels.c chanserv.c commands.c compat.c converter.c \
|
||||
config.c datafiles.c encrypt.c events.c helpserv.c hostserv.c init.c language.c list.c \
|
||||
log.c mail.c main.c memory.c memoserv.c messages.c misc.c modules.c news.c nickserv.c \
|
||||
operserv.c process.c proxy.c send.c servers.obj sessions.c slist.c sockutil.c \
|
||||
operserv.c process.c send.c servers.obj sessions.c slist.c sockutil.c \
|
||||
timeout.c users.c $(RDB_C) $(MYSQL_C) $(CAPAB_C)
|
||||
|
||||
###########################################################################
|
||||
@@ -86,7 +86,6 @@ news.obj: news.c ..\include\services.h ..\include\
|
||||
nickserv.obj: nickserv.c ..\include\services.h ..\include\pseudo.h
|
||||
operserv.obj: operserv.c ..\include\services.h ..\include\pseudo.h
|
||||
process.obj: process.c ..\include\services.h ..\include\messages.h
|
||||
proxy.obj: proxy.c ..\include\services.h ..\include\pseudo.h
|
||||
send.obj: send.c ..\include\services.h
|
||||
servers.obj: servers.c ..\include\services.h
|
||||
sessions.obj: sessions.c ..\include\services.h ..\include\pseudo.h
|
||||
|
||||
@@ -1147,4 +1147,13 @@ char *stripModePrefix(const char *str) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Equivalent to inet_ntoa */
|
||||
|
||||
void ntoa(struct in_addr addr, char *ipaddr, int len)
|
||||
{
|
||||
unsigned char *bytes = (unsigned char *) &addr.s_addr;
|
||||
snprintf(ipaddr, len, "%u.%u.%u.%u", bytes[0], bytes[1], bytes[2],
|
||||
bytes[3]);
|
||||
}
|
||||
|
||||
/* EOF */
|
||||
|
||||
+1
-50
@@ -638,13 +638,11 @@ void db_mysql_save_cs_info(ChannelInfo * ci)
|
||||
|
||||
/*************************************************************************/
|
||||
void db_mysql_save_os_db(unsigned int maxucnt, unsigned int maxutime,
|
||||
SList * ak, SList * sgl, SList * sql, SList * szl,
|
||||
HostCache * hc)
|
||||
SList * ak, SList * sgl, SList * sql, SList * szl)
|
||||
{
|
||||
char sqlcmd[MAX_SQL_BUF];
|
||||
Akill *t_ak;
|
||||
SXLine *t_sl;
|
||||
HostCache *t_hc;
|
||||
char *takuser, *takhost, *takby, *takreason, *tslmask, *tslby,
|
||||
*tslreason, *thchost;
|
||||
|
||||
@@ -755,25 +753,6 @@ void db_mysql_save_os_db(unsigned int maxucnt, unsigned int maxutime,
|
||||
free(tslreason);
|
||||
}
|
||||
|
||||
/* and finally we save hcache */
|
||||
rdb_clear_table("anope_os_hcache");
|
||||
for (i = 0; i < 1024; i++) {
|
||||
for (t_hc = hcache[i]; t_hc; t_hc = t_hc->next) {
|
||||
/* Don't save in-progress scans */
|
||||
if (t_hc->status < HC_NORMAL)
|
||||
continue;
|
||||
thchost = db_mysql_quote(t_hc->host);
|
||||
snprintf(sqlcmd, MAX_SQL_BUF,
|
||||
"INSERT DELAYED INTO anope_os_hcache (mask,status,used) VALUES ('%s','%d','%d')",
|
||||
thchost, (int) t_hc->status, (int) t_hc->used);
|
||||
if (db_mysql_query(sqlcmd)) {
|
||||
log_perror("Can't create sql query: %s", sqlcmd);
|
||||
db_mysql_error(MYSQL_WARNING, "query");
|
||||
}
|
||||
free(thchost);
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1037,7 +1016,6 @@ void db_mysql_load_os_dbase(void)
|
||||
char sqlcmd[MAX_SQL_BUF];
|
||||
Akill *ak;
|
||||
SXLine *sx;
|
||||
HostCache *hc;
|
||||
int akc, sgc, sqc, szc, j;
|
||||
|
||||
if (!do_mysql)
|
||||
@@ -1146,33 +1124,6 @@ void db_mysql_load_os_dbase(void)
|
||||
slist_add(&szlines, sx);
|
||||
}
|
||||
mysql_free_result(mysql_res);
|
||||
|
||||
snprintf(sqlcmd, MAX_SQL_BUF,
|
||||
"SELECT `mask`,`status`,`used` FROM `anope_os_hcache`");
|
||||
if (db_mysql_query(sqlcmd)) {
|
||||
log_perror("Can't create sql query: %s", sqlcmd);
|
||||
db_mysql_error(MYSQL_WARNING, "query");
|
||||
return;
|
||||
}
|
||||
mysql_res = mysql_store_result(mysql);
|
||||
if (mysql_num_rows(mysql_res) == 0) {
|
||||
mysql_free_result(mysql_res);
|
||||
return;
|
||||
}
|
||||
while ((mysql_row = mysql_fetch_row(mysql_res))) {
|
||||
j = HASH(mysql_row[0]);
|
||||
hc = scalloc(1, sizeof(HostCache));
|
||||
hc->host = sstrdup(mysql_row[0]);
|
||||
hc->status = atoi(mysql_row[1]);
|
||||
hc->used = atoi(mysql_row[2]);
|
||||
|
||||
hc->prev = NULL;
|
||||
hc->next = hcache[j];
|
||||
if (hc->next)
|
||||
hc->next->prev = hc;
|
||||
hcache[j] = hc;
|
||||
}
|
||||
mysql_free_result(mysql_res);
|
||||
}
|
||||
|
||||
#undef HASH
|
||||
|
||||
+1
-54
@@ -195,7 +195,6 @@ void moduleAddOperServCmds(void) {
|
||||
c = createCommand("EXCEPTION", do_exception, is_services_admin,OPER_HELP_EXCEPTION, -1,-1,-1, -1); addCoreCommand(OPERSERV,c);
|
||||
c = createCommand("CHANLIST", do_chanlist, is_services_admin,OPER_HELP_CHANLIST, -1,-1,-1,-1); addCoreCommand(OPERSERV,c);
|
||||
c = createCommand("USERLIST", do_userlist, is_services_admin,OPER_HELP_USERLIST, -1,-1,-1,-1); addCoreCommand(OPERSERV,c);
|
||||
c = createCommand("CACHE", do_cache, is_services_admin,OPER_HELP_CACHE, -1,-1,-1,-1); addCoreCommand(OPERSERV,c);
|
||||
c = createCommand("DEFCON", do_defcon, is_services_admin, OPER_HELP_DEFCON,-1,-1,-1,-1); addCoreCommand(OPERSERV,c);
|
||||
c = createCommand("CHANKILL", do_chankill, is_services_admin, OPER_HELP_CHANKILL,-1,-1,-1,-1); addCoreCommand(OPERSERV,c);
|
||||
/* Commands for Services root: */
|
||||
@@ -492,7 +491,6 @@ void load_os_dbase(void)
|
||||
{
|
||||
dbFILE *f;
|
||||
int16 i, ver, c;
|
||||
HostCache *hc, **hclast, *hcprev;
|
||||
uint16 tmp16, n;
|
||||
uint32 tmp32;
|
||||
char *s;
|
||||
@@ -623,33 +621,6 @@ void load_os_dbase(void)
|
||||
}
|
||||
}
|
||||
|
||||
if (ver >= 12) {
|
||||
for (i = 0; i < 1024 && !failed; i++) {
|
||||
hclast = &hcache[i];
|
||||
hcprev = NULL;
|
||||
|
||||
while ((c = getc_db(f)) != 0) {
|
||||
if (c != 1)
|
||||
fatal("Invalid format in %s", OperDBName);
|
||||
|
||||
hc = scalloc(1, sizeof(HostCache));
|
||||
|
||||
SAFE(read_string(&hc->host, f));
|
||||
SAFE(read_int16(&tmp16, f));
|
||||
hc->status = tmp16;
|
||||
SAFE(read_int32(&tmp32, f));
|
||||
hc->used = tmp32;
|
||||
|
||||
*hclast = hc;
|
||||
hclast = &hc->next;
|
||||
hc->prev = hcprev;
|
||||
hcprev = hc;
|
||||
} /* while (getc_db(f) != 0) */
|
||||
|
||||
*hclast = NULL;
|
||||
} /* for (i) */
|
||||
}
|
||||
|
||||
close_db(f);
|
||||
|
||||
}
|
||||
@@ -680,7 +651,6 @@ void save_os_dbase(void)
|
||||
static time_t lastwarn = 0;
|
||||
Akill *ak;
|
||||
SXLine *sx;
|
||||
HostCache *hc;
|
||||
|
||||
if (!(f = open_db(s_OperServ, OperDBName, "w", OPER_VERSION)))
|
||||
return;
|
||||
@@ -732,22 +702,6 @@ void save_os_dbase(void)
|
||||
SAFE(write_int32(sx->expires, f));
|
||||
}
|
||||
|
||||
for (i = 0; i < 1024; i++) {
|
||||
for (hc = hcache[i]; hc; hc = hc->next) {
|
||||
/* Don't save in-progress scans */
|
||||
if (hc->status < HC_NORMAL)
|
||||
continue;
|
||||
|
||||
SAFE(write_int8(1, f));
|
||||
|
||||
SAFE(write_string(hc->host, f));
|
||||
SAFE(write_int16(hc->status, f));
|
||||
SAFE(write_int32(hc->used, f));
|
||||
|
||||
} /* for (hc) */
|
||||
SAFE(write_int8(0, f));
|
||||
} /* for (i) */
|
||||
|
||||
close_db(f);
|
||||
|
||||
}
|
||||
@@ -762,7 +716,7 @@ void save_os_rdb_dbase(void)
|
||||
if (!rdb_open())
|
||||
return;
|
||||
rdb_save_os_db(maxusercnt, maxusertime, &akills, &sglines, &sqlines,
|
||||
&szlines, hcache[0]);
|
||||
&szlines);
|
||||
rdb_close();
|
||||
#endif
|
||||
}
|
||||
@@ -1311,13 +1265,6 @@ static int do_stats(User * u)
|
||||
get_session_stats(&count, &mem);
|
||||
notice_lang(s_OperServ, u, OPER_STATS_SESSIONS_MEM, count,
|
||||
(mem + 512) / 1024);
|
||||
#ifdef USE_THREADS
|
||||
if (ProxyDetect) {
|
||||
get_proxy_stats(&count, &mem);
|
||||
notice_lang(s_OperServ, u, OPER_STATS_PROXY_MEM, count,
|
||||
(mem + 512) / 1024);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
-809
@@ -1,809 +0,0 @@
|
||||
/* Proxy detector.
|
||||
*
|
||||
* (C) 2003-2005 Anope Team
|
||||
* Contact us at info@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
*
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#include "services.h"
|
||||
#include "pseudo.h"
|
||||
#include <fcntl.h>
|
||||
|
||||
#ifndef INADDR_NONE
|
||||
#define INADDR_NONE 0xFFFFFFFF
|
||||
#endif
|
||||
|
||||
/* Hashed list of HostCache; threads must not use it! */
|
||||
HostCache *hcache[1024];
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
/* Equivalent to inet_ntoa */
|
||||
|
||||
void ntoa(struct in_addr addr, char *ipaddr, int len)
|
||||
{
|
||||
unsigned char *bytes = (unsigned char *) &addr.s_addr;
|
||||
snprintf(ipaddr, len, "%u.%u.%u.%u", bytes[0], bytes[1], bytes[2],
|
||||
bytes[3]);
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
#ifdef USE_THREADS
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
#define HASH(host) ((tolower((host)[0])&31)<<5 | (tolower((host)[1])&31))
|
||||
|
||||
/* Proxy queue; access controlled by queuemut */
|
||||
SList pxqueue;
|
||||
|
||||
#ifndef _WIN32
|
||||
ano_mutex_t queuemut = PTHREAD_MUTEX_INITIALIZER;
|
||||
ano_cond_t queuecond = PTHREAD_COND_INITIALIZER;
|
||||
|
||||
#if !defined(HAVE_GETHOSTBYNAME_R6) && !defined(HAVE_GETHOSTBYNAME_R5) && !defined(HAVE_GETHOSTBYNAME_R3)
|
||||
ano_mutex_t resmut = PTHREAD_MUTEX_INITIALIZER;
|
||||
#endif
|
||||
#else
|
||||
ano_mutex_t queuemut;
|
||||
ano_cond_t queuecond;
|
||||
#endif
|
||||
|
||||
static uint32 aton(char *ipaddr);
|
||||
static void proxy_akill(char *host);
|
||||
HostCache *proxy_cache_add(char *host);
|
||||
static void proxy_cache_del(HostCache * hc);
|
||||
static HostCache *proxy_cache_find(char *host);
|
||||
static int proxy_connect(unsigned long ip, unsigned short port);
|
||||
static void proxy_queue_cleanup_unlock(void *arg);
|
||||
static void proxy_queue_lock(void);
|
||||
static void proxy_queue_signal(void);
|
||||
static void proxy_queue_unlock(void);
|
||||
static void proxy_queue_wait(void);
|
||||
static int proxy_read(int s, char *buf, size_t buflen);
|
||||
static uint32 proxy_resolve(char *host);
|
||||
static int proxy_scan(uint32 ip);
|
||||
static void *proxy_thread_main(void *arg);
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
/* Equivalent to inet_addr */
|
||||
|
||||
static uint32 aton(char *ipaddr)
|
||||
{
|
||||
int i;
|
||||
long lv;
|
||||
char *endptr;
|
||||
uint32 res;
|
||||
unsigned char *bytes = (unsigned char *) &res;
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
if (!*ipaddr)
|
||||
return INADDR_NONE;
|
||||
|
||||
lv = strtol(ipaddr, &endptr, 10);
|
||||
if (lv < 0 || lv > 255 || (*endptr != 0 && *endptr != '.'))
|
||||
return INADDR_NONE;
|
||||
|
||||
bytes[i] = (unsigned char) lv;
|
||||
ipaddr = (!*endptr ? endptr : ++endptr);
|
||||
}
|
||||
|
||||
if (*endptr)
|
||||
return INADDR_NONE;
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
void get_proxy_stats(long *nrec, long *memuse)
|
||||
{
|
||||
int i;
|
||||
long mem = 0, count = 0;
|
||||
HostCache *hc;
|
||||
|
||||
for (i = 0; i < 1024; i++) {
|
||||
for (hc = hcache[i]; hc; hc = hc->next) {
|
||||
count += 1;
|
||||
mem += sizeof(HostCache);
|
||||
mem += strlen(hc->host) + 1;
|
||||
}
|
||||
}
|
||||
|
||||
*nrec = count;
|
||||
*memuse = mem;
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
/* Akills the given host, and issues a GLOBOPS if configured so */
|
||||
|
||||
static void proxy_akill(char *host)
|
||||
{
|
||||
anope_cmd_akill("*", host, s_OperServ, time(NULL),
|
||||
time(NULL) + (ProxyExpire ? ProxyExpire : 86400 * 2),
|
||||
ProxyAkillReason);
|
||||
if (WallProxy)
|
||||
anope_cmd_global(s_OperServ,
|
||||
"Insecure proxy \2%s\2 has been AKILLed.", host);
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
/* Adds a cache entry after having it allocated */
|
||||
|
||||
HostCache *proxy_cache_add(char *host)
|
||||
{
|
||||
HostCache *hc;
|
||||
int index = HASH(host);
|
||||
|
||||
hc = scalloc(1, sizeof(HostCache));
|
||||
hc->host = sstrdup(host);
|
||||
hc->used = time(NULL);
|
||||
|
||||
hc->prev = NULL;
|
||||
hc->next = hcache[index];
|
||||
if (hc->next)
|
||||
hc->next->prev = hc;
|
||||
hcache[index] = hc;
|
||||
|
||||
if (debug)
|
||||
alog("debug: Added %s to host cache", host);
|
||||
|
||||
return hc;
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
/* Deletes and frees a proxy cache entry */
|
||||
|
||||
static void proxy_cache_del(HostCache * hc)
|
||||
{
|
||||
/* Just to be sure */
|
||||
if (hc->status < 0)
|
||||
return;
|
||||
|
||||
if (debug)
|
||||
alog("debug: Deleting %s from host cache", hc->host);
|
||||
|
||||
if (hc->status > HC_NORMAL)
|
||||
anope_cmd_remove_akill("*", hc->host);
|
||||
|
||||
if (hc->next)
|
||||
hc->next->prev = hc->prev;
|
||||
if (hc->prev)
|
||||
hc->prev->next = hc->next;
|
||||
else
|
||||
hcache[HASH(hc->host)] = hc->next;
|
||||
|
||||
if (hc->host)
|
||||
free(hc->host);
|
||||
|
||||
free(hc);
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
/* Finds a proxy cache entry */
|
||||
|
||||
static HostCache *proxy_cache_find(char *host)
|
||||
{
|
||||
HostCache *hc;
|
||||
|
||||
for (hc = hcache[HASH(host)]; hc; hc = hc->next) {
|
||||
if (stricmp(hc->host, host) == 0)
|
||||
return hc;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
/* Checks whether the specified host is in the cache.
|
||||
* If so:
|
||||
* * if it's a proxy, take the appropriate actions, including killing nick
|
||||
* * if it's not a proxy, do nothing
|
||||
* If not:
|
||||
* * add the host to the cache
|
||||
* * add the host to the queue
|
||||
* * send a signal to a waiting thread (if any)
|
||||
*
|
||||
* Returns 0 if nick is to be added to internal list, 1 else
|
||||
*/
|
||||
|
||||
int proxy_check(char *nick, char *host, uint32 ip)
|
||||
{
|
||||
int i;
|
||||
char **message;
|
||||
HostCache *hc;
|
||||
|
||||
if ((hc = proxy_cache_find(host))) {
|
||||
hc->used = time(NULL);
|
||||
|
||||
if (hc->status <= HC_NORMAL)
|
||||
return 0;
|
||||
|
||||
proxy_akill(host);
|
||||
return 0;
|
||||
}
|
||||
|
||||
for (message = ProxyMessage, i = 0; i < 8 && *message && **message;
|
||||
message++, i++)
|
||||
notice(s_GlobalNoticer, nick, "%s", *message);
|
||||
|
||||
hc = proxy_cache_add(host);
|
||||
if (ircd->nickip) {
|
||||
hc->ip = htonl(ip);
|
||||
}
|
||||
hc->status = HC_QUEUED;
|
||||
|
||||
proxy_queue_lock();
|
||||
slist_add(&pxqueue, hc);
|
||||
if (debug)
|
||||
alog("debug: Added %s to proxy queue", hc->host);
|
||||
proxy_queue_signal();
|
||||
proxy_queue_unlock();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
/* Initiates a non-blocking connection */
|
||||
|
||||
static int proxy_connect(unsigned long ip, unsigned short port)
|
||||
{
|
||||
struct sockaddr_in sin;
|
||||
ano_socket_t s;
|
||||
|
||||
fd_set fds;
|
||||
struct timeval tv;
|
||||
int error;
|
||||
unsigned int errlen;
|
||||
|
||||
if ((s = socket(PF_INET, SOCK_STREAM, 0)) == -1)
|
||||
return -1;
|
||||
|
||||
if (ano_socksetnonb(s) == -1) {
|
||||
ano_sockclose(s);
|
||||
return -1;
|
||||
}
|
||||
|
||||
memset(&sin, 0, sizeof(struct sockaddr_in));
|
||||
|
||||
sin.sin_family = AF_INET;
|
||||
sin.sin_addr.s_addr = ip;
|
||||
sin.sin_port = htons(port);
|
||||
|
||||
if (connect(s, (struct sockaddr *) &sin, sizeof(struct sockaddr_in)) ==
|
||||
-1 && ano_sockerrnonb(ano_sockgeterr())) {
|
||||
ano_sockclose(s);
|
||||
return -1;
|
||||
}
|
||||
|
||||
FD_ZERO(&fds);
|
||||
FD_SET(s, &fds);
|
||||
|
||||
tv.tv_sec = ProxyTimeout;
|
||||
tv.tv_usec = 0;
|
||||
|
||||
if (select(s + 1, NULL, &fds, NULL, &tv) <= 0) {
|
||||
ano_sockclose(s);
|
||||
return -1;
|
||||
}
|
||||
|
||||
errlen = sizeof(int);
|
||||
#ifndef _WIN32
|
||||
if (getsockopt(s, SOL_SOCKET, SO_ERROR, &error, &errlen) == -1
|
||||
#else
|
||||
if (getsockopt(s, SOL_SOCKET, SO_ERROR, (char *) &error, &errlen) == -1
|
||||
#endif
|
||||
|| error != 0) {
|
||||
ano_sockclose(s);
|
||||
return -1;
|
||||
}
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
/* Deletes expired cache entries */
|
||||
|
||||
void proxy_expire()
|
||||
{
|
||||
int i;
|
||||
HostCache *hc, *next;
|
||||
time_t t = time(NULL);
|
||||
|
||||
for (i = 0; i < 1024; i++) {
|
||||
for (hc = hcache[i]; hc; hc = next) {
|
||||
next = hc->next;
|
||||
|
||||
/* Don't expire not scanned yet entries */
|
||||
if (hc->status < HC_NORMAL)
|
||||
continue;
|
||||
|
||||
if (hc->status == HC_NORMAL
|
||||
&& t - hc->used >= ProxyCacheExpire) {
|
||||
proxy_cache_del(hc);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (ProxyExpire && hc->status > HC_NORMAL
|
||||
&& t - hc->used >= ProxyExpire) {
|
||||
alog("proxy: Expiring proxy %s", hc->host);
|
||||
proxy_cache_del(hc);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
/* Initializes the proxy detector. Returns 1 on success, 0 on error. */
|
||||
|
||||
int proxy_init(void)
|
||||
{
|
||||
int i;
|
||||
ano_thread_t th;
|
||||
|
||||
slist_init(&pxqueue);
|
||||
|
||||
#ifdef _WIN32
|
||||
queuemut = CreateMutex(NULL, FALSE, NULL);
|
||||
queuecond = CreateEvent(NULL, FALSE, FALSE, NULL);
|
||||
#endif
|
||||
|
||||
for (i = 1; i <= ProxyThreads; i++) {
|
||||
if (ano_thread_create(th, proxy_thread_main, NULL))
|
||||
return 0;
|
||||
if (ano_thread_detach(th))
|
||||
return 0;
|
||||
if (debug)
|
||||
alog("debug: Creating proxy thread %ld (%d of %d)", (long) th,
|
||||
i, ProxyThreads);
|
||||
}
|
||||
|
||||
alog("Proxy detector initialized");
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
static void proxy_queue_cleanup_unlock(void *arg)
|
||||
{
|
||||
proxy_queue_unlock();
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
static void proxy_queue_lock(void)
|
||||
{
|
||||
if (debug)
|
||||
alog("debug: Thread %ld: Locking proxy queue mutex",
|
||||
(long) ano_thread_self());
|
||||
ano_mutex_lock(queuemut);
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
static void proxy_queue_signal(void)
|
||||
{
|
||||
if (debug)
|
||||
alog("debug: Thread %ld: Signaling proxy queue condition",
|
||||
(long) ano_thread_self());
|
||||
ano_cond_signal(queuecond);
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
static void proxy_queue_unlock(void)
|
||||
{
|
||||
if (debug)
|
||||
alog("debug: Thread %ld: Unlocking proxy queue mutex",
|
||||
(long) ano_thread_self());
|
||||
ano_mutex_unlock(queuemut);
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
static void proxy_queue_wait(void)
|
||||
{
|
||||
if (debug)
|
||||
alog("debug: Thread %ld: waiting proxy queue condition",
|
||||
(long) ano_thread_self());
|
||||
ano_cond_wait(queuecond, queuemut);
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
/* Reads from the socket, in a non-blocking manner */
|
||||
|
||||
static int proxy_read(int s, char *buf, size_t buflen)
|
||||
{
|
||||
fd_set fds;
|
||||
struct timeval tv;
|
||||
|
||||
FD_ZERO(&fds);
|
||||
FD_SET(s, &fds);
|
||||
|
||||
tv.tv_sec = ProxyTimeout;
|
||||
tv.tv_usec = 0;
|
||||
|
||||
if (select(s + 1, &fds, NULL, NULL, &tv) <= 0)
|
||||
return -1;
|
||||
|
||||
return recv(s, buf, buflen, 0);
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
/* Resolves hostnames in a thread safe manner */
|
||||
|
||||
static uint32 proxy_resolve(char *host)
|
||||
{
|
||||
struct hostent *hentp = NULL;
|
||||
uint32 ip = INADDR_NONE;
|
||||
#if defined(HAVE_GETHOSTBYNAME_R6)
|
||||
struct hostent hent;
|
||||
char hbuf[8192];
|
||||
int herrno;
|
||||
|
||||
if (gethostbyname_r(host, &hent, hbuf, sizeof(hbuf), &hentp, &herrno) <
|
||||
0)
|
||||
hentp = NULL;
|
||||
#elif defined(HAVE_GETHOSTBYNAME_R5)
|
||||
struct hostent hent char hbuf[8192];
|
||||
int herrno;
|
||||
hentp = gethostbyname_r(host, &hent, hbuf, sizeof(hbuf), &herrno);
|
||||
#elif defined(HAVE_GETHOSTBYNAME_R3)
|
||||
struct hostent hent;
|
||||
struct hostent_data data;
|
||||
hentp = gethostbyname_r(host, &hent, &data);
|
||||
#elif defined(_WIN32)
|
||||
/* MSVC's gethostbyname is thread safe -- codemastr */
|
||||
hentp = gethostbyname(host);
|
||||
#else
|
||||
/* Make it safe that way */
|
||||
ano_mutex_lock(resmut);
|
||||
hentp = gethostbyname(host);
|
||||
#endif
|
||||
|
||||
if (hentp) {
|
||||
memcpy(&ip, hentp->h_addr, sizeof(hentp->h_length));
|
||||
if (debug) {
|
||||
char ipbuf[16];
|
||||
struct in_addr addr;
|
||||
addr.s_addr = ip;
|
||||
ntoa(addr, ipbuf, sizeof(ipbuf));
|
||||
alog("debug: Thread %ld: resolved %s to %s",
|
||||
(long) ano_thread_self(), host, ipbuf);
|
||||
}
|
||||
}
|
||||
#if !defined(HAVE_GETHOSTBYNAME_R6) && !defined(HAVE_GETHOSTBYNAME_R5) && !defined(HAVE_GETHOSTBYNAME_R3) && !defined(_WIN32)
|
||||
ano_mutex_unlock(resmut);
|
||||
#endif
|
||||
|
||||
return ip;
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
/* Scans the given host for proxy */
|
||||
|
||||
static int proxy_scan(uint32 ip)
|
||||
{
|
||||
int s; /* Socket */
|
||||
int i;
|
||||
|
||||
if (ip == INADDR_NONE)
|
||||
return HC_NORMAL;
|
||||
|
||||
/* Scan for SOCKS (4/5) */
|
||||
|
||||
for (i = 0; i < 2; i++) {
|
||||
if ((s = proxy_connect(ip, 1080)) == -1)
|
||||
break;
|
||||
|
||||
if (ProxyCheckSocks4 && i == 0) {
|
||||
/* SOCKS4 */
|
||||
|
||||
char buf[9];
|
||||
uint32 sip;
|
||||
|
||||
sip = aton(ProxyTestServer);
|
||||
sip = htonl(sip);
|
||||
|
||||
buf[0] = 4;
|
||||
buf[1] = 1;
|
||||
buf[2] = (((unsigned short) ProxyTestPort) >> 8) & 0xFF;
|
||||
buf[3] = ((unsigned short) ProxyTestPort) & 0xFF;
|
||||
buf[4] = (sip >> 24) & 0xFF;
|
||||
buf[5] = (sip >> 16) & 0xFF;
|
||||
buf[6] = (sip >> 8) & 0xFF;
|
||||
buf[7] = sip & 0xFF;
|
||||
buf[8] = 0;
|
||||
|
||||
if (send(s, buf, 9, 0) != 9) {
|
||||
ano_sockclose(s);
|
||||
return HC_NORMAL;
|
||||
}
|
||||
|
||||
if (proxy_read(s, buf, 2) != 2) {
|
||||
ano_sockclose(s);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (buf[1] == 90) {
|
||||
ano_sockclose(s);
|
||||
return HC_SOCKS4;
|
||||
}
|
||||
|
||||
} else if (ProxyCheckSocks5 && i == 1) {
|
||||
/* SOCKS5 */
|
||||
|
||||
char buf[10];
|
||||
uint32 sip;
|
||||
|
||||
if (send(s, "\5\1\0", 3, 0) != 3) {
|
||||
ano_sockclose(s);
|
||||
continue;
|
||||
}
|
||||
|
||||
memset(buf, 0, sizeof(buf));
|
||||
|
||||
if (proxy_read(s, buf, 2) != 2) {
|
||||
ano_sockclose(s);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (buf[0] != 5 || buf[1] != 0) {
|
||||
ano_sockclose(s);
|
||||
continue;
|
||||
}
|
||||
|
||||
sip = aton(ProxyTestServer);
|
||||
sip = htonl(sip);
|
||||
|
||||
buf[0] = 5;
|
||||
buf[1] = 1;
|
||||
buf[2] = 0;
|
||||
buf[3] = 1;
|
||||
buf[4] = (sip >> 24) & 0xFF;
|
||||
buf[5] = (sip >> 16) & 0xFF;
|
||||
buf[6] = (sip >> 8) & 0xFF;
|
||||
buf[7] = sip & 0xFF;
|
||||
buf[8] = (((unsigned short) ProxyTestPort) >> 8) & 0xFF;
|
||||
buf[9] = ((unsigned short) ProxyTestPort) & 0xFF;
|
||||
|
||||
if (send(s, buf, 10, 0) != 10) {
|
||||
ano_sockclose(s);
|
||||
continue;
|
||||
}
|
||||
|
||||
memset(buf, 0, sizeof(buf));
|
||||
|
||||
if (proxy_read(s, buf, 2) != 2) {
|
||||
ano_sockclose(s);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (buf[0] == 5 && buf[1] == 0) {
|
||||
close(s);
|
||||
return HC_SOCKS5;
|
||||
}
|
||||
}
|
||||
|
||||
ano_sockclose(s);
|
||||
}
|
||||
|
||||
/* Scan for HTTP proxy */
|
||||
for (i = 0; i < 3; i++) {
|
||||
if ((i ==
|
||||
0 ? ProxyCheckHTTP2 : (i ==
|
||||
1 ? ProxyCheckHTTP1 : ProxyCheckHTTP3))
|
||||
&& (s =
|
||||
proxy_connect(ip,
|
||||
(i == 0 ? 8080 : (i == 1 ? 3128 : 80)))) !=
|
||||
-1) {
|
||||
int bread;
|
||||
char buf[64];
|
||||
|
||||
snprintf(buf, sizeof(buf), "CONNECT %s:%d HTTP/1.0\n\n",
|
||||
ProxyTestServer, ProxyTestPort);
|
||||
if (send(s, buf, strlen(buf), 0) == strlen(buf)) {
|
||||
if ((bread = proxy_read(s, buf, 15)) >= 12) {
|
||||
buf[bread] = 0;
|
||||
|
||||
if (!strnicmp(buf, "HTTP/1.0 200", 12) || !stricmp(buf, "HTTP/1.1 200 Co")) { /* Apache may return 200 OK
|
||||
even if it's not processing
|
||||
the CONNECT request. :/ */
|
||||
ano_sockclose(s);
|
||||
return HC_HTTP;
|
||||
}
|
||||
}
|
||||
}
|
||||
ano_sockclose(s);
|
||||
}
|
||||
}
|
||||
|
||||
/* Scan for Wingate */
|
||||
if (ProxyCheckWingate && (s = proxy_connect(ip, 23)) != -1) {
|
||||
char buf[9];
|
||||
|
||||
if (proxy_read(s, buf, 8) == 8) {
|
||||
buf[8] = '\0';
|
||||
if (!stricmp(buf, "Wingate>") || !stricmp(buf, "Too many")) {
|
||||
ano_sockclose(s);
|
||||
return HC_WINGATE;
|
||||
}
|
||||
}
|
||||
ano_sockclose(s);
|
||||
}
|
||||
|
||||
return HC_NORMAL;
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
/* Proxy detector threads entry point */
|
||||
|
||||
static void *proxy_thread_main(void *arg)
|
||||
{
|
||||
while (1) {
|
||||
ano_cleanup_push(proxy_queue_cleanup_unlock, NULL);
|
||||
proxy_queue_lock();
|
||||
proxy_queue_wait();
|
||||
ano_cleanup_pop(1);
|
||||
|
||||
/* We loop until there is no more host to check in the list */
|
||||
while (1) {
|
||||
HostCache *hc = NULL;
|
||||
int status;
|
||||
|
||||
ano_cleanup_push(proxy_queue_cleanup_unlock, NULL);
|
||||
proxy_queue_lock();
|
||||
if (pxqueue.count > 0) {
|
||||
hc = pxqueue.list[0];
|
||||
hc->status = HC_PROGRESS;
|
||||
slist_delete(&pxqueue, 0);
|
||||
}
|
||||
ano_cleanup_pop(1);
|
||||
|
||||
if (!hc)
|
||||
break;
|
||||
|
||||
if (debug) {
|
||||
if (hc->ip) {
|
||||
char ipbuf[16];
|
||||
struct in_addr in;
|
||||
in.s_addr = hc->ip;
|
||||
ntoa(in, ipbuf, sizeof(ipbuf));
|
||||
alog("debug: Scanning host %s [%s] for proxy",
|
||||
hc->host, ipbuf);
|
||||
} else {
|
||||
alog("debug: Scanning host %s for proxy", hc->host);
|
||||
}
|
||||
}
|
||||
if (!ircd->nickip) {
|
||||
/* Test if it's an IP, and if not try to resolve the hostname */
|
||||
if ((hc->ip = aton(hc->host)) == INADDR_NONE)
|
||||
hc->ip = proxy_resolve(hc->host);
|
||||
}
|
||||
status = proxy_scan(hc->ip);
|
||||
|
||||
if (debug) {
|
||||
char ipbuf[16];
|
||||
struct in_addr in;
|
||||
in.s_addr = hc->ip;
|
||||
ntoa(in, ipbuf, sizeof(ipbuf));
|
||||
alog("debug: Scan for %s [%s] complete, result: %d",
|
||||
hc->host, ipbuf, status);
|
||||
}
|
||||
|
||||
if (status > HC_NORMAL)
|
||||
proxy_akill(hc->host);
|
||||
|
||||
hc->status = status;
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
#endif
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
/* OperServ CACHE */
|
||||
|
||||
int do_cache(User * u)
|
||||
{
|
||||
#ifdef USE_THREADS
|
||||
char *cmd = strtok(NULL, " ");
|
||||
char *pattern = strtok(NULL, " ");
|
||||
|
||||
if (!ProxyDetect) {
|
||||
notice_lang(s_OperServ, u, OPER_CACHE_DISABLED);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
if (!cmd || !pattern) {
|
||||
syntax_error(s_OperServ, u, "CACHE", OPER_CACHE_SYNTAX);
|
||||
} else if (!stricmp(cmd, "DEL")) {
|
||||
HostCache *hc;
|
||||
|
||||
if (!(hc = proxy_cache_find(pattern))) {
|
||||
notice_lang(s_OperServ, u, OPER_CACHE_NOT_FOUND, pattern);
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
proxy_cache_del(hc);
|
||||
notice_lang(s_OperServ, u, OPER_CACHE_REMOVED, pattern);
|
||||
|
||||
if (readonly)
|
||||
notice_lang(s_OperServ, u, READ_ONLY_MODE);
|
||||
} else if (!stricmp(cmd, "LIST")) {
|
||||
char *option = strtok(NULL, " ");
|
||||
int i, restrict = 0, count = 0, total = 0;
|
||||
HostCache *hc;
|
||||
|
||||
static int statusdesc[7] = {
|
||||
OPER_CACHE_QUEUED,
|
||||
OPER_CACHE_PROGRESS,
|
||||
OPER_CACHE_NORMAL,
|
||||
OPER_CACHE_WINGATE,
|
||||
OPER_CACHE_SOCKS4,
|
||||
OPER_CACHE_SOCKS5,
|
||||
OPER_CACHE_HTTP
|
||||
};
|
||||
|
||||
if (option && !stricmp(option, "QUEUED"))
|
||||
restrict = 1;
|
||||
else if (option && !stricmp(option, "ALL"))
|
||||
restrict = 2;
|
||||
|
||||
notice_lang(s_OperServ, u, OPER_CACHE_HEADER);
|
||||
|
||||
for (i = 0; i < 1024; i++) {
|
||||
for (hc = hcache[i]; hc; hc = hc->next) {
|
||||
if (!match_wild_nocase(pattern, hc->host))
|
||||
continue;
|
||||
if ((restrict == 0 && hc->status <= HC_NORMAL)
|
||||
|| (restrict == 1 && hc->status >= HC_NORMAL))
|
||||
continue;
|
||||
total++;
|
||||
if (count >= ProxyMax)
|
||||
continue;
|
||||
notice_lang(s_OperServ, u, OPER_CACHE_LIST, hc->host,
|
||||
getstring(u->na, statusdesc[hc->status + 2]));
|
||||
count++;
|
||||
}
|
||||
}
|
||||
|
||||
notice_lang(s_OperServ, u, OPER_CACHE_FOOTER, count, total);
|
||||
|
||||
} else {
|
||||
syntax_error(s_OperServ, u, "CACHE", OPER_CACHE_SYNTAX);
|
||||
}
|
||||
#else
|
||||
notice_lang(s_OperServ, u, OPER_CACHE_DISABLED);
|
||||
#endif
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
@@ -314,12 +314,11 @@ void rdb_save_hs_core(HostCore * hc)
|
||||
/*************************************************************************/
|
||||
|
||||
void rdb_save_os_db(unsigned int maxucnt, unsigned int maxutime,
|
||||
SList * ak, SList * sgl, SList * sql, SList * szl,
|
||||
HostCache * hc)
|
||||
SList * ak, SList * sgl, SList * sql, SList * szl)
|
||||
{
|
||||
|
||||
#ifdef USE_MYSQL
|
||||
db_mysql_save_os_db(maxusercnt, maxusertime, ak, sgl, sql, szl, hc);
|
||||
db_mysql_save_os_db(maxusercnt, maxusertime, ak, sgl, sql, szl);
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
@@ -593,12 +593,6 @@ User *do_nick(const char *source, char *nick, char *username, char *host,
|
||||
if (LimitSessions && !add_session(nick, host))
|
||||
return NULL;
|
||||
|
||||
/* And finally, for proxy ;) */
|
||||
#ifdef USE_THREADS
|
||||
if (ProxyDetect && proxy_check(nick, host, ip)) {
|
||||
return NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Allocate User structure and fill it in. */
|
||||
user = new_user(nick);
|
||||
|
||||
+5
-1
@@ -8,10 +8,14 @@
|
||||
VERSION_MAJOR="1"
|
||||
VERSION_MINOR="7"
|
||||
VERSION_PATCH="8"
|
||||
VERSION_BUILD="605"
|
||||
VERSION_BUILD="606"
|
||||
|
||||
# $Log$
|
||||
#
|
||||
# BUILD : 1.7.8 (606)
|
||||
# BUGS :
|
||||
# NOTES : Removed proxy detector code from the core, threads stuff still there. Needs good testing
|
||||
#
|
||||
# BUILD : 1.7.8 (605)
|
||||
# BUGS : N/A
|
||||
# NOTES : Win32 encryption fixed
|
||||
|
||||
Reference in New Issue
Block a user