1
0
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:
geniusdex geniusdex@31f1291d-b8d6-0310-a050-a5561fc1590b
2005-03-07 20:03:07 +00:00
parent 5ae91e374c
commit 2f44331e17
33 changed files with 179 additions and 1878 deletions
+1
View File
@@ -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
View File
@@ -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 **
+16
View File
@@ -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
-------------------
-131
View File
@@ -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
View File
@@ -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
View File
@@ -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);
-27
View File
@@ -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
View File
@@ -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
-51
View File
@@ -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
-46
View File
@@ -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
-58
View File
@@ -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
-60
View File
@@ -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
-58
View File
@@ -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
View File
@@ -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
-57
View File
@@ -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
-52
View File
@@ -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
-44
View File
@@ -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
-45
View File
@@ -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
-44
View File
@@ -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 ÈìÿÔàéëà
-58
View File
@@ -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
-7
View File
@@ -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
View File
@@ -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)
-52
View File
@@ -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");
-8
View File
@@ -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();
-4
View File
@@ -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
View File
@@ -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
+9
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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;
}
/*************************************************************************/
+2 -3
View File
@@ -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
}
-6
View File
@@ -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
View File
@@ -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