diff options
-rw-r--r-- | Changes | 1 | ||||
-rw-r--r-- | Changes.conf | 132 | ||||
-rw-r--r-- | Changes.lang | 16 | ||||
-rw-r--r-- | data/example.conf | 131 | ||||
-rw-r--r-- | docs/WIN32.txt | 13 | ||||
-rw-r--r-- | include/extern.h | 38 | ||||
-rw-r--r-- | include/services.h | 27 | ||||
-rw-r--r-- | lang/cat.l | 58 | ||||
-rw-r--r-- | lang/de.l | 51 | ||||
-rw-r--r-- | lang/en_us.l | 46 | ||||
-rw-r--r-- | lang/es.l | 58 | ||||
-rw-r--r-- | lang/fr.l | 60 | ||||
-rw-r--r-- | lang/gr.l | 58 | ||||
-rw-r--r-- | lang/hun.l | 44 | ||||
-rw-r--r-- | lang/it.l | 57 | ||||
-rw-r--r-- | lang/nl.l | 52 | ||||
-rw-r--r-- | lang/pl.l | 44 | ||||
-rw-r--r-- | lang/pt.l | 45 | ||||
-rw-r--r-- | lang/ru.l | 44 | ||||
-rw-r--r-- | lang/tr.l | 58 | ||||
-rw-r--r-- | makefile.inc.win32 | 7 | ||||
-rw-r--r-- | src/Makefile | 7 | ||||
-rw-r--r-- | src/config.c | 52 | ||||
-rw-r--r-- | src/init.c | 8 | ||||
-rw-r--r-- | src/main.c | 4 | ||||
-rw-r--r-- | src/makefile.win32 | 5 | ||||
-rw-r--r-- | src/misc.c | 9 | ||||
-rw-r--r-- | src/mysql.c | 51 | ||||
-rw-r--r-- | src/operserv.c | 55 | ||||
-rw-r--r-- | src/proxy.c | 809 | ||||
-rw-r--r-- | src/rdb.c | 5 | ||||
-rw-r--r-- | src/users.c | 6 | ||||
-rw-r--r-- | version.log | 6 |
33 files changed, 179 insertions, 1878 deletions
@@ -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] diff --git a/Changes.conf b/Changes.conf index 39a272caa..97a27b05e 100644 --- a/Changes.conf +++ b/Changes.conf @@ -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 ** diff --git a/Changes.lang b/Changes.lang index 3518ff057..7126e880e 100644 --- a/Changes.lang +++ b/Changes.lang @@ -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 ------------------- diff --git a/data/example.conf b/data/example.conf index f25f274f6..69d82370a 100644 --- a/data/example.conf +++ b/data/example.conf @@ -560,137 +560,6 @@ MailDelay 5m ########################################################################### # -# 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 # ########################################################################### diff --git a/docs/WIN32.txt b/docs/WIN32.txt index d743be716..3d09bef97 100644 --- a/docs/WIN32.txt +++ b/docs/WIN32.txt @@ -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" diff --git a/include/extern.h b/include/extern.h index 66cd043ce..1ddf6ecf6 100644 --- a/include/extern.h +++ b/include/extern.h @@ -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); diff --git a/include/services.h b/include/services.h index 9eaab1f47..51b9d3075 100644 --- a/include/services.h +++ b/include/services.h @@ -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 **/ diff --git a/lang/cat.l b/lang/cat.l index eae947a61..abceb125d 100644 --- a/lang/cat.l +++ b/lang/cat.l @@ -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 diff --git a/lang/en_us.l b/lang/en_us.l index 75d29ec8a..1772e4d43 100644 --- a/lang/en_us.l +++ b/lang/en_us.l @@ -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 diff --git a/lang/hun.l b/lang/hun.l index 78b71a15a..1efc6735f 100644 --- a/lang/hun.l +++ b/lang/hun.l @@ -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 diff --git a/makefile.inc.win32 b/makefile.inc.win32 index 3081640e4..ea65d1abb 100644 --- a/makefile.inc.win32 +++ b/makefile.inc.win32 @@ -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 diff --git a/src/Makefile b/src/Makefile index b4b1269ec..bad41a4b8 100644 --- a/src/Makefile +++ b/src/Makefile @@ -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) diff --git a/src/config.c b/src/config.c index 4176faedb..0043e390e 100644 --- a/src/config.c +++ b/src/config.c @@ -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"); diff --git a/src/init.c b/src/init.c index 37725437d..f7650aed4 100644 --- a/src/init.c +++ b/src/init.c @@ -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(); diff --git a/src/main.c b/src/main.c index e3786bbd6..cce61a336 100644 --- a/src/main.c +++ b/src/main.c @@ -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); } diff --git a/src/makefile.win32 b/src/makefile.win32 index 64bf75eea..5ff506c0a 100644 --- a/src/makefile.win32 +++ b/src/makefile.win32 @@ -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 diff --git a/src/misc.c b/src/misc.c index cf7ac593e..147895e9b 100644 --- a/src/misc.c +++ b/src/misc.c @@ -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 */ diff --git a/src/mysql.c b/src/mysql.c index bdbdb9c3a..d07a4648a 100644 --- a/src/mysql.c +++ b/src/mysql.c @@ -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 diff --git a/src/operserv.c b/src/operserv.c index 83c284793..390f0a11a 100644 --- a/src/operserv.c +++ b/src/operserv.c @@ -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; } diff --git a/src/proxy.c b/src/proxy.c deleted file mode 100644 index f2e7ae96e..000000000 --- a/src/proxy.c +++ /dev/null @@ -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 } diff --git a/src/users.c b/src/users.c index cd89bf0db..9fca93865 100644 --- a/src/users.c +++ b/src/users.c @@ -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); diff --git a/version.log b/version.log index e2b0e49aa..ebe997245 100644 --- a/version.log +++ b/version.log @@ -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 |