srvx-commits Mailing List for srvx IRC Services (Page 85)
Brought to you by:
entrope
You can subscribe to this list here.
2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(80) |
Sep
(51) |
Oct
(94) |
Nov
(132) |
Dec
(85) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2002 |
Jan
(163) |
Feb
(96) |
Mar
(70) |
Apr
(182) |
May
(173) |
Jun
(73) |
Jul
(101) |
Aug
(101) |
Sep
(71) |
Oct
(76) |
Nov
(58) |
Dec
(60) |
2003 |
Jan
(61) |
Feb
(14) |
Mar
(3) |
Apr
|
May
(7) |
Jun
(22) |
Jul
(81) |
Aug
(41) |
Sep
(34) |
Oct
(41) |
Nov
(16) |
Dec
(28) |
2004 |
Jan
(7) |
Feb
|
Mar
(3) |
Apr
(15) |
May
(11) |
Jun
(1) |
Jul
(4) |
Aug
(1) |
Sep
(4) |
Oct
(1) |
Nov
(1) |
Dec
(1) |
2005 |
Jan
(13) |
Feb
(6) |
Mar
(1) |
Apr
|
May
(2) |
Jun
(1) |
Jul
(2) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2008 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
2009 |
Jan
|
Feb
|
Mar
(5) |
Apr
|
May
|
Jun
|
Jul
|
Aug
(1) |
Sep
(2) |
Oct
|
Nov
|
Dec
|
2010 |
Jan
(2) |
Feb
(3) |
Mar
(4) |
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(2) |
Dec
|
2011 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
(2) |
Nov
(1) |
Dec
|
2012 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2016 |
Jan
|
Feb
|
Mar
|
Apr
(3) |
May
(4) |
Jun
|
Jul
(1) |
Aug
|
Sep
(3) |
Oct
(2) |
Nov
|
Dec
|
2017 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2018 |
Jan
(2) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2020 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2023 |
Jan
|
Feb
(3) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(3) |
Dec
|
2025 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Entrope <en...@us...> - 2001-08-14 15:31:41
|
Update of /cvsroot/srvx/services/src In directory usw-pr-cvs1:/tmp/cvs-serv20983/src Modified Files: Tag: rel-1_0 tools.c sockcheck.c helpfile.h helpfile.c gline.c Log Message: remove some extra #include's from common.h (and make vsend_message static to helpfile.c) provide mutex for gline database access (and make sockcheck.c use gline_*) only include each gline once in the gline heap Index: tools.c =================================================================== RCS file: /cvsroot/srvx/services/src/tools.c,v retrieving revision 1.73.2.24 retrieving revision 1.73.2.25 diff -C2 -r1.73.2.24 -r1.73.2.25 *** tools.c 2001/08/12 22:18:58 1.73.2.24 --- tools.c 2001/08/14 15:31:38 1.73.2.25 *************** *** 894,922 **** } - int - string_buffer_sprintf(struct string_buffer *buf, const char *format, va_list al) { - int ret; - /* Normally, I'd pass NULL as the first parameter to vsnprintf. - * But guess what? It makes FreeBSD's libc allocate a buffer that it - * never frees! Surprise! - * The kludge-around is to pass a non-NULL pointer instead. - */ - if ((ret = vsnprintf((char*)&ret, 0, format, al)) <= 0) { - /* non-C99 behavior */ - buf->size = strlen(format); - buf->list = malloc(buf->size); - while ((ret = vsnprintf(buf->list, buf->size, format, al)) == -1) { - buf->size <<= 1; - buf->list = realloc(buf->list, buf->size); - } - } else { - /* C99 is nice about how vsnprintf fails */ - buf->size = ret + 1; - buf->list = malloc(buf->size); - ret = vsnprintf(buf->list, buf->size, format, al); - } - return buf->used = ret; - } - void string_buffer_replace(struct string_buffer *buf, unsigned int from, unsigned int len, const char *repl) --- 894,897 ---- Index: sockcheck.c =================================================================== RCS file: /cvsroot/srvx/services/src/sockcheck.c,v retrieving revision 1.54.2.22 retrieving revision 1.54.2.23 diff -C2 -r1.54.2.22 -r1.54.2.23 *** sockcheck.c 2001/08/14 00:18:57 1.54.2.22 --- sockcheck.c 2001/08/14 15:31:38 1.54.2.23 *************** *** 57,60 **** --- 57,61 ---- #include "conf.h" #include "dict.h" + #include "gline.h" #include "log.h" #include "recdb.h" *************** *** 63,67 **** static int disable_sockcheck; ! #if defined(HAVE_POLL) && defined(HAVE_PTHREAD) && !defined(__CYGWIN__) #if !defined(SOCKCHECK_DEBUG) --- 64,68 ---- static int disable_sockcheck; ! #if SOCKCHECK_USABLE #if !defined(SOCKCHECK_DEBUG) *************** *** 221,225 **** strcpy(target+2, sci->hostname); log(PC_LOG, LOG_INFO, "Issuing gline for client at IP %08x hostname %s: %s\n", sci->addr, sci->hostname, sci->reason); ! irc_gline(target, 3600, sci->reason); } --- 222,226 ---- strcpy(target+2, sci->hostname); log(PC_LOG, LOG_INFO, "Issuing gline for client at IP %08x hostname %s: %s\n", sci->addr, sci->hostname, sci->reason); ! gline_add("ProxyCheck", target, 3600, sci->reason, 1); } *************** *** 1259,1263 **** } ! #endif /* defined(HAVE_POLL) && defined(HAVE_PTHREAD) */ --- 1260,1264 ---- } ! #endif Index: helpfile.h =================================================================== RCS file: /cvsroot/srvx/services/src/helpfile.h,v retrieving revision 1.13.2.4 retrieving revision 1.13.2.5 diff -C2 -r1.13.2.4 -r1.13.2.5 *** helpfile.h 2001/07/12 00:46:10 1.13.2.4 --- helpfile.h 2001/08/14 15:31:38 1.13.2.5 *************** *** 43,47 **** #endif - int vsend_message(const char *dest, struct userNode *src, struct handle_info *handle, int use_privmsg, expand_func_t expand, const char *format, va_list al); int send_message(struct userNode *dest, struct userNode *src, const char *message, ...) PRINTF_LIKE(3,4); int send_target_message(int use_privmsg, const char *dest, struct userNode *src, const char *format, ...) PRINTF_LIKE(4,5); --- 43,46 ---- Index: helpfile.c =================================================================== RCS file: /cvsroot/srvx/services/src/helpfile.c,v retrieving revision 1.34.2.11 retrieving revision 1.34.2.12 diff -C2 -r1.34.2.11 -r1.34.2.12 *** helpfile.c 2001/08/07 00:07:55 1.34.2.11 --- helpfile.c 2001/08/14 15:31:38 1.34.2.12 *************** *** 52,56 **** extern struct userNode *global, *chanserv, *opserv, *nickserv; ! int vsend_message(const char *dest, struct userNode *src, struct handle_info *handle, int use_privmsg, expand_func_t expand, const char *format, va_list al) { --- 52,56 ---- extern struct userNode *global, *chanserv, *opserv, *nickserv; ! static int vsend_message(const char *dest, struct userNode *src, struct handle_info *handle, int use_privmsg, expand_func_t expand, const char *format, va_list al) { *************** *** 260,265 **** int res; va_list ap; - - if (!format) return 0; va_start(ap, format); --- 260,263 ---- Index: gline.c =================================================================== RCS file: /cvsroot/srvx/services/src/gline.c,v retrieving revision 1.6.2.3 retrieving revision 1.6.2.4 diff -C2 -r1.6.2.3 -r1.6.2.4 *** gline.c 2001/07/14 19:59:37 1.6.2.3 --- gline.c 2001/08/14 15:31:38 1.6.2.4 *************** *** 23,26 **** --- 23,34 ---- #include <stdlib.h> + #if HAVE_PTHREAD_H && SOCKCHECK_USABLE /* we could have multiple threads setting glines */ + #include <pthread.h> + static pthread_mutex_t gline_mutex = PTHREAD_MUTEX_INITIALIZER; + #else + #define pthread_mutex_lock(M) /*noop*/ + #define pthread_mutex_unlock(M) /*noop*/ + #endif + #include "common.h" #include "heap.h" *************** *** 39,43 **** #define KEY_ISSUER "issuer" ! heap_t gline_heap; /* key: expiry time, data: struct gline_entry* */ static int --- 47,52 ---- #define KEY_ISSUER "issuer" ! static heap_t gline_heap; /* key: expiry time, data: struct gline_entry* */ ! static dict_t gline_dict; /* key: target, data: struct gline_entry* */ static int *************** *** 60,74 **** { struct gline *ge = data; - int res = !strcasecmp(ge->target, extra); (void)key; ! if (res) free_gline(ge); ! return res; } static void gline_expire(void *data) { void *argh, *wraa; (void)data; while (heap_size(gline_heap)) { heap_peek(gline_heap, &argh, &wraa); --- 69,97 ---- { struct gline *ge = data; (void)key; ! return !strcasecmp(ge->target, extra); } + static int + delete_gline_for_p(void *key, void *data, void *extra) + { + struct gline *ge = data; + + (void)key; + if (!strcasecmp(ge->target, extra)) { + free_gline(ge); + return 1; + } else { + return 0; + } + } + static void gline_expire(void *data) { void *argh, *wraa; + (void)data; + pthread_mutex_lock(&gline_mutex); while (heap_size(gline_heap)) { heap_peek(gline_heap, &argh, &wraa); *************** *** 82,85 **** --- 105,109 ---- timeq_add(TIME_T_CAST(argh), gline_expire, NULL); } + pthread_mutex_unlock(&gline_mutex); } *************** *** 87,91 **** gline_remove(const char *target, int announce) { ! if (heap_remove_pred(gline_heap, gline_for_p, (char*)target)) { void *argh; struct gline *new_first; --- 111,116 ---- gline_remove(const char *target, int announce) { ! pthread_mutex_lock(&gline_mutex); ! if (heap_remove_pred(gline_heap, delete_gline_for_p, (char*)target)) { void *argh; struct gline *new_first; *************** *** 98,105 **** } if (announce) irc_ungline(target); } ! void ! gline_add(const char *issuer, const char *target, unsigned long duration, const char *reason, int announce) { struct gline *ent; --- 123,131 ---- } if (announce) irc_ungline(target); + pthread_mutex_unlock(&gline_mutex); } ! static void ! gline_add_int(const char *issuer, const char *target, unsigned long duration, const char *reason, int announce) { struct gline *ent; *************** *** 107,117 **** void *argh; - ent = malloc(sizeof(*ent)); - ent->issuer = strdup(issuer); - ent->target = strdup(target); - ent->expires = now + duration; - ent->reason = strdup(reason); heap_peek(gline_heap, 0, &argh); prev_first = argh; heap_insert(gline_heap, ent, ent); if (!prev_first || (ent->expires < prev_first->expires)) { --- 133,150 ---- void *argh; heap_peek(gline_heap, 0, &argh); prev_first = argh; + ent = dict_find(gline_dict, target, NULL); + if (ent) { + heap_remove_pred(gline_heap, gline_for_p, (char*)target); + ent->expires = now + duration; + } else { + ent = malloc(sizeof(*ent)); + ent->issuer = strdup(issuer); + ent->target = strdup(target); + ent->expires = now + duration; + ent->reason = strdup(reason); + dict_insert(gline_dict, ent->target, ent); + } heap_insert(gline_heap, ent, ent); if (!prev_first || (ent->expires < prev_first->expires)) { *************** *** 122,125 **** --- 155,166 ---- } + void + gline_add(const char *issuer, const char *target, unsigned long duration, const char *reason, int announce) + { + pthread_mutex_lock(&gline_mutex); + gline_add_int(issuer, target, duration, reason, announce); + pthread_mutex_unlock(&gline_mutex); + } + static int gline_refresh_helper(void *key, void *data, void *extra) *************** *** 134,138 **** --- 175,181 ---- gline_refresh_all(void) { + pthread_mutex_lock(&gline_mutex); heap_remove_pred(gline_heap, gline_refresh_helper, 0); + pthread_mutex_unlock(&gline_mutex); } *************** *** 143,146 **** --- 186,190 ---- const char *issuer, *reason, *dstr; time_t expiration; + (void)extra; reason = database_get_data(rd->d.object, KEY_REASON, RECDB_QSTRING); *************** *** 158,162 **** if (!issuer) issuer = "<unknown>"; if (expiration > now) { ! gline_add(issuer, key, expiration - now, reason, 0); } return 0; --- 202,206 ---- if (!issuer) issuer = "<unknown>"; if (expiration > now) { ! gline_add_int(issuer, key, expiration - now, reason, 0); } return 0; *************** *** 168,172 **** dict_t db; if ((db = parse_database(GLINE_DB_NAME))) { ! dict_foreach(db, gline_add_record, gline_heap); } } --- 212,216 ---- dict_t db; if ((db = parse_database(GLINE_DB_NAME))) { ! dict_foreach(db, gline_add_record, 0); } } *************** *** 211,218 **** --- 255,265 ---- gline_init(void) { + pthread_mutex_lock(&gline_mutex); gline_heap = heap_new(gline_comparator); + gline_dict = dict_new(); gline_db_read(); reg_exit_func(gline_db_cleanup); reg_db_write_func(gline_db_write); + pthread_mutex_unlock(&gline_mutex); } *************** *** 299,303 **** --- 346,352 ---- search.data = data; search.hits = 0; + pthread_mutex_lock(&gline_mutex); heap_remove_pred(gline_heap, gline_search_helper, &search); + pthread_mutex_unlock(&gline_mutex); return search.hits; } |
From: Entrope <en...@us...> - 2001-08-14 15:31:33
|
Update of /cvsroot/srvx/services/src In directory usw-pr-cvs1:/tmp/cvs-serv20926/src Modified Files: Tag: rel-1_0 common.h Log Message: remove some extra #include's from common.h (and make vsend_message static to helpfile.c) provide mutex for gline database access (and make sockcheck.c use gline_*) only include each gline once in the gline heap Index: common.h =================================================================== RCS file: /cvsroot/srvx/services/src/common.h,v retrieving revision 1.60.2.7 retrieving revision 1.60.2.8 diff -C2 -r1.60.2.7 -r1.60.2.8 *** common.h 2001/08/12 22:18:58 1.60.2.7 --- common.h 2001/08/14 15:31:29 1.60.2.8 *************** *** 24,38 **** #include "config.h" - #ifdef TIME_WITH_SYS_TIME - # include <time.h> - # include <sys/time.h> - #else - # ifdef HAVE_SYS_TIME_H - # include <sys/time.h> - # else - # include <time.h> - # endif - #endif - #if defined(__GNUC__) && !defined(HAVE_ALLOCA_H) # define alloca __builtin_alloca --- 24,27 ---- *************** *** 51,65 **** #endif - #ifdef HAVE_NETINET_IN_H - #include <netinet/in.h> - #endif - #ifdef HAVE_SYS_TYPES_H #include <sys/types.h> #endif ! #ifdef HAVE_STDARG_H ! #include <stdarg.h> ! #endif #include "proto.h" --- 40,48 ---- #endif #ifdef HAVE_SYS_TYPES_H #include <sys/types.h> #endif ! #define SOCKCHECK_USABLE (defined(HAVE_POLL) && defined(HAVE_PTHREAD) && !defined(__CYGWIN__)) #include "proto.h" *************** *** 201,205 **** DECLARE_LIST(string_buffer, char); void string_buffer_append_string(struct string_buffer *buf, const char *tail); - int string_buffer_sprintf(struct string_buffer *buf, const char *format, va_list al); void string_buffer_replace(struct string_buffer *buf, unsigned int from, unsigned int len, const char *repl); --- 184,187 ---- |
From: Entrope <en...@us...> - 2001-08-14 01:19:31
|
Update of /cvsroot/srvx/services/src In directory usw-pr-cvs1:/tmp/cvs-serv30468/src Modified Files: Tag: rel-1_0 nickserv.help nickserv.h nickserv.c nickserv-not.help chanserv.c Log Message: document "frozen" (on-vacation) flag and let normal users set it with "vacation" command add no-delete flag for handles in general Index: nickserv.help =================================================================== RCS file: /cvsroot/srvx/services/src/nickserv.help,v retrieving revision 1.16.2.7 retrieving revision 1.16.2.8 diff -C2 -r1.16.2.7 -r1.16.2.8 *** nickserv.help 2001/08/03 02:49:13 1.16.2.7 --- nickserv.help 2001/08/14 01:19:27 1.16.2.8 *************** *** 69,73 **** "$bs$b Handle suspended", "$bc$b Use mIRC color codes in responses", ! "$bf$b Handle frozen (Will not be unregistered; cleared when handle is authenticated against. Useful for going on vacation.)", "$uSee Also:$u handleinfo, set"); "HELP" ("$bHELP$b", --- 69,74 ---- "$bs$b Handle suspended", "$bc$b Use mIRC color codes in responses", ! "$bf$b Handle frozen/on vacation (will not be unregistered for inactivity; cleared when handle is authenticated against)", ! "$bn$b No-delete (will never be unregistered for inactivity)", "$uSee Also:$u handleinfo, set"); "HELP" ("$bHELP$b", *************** *** 172,175 **** --- 173,180 ---- "/msg $N RENAME <current-handle> <new-handle>", "Renames a handle. This command is only accessible to helpers and IRC operators."); + "VACATION" ("$bVACATION$b", + "/msg $N VACATION", + "Marks your handle as \"on vacation\" until the next time you authenticate to $N.", + "While you are \"on vacation\", your handle will not be deleted for inactivity."); "SEARCH" ("$bSEARCH$b", "/msg $N SEARCH <action> <criteria>", Index: nickserv.h =================================================================== RCS file: /cvsroot/srvx/services/src/nickserv.h,v retrieving revision 1.24.2.7 retrieving revision 1.24.2.8 diff -C2 -r1.24.2.7 -r1.24.2.8 *** nickserv.h 2001/07/21 12:32:03 1.24.2.7 --- nickserv.h 2001/08/14 01:19:27 1.24.2.8 *************** *** 37,42 **** #define HI_FLAG_MIRC_COLOR 0x00000020 #define HI_FLAG_FROZEN 0x00000040 /* Flag characters for the above. First char is LSB, etc. */ ! #define HANDLE_FLAGS "Sphgscf" /* HI_STYLE_* go into handle_info.userlist_style */ --- 37,43 ---- #define HI_FLAG_MIRC_COLOR 0x00000020 #define HI_FLAG_FROZEN 0x00000040 + #define HI_FLAG_NODELETE 0x00000080 /* Flag characters for the above. First char is LSB, etc. */ ! #define HANDLE_FLAGS "Sphgscfn" /* HI_STYLE_* go into handle_info.userlist_style */ Index: nickserv.c =================================================================== RCS file: /cvsroot/srvx/services/src/nickserv.c,v retrieving revision 1.138.2.39 retrieving revision 1.138.2.40 diff -C2 -r1.138.2.39 -r1.138.2.40 *** nickserv.c 2001/08/14 00:15:52 1.138.2.39 --- nickserv.c 2001/08/14 01:19:27 1.138.2.40 *************** *** 111,114 **** --- 111,115 ---- #define NSMSG_HANDLEINFO_REGGED " Registered on: %s" #define NSMSG_HANDLEINFO_LASTSEEN " Last seen: %s" + #define NSMSG_HANDLEINFO_VACATION " On vacation." #define NSMSG_HANDLEINFO_INFOLINE " Infoline: %s" #define NSMSG_HANDLEINFO_FLAGS " Flags: %s" *************** *** 158,161 **** --- 159,163 ---- #define NSMSG_LAST_WRITE "Last db write was %s ago." #define NSMSG_NO_DB_WRITE "There have been no db writes performed." + #define NSMSG_ON_VACATION "You are now on vacation. Your handle will be preserved until you authenticate again." #define NSMSG_NO_ACCESS "Access denied." #define NSMSG_INVALID_FLAGS "$b%s$b is not a valid handle flag string." *************** *** 759,777 **** } ! nickserv_notice(user, NSMSG_HANDLEINFO_INFOLINE, hi->info); if (hi != user->handle_info) { /* Test IsOper separately, so that normal users don't see * "Access Denied!" after the information we already give ! * them. ! */ ! /* XXX: Entrope should review this and fix the underlying ! cause. */ if (!user->handle_info) return 1; if (!IsOper(user) && !IsHelping(user)) return 1; if (!is_valid_oper(user, 0)) return 1; /* Normally, since we check for is_valid_oper, we'd want to log this ! * separately. But we've already logged it above. ! */ } --- 761,776 ---- } ! nickserv_notice(user, NSMSG_HANDLEINFO_INFOLINE, (hi->info[0] ? hi->info : NSMSG_NONE)); ! nickserv_notice(user, NSMSG_HANDLEINFO_VACATION); if (hi != user->handle_info) { /* Test IsOper separately, so that normal users don't see * "Access Denied!" after the information we already give ! * them. */ if (!user->handle_info) return 1; if (!IsOper(user) && !IsHelping(user)) return 1; if (!is_valid_oper(user, 0)) return 1; /* Normally, since we check for is_valid_oper, we'd want to log this ! * separately. But we've already logged it above. */ } *************** *** 1625,1628 **** --- 1624,1635 ---- } + static NICKSERV_FUNC(cmd_vacation) + { + (void)argc; (void)argv; + HANDLE_SET_FLAG(user->handle_info, FROZEN); + nickserv_notice(user, NSMSG_ON_VACATION); + return 1; + } + static NICKSERV_FUNC(cmd_version) { *************** *** 1889,1894 **** if (((discrim->flags_on & hi->flags) != discrim->flags_on) || (discrim->flags_off & hi->flags) ! || (discrim->registered > hi->registered) ! || (discrim->lastseen > hi->lastseen) || (discrim->handlemask && !match_ircglob(hi->handle, discrim->handlemask))) { return 0; --- 1896,1901 ---- if (((discrim->flags_on & hi->flags) != discrim->flags_on) || (discrim->flags_off & hi->flags) ! || (discrim->registered < hi->registered) ! || (discrim->lastseen < hi->lastseen) || (discrim->handlemask && !match_ircglob(hi->handle, discrim->handlemask))) { return 0; *************** *** 2134,2138 **** if ((handle->opserv_level > 0) || handle->users ! || HANDLE_FLAGGED(handle, FROZEN)) { return 0; } --- 2141,2146 ---- if ((handle->opserv_level > 0) || handle->users ! || HANDLE_FLAGGED(handle, FROZEN) ! || HANDLE_FLAGGED(handle, NODELETE)) { return 0; } *************** *** 2360,2363 **** --- 2368,2372 ---- nickserv_define_func("USERINFO", cmd_userinfo, -1, 1); nickserv_define_func("RENAME", cmd_rename_handle, 0, 1); + nickserv_define_func("VACATION", cmd_vacation, -1, 1); if (!nickserv_conf.disable_nicks) { /* nick management commands */ Index: nickserv-not.help =================================================================== RCS file: /cvsroot/srvx/services/src/nickserv-not.help,v retrieving revision 1.1.2.6 retrieving revision 1.1.2.7 diff -C2 -r1.1.2.6 -r1.1.2.7 *** nickserv-not.help 2001/08/03 02:49:13 1.1.2.6 --- nickserv-not.help 2001/08/14 01:19:27 1.1.2.7 *************** *** 58,62 **** "Displays infomation on the specified handle, including the date the handle was registered, the last time that person was seen, the handle's $b$N$b info, its flags, its hostmask(s), its channels, and the handle's current nickname.", "You may use *Handle instead of Nick as the name argument; the * makes $N use the name of a handle directly (useful if the user is not online).", ! "$uSee Also:$u userinfo"); "HELP" ("$bHELP$b", "/msg $N HELP [topic/command]", --- 58,73 ---- "Displays infomation on the specified handle, including the date the handle was registered, the last time that person was seen, the handle's $b$N$b info, its flags, its hostmask(s), its channels, and the handle's current nickname.", "You may use *Handle instead of Nick as the name argument; the * makes $N use the name of a handle directly (useful if the user is not online).", ! "$uSee Also:$u userinfo, handle flags"); ! "HANDLE FLAGS" ("$bHANDLE FLAGS$b", ! "The following flags on handles are defined:", ! "$bS$b $O access suspended", ! "$bp$b Use PRIVMSG for messages rather than NOTICE", ! "$bh$b User is a helper (can turn god mode on/off for self)", ! "$bg$b God mode (security override for IRC staff)", ! "$bs$b Handle suspended", ! "$bc$b Use mIRC color codes in responses", ! "$bf$b Handle frozen/on vacation (will not be unregistered for inactivity; cleared when handle is authenticated against)", ! "$bn$b No-delete (will never be unregistered for inactivity)", ! "$uSee Also:$u handleinfo, set"); "HELP" ("$bHELP$b", "/msg $N HELP [topic/command]", *************** *** 132,135 **** --- 143,150 ---- "/msg $N RENAME <current-handle> <new-handle>", "Renames a handle. This command is only accessible to helpers and IRC operators."); + "VACATION" ("$bVACATION$b", + "/msg $N VACATION", + "Marks your handle as \"on vacation\" until the next time you authenticate to $N.", + "While you are \"on vacation\", your handle will not be deleted for inactivity."); "SEARCH" ("$bSEARCH$b", "/msg $N SEARCH <action> <criteria>", Index: chanserv.c =================================================================== RCS file: /cvsroot/srvx/services/src/chanserv.c,v retrieving revision 1.161.2.72 retrieving revision 1.161.2.73 diff -C2 -r1.161.2.72 -r1.161.2.73 *** chanserv.c 2001/08/12 01:18:25 1.161.2.72 --- chanserv.c 2001/08/14 01:19:27 1.161.2.73 *************** *** 250,253 **** --- 250,254 ---- /* Seen information */ #define CSMSG_USER_SEEN "%s was last seen $b%s$b ago." + #define CSMSG_USER_VACATION "%s is currently on vacation." #define CSMSG_USER_PRESENT "%s is in the channel $bright now$b." *************** *** 3379,3382 **** --- 3380,3387 ---- intervalString(seen, now - uData->seen); chanserv_notice(user, CSMSG_USER_SEEN, handle->handle, seen); + if (HANDLE_FLAGGED(handle, FROZEN)) + { + chanserv_notice(user, CSMSG_USER_VACATION, handle->handle); + } } |
From: Entrope <en...@us...> - 2001-08-14 00:18:59
|
Update of /cvsroot/srvx/services/src In directory usw-pr-cvs1:/tmp/cvs-serv15089/src Modified Files: Tag: rel-1_0 sockcheck.c Log Message: when connect() fails, skip to next test Index: sockcheck.c =================================================================== RCS file: /cvsroot/srvx/services/src/sockcheck.c,v retrieving revision 1.54.2.21 retrieving revision 1.54.2.22 diff -C2 -r1.54.2.21 -r1.54.2.22 *** sockcheck.c 2001/08/12 23:02:29 1.54.2.21 --- sockcheck.c 2001/08/14 00:18:57 1.54.2.22 *************** *** 523,527 **** poller->fd = -2; client->state = NULL; - client->test_index++; return; } --- 523,526 ---- *************** *** 749,752 **** --- 748,757 ---- struct pollfd *poller = poll_list+idx+1; int next_state = -1; + + if (!client->state) { + /* If we got here with a NULL state, connect() to the client + * previously failed. Advance it to the next test. */ + goto next_test; + } if (!client->connected) { |
From: Entrope <en...@us...> - 2001-08-14 00:15:55
|
Update of /cvsroot/srvx/services/src In directory usw-pr-cvs1:/tmp/cvs-serv14414/src Modified Files: Tag: rel-1_0 nickserv.c Log Message: don't automatically add an IP hostmask for a user with IP address 0 (i.e. spoofed) Index: nickserv.c =================================================================== RCS file: /cvsroot/srvx/services/src/nickserv.c,v retrieving revision 1.138.2.38 retrieving revision 1.138.2.39 diff -C2 -r1.138.2.38 -r1.138.2.39 *** nickserv.c 2001/08/08 00:45:29 1.138.2.38 --- nickserv.c 2001/08/14 00:15:52 1.138.2.39 *************** *** 672,676 **** } else { string_list_append(hi->masks, generate_hostmask(user, GENMASK_OMITNICK)); ! string_list_append(hi->masks, generate_hostmask(user, GENMASK_OMITNICK|GENMASK_BYIP)); } --- 672,678 ---- } else { string_list_append(hi->masks, generate_hostmask(user, GENMASK_OMITNICK)); ! if (user->ip != 0) { ! string_list_append(hi->masks, generate_hostmask(user, GENMASK_OMITNICK|GENMASK_BYIP)); ! } } *************** *** 1145,1150 **** { if (argc < 2) { ! char *mask = generate_hostmask(user, 0); ! int res = nickserv_addmask(user, user->handle_info, mask+2); free(mask); return res; --- 1147,1152 ---- { if (argc < 2) { ! char *mask = generate_hostmask(user, GENMASK_OMITNICK); ! int res = nickserv_addmask(user, user->handle_info, mask); free(mask); return res; |
From: Miles P. <pet...@us...> - 2001-08-13 19:21:23
|
Update of /cvsroot/srvx/services/src In directory usw-pr-cvs1:/tmp/cvs-serv28014 Modified Files: Tag: rel-1_0 opserv.help Log Message: fix gtrace help stuff Index: opserv.help =================================================================== RCS file: /cvsroot/srvx/services/src/opserv.help,v retrieving revision 1.24.2.11 retrieving revision 1.24.2.12 diff -C2 -r1.24.2.11 -r1.24.2.12 *** opserv.help 2001/08/12 04:36:50 1.24.2.11 --- opserv.help 2001/08/13 19:21:18 1.24.2.12 *************** *** 146,151 **** "$bMASK$b user@host Specifies a mask to search for.", "$bLIMIT$b count Limits the number of matching glines.", ! "$bREASON$b mask Looks for glines with the given reason.", ! "$bISSUER$b mask Looks for glines issued by the given mask.", "$bAFTER$b interval Looks for glines that expire more than $binterval$b in the future."); "HELP" ("$bHELP$b", --- 146,151 ---- "$bMASK$b user@host Specifies a mask to search for.", "$bLIMIT$b count Limits the number of matching glines.", ! "$bREASON$b reason Looks for glines with the given reason.", ! "$bISSUER$b handle Looks for glines issued by the given handle.", "$bAFTER$b interval Looks for glines that expire more than $binterval$b in the future."); "HELP" ("$bHELP$b", |
From: Miles P. <pet...@us...> - 2001-08-12 23:02:32
|
Update of /cvsroot/srvx/services/src In directory usw-pr-cvs1:/tmp/cvs-serv29891 Modified Files: Tag: rel-1_0 sockcheck.c opserv.c Log Message: reverting last change.. not quite portable yet Index: sockcheck.c =================================================================== RCS file: /cvsroot/srvx/services/src/sockcheck.c,v retrieving revision 1.54.2.20 retrieving revision 1.54.2.21 diff -C2 -r1.54.2.20 -r1.54.2.21 *** sockcheck.c 2001/08/12 22:49:17 1.54.2.20 --- sockcheck.c 2001/08/12 23:02:29 1.54.2.21 *************** *** 87,90 **** --- 87,91 ---- const char *reason; unsigned long addr; + unsigned char hostname[0]; } *sockcheck_cache_info; *************** *** 216,224 **** sockcheck_issue_gline(sockcheck_cache_info sci) { ! char *targetip = intoa(sci->addr); ! char *target = alloca(3+strlen(targetip)); strcpy(target, "*@"); ! strcpy(target+2, targetip); ! log(PC_LOG, LOG_INFO, "Issuing gline for client at IP %08x (%s): %s\n", sci->addr, targetip, sci->reason); irc_gline(target, 3600, sci->reason); } --- 217,224 ---- sockcheck_issue_gline(sockcheck_cache_info sci) { ! char *target = alloca(3+strlen(sci->hostname)); strcpy(target, "*@"); ! strcpy(target+2, sci->hostname); ! log(PC_LOG, LOG_INFO, "Issuing gline for client at IP %08x hostname %s: %s\n", sci->addr, sci->hostname, sci->reason); irc_gline(target, 3600, sci->reason); } *************** *** 251,255 **** sci->reason = NULL; sci->addr = addr; ! dict_insert(checked_ip_dict, intoa(addr), sci); } else { sci->addr = addr; --- 251,256 ---- sci->reason = NULL; sci->addr = addr; ! memcpy(sci->hostname, name, namelen); ! dict_insert(checked_ip_dict, sci->hostname, sci); } else { sci->addr = addr; *************** *** 269,275 **** if ((sci = dict_find(checked_ip_dict, name, NULL))) { ! if ((sci->decision == PENDING) || (sci->decision == CHECKING)) { ! return -1; ! } } --- 270,276 ---- if ((sci = dict_find(checked_ip_dict, name, NULL))) { ! if ((sci->decision == PENDING) || (sci->decision == CHECKING)) { ! return -1; ! } } *************** *** 279,283 **** return 0; } - res = dict_remove(checked_ip_dict, name); pthread_mutex_unlock(&checked_ip_mutex); --- 280,283 ---- *************** *** 320,329 **** { static const char *decs[] = {"PENDING", "CHECKING", "ACCEPT", "REJECT"}; ! log(PC_LOG, LOG_INFO, "client %p: { addr = %p { decision = %s; last_touched = " FMT_TIME_T "; reason = %s; addr = %08lx; ip = \"%s\" }; " "test_index = %d; state = %p { port = %d; type = %s; template = \"%s\"; ... }; " "send = %p; send_size = %d; send_used = %d; send_pos = %d; " "read = %p; read_size = %d; read_used = %d; read_pos = %d; " "connected = %d; writing = %d; }\n", ! client, client->addr, decs[client->addr->decision], client->addr->last_touched, client->addr->reason, client->addr->addr, intoa(client->addr->addr), client->test_index, client->state, client->state ? client->state->port : 0, --- 320,329 ---- { static const char *decs[] = {"PENDING", "CHECKING", "ACCEPT", "REJECT"}; ! log(PC_LOG, LOG_INFO, "client %p: { addr = %p { decision = %s; last_touched = " FMT_TIME_T "; reason = %s; addr = %08lx; hostname = \"%s\" }; " "test_index = %d; state = %p { port = %d; type = %s; template = \"%s\"; ... }; " "send = %p; send_size = %d; send_used = %d; send_pos = %d; " "read = %p; read_size = %d; read_used = %d; read_pos = %d; " "connected = %d; writing = %d; }\n", ! client, client->addr, decs[client->addr->decision], client->addr->last_touched, client->addr->reason, client->addr->addr, client->addr->hostname, client->test_index, client->state, client->state ? client->state->port : 0, *************** *** 375,379 **** switch (var) { case 'c': ! expansion = intoa(client->addr->addr); exp_length = strlen(expansion); break; --- 375,379 ---- switch (var) { case 'c': ! expansion = client->addr->hostname; exp_length = strlen(expansion); break; *************** *** 435,439 **** unsigned int exp_length; expand_var(client, template[1], &expansion, &exp_length); ! log(PC_LOG, LOG_INFO, "Expanded var %c for client %s to \"%s\" (len %d, pos %d)\n", template[1], intoa(client->addr->addr), expansion, exp_length, client->send_used); if (client->send_used+exp_length >= client->send_size) { do { --- 435,439 ---- unsigned int exp_length; expand_var(client, template[1], &expansion, &exp_length); ! log(PC_LOG, LOG_INFO, "Expanded var %c for client %s to \"%s\" (len %d, pos %d)\n", template[1], client->addr->hostname, expansion, exp_length, client->send_used); if (client->send_used+exp_length >= client->send_size) { do { *************** *** 495,499 **** poller->revents = 0; /* otherwise we get confused this poll iteration.. */ if ((poller->fd = socket(PF_INET, SOCK_STREAM, 0)) < 0) { ! log(PC_LOG, LOG_ERROR, "Error: socket() for client %s returned errno %d (%s)\n", intoa(client->addr->addr), errno, strerror(errno)); goto cleanup_1; } --- 495,499 ---- poller->revents = 0; /* otherwise we get confused this poll iteration.. */ if ((poller->fd = socket(PF_INET, SOCK_STREAM, 0)) < 0) { ! log(PC_LOG, LOG_ERROR, "Error: socket() for client %s returned errno %d (%s)\n", client->addr->hostname, errno, strerror(errno)); goto cleanup_1; } *************** *** 502,506 **** if (sockcheck_conf.local_addr) { if (bind(poller->fd, (struct sockaddr*) sockcheck_conf.local_addr, sizeof(struct sockaddr)) < 0) { ! log(PC_LOG, LOG_ERROR, "Error: bind() for client %s returned errno %d (%s)\n", intoa(client->addr->addr), errno, strerror(errno)); } } --- 502,506 ---- if (sockcheck_conf.local_addr) { if (bind(poller->fd, (struct sockaddr*) sockcheck_conf.local_addr, sizeof(struct sockaddr)) < 0) { ! log(PC_LOG, LOG_ERROR, "Error: bind() for client %s returned errno %d (%s)\n", client->addr->hostname, errno, strerror(errno)); } } *************** *** 510,519 **** if (connect(poller->fd, (struct sockaddr*)&sin, sizeof(sin)) < 0) { if (errno != EINPROGRESS) { ! log(PC_LOG, LOG_ERROR, "Error: connect() returned errno %d (%s) for port %d on client %s\n", errno, strerror(errno), client->state->port, intoa(client->addr->addr)); /* progress to next test.. */ goto cleanup_2; } } ! log(PC_LOG, LOG_INFO, "Starting proxy check on port %d (test %d) for client %s, fd %d\n", client->state->port, client->test_index, intoa(client->addr->addr), poller->fd); return; --- 510,519 ---- if (connect(poller->fd, (struct sockaddr*)&sin, sizeof(sin)) < 0) { if (errno != EINPROGRESS) { ! log(PC_LOG, LOG_ERROR, "Error: connect() returned errno %d (%s) for port %d on client %s\n", errno, strerror(errno), client->state->port, client->addr->hostname); /* progress to next test.. */ goto cleanup_2; } } ! log(PC_LOG, LOG_INFO, "Starting proxy check on port %d (test %d) for client %s, fd %d\n", client->state->port, client->test_index, client->addr->hostname, poller->fd); return; *************** *** 578,582 **** } if (!tests) return 0; ! log(PC_LOG, LOG_INFO, "Proxy-checking client at %08x (%s) as client %d (now %d in progress)\n", sci->addr, intoa(sci->addr), idx, sockcheck_num_sockets); client_list[idx] = sockcheck_alloc_client(sci); client_list[idx]->test_rep = 0; --- 578,582 ---- } if (!tests) return 0; ! log(PC_LOG, LOG_INFO, "Proxy-checking client at %08x (%s) as client %d (now %d in progress)\n", sci->addr, sci->hostname, idx, sockcheck_num_sockets); client_list[idx] = sockcheck_alloc_client(sci); client_list[idx]->test_rep = 0; *************** *** 596,605 **** if (decision == ACCEPT) { /* do nothing */ ! log(PC_LOG, LOG_INFO, "Proxy check passed for client at IP %08x (%s)\n", client->addr->addr, intoa(client->addr->addr)); ! log(PC_LOG, LOG_INFO, "Size of ADDR is: %d\n", sizeof(sockcheck_cache_info)); } else if (decision == REJECT) { proxies_detected++; sockcheck_issue_gline(client->addr); ! log(PC_LOG, LOG_INFO, "Proxy check failed for client at IP %08x (%s)\n", client->addr->addr, client->addr->reason); /* don't compare idx != 0 directly, because somebody else may have * reordered the tests already --- 596,604 ---- if (decision == ACCEPT) { /* do nothing */ ! log(PC_LOG, LOG_INFO, "Proxy check passed for client at IP %08x hostname %s\n", client->addr->addr, client->addr->hostname); } else if (decision == REJECT) { proxies_detected++; sockcheck_issue_gline(client->addr); ! log(PC_LOG, LOG_INFO, "Proxy check failed for client at IP %08x hostname %s (%s)\n", client->addr->addr, client->addr->hostname, client->addr->reason); /* don't compare idx != 0 directly, because somebody else may have * reordered the tests already *************** *** 614,618 **** } } else { ! log(PC_LOG, LOG_ERROR, "BUG: sockcheck_decide(\"%s\", %d): unrecognized decision\n", intoa(client->addr->addr), decision); } sockcheck_list_unref(client->tests); --- 613,617 ---- } } else { ! log(PC_LOG, LOG_ERROR, "BUG: sockcheck_decide(\"%s\", %d): unrecognized decision\n", client->addr->hostname, decision); } sockcheck_list_unref(client->tests); *************** *** 636,640 **** if (res < 0) { if (errno == EAGAIN) return; ! log(PC_LOG, LOG_ERROR, "BUG: sockcheck_try_write(%s): write() returned errno %d (%s)\n", intoa(client->addr->addr), errno, strerror(errno)); } else { client->send_pos += res; --- 635,639 ---- if (res < 0) { if (errno == EAGAIN) return; ! log(PC_LOG, LOG_ERROR, "BUG: sockcheck_try_write(%s): write() returned errno %d (%s)\n", client->addr->hostname, errno, strerror(errno)); } else { client->send_pos += res; *************** *** 652,659 **** unsigned int n; ! res = read(fd, client->read + client->read_used, client->read_size - client->read_used + 1); if (res < 0) { if (errno != EAGAIN) { ! log(PC_LOG, LOG_ERROR, "BUG: sockcheck_try_read(%d, %s): read() returned errno %d (%s)\n", fd, intoa(client->addr->addr), errno, strerror(errno)); return -1; } --- 651,658 ---- unsigned int n; ! res = read(fd, client->read + client->read_used, client->read_size - client->read_used); if (res < 0) { if (errno != EAGAIN) { ! log(PC_LOG, LOG_ERROR, "BUG: sockcheck_try_read(%d, %s): read() returned errno %d (%s)\n", fd, client->addr->hostname, errno, strerror(errno)); return -1; } *************** *** 669,673 **** /* since we have nothing to read we will never enter the while() loop */ if (client->resp_state[n] && !strlen(client->resp_state[n])) { ! log(PC_LOG, LOG_ERROR, "Choosing response %d for client %s\n", n, intoa(client->addr->addr)); return n; } --- 668,672 ---- /* since we have nothing to read we will never enter the while() loop */ if (client->resp_state[n] && !strlen(client->resp_state[n])) { ! log(PC_LOG, LOG_ERROR, "Choosing response %d for client %s\n", n, client->addr->hostname); return n; } *************** *** 676,680 **** /* See if what's been read matches any of the expected responses */ ! while (client->read_pos <= client->read_used) { unsigned char curr, bleh; const unsigned char *resp_state; --- 675,679 ---- /* See if what's been read matches any of the expected responses */ ! while (client->read_pos < client->read_used) { unsigned char curr, bleh; const unsigned char *resp_state; *************** *** 719,723 **** client->resp_state[n] = resp_state = resp_state + 2; if (!*resp_state) { ! log(PC_LOG, LOG_ERROR, "Choosing response %d for client %s\n", n, intoa(client->addr->addr)); return n; } --- 718,722 ---- client->resp_state[n] = resp_state = resp_state + 2; if (!*resp_state) { ! log(PC_LOG, LOG_ERROR, "Choosing response %d for client %s\n", n, client->addr->hostname); return n; } *************** *** 731,739 **** if (client->read_used >= client->read_size) { /* we got more data than we expected to get .. don't read any more */ ! log(PC_LOG, LOG_INFO, "Buffer filled (unmatched) for client %s\n", intoa(client->addr->addr)); return client->state->responses.used - 1; } else if (TV_CMP(tv_now, >, client->read_timeout)) { /* read timed out, use default handler. */ ! log(PC_LOG, LOG_INFO, "Read timeout expired for client %s\n", intoa(client->addr->addr)); return client->state->responses.used - 1; } else { --- 730,738 ---- if (client->read_used >= client->read_size) { /* we got more data than we expected to get .. don't read any more */ ! log(PC_LOG, LOG_INFO, "Buffer filled (unmatched) for client %s\n", client->addr->hostname); return client->state->responses.used - 1; } else if (TV_CMP(tv_now, >, client->read_timeout)) { /* read timed out, use default handler. */ ! log(PC_LOG, LOG_INFO, "Read timeout expired for client %s\n", client->addr->hostname); return client->state->responses.used - 1; } else { *************** *** 756,760 **** /* disconnected -- next test! */ close(poller->fd); ! log(PC_LOG, LOG_ERROR, "Client %s gave us a POLLHUP on fd %d\n", intoa(client->addr->addr), poller->fd); goto next_test; } else if (poller->revents & (POLLOUT|POLLIN)) { --- 755,759 ---- /* disconnected -- next test! */ close(poller->fd); ! log(PC_LOG, LOG_ERROR, "Client %s gave us a POLLHUP on fd %d\n", client->addr->hostname, poller->fd); goto next_test; } else if (poller->revents & (POLLOUT|POLLIN)) { *************** *** 766,770 **** case ECONNREFUSED: case ETIMEDOUT: ! log(PC_LOG, LOG_INFO, "Client %s gave us errno %d (%s)\n", intoa(client->addr->addr), rc, strerror(rc)); goto disconn; case 0: break; --- 765,769 ---- case ECONNREFUSED: case ETIMEDOUT: ! log(PC_LOG, LOG_INFO, "Client %s gave us errno %d (%s)\n", client->addr->hostname, rc, strerror(rc)); goto disconn; case 0: break; *************** *** 807,811 **** char buffer[201]; static const char *hexmap = "0123456789ABCDEF"; ! log(PC_LOG, LOG_INFO, "sockcheck_advance(%s) following response %d (type %d) of %d\n", intoa(client->addr->addr), next_state+1, ns->type, client->state->responses.used); for (n=0; n<client->send_used; n++) { for (m=0; (m<(sizeof(buffer)-1)>>1) && ((n+m) < client->send_used); m++) { --- 806,810 ---- char buffer[201]; static const char *hexmap = "0123456789ABCDEF"; ! log(PC_LOG, LOG_INFO, "sockcheck_advance(%s) following response %d (type %d) of %d\n", client->addr->hostname, next_state+1, ns->type, client->state->responses.used); for (n=0; n<client->send_used; n++) { for (m=0; (m<(sizeof(buffer)-1)>>1) && ((n+m) < client->send_used); m++) { *************** *** 885,889 **** /* no work to do, so swap something down */ #if SOCKCHECK_DEBUG ! log(PC_LOG, LOG_INFO, "sockcheck moving client %s (at %d) to fill hole at %d\n", intoa(client_list[sockcheck_num_sockets]->addr->addr), sockcheck_num_sockets, n); #endif poll_list[n+1] = poll_list[sockcheck_num_sockets+1]; --- 884,888 ---- /* no work to do, so swap something down */ #if SOCKCHECK_DEBUG ! log(PC_LOG, LOG_INFO, "sockcheck moving client %s (at %d) to fill hole at %d\n", client_list[sockcheck_num_sockets]->addr->hostname, sockcheck_num_sockets, n); #endif poll_list[n+1] = poll_list[sockcheck_num_sockets+1]; Index: opserv.c =================================================================== RCS file: /cvsroot/srvx/services/src/opserv.c,v retrieving revision 1.187.2.44 retrieving revision 1.187.2.45 diff -C2 -r1.187.2.44 -r1.187.2.45 *** opserv.c 2001/08/12 22:49:47 1.187.2.44 --- opserv.c 2001/08/12 23:02:29 1.187.2.45 *************** *** 1687,1691 **** if (getipbyname(scanhost, &addr)) { ! sockcheck_queue_address(addr, intoa(addr)); opserv_notice(user, OSMSG_ADDRESS_QUEUED, scanhost); } else { --- 1687,1691 ---- if (getipbyname(scanhost, &addr)) { ! sockcheck_queue_address(addr, scanhost); opserv_notice(user, OSMSG_ADDRESS_QUEUED, scanhost); } else { *************** *** 1709,1732 **** for (n=1; n<argc; n++) { struct userNode *un = GetUserH(argv[n]); ! unsigned long addr; if (!un) { ! if (!getipbyname(argv[n], &addr)) { ! opserv_notice(user, OSMSG_NO_SUCH_ADDRESS, argv[n]); ! return 0; ! } } else { ! if (!getipbyname(un->hostname, &addr)) { ! opserv_notice(user, OSMSG_NO_SUCH_ADDRESS, un->hostname); ! return 0; ! } } ! if ((i = sockcheck_uncache_host(intoa(addr))) && i != (unsigned)-1) { ! opserv_notice(user, OSMSG_HOST_CLEARED, intoa(addr)); } else if (i == (unsigned)-1) { ! opserv_notice(user, OSMSG_HOST_BUSY, intoa(addr)); } else { ! opserv_notice(user, OSMSG_HOST_NOTCLEARED, intoa(addr)); } } --- 1709,1726 ---- for (n=1; n<argc; n++) { struct userNode *un = GetUserH(argv[n]); ! char *scanhost; if (!un) { ! scanhost = argv[n]; } else { ! scanhost = un->hostname; } ! if ((i = sockcheck_uncache_host(scanhost)) && i != (unsigned)-1) { ! opserv_notice(user, OSMSG_HOST_CLEARED, scanhost); } else if (i == (unsigned)-1) { ! opserv_notice(user, OSMSG_HOST_BUSY, scanhost); } else { ! opserv_notice(user, OSMSG_HOST_NOTCLEARED, scanhost); } } |
From: Miles P. <pet...@us...> - 2001-08-12 22:49:50
|
Update of /cvsroot/srvx/services/src In directory usw-pr-cvs1:/tmp/cvs-serv26977 Modified Files: Tag: rel-1_0 opserv.c Log Message: oops Index: opserv.c =================================================================== RCS file: /cvsroot/srvx/services/src/opserv.c,v retrieving revision 1.187.2.43 retrieving revision 1.187.2.44 diff -C2 -r1.187.2.43 -r1.187.2.44 *** opserv.c 2001/08/12 04:36:50 1.187.2.43 --- opserv.c 2001/08/12 22:49:47 1.187.2.44 *************** *** 1687,1691 **** if (getipbyname(scanhost, &addr)) { ! sockcheck_queue_address(addr, scanhost); opserv_notice(user, OSMSG_ADDRESS_QUEUED, scanhost); } else { --- 1687,1691 ---- if (getipbyname(scanhost, &addr)) { ! sockcheck_queue_address(addr, intoa(addr)); opserv_notice(user, OSMSG_ADDRESS_QUEUED, scanhost); } else { *************** *** 1709,1725 **** for (n=1; n<argc; n++) { struct userNode *un = GetUserH(argv[n]); ! char *hostname; if (!un) { ! hostname = argv[n]; } else { ! hostname = un->hostname; } ! if ((i = sockcheck_uncache_host(hostname)) && i != (unsigned)-1) { ! opserv_notice(user, OSMSG_HOST_CLEARED, hostname); } else if (i == (unsigned)-1) { ! opserv_notice(user, OSMSG_HOST_BUSY, hostname); } else { ! opserv_notice(user, OSMSG_HOST_NOTCLEARED, hostname); } } --- 1709,1732 ---- for (n=1; n<argc; n++) { struct userNode *un = GetUserH(argv[n]); ! unsigned long addr; if (!un) { ! if (!getipbyname(argv[n], &addr)) { ! opserv_notice(user, OSMSG_NO_SUCH_ADDRESS, argv[n]); ! return 0; ! } } else { ! if (!getipbyname(un->hostname, &addr)) { ! opserv_notice(user, OSMSG_NO_SUCH_ADDRESS, un->hostname); ! return 0; ! } } ! ! if ((i = sockcheck_uncache_host(intoa(addr))) && i != (unsigned)-1) { ! opserv_notice(user, OSMSG_HOST_CLEARED, intoa(addr)); } else if (i == (unsigned)-1) { ! opserv_notice(user, OSMSG_HOST_BUSY, intoa(addr)); } else { ! opserv_notice(user, OSMSG_HOST_NOTCLEARED, intoa(addr)); } } *************** *** 1926,1930 **** { if (user->ip) { ! sockcheck_queue_address(htonl(user->ip), user->hostname); } return 0; --- 1933,1937 ---- { if (user->ip) { ! sockcheck_queue_address(htonl(user->ip), intoa(htonl(user->ip))); } return 0; |
From: Miles P. <pet...@us...> - 2001-08-12 22:49:19
|
Update of /cvsroot/srvx/services/src In directory usw-pr-cvs1:/tmp/cvs-serv26897 Modified Files: Tag: rel-1_0 sockcheck.c Log Message: no longer storing hostname in cache structs Index: sockcheck.c =================================================================== RCS file: /cvsroot/srvx/services/src/sockcheck.c,v retrieving revision 1.54.2.19 retrieving revision 1.54.2.20 diff -C2 -r1.54.2.19 -r1.54.2.20 *** sockcheck.c 2001/08/12 13:09:34 1.54.2.19 --- sockcheck.c 2001/08/12 22:49:17 1.54.2.20 *************** *** 87,91 **** const char *reason; unsigned long addr; - unsigned char hostname[0]; } *sockcheck_cache_info; --- 87,90 ---- *************** *** 217,224 **** sockcheck_issue_gline(sockcheck_cache_info sci) { ! char *target = alloca(3+strlen(sci->hostname)); strcpy(target, "*@"); ! strcpy(target+2, sci->hostname); ! log(PC_LOG, LOG_INFO, "Issuing gline for client at IP %08x hostname %s: %s\n", sci->addr, sci->hostname, sci->reason); irc_gline(target, 3600, sci->reason); } --- 216,224 ---- sockcheck_issue_gline(sockcheck_cache_info sci) { ! char *targetip = intoa(sci->addr); ! char *target = alloca(3+strlen(targetip)); strcpy(target, "*@"); ! strcpy(target+2, targetip); ! log(PC_LOG, LOG_INFO, "Issuing gline for client at IP %08x (%s): %s\n", sci->addr, targetip, sci->reason); irc_gline(target, 3600, sci->reason); } *************** *** 251,256 **** sci->reason = NULL; sci->addr = addr; ! memcpy(sci->hostname, name, namelen); ! dict_insert(checked_ip_dict, sci->hostname, sci); } else { sci->addr = addr; --- 251,255 ---- sci->reason = NULL; sci->addr = addr; ! dict_insert(checked_ip_dict, intoa(addr), sci); } else { sci->addr = addr; *************** *** 270,276 **** if ((sci = dict_find(checked_ip_dict, name, NULL))) { ! if ((sci->decision == PENDING) || (sci->decision == CHECKING)) { ! return -1; ! } } --- 269,275 ---- if ((sci = dict_find(checked_ip_dict, name, NULL))) { ! if ((sci->decision == PENDING) || (sci->decision == CHECKING)) { ! return -1; ! } } *************** *** 280,283 **** --- 279,283 ---- return 0; } + res = dict_remove(checked_ip_dict, name); pthread_mutex_unlock(&checked_ip_mutex); *************** *** 320,329 **** { static const char *decs[] = {"PENDING", "CHECKING", "ACCEPT", "REJECT"}; ! log(PC_LOG, LOG_INFO, "client %p: { addr = %p { decision = %s; last_touched = " FMT_TIME_T "; reason = %s; addr = %08lx; hostname = \"%s\" }; " "test_index = %d; state = %p { port = %d; type = %s; template = \"%s\"; ... }; " "send = %p; send_size = %d; send_used = %d; send_pos = %d; " "read = %p; read_size = %d; read_used = %d; read_pos = %d; " "connected = %d; writing = %d; }\n", ! client, client->addr, decs[client->addr->decision], client->addr->last_touched, client->addr->reason, client->addr->addr, client->addr->hostname, client->test_index, client->state, client->state ? client->state->port : 0, --- 320,329 ---- { static const char *decs[] = {"PENDING", "CHECKING", "ACCEPT", "REJECT"}; ! log(PC_LOG, LOG_INFO, "client %p: { addr = %p { decision = %s; last_touched = " FMT_TIME_T "; reason = %s; addr = %08lx; ip = \"%s\" }; " "test_index = %d; state = %p { port = %d; type = %s; template = \"%s\"; ... }; " "send = %p; send_size = %d; send_used = %d; send_pos = %d; " "read = %p; read_size = %d; read_used = %d; read_pos = %d; " "connected = %d; writing = %d; }\n", ! client, client->addr, decs[client->addr->decision], client->addr->last_touched, client->addr->reason, client->addr->addr, intoa(client->addr->addr), client->test_index, client->state, client->state ? client->state->port : 0, *************** *** 375,379 **** switch (var) { case 'c': ! expansion = client->addr->hostname; exp_length = strlen(expansion); break; --- 375,379 ---- switch (var) { case 'c': ! expansion = intoa(client->addr->addr); exp_length = strlen(expansion); break; *************** *** 435,439 **** unsigned int exp_length; expand_var(client, template[1], &expansion, &exp_length); ! log(PC_LOG, LOG_INFO, "Expanded var %c for client %s to \"%s\" (len %d, pos %d)\n", template[1], client->addr->hostname, expansion, exp_length, client->send_used); if (client->send_used+exp_length >= client->send_size) { do { --- 435,439 ---- unsigned int exp_length; expand_var(client, template[1], &expansion, &exp_length); ! log(PC_LOG, LOG_INFO, "Expanded var %c for client %s to \"%s\" (len %d, pos %d)\n", template[1], intoa(client->addr->addr), expansion, exp_length, client->send_used); if (client->send_used+exp_length >= client->send_size) { do { *************** *** 495,499 **** poller->revents = 0; /* otherwise we get confused this poll iteration.. */ if ((poller->fd = socket(PF_INET, SOCK_STREAM, 0)) < 0) { ! log(PC_LOG, LOG_ERROR, "Error: socket() for client %s returned errno %d (%s)\n", client->addr->hostname, errno, strerror(errno)); goto cleanup_1; } --- 495,499 ---- poller->revents = 0; /* otherwise we get confused this poll iteration.. */ if ((poller->fd = socket(PF_INET, SOCK_STREAM, 0)) < 0) { ! log(PC_LOG, LOG_ERROR, "Error: socket() for client %s returned errno %d (%s)\n", intoa(client->addr->addr), errno, strerror(errno)); goto cleanup_1; } *************** *** 502,506 **** if (sockcheck_conf.local_addr) { if (bind(poller->fd, (struct sockaddr*) sockcheck_conf.local_addr, sizeof(struct sockaddr)) < 0) { ! log(PC_LOG, LOG_ERROR, "Error: bind() for client %s returned errno %d (%s)\n", client->addr->hostname, errno, strerror(errno)); } } --- 502,506 ---- if (sockcheck_conf.local_addr) { if (bind(poller->fd, (struct sockaddr*) sockcheck_conf.local_addr, sizeof(struct sockaddr)) < 0) { ! log(PC_LOG, LOG_ERROR, "Error: bind() for client %s returned errno %d (%s)\n", intoa(client->addr->addr), errno, strerror(errno)); } } *************** *** 510,519 **** if (connect(poller->fd, (struct sockaddr*)&sin, sizeof(sin)) < 0) { if (errno != EINPROGRESS) { ! log(PC_LOG, LOG_ERROR, "Error: connect() returned errno %d (%s) for port %d on client %s\n", errno, strerror(errno), client->state->port, client->addr->hostname); /* progress to next test.. */ goto cleanup_2; } } ! log(PC_LOG, LOG_INFO, "Starting proxy check on port %d (test %d) for client %s, fd %d\n", client->state->port, client->test_index, client->addr->hostname, poller->fd); return; --- 510,519 ---- if (connect(poller->fd, (struct sockaddr*)&sin, sizeof(sin)) < 0) { if (errno != EINPROGRESS) { ! log(PC_LOG, LOG_ERROR, "Error: connect() returned errno %d (%s) for port %d on client %s\n", errno, strerror(errno), client->state->port, intoa(client->addr->addr)); /* progress to next test.. */ goto cleanup_2; } } ! log(PC_LOG, LOG_INFO, "Starting proxy check on port %d (test %d) for client %s, fd %d\n", client->state->port, client->test_index, intoa(client->addr->addr), poller->fd); return; *************** *** 578,582 **** } if (!tests) return 0; ! log(PC_LOG, LOG_INFO, "Proxy-checking client at %08x (%s) as client %d (now %d in progress)\n", sci->addr, sci->hostname, idx, sockcheck_num_sockets); client_list[idx] = sockcheck_alloc_client(sci); client_list[idx]->test_rep = 0; --- 578,582 ---- } if (!tests) return 0; ! log(PC_LOG, LOG_INFO, "Proxy-checking client at %08x (%s) as client %d (now %d in progress)\n", sci->addr, intoa(sci->addr), idx, sockcheck_num_sockets); client_list[idx] = sockcheck_alloc_client(sci); client_list[idx]->test_rep = 0; *************** *** 596,604 **** if (decision == ACCEPT) { /* do nothing */ ! log(PC_LOG, LOG_INFO, "Proxy check passed for client at IP %08x hostname %s\n", client->addr->addr, client->addr->hostname); } else if (decision == REJECT) { proxies_detected++; sockcheck_issue_gline(client->addr); ! log(PC_LOG, LOG_INFO, "Proxy check failed for client at IP %08x hostname %s (%s)\n", client->addr->addr, client->addr->hostname, client->addr->reason); /* don't compare idx != 0 directly, because somebody else may have * reordered the tests already --- 596,605 ---- if (decision == ACCEPT) { /* do nothing */ ! log(PC_LOG, LOG_INFO, "Proxy check passed for client at IP %08x (%s)\n", client->addr->addr, intoa(client->addr->addr)); ! log(PC_LOG, LOG_INFO, "Size of ADDR is: %d\n", sizeof(sockcheck_cache_info)); } else if (decision == REJECT) { proxies_detected++; sockcheck_issue_gline(client->addr); ! log(PC_LOG, LOG_INFO, "Proxy check failed for client at IP %08x (%s)\n", client->addr->addr, client->addr->reason); /* don't compare idx != 0 directly, because somebody else may have * reordered the tests already *************** *** 613,617 **** } } else { ! log(PC_LOG, LOG_ERROR, "BUG: sockcheck_decide(\"%s\", %d): unrecognized decision\n", client->addr->hostname, decision); } sockcheck_list_unref(client->tests); --- 614,618 ---- } } else { ! log(PC_LOG, LOG_ERROR, "BUG: sockcheck_decide(\"%s\", %d): unrecognized decision\n", intoa(client->addr->addr), decision); } sockcheck_list_unref(client->tests); *************** *** 635,639 **** if (res < 0) { if (errno == EAGAIN) return; ! log(PC_LOG, LOG_ERROR, "BUG: sockcheck_try_write(%s): write() returned errno %d (%s)\n", client->addr->hostname, errno, strerror(errno)); } else { client->send_pos += res; --- 636,640 ---- if (res < 0) { if (errno == EAGAIN) return; ! log(PC_LOG, LOG_ERROR, "BUG: sockcheck_try_write(%s): write() returned errno %d (%s)\n", intoa(client->addr->addr), errno, strerror(errno)); } else { client->send_pos += res; *************** *** 651,658 **** unsigned int n; ! res = read(fd, client->read + client->read_used, client->read_size - client->read_used); if (res < 0) { if (errno != EAGAIN) { ! log(PC_LOG, LOG_ERROR, "BUG: sockcheck_try_read(%d, %s): read() returned errno %d (%s)\n", fd, client->addr->hostname, errno, strerror(errno)); return -1; } --- 652,659 ---- unsigned int n; ! res = read(fd, client->read + client->read_used, client->read_size - client->read_used + 1); if (res < 0) { if (errno != EAGAIN) { ! log(PC_LOG, LOG_ERROR, "BUG: sockcheck_try_read(%d, %s): read() returned errno %d (%s)\n", fd, intoa(client->addr->addr), errno, strerror(errno)); return -1; } *************** *** 668,672 **** /* since we have nothing to read we will never enter the while() loop */ if (client->resp_state[n] && !strlen(client->resp_state[n])) { ! log(PC_LOG, LOG_ERROR, "Choosing response %d for client %s\n", n, client->addr->hostname); return n; } --- 669,673 ---- /* since we have nothing to read we will never enter the while() loop */ if (client->resp_state[n] && !strlen(client->resp_state[n])) { ! log(PC_LOG, LOG_ERROR, "Choosing response %d for client %s\n", n, intoa(client->addr->addr)); return n; } *************** *** 675,679 **** /* See if what's been read matches any of the expected responses */ ! while (client->read_pos < client->read_used) { unsigned char curr, bleh; const unsigned char *resp_state; --- 676,680 ---- /* See if what's been read matches any of the expected responses */ ! while (client->read_pos <= client->read_used) { unsigned char curr, bleh; const unsigned char *resp_state; *************** *** 718,722 **** client->resp_state[n] = resp_state = resp_state + 2; if (!*resp_state) { ! log(PC_LOG, LOG_ERROR, "Choosing response %d for client %s\n", n, client->addr->hostname); return n; } --- 719,723 ---- client->resp_state[n] = resp_state = resp_state + 2; if (!*resp_state) { ! log(PC_LOG, LOG_ERROR, "Choosing response %d for client %s\n", n, intoa(client->addr->addr)); return n; } *************** *** 730,738 **** if (client->read_used >= client->read_size) { /* we got more data than we expected to get .. don't read any more */ ! log(PC_LOG, LOG_INFO, "Buffer filled (unmatched) for client %s\n", client->addr->hostname); return client->state->responses.used - 1; } else if (TV_CMP(tv_now, >, client->read_timeout)) { /* read timed out, use default handler. */ ! log(PC_LOG, LOG_INFO, "Read timeout expired for client %s\n", client->addr->hostname); return client->state->responses.used - 1; } else { --- 731,739 ---- if (client->read_used >= client->read_size) { /* we got more data than we expected to get .. don't read any more */ ! log(PC_LOG, LOG_INFO, "Buffer filled (unmatched) for client %s\n", intoa(client->addr->addr)); return client->state->responses.used - 1; } else if (TV_CMP(tv_now, >, client->read_timeout)) { /* read timed out, use default handler. */ ! log(PC_LOG, LOG_INFO, "Read timeout expired for client %s\n", intoa(client->addr->addr)); return client->state->responses.used - 1; } else { *************** *** 755,759 **** /* disconnected -- next test! */ close(poller->fd); ! log(PC_LOG, LOG_ERROR, "Client %s gave us a POLLHUP on fd %d\n", client->addr->hostname, poller->fd); goto next_test; } else if (poller->revents & (POLLOUT|POLLIN)) { --- 756,760 ---- /* disconnected -- next test! */ close(poller->fd); ! log(PC_LOG, LOG_ERROR, "Client %s gave us a POLLHUP on fd %d\n", intoa(client->addr->addr), poller->fd); goto next_test; } else if (poller->revents & (POLLOUT|POLLIN)) { *************** *** 765,769 **** case ECONNREFUSED: case ETIMEDOUT: ! log(PC_LOG, LOG_INFO, "Client %s gave us errno %d (%s)\n", client->addr->hostname, rc, strerror(rc)); goto disconn; case 0: break; --- 766,770 ---- case ECONNREFUSED: case ETIMEDOUT: ! log(PC_LOG, LOG_INFO, "Client %s gave us errno %d (%s)\n", intoa(client->addr->addr), rc, strerror(rc)); goto disconn; case 0: break; *************** *** 806,810 **** char buffer[201]; static const char *hexmap = "0123456789ABCDEF"; ! log(PC_LOG, LOG_INFO, "sockcheck_advance(%s) following response %d (type %d) of %d\n", client->addr->hostname, next_state+1, ns->type, client->state->responses.used); for (n=0; n<client->send_used; n++) { for (m=0; (m<(sizeof(buffer)-1)>>1) && ((n+m) < client->send_used); m++) { --- 807,811 ---- char buffer[201]; static const char *hexmap = "0123456789ABCDEF"; ! log(PC_LOG, LOG_INFO, "sockcheck_advance(%s) following response %d (type %d) of %d\n", intoa(client->addr->addr), next_state+1, ns->type, client->state->responses.used); for (n=0; n<client->send_used; n++) { for (m=0; (m<(sizeof(buffer)-1)>>1) && ((n+m) < client->send_used); m++) { *************** *** 884,888 **** /* no work to do, so swap something down */ #if SOCKCHECK_DEBUG ! log(PC_LOG, LOG_INFO, "sockcheck moving client %s (at %d) to fill hole at %d\n", client_list[sockcheck_num_sockets]->addr->hostname, sockcheck_num_sockets, n); #endif poll_list[n+1] = poll_list[sockcheck_num_sockets+1]; --- 885,889 ---- /* no work to do, so swap something down */ #if SOCKCHECK_DEBUG ! log(PC_LOG, LOG_INFO, "sockcheck moving client %s (at %d) to fill hole at %d\n", intoa(client_list[sockcheck_num_sockets]->addr->addr), sockcheck_num_sockets, n); #endif poll_list[n+1] = poll_list[sockcheck_num_sockets+1]; |
From: Miles P. <pet...@us...> - 2001-08-12 22:19:02
|
Update of /cvsroot/srvx/services/src In directory usw-pr-cvs1:/tmp/cvs-serv21334/src Modified Files: Tag: rel-1_0 common.h tools.c Log Message: intoa() added (network byte order IP to normal dotted notation) Index: common.h =================================================================== RCS file: /cvsroot/srvx/services/src/common.h,v retrieving revision 1.60.2.6 retrieving revision 1.60.2.7 diff -C2 -r1.60.2.6 -r1.60.2.7 *** common.h 2001/08/03 22:17:28 1.60.2.6 --- common.h 2001/08/12 22:18:58 1.60.2.7 *************** *** 194,197 **** --- 194,198 ---- void intervalString(char *output, time_t interval); int getipbyname(const char *name, unsigned long *ip); + char *intoa(unsigned long addr); const char * preposition(char *word); Index: tools.c =================================================================== RCS file: /cvsroot/srvx/services/src/tools.c,v retrieving revision 1.73.2.23 retrieving revision 1.73.2.24 diff -C2 -r1.73.2.23 -r1.73.2.24 *** tools.c 2001/08/07 17:30:44 1.73.2.23 --- tools.c 2001/08/12 22:18:58 1.73.2.24 *************** *** 44,47 **** --- 44,54 ---- #include <sys/socket.h> #endif + #ifdef HAVE_NETINET_IN_H + #include <netinet/in.h> + #endif + #ifdef HAVE_ARPA_INET_H + #include <arpa/inet.h> + #endif + #include "common.h" *************** *** 927,929 **** --- 934,943 ---- memmove(buf->list+from+repl_len, buf->list+from+len, strlen(buf->list+from+len)); strcpy(buf->list+from, repl); + } + + char *intoa(unsigned long addr) { + struct in_addr in; + + in.s_addr = addr; + return inet_ntoa(in); } |
From: Miles P. <pet...@us...> - 2001-08-12 22:19:01
|
Update of /cvsroot/srvx/services In directory usw-pr-cvs1:/tmp/cvs-serv21334 Modified Files: Tag: rel-1_0 configure.in Log Message: intoa() added (network byte order IP to normal dotted notation) Index: configure.in =================================================================== RCS file: /cvsroot/srvx/services/Attic/configure.in,v retrieving revision 1.39.2.15 retrieving revision 1.39.2.16 diff -C2 -r1.39.2.15 -r1.39.2.16 *** configure.in 2001/08/05 19:14:30 1.39.2.15 --- configure.in 2001/08/12 22:18:58 1.39.2.16 *************** *** 86,90 **** dnl Would rather not bail on headers, BSD has alot of the functions elsewhere. -Jedi ! AC_CHECK_HEADERS(ctype.h errno.h fcntl.h malloc.h math.h netdb.h netinet/in.h pthread.h setjmp.h signal.h stdarg.h stdio.h stdlib.h sys/resource.h sys/timeb.h sys/times.h string.h sys/param.h sys/poll.h sys/socket.h sys/time.h sys/types.h time.h unistd.h getopt.h memory.h regex.h alloca.h,,) dnl portability stuff, hurray! -Jedi --- 86,90 ---- dnl Would rather not bail on headers, BSD has alot of the functions elsewhere. -Jedi ! AC_CHECK_HEADERS(ctype.h errno.h fcntl.h malloc.h math.h netdb.h netinet/in.h pthread.h setjmp.h signal.h stdarg.h stdio.h stdlib.h sys/resource.h sys/timeb.h sys/times.h string.h sys/param.h sys/poll.h sys/socket.h sys/time.h sys/types.h time.h unistd.h getopt.h memory.h regex.h alloca.h arpa/inet.h,,) dnl portability stuff, hurray! -Jedi *************** *** 94,98 **** fi ! AC_CHECK_FUNCS(bcopy memcpy memset stricmp strcasestr strcasecmp strncasecmp strdup strerror strstr strsignal localtime_r setrlimit,,) AC_CHECK_FUNCS(poll,,AC_MSG_WARN([poll(2) is not present -- proxy checking will not work.])) --- 94,98 ---- fi ! AC_CHECK_FUNCS(bcopy memcpy memset stricmp strcasestr strcasecmp strncasecmp strdup strerror strstr strsignal localtime_r setrlimit inet_ntoa,,) AC_CHECK_FUNCS(poll,,AC_MSG_WARN([poll(2) is not present -- proxy checking will not work.])) |
From: Entrope <en...@us...> - 2001-08-12 20:47:41
|
Update of /cvsroot/srvx/services/src In directory usw-pr-cvs1:/tmp/cvs-serv642/src Modified Files: hash.c tools.c tools.h Log Message: make key parameter to mod_chanmode a "const char *" Index: hash.c =================================================================== RCS file: /cvsroot/srvx/services/src/hash.c,v retrieving revision 1.140 retrieving revision 1.141 diff -C2 -r1.140 -r1.141 *** hash.c 2001/08/11 02:33:31 1.140 --- hash.c 2001/08/12 20:47:38 1.141 *************** *** 465,469 **** } ! mod_chanmode(cNode, modes, (char *)key, limit); if (new || cNode->timestamp > time_) { --- 465,469 ---- } ! mod_chanmode(cNode, modes, key, limit); if (new || cNode->timestamp > time_) { Index: tools.c =================================================================== RCS file: /cvsroot/srvx/services/src/tools.c,v retrieving revision 1.88 retrieving revision 1.89 diff -C2 -r1.88 -r1.89 *** tools.c 2001/08/11 16:37:36 1.88 --- tools.c 2001/08/12 20:47:38 1.89 *************** *** 87,90 **** --- 87,93 ---- #define do_user_mode(FLAG) do { if (add) user->modes |= FLAG; else user->modes &= ~FLAG; } while (0) switch (*mode_change++) { + /* TODO: update this to include the new Bahamut channel modes, + * but to only support them #if (PROTOCOL_CHANMODE_BITS & MODE_foo) + */ case 0: return; case '+': add = 1; break; *************** *** 120,124 **** } ! void mod_chanmode(struct chanNode *channel, const char *mode_change, char *key, int limit) { int add = 1, n; --- 123,127 ---- } ! void mod_chanmode(struct chanNode *channel, const char *mode_change, const char *key, int limit) { int add = 1, n; *************** *** 148,152 **** case 'k': if (add) { ! if(key) { safestrncpy(channel->key, key, sizeof(channel->key)); } else { --- 151,155 ---- case 'k': if (add) { ! if (key) { safestrncpy(channel->key, key, sizeof(channel->key)); } else { Index: tools.h =================================================================== RCS file: /cvsroot/srvx/services/src/tools.h,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -r1.8 -r1.9 *** tools.h 2001/08/01 22:14:35 1.8 --- tools.h 2001/08/12 20:47:38 1.9 *************** *** 39,43 **** int getusermodes(char *sender); void mod_usermode(struct userNode *user, const char *modes); ! void mod_chanmode(struct chanNode *channel, const char *mode_change, char *key, int limit); int verify_chanmode(const char *modes); int split_line(unsigned char *line, int irc_colon, int argv_size, unsigned char *argv[]); --- 39,43 ---- int getusermodes(char *sender); void mod_usermode(struct userNode *user, const char *modes); ! void mod_chanmode(struct chanNode *channel, const char *mode_change, const char *key, int limit); int verify_chanmode(const char *modes); int split_line(unsigned char *line, int irc_colon, int argv_size, unsigned char *argv[]); |
From: Entrope <en...@us...> - 2001-08-12 13:09:38
|
Update of /cvsroot/srvx/services/src In directory usw-pr-cvs1:/tmp/cvs-serv15090/src Modified Files: Tag: rel-1_0 sockcheck.c Log Message: fix off-by-one error (if read_used==1, maximum valid read position is 0) Index: sockcheck.c =================================================================== RCS file: /cvsroot/srvx/services/src/sockcheck.c,v retrieving revision 1.54.2.18 retrieving revision 1.54.2.19 diff -C2 -r1.54.2.18 -r1.54.2.19 *** sockcheck.c 2001/08/12 02:58:53 1.54.2.18 --- sockcheck.c 2001/08/12 13:09:34 1.54.2.19 *************** *** 675,679 **** /* See if what's been read matches any of the expected responses */ ! while (client->read_pos <= client->read_used) { unsigned char curr, bleh; const unsigned char *resp_state; --- 675,679 ---- /* See if what's been read matches any of the expected responses */ ! while (client->read_pos < client->read_used) { unsigned char curr, bleh; const unsigned char *resp_state; |
From: Miles P. <pet...@us...> - 2001-08-12 04:36:57
|
Update of /cvsroot/srvx/services/src In directory usw-pr-cvs1:/tmp/cvs-serv1807 Modified Files: Tag: rel-1_0 opserv.c opserv.help Log Message: no longer require an arg for ?access, just use user->nick Index: opserv.c =================================================================== RCS file: /cvsroot/srvx/services/src/opserv.c,v retrieving revision 1.187.2.42 retrieving revision 1.187.2.43 diff -C2 -r1.187.2.42 -r1.187.2.43 *** opserv.c 2001/08/12 01:27:35 1.187.2.42 --- opserv.c 2001/08/12 04:36:50 1.187.2.43 *************** *** 491,498 **** { struct handle_info *hi; ! OPSERV_MIN_PARMS(2, false); /* TODO: Consider searching for ranges (">900"). */ ! hi = smart_get_handle_info(opserv, user, argv[1]); if (hi) { opserv_notice(user, OSMSG_HANDLE_ACCESS_IS, hi->handle, hi->opserv_level); --- 491,505 ---- { struct handle_info *hi; + char *target; ! (void)channel; (void)argc; ! if (argv[1]) { ! target = argv[1]; ! } else { ! target = user->nick; ! } ! /* TODO: Consider searching for ranges (">900"). */ ! hi = smart_get_handle_info(opserv, user, target); if (hi) { opserv_notice(user, OSMSG_HANDLE_ACCESS_IS, hi->handle, hi->opserv_level); Index: opserv.help =================================================================== RCS file: /cvsroot/srvx/services/src/opserv.help,v retrieving revision 1.24.2.10 retrieving revision 1.24.2.11 diff -C2 -r1.24.2.10 -r1.24.2.11 *** opserv.help 2001/08/07 03:32:57 1.24.2.10 --- opserv.help 2001/08/12 04:36:50 1.24.2.11 *************** *** 3,7 **** "${index}"); "ACCESS" ("$bACCESS$b", ! "/msg $O ACCESS <handle>", "Displays the access level on $b$O$b for the specified handle.", "$uSee Also:$u none"); --- 3,7 ---- "${index}"); "ACCESS" ("$bACCESS$b", ! "/msg $O ACCESS [handle]", "Displays the access level on $b$O$b for the specified handle.", "$uSee Also:$u none"); |
From: Miles P. <pet...@us...> - 2001-08-12 03:27:38
|
Update of /cvsroot/srvx/services In directory usw-pr-cvs1:/tmp/cvs-serv23217 Modified Files: Tag: rel-1_0 sockcheck.db.example Log Message: we dont need to check twice :) Index: sockcheck.db.example =================================================================== RCS file: /cvsroot/srvx/services/sockcheck.db.example,v retrieving revision 1.3.4.4 retrieving revision 1.3.4.5 diff -C2 -r1.3.4.4 -r1.3.4.5 *** sockcheck.db.example 2001/08/11 03:26:25 1.3.4.4 --- sockcheck.db.example 2001/08/12 03:27:35 1.3.4.5 *************** *** 1,5 **** /* Connect on port 1080, sending "\5\1\0" as challenge. ! * If we get "\5\0" as a response, it's an unsecured socks5. ! * We connect twice because some proxies refuse the first. */ "1080:050100" { "0500" "reject:Unsecured socks5"; --- 1,4 ---- /* Connect on port 1080, sending "\5\1\0" as challenge. ! * If we get "\5\0" as a response, it's an unsecured socks5. */ "1080:050100" { "0500" "reject:Unsecured socks5"; |
From: Miles P. <pet...@us...> - 2001-08-12 02:58:58
|
Update of /cvsroot/srvx/services/src In directory usw-pr-cvs1:/tmp/cvs-serv17135 Modified Files: Tag: rel-1_0 sockcheck.c Log Message: srvx doesnt like ansi term codes. (bbs's on port 23) Index: sockcheck.c =================================================================== RCS file: /cvsroot/srvx/services/src/sockcheck.c,v retrieving revision 1.54.2.17 retrieving revision 1.54.2.18 diff -C2 -r1.54.2.17 -r1.54.2.18 *** sockcheck.c 2001/08/12 01:27:35 1.54.2.17 --- sockcheck.c 2001/08/12 02:58:53 1.54.2.18 *************** *** 667,671 **** for (n=0; n<(client->state->responses.used-1); n++) { /* since we have nothing to read we will never enter the while() loop */ ! if (!strlen(client->resp_state[n])) { log(PC_LOG, LOG_ERROR, "Choosing response %d for client %s\n", n, client->addr->hostname); return n; --- 667,671 ---- for (n=0; n<(client->state->responses.used-1); n++) { /* since we have nothing to read we will never enter the while() loop */ ! if (client->resp_state[n] && !strlen(client->resp_state[n])) { log(PC_LOG, LOG_ERROR, "Choosing response %d for client %s\n", n, client->addr->hostname); return n; |
From: Miles P. <pet...@us...> - 2001-08-12 01:27:38
|
Update of /cvsroot/srvx/services/src In directory usw-pr-cvs1:/tmp/cvs-serv30731 Modified Files: Tag: rel-1_0 opserv.c sockcheck.c Log Message: dont let people clearhosts while their being checked. (segfaults) Index: opserv.c =================================================================== RCS file: /cvsroot/srvx/services/src/opserv.c,v retrieving revision 1.187.2.41 retrieving revision 1.187.2.42 diff -C2 -r1.187.2.41 -r1.187.2.42 *** opserv.c 2001/08/10 22:21:32 1.187.2.41 --- opserv.c 2001/08/12 01:27:35 1.187.2.42 *************** *** 189,192 **** --- 189,193 ---- #define OSMSG_HOST_CLEARED "'%s' was cleared from the cached hosts list." #define OSMSG_HOST_NOTCLEARED "'%s' was not cached and therefore wasn't cleared." + #define OSMSG_HOST_BUSY "'%s' is currently being checked, unable to clear." #define OSMSG_NO_SUCH_ADDRESS "Unable to resolve `%s' to an IP address." #define OSMSG_LINE_DUMPED "Raw line sent." *************** *** 1695,1699 **** { #if defined(HAVE_POLL) && defined(HAVE_PTHREAD) && !defined(__CYGWIN__) ! unsigned int n; OPSERV_MIN_PARMS(2, false); --- 1696,1700 ---- { #if defined(HAVE_POLL) && defined(HAVE_PTHREAD) && !defined(__CYGWIN__) ! unsigned int n, i; OPSERV_MIN_PARMS(2, false); *************** *** 1708,1713 **** hostname = un->hostname; } ! if (sockcheck_uncache_host(hostname)) { opserv_notice(user, OSMSG_HOST_CLEARED, hostname); } else { opserv_notice(user, OSMSG_HOST_NOTCLEARED, hostname); --- 1709,1716 ---- hostname = un->hostname; } ! if ((i = sockcheck_uncache_host(hostname)) && i != (unsigned)-1) { opserv_notice(user, OSMSG_HOST_CLEARED, hostname); + } else if (i == (unsigned)-1) { + opserv_notice(user, OSMSG_HOST_BUSY, hostname); } else { opserv_notice(user, OSMSG_HOST_NOTCLEARED, hostname); Index: sockcheck.c =================================================================== RCS file: /cvsroot/srvx/services/src/sockcheck.c,v retrieving revision 1.54.2.16 retrieving revision 1.54.2.17 diff -C2 -r1.54.2.16 -r1.54.2.17 *** sockcheck.c 2001/08/11 21:48:16 1.54.2.16 --- sockcheck.c 2001/08/12 01:27:35 1.54.2.17 *************** *** 267,270 **** --- 267,278 ---- { int res; + sockcheck_cache_info sci; + + if ((sci = dict_find(checked_ip_dict, name, NULL))) { + if ((sci->decision == PENDING) || (sci->decision == CHECKING)) { + return -1; + } + } + if (pthread_mutex_lock(&checked_ip_mutex)) { /* lock failure; this usually means coding error */ |
From: Paul C. <zo...@us...> - 2001-08-12 01:18:28
|
Update of /cvsroot/srvx/services/src In directory usw-pr-cvs1:/tmp/cvs-serv28817/src Modified Files: Tag: rel-1_0 chanserv.c Log Message: Prevent ChanServ from attempting to remove timed bans from suspended channels, add a new command flag to control which commands can be used on suspended channels. Index: chanserv.c =================================================================== RCS file: /cvsroot/srvx/services/src/chanserv.c,v retrieving revision 1.161.2.71 retrieving revision 1.161.2.72 diff -C2 -r1.161.2.71 -r1.161.2.72 *** chanserv.c 2001/08/11 06:18:45 1.161.2.71 --- chanserv.c 2001/08/12 01:18:25 1.161.2.72 *************** *** 158,162 **** #define CSMSG_NO_ACCESS "You lack sufficient access to use this command." #define CSMSG_UNREGISTERED "$b%s$b has not been registered with $b$C$b." - #define CSMSG_CHANNEL_SUSPENDED "$b$C$b access to $b%s$b has been temporarily suspended." #define CSMSG_STRUCTURE_LIMIT "This channel has reached the maximum %s limit of $b%d$b." #define CSMSG_ALLOCATION_ERROR "Could not allocate memory for %s." --- 158,161 ---- *************** *** 239,244 **** #define CSMSG_ALREADY_SUSPENDED "$b%s$b is already suspended." #define CSMSG_NOT_SUSPENDED "$b%s$b is not suspended." ! #define CSMSG_SUSPENDED "$b%s$b is now suspended." ! #define CSMSG_UNSUSPENDED "$b%s$b is now unsuspended." /* Access information */ --- 238,243 ---- #define CSMSG_ALREADY_SUSPENDED "$b%s$b is already suspended." #define CSMSG_NOT_SUSPENDED "$b%s$b is not suspended." ! #define CSMSG_SUSPENDED "$b$C$b access to $b%s$b has been temporarily suspended." ! #define CSMSG_UNSUSPENDED "$b$C$b access to $b%s$b has been restored." /* Access information */ *************** *** 351,354 **** --- 350,354 ---- #define CMD_IGNORE_EVENT 0x100 #define CMD_REQUIRE_GODDABLE 0x200 + #define CMD_SUSPEND_OVERRIDE 0x400 #define CMD_REQUIRE_DEFAULT (CMD_REQUIRE_ACCESS) *************** *** 792,798 **** } ! if(!IsPrivileged(user) && (cmd->flags & _CMD_REQUIRE_REGISTERED) && IsSuspended(channel->channel_info)) { ! chanserv_notice(user, CSMSG_CHANNEL_SUSPENDED, channel->name); return; } --- 792,798 ---- } ! if(!(cmd->flags & CMD_SUSPEND_OVERRIDE) && (cmd->flags & _CMD_REQUIRE_REGISTERED) && IsSuspended(channel->channel_info)) { ! chanserv_notice(user, CSMSG_SUSPENDED, channel->name); return; } *************** *** 826,834 **** } ! index += sprintf(buffer + index, "[%s:", user->nick); if(cmd->flags & CMD_REQUIRE_HANDLE) { ! index += sprintf(buffer + index, "%s]", user->handle_info->handle); } else --- 826,834 ---- } ! index += sprintf(buffer + index, "[%s", user->nick); if(cmd->flags & CMD_REQUIRE_HANDLE) { ! index += sprintf(buffer + index, ":%s]", user->handle_info->handle); } else *************** *** 1334,1337 **** --- 1334,1346 ---- bd = data; channel = bd->channel; + + if(IsSuspended(channel)) + { + bd->duration = 0; + del_channel_ban(bd); + + return; + } + bans = channel->channel->banlist; removed = alloc_string_list(2); *************** *** 1388,1410 **** if(channel->greeting) free(channel->greeting); if(channel->suspended) { struct suspended *suspended = channel->suspended; free(suspended->name); free(suspended->suspender); free(suspended); } else { ! channel->channel->channel_info = NULL; } - if (channel->prev) channel->prev->next = channel->next; - else channelList = channel->next; - - if (channel->next) channel->next->prev = channel->prev; - - free(channel); --- 1397,1424 ---- if(channel->greeting) free(channel->greeting); + if (channel->prev) channel->prev->next = channel->next; + else channelList = channel->next; + + if (channel->next) channel->next->prev = channel->prev; + if(channel->suspended) { struct suspended *suspended = channel->suspended; + struct chanNode *cNode = dict_find(channels, channel->suspended->name, NULL); free(suspended->name); free(suspended->suspender); free(suspended); + + if(cNode) + { + cNode->channel_info = NULL; + } } else { ! channel->channel->channel_info = NULL; } free(channel); *************** *** 1436,1442 **** if(!IsSuspended(channel)) ! { ! DelChannelUser(chanserv, channel->channel, reason, 0); ! } unregister_channel(channel); } --- 1450,1457 ---- if(!IsSuspended(channel)) ! { ! DelChannelUser(chanserv, channel->channel, reason, 0); ! } ! unregister_channel(channel); } *************** *** 1646,1680 **** } ! if(channel->channel_info) { ! length = strlen(channel->name); ! offset = (length > 7) ? length : 7; ! reason = alloca(strlen(user->nick) + offset + 19); ! sprintf(reason, "%s unregistered by %s.", "Channel", user->nick); ! ! name = alloca(length + 1); ! safestrncpy(name, channel->name, length + 1); ! DelChannelUser(chanserv, channel, reason, 0); ! unregister_channel(channel->channel_info); ! chanserv_notice(user, CSMSG_UNREG_SUCCESS, name); } ! else { ! struct suspended *suspended; ! suspended = dict_find(sChannels, argv[-1], NULL); ! if (suspended) { ! /* must allocate reason for log message below */ ! length = strlen(suspended->name); ! offset = (length > 7) ? length : 7; ! reason = alloca(strlen(user->nick) + offset + 19); ! name = alloca(length + 1); ! safestrncpy(name, suspended->name, length + 1); ! /* then unregister it */ ! unregister_channel(suspended->cData); ! } else { ! log(MAIN_LOG, LOG_ERROR, "Unable to find %s as either a real or suspended channel\n", argv[-1]); ! return 1; ! } } sprintf(reason, "%s unregistered by %s.", name, user->nick); --- 1661,1684 ---- } ! length = strlen(channel->name); ! offset = length > 7 ? length : 7; ! ! reason = alloca(strlen(user->nick) + offset + 19); ! sprintf(reason, "%s unregistered by %s.", "Channel", user->nick); ! ! name = alloca(length + 1); ! safestrncpy(name, channel->name, length + 1); ! ! if(IsSuspended(channel->channel_info)) { ! dict_remove(sChannels, channel->name); } ! ! if(channel) /* not suspended */ { ! DelChannelUser(chanserv, channel, reason, 0); } + unregister_channel(channel->channel_info); + chanserv_notice(user, CSMSG_UNREG_SUCCESS, name); sprintf(reason, "%s unregistered by %s.", name, user->nick); *************** *** 2016,2029 **** } static CHANSERV_FUNC(cmd_up) { struct userData *uData; struct modeNode *mn; ! (void)argv; (void)argc; /* weeeeeeeeeeeeeeeeeeeeeeee */ uData = GetChannelUser(channel->channel_info, user->handle_info); mn = GetUserMode(channel, user); ! if(!mn) { chanserv_notice(user, MSG_CHANNEL_ABSENT, channel->name); --- 2020,2035 ---- } + /* If argc is 0 in cmd_up or cmd_down, no notices will be sent + to the user. cmd_all takes advantage of this. */ static CHANSERV_FUNC(cmd_up) { struct userData *uData; struct modeNode *mn; ! (void)argv; /* weeeeeeeeeeeeeeeeeeeeeeee */ uData = GetChannelUser(channel->channel_info, user->handle_info); mn = GetUserMode(channel, user); ! if(!mn && argc) { chanserv_notice(user, MSG_CHANNEL_ABSENT, channel->name); *************** *** 2033,2037 **** if(uData->access >= ulOp) { ! if(mn->modes & MODE_CHANOP) { chanserv_notice(user, CSMSG_ALREADY_UP, "opped", channel->name); --- 2039,2043 ---- if(uData->access >= ulOp) { ! if((mn->modes & MODE_CHANOP) && argc) { chanserv_notice(user, CSMSG_ALREADY_UP, "opped", channel->name); *************** *** 2043,2047 **** else { ! if(mn->modes & MODE_VOICE) { chanserv_notice(user, CSMSG_ALREADY_UP, "voiced", channel->name); --- 2049,2053 ---- else { ! if((mn->modes & MODE_VOICE) && argc) { chanserv_notice(user, CSMSG_ALREADY_UP, "voiced", channel->name); *************** *** 2055,2080 **** } - static CHANSERV_FUNC(cmd_upall) - { - struct chanList *cList; - (void)channel; (void)argc; (void)argv; - - for(cList = user->handle_info->channels; cList; cList = cList->next) - { - struct modeNode *mn = GetUserMode(cList->channel->channel, user); - - if (!mn - || (cList->user->access >= ulOp && mn->modes & MODE_CHANOP) - || (cList->user->access < ulOp && mn->modes & MODE_VOICE)) - { - continue; - } - - cmd_up(user, cList->channel->channel, 0, NULL); - } - - return 1; - } - static CHANSERV_FUNC(cmd_down) { --- 2061,2064 ---- *************** *** 2084,2088 **** mn = GetUserMode(channel, user); ! if(!mn) { chanserv_notice(user, MSG_CHANNEL_ABSENT, channel->name); --- 2068,2072 ---- mn = GetUserMode(channel, user); ! if(!mn && argc) { chanserv_notice(user, MSG_CHANNEL_ABSENT, channel->name); *************** *** 2090,2094 **** } ! if(!(mn->modes & (MODE_CHANOP | MODE_VOICE))) { chanserv_notice(user, CSMSG_ALREADY_DOWN, channel->name); --- 2074,2078 ---- } ! if(!(mn->modes & (MODE_CHANOP | MODE_VOICE)) && argc) { chanserv_notice(user, CSMSG_ALREADY_DOWN, channel->name); *************** *** 2105,2109 **** } ! static CHANSERV_FUNC(cmd_downall) { struct chanList *cList; --- 2089,2093 ---- } ! static int cmd_all(struct userNode *user, struct chanNode *channel, unsigned int argc, unsigned char *argv[], chanserv_func_t cmd) { struct chanList *cList; *************** *** 2112,2120 **** for(cList = user->handle_info->channels; cList; cList = cList->next) { ! /* The channel may be NULL if it has been suspended. */ ! if(cList->channel->channel) { ! cmd_down(user, cList->channel->channel, 0, NULL); } } --- 2096,2105 ---- for(cList = user->handle_info->channels; cList; cList = cList->next) { ! if(IsSuspended(cList->channel)) { ! continue; } + + cmd(user, cList->channel->channel, 0, NULL); } *************** *** 2122,2125 **** --- 2107,2120 ---- } + static CHANSERV_FUNC(cmd_upall) + { + return cmd_all(CSFUNC_ARGS, cmd_down); + } + + static CHANSERV_FUNC(cmd_downall) + { + return cmd_all(CSFUNC_ARGS, cmd_down); + } + typedef int validate_func_t(struct userNode *user, struct chanNode *channel, struct userNode *victim); typedef void process_func_t(unsigned int num, userNode **newops, chanNode *channel, const char *who, int announce); *************** *** 3592,3600 **** --- 3587,3603 ---- suspended->cData = channel->channel_info; + suspended->cData->suspended = suspended; + suspended->cData->channel = NULL; reason = alloca(strlen(user->nick) + 36); sprintf(reason, "Channel registration suspended by %s.", user->nick); + /* Send the notice before we remove ChanServ from the channel, + because after ChanServ parts, it cannot be guaranteed that + channel is valid. Commands that assume channel is valid must + not be marked CMD_SUSPEND_OVERRIDE. */ + chanserv_notice(user, CSMSG_SUSPENDED, channel->name); + /* Mark the channel as suspended, then part. */ channel->channel_info->flags |= CHANNEL_SUSPENDED; *************** *** 3691,3703 **** chanserv_notice(user, CSMSG_COMMAND_INFO, cmd); chanserv_notice(user, CSMSG_COMMAND_ACCESS, chanserv_expand_command(access)); ! chanserv_notice(user, CSMSG_COMMAND_USES, command->uses); ! ! /* I really don't think users care too much about either the * weight or the flags. */ ! if(IsPrivileged(user)) ! { ! chanserv_notice(user, CSMSG_COMMAND_WEIGHT, command->weight); ! chanserv_notice(user, CSMSG_COMMAND_FLAGS, command->flags); ! } if((aliases = command_aliases("ChanServ", cmd))) --- 3694,3705 ---- chanserv_notice(user, CSMSG_COMMAND_INFO, cmd); chanserv_notice(user, CSMSG_COMMAND_ACCESS, chanserv_expand_command(access)); ! /* I really don't think users care too much about either the * weight or the flags. */ ! if(IsPrivileged(user)) ! { ! chanserv_notice(user, CSMSG_COMMAND_FLAGS, command->flags); ! chanserv_notice(user, CSMSG_COMMAND_WEIGHT, command->weight); ! } ! chanserv_notice(user, CSMSG_COMMAND_USES, command->uses); if((aliases = command_aliases("ChanServ", cmd))) *************** *** 4487,4490 **** --- 4489,4493 ---- channel->channel_info = suspended->cData; + suspended->cData->channel = channel; } *************** *** 5842,5846 **** DEFINE_COMMAND(register, CMD_REQUIRE_HANDLE | CMD_REQUIRE_CHANNEL, ulNone); ! DEFINE_COMMAND(unregister, CMD_REQUIRE_REGISTERED, ulOwner); DEFINE_COMMAND(move, CMD_REQUIRE_PRIVILEGE | CMD_REQUIRE_REGISTERED, ulOwner); DEFINE_COMMAND(opchan, CMD_REQUIRE_PRIVILEGE | CMD_REQUIRE_CHANNEL, ulOwner); --- 5845,5849 ---- DEFINE_COMMAND(register, CMD_REQUIRE_HANDLE | CMD_REQUIRE_CHANNEL, ulNone); ! DEFINE_COMMAND(unregister, CMD_REQUIRE_REGISTERED | CMD_SUSPEND_OVERRIDE, ulOwner); DEFINE_COMMAND(move, CMD_REQUIRE_PRIVILEGE | CMD_REQUIRE_REGISTERED, ulOwner); DEFINE_COMMAND(opchan, CMD_REQUIRE_PRIVILEGE | CMD_REQUIRE_CHANNEL, ulOwner); *************** *** 5891,5910 **** DEFINE_COMMAND(setinfo, CMD_REQUIRE_DEFAULT | CMD_IGNORE_EVENT, USER_LEVEL_LOWEST); ! DEFINE_COMMAND(events, CMD_REQUIRE_DEFAULT | CMD_IGNORE_EVENT, ulCoowner); DEFINE_COMMAND(addban, CMD_REQUIRE_DEFAULT, ulMaster); DEFINE_COMMAND(addtimedban, CMD_REQUIRE_DEFAULT, ulMaster); DEFINE_COMMAND(delban, CMD_REQUIRE_DEFAULT, ulMaster); ! DEFINE_COMMAND(bans, CMD_REQUIRE_DEFAULT | CMD_IGNORE_EVENT, ulPeon); DEFINE_COMMAND(peek, CMD_REQUIRE_DEFAULT | CMD_IGNORE_EVENT, ulOp); ! DEFINE_COMMAND(access, CMD_REQUIRE_REGISTERED | CMD_IGNORE_EVENT, ulNone); ! DEFINE_COMMAND(users, CMD_REQUIRE_REGISTERED | CMD_IGNORE_EVENT, ulNone); ! DEFINE_COMMAND(wlist, CMD_REQUIRE_REGISTERED | CMD_IGNORE_EVENT, ulNone); ! DEFINE_COMMAND(clist, CMD_REQUIRE_REGISTERED | CMD_IGNORE_EVENT, ulNone); ! DEFINE_COMMAND(mlist, CMD_REQUIRE_REGISTERED | CMD_IGNORE_EVENT, ulNone); ! DEFINE_COMMAND(olist, CMD_REQUIRE_REGISTERED | CMD_IGNORE_EVENT, ulNone); ! DEFINE_COMMAND(plist, CMD_REQUIRE_REGISTERED | CMD_IGNORE_EVENT, ulNone); ! DEFINE_COMMAND(info, CMD_REQUIRE_REGISTERED | CMD_IGNORE_EVENT, ulNone); ! DEFINE_COMMAND(seen, CMD_REQUIRE_REGISTERED | CMD_IGNORE_EVENT, ulNone); DEFINE_COMMAND(command, CMD_IGNORE_EVENT, ulNone); --- 5894,5913 ---- DEFINE_COMMAND(setinfo, CMD_REQUIRE_DEFAULT | CMD_IGNORE_EVENT, USER_LEVEL_LOWEST); ! DEFINE_COMMAND(events, CMD_REQUIRE_DEFAULT | CMD_IGNORE_EVENT | CMD_SUSPEND_OVERRIDE, ulCoowner); DEFINE_COMMAND(addban, CMD_REQUIRE_DEFAULT, ulMaster); DEFINE_COMMAND(addtimedban, CMD_REQUIRE_DEFAULT, ulMaster); DEFINE_COMMAND(delban, CMD_REQUIRE_DEFAULT, ulMaster); ! DEFINE_COMMAND(bans, CMD_REQUIRE_DEFAULT | CMD_IGNORE_EVENT | CMD_SUSPEND_OVERRIDE, ulPeon); DEFINE_COMMAND(peek, CMD_REQUIRE_DEFAULT | CMD_IGNORE_EVENT, ulOp); ! DEFINE_COMMAND(access, CMD_REQUIRE_REGISTERED | CMD_IGNORE_EVENT | CMD_SUSPEND_OVERRIDE, ulNone); ! DEFINE_COMMAND(users, CMD_REQUIRE_REGISTERED | CMD_IGNORE_EVENT | CMD_SUSPEND_OVERRIDE, ulNone); ! DEFINE_COMMAND(wlist, CMD_REQUIRE_REGISTERED | CMD_IGNORE_EVENT | CMD_SUSPEND_OVERRIDE, ulNone); ! DEFINE_COMMAND(clist, CMD_REQUIRE_REGISTERED | CMD_IGNORE_EVENT | CMD_SUSPEND_OVERRIDE, ulNone); ! DEFINE_COMMAND(mlist, CMD_REQUIRE_REGISTERED | CMD_IGNORE_EVENT | CMD_SUSPEND_OVERRIDE, ulNone); ! DEFINE_COMMAND(olist, CMD_REQUIRE_REGISTERED | CMD_IGNORE_EVENT | CMD_SUSPEND_OVERRIDE, ulNone); ! DEFINE_COMMAND(plist, CMD_REQUIRE_REGISTERED | CMD_IGNORE_EVENT | CMD_SUSPEND_OVERRIDE, ulNone); ! DEFINE_COMMAND(info, CMD_REQUIRE_REGISTERED | CMD_IGNORE_EVENT | CMD_SUSPEND_OVERRIDE, ulNone); ! DEFINE_COMMAND(seen, CMD_REQUIRE_REGISTERED | CMD_IGNORE_EVENT | CMD_SUSPEND_OVERRIDE, ulNone); DEFINE_COMMAND(command, CMD_IGNORE_EVENT, ulNone); |
From: Miles P. <pet...@us...> - 2001-08-11 21:48:20
|
Update of /cvsroot/srvx/services/src In directory usw-pr-cvs1:/tmp/cvs-serv15916 Modified Files: Tag: rel-1_0 sockcheck.c Log Message: fully functional sockcheck.. weeeee! Index: sockcheck.c =================================================================== RCS file: /cvsroot/srvx/services/src/sockcheck.c,v retrieving revision 1.54.2.15 retrieving revision 1.54.2.16 diff -C2 -r1.54.2.15 -r1.54.2.16 *** sockcheck.c 2001/08/11 20:59:53 1.54.2.15 --- sockcheck.c 2001/08/11 21:48:16 1.54.2.16 *************** *** 453,462 **** client->read_pos = 0; client->read_used = 0; - client->read_timeout.tv_sec = tv_now.tv_sec + client->state->timeout / 1000; - client->read_timeout.tv_usec = tv_now.tv_usec + (client->state->timeout % 1000) * 1000; - if (client->read_timeout.tv_usec > 1000000) { - client->read_timeout.tv_sec++; - client->read_timeout.tv_usec -= 1000000; - } #if SOCKCHECK_DEBUG log(PC_LOG, LOG_INFO, "elaborated state: "); --- 453,456 ---- *************** *** 482,485 **** --- 476,487 ---- return; } + + client->read_timeout.tv_sec = tv_now.tv_sec + client->state->timeout / 1000; + client->read_timeout.tv_usec = tv_now.tv_usec + (client->state->timeout % 1000) * 1000; + if (client->read_timeout.tv_usec > 1000000) { + client->read_timeout.tv_sec++; + client->read_timeout.tv_usec -= 1000000; + } + poller->events = POLLIN | POLLOUT; poller->revents = 0; /* otherwise we get confused this poll iteration.. */ *************** *** 665,669 **** /* See if what's been read matches any of the expected responses */ ! while (client->read_pos < client->read_used) { unsigned char curr, bleh; const unsigned char *resp_state; --- 667,671 ---- /* See if what's been read matches any of the expected responses */ ! while (client->read_pos <= client->read_used) { unsigned char curr, bleh; const unsigned char *resp_state; |
From: Miles P. <pet...@us...> - 2001-08-11 20:59:56
|
Update of /cvsroot/srvx/services/src In directory usw-pr-cvs1:/tmp/cvs-serv5373 Modified Files: Tag: rel-1_0 sockcheck.c Log Message: handle checks that require no response properly Index: sockcheck.c =================================================================== RCS file: /cvsroot/srvx/services/src/sockcheck.c,v retrieving revision 1.54.2.14 retrieving revision 1.54.2.15 diff -C2 -r1.54.2.14 -r1.54.2.15 *** sockcheck.c 2001/08/11 20:31:41 1.54.2.14 --- sockcheck.c 2001/08/11 20:59:53 1.54.2.15 *************** *** 639,642 **** --- 639,643 ---- /* read what we can from the fd */ int res; + unsigned int n; res = read(fd, client->read + client->read_used, client->read_size - client->read_used); *************** *** 652,660 **** } /* See if what's been read matches any of the expected responses */ while (client->read_pos < client->read_used) { unsigned char curr, bleh; const unsigned char *resp_state; - unsigned int n; curr = client->read[client->read_pos++]; --- 653,671 ---- } + /* Handle responses that dont require reading */ + if (client->read_pos == client->read_used) { + for (n=0; n<(client->state->responses.used-1); n++) { + /* since we have nothing to read we will never enter the while() loop */ + if (!strlen(client->resp_state[n])) { + log(PC_LOG, LOG_ERROR, "Choosing response %d for client %s\n", n, client->addr->hostname); + return n; + } + } + } + /* See if what's been read matches any of the expected responses */ while (client->read_pos < client->read_used) { unsigned char curr, bleh; const unsigned char *resp_state; curr = client->read[client->read_pos++]; |
From: Miles P. <pet...@us...> - 2001-08-11 20:31:43
|
Update of /cvsroot/srvx/services/src In directory usw-pr-cvs1:/tmp/cvs-serv32494 Modified Files: Tag: rel-1_0 sockcheck.c Log Message: set tv_now before we start tests Index: sockcheck.c =================================================================== RCS file: /cvsroot/srvx/services/src/sockcheck.c,v retrieving revision 1.54.2.13 retrieving revision 1.54.2.14 diff -C2 -r1.54.2.13 -r1.54.2.14 *** sockcheck.c 2001/08/11 20:29:35 1.54.2.13 --- sockcheck.c 2001/08/11 20:31:41 1.54.2.14 *************** *** 848,855 **** err_count = 0; if (poll_list[0].revents) sockcheck_read_pending(); ! while (sockcheck_worker_queue_client(-1)) ; ! if (gettimeofday(&tv_now, NULL) < 0) { log(PC_LOG, LOG_ERROR, "BUG: sockcheck_worker(): gettimeofday() returned errno %d (%s)\n", errno, strerror(errno)); } for (n=0; n<sockcheck_num_sockets; n++) { /* Do work. If we have work left to do, continue. */ --- 848,855 ---- err_count = 0; if (poll_list[0].revents) sockcheck_read_pending(); ! if (gettimeofday(&tv_now, NULL) < 0) { log(PC_LOG, LOG_ERROR, "BUG: sockcheck_worker(): gettimeofday() returned errno %d (%s)\n", errno, strerror(errno)); } + while (sockcheck_worker_queue_client(-1)) ; for (n=0; n<sockcheck_num_sockets; n++) { /* Do work. If we have work left to do, continue. */ |
From: Miles P. <pet...@us...> - 2001-08-11 20:29:40
|
Update of /cvsroot/srvx/services/src In directory usw-pr-cvs1:/tmp/cvs-serv31834 Modified Files: Tag: rel-1_0 sockcheck.c Log Message: $i expands properly now (fixes socks4 detection) Index: sockcheck.c =================================================================== RCS file: /cvsroot/srvx/services/src/sockcheck.c,v retrieving revision 1.54.2.12 retrieving revision 1.54.2.13 diff -C2 -r1.54.2.12 -r1.54.2.13 *** sockcheck.c 2001/08/11 03:26:26 1.54.2.12 --- sockcheck.c 2001/08/11 20:29:35 1.54.2.13 *************** *** 371,375 **** break; case 'i': ! exp4 = htonl(client->addr->addr); exp_length = sizeof(exp4); expansion = (unsigned char*)&exp4; --- 371,375 ---- break; case 'i': ! exp4 = client->addr->addr; exp_length = sizeof(exp4); expansion = (unsigned char*)&exp4; |
From: Entrope <en...@us...> - 2001-08-11 17:47:47
|
Update of /cvsroot/srvx/services/src In directory usw-pr-cvs1:/tmp/cvs-serv4263/src Modified Files: proto_ircu_p10.c proto_bahamut.c opserv.c chanserv.c Log Message: Bahamut only lets clients on U-lined servers hack modes (ircu only lets the server do it), so we have to provide the client driving the mode change to the protocol layer and let the protocol layer decide the source Index: proto_ircu_p10.c =================================================================== RCS file: /cvsroot/srvx/services/src/proto_ircu_p10.c,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -r1.16 -r1.17 *** proto_ircu_p10.c 2001/08/11 16:37:36 1.16 --- proto_ircu_p10.c 2001/08/11 17:47:43 1.17 *************** *** 577,581 **** irc_mode(struct userNode *from, struct chanNode *target, const char *modes) { ! putsock("%s %s %s %s "FMT_TIME_T, from ? from->proto.numeric : self->proto.numeric, CMD_MODE, target->name, modes, target->timestamp); } --- 577,584 ---- irc_mode(struct userNode *from, struct chanNode *target, const char *modes) { ! struct userMode *mn; ! const char *src; ! src = ((mn = GetUserMode(target)) && (mn->modes & MODE_CHANOP)) ? from->proto.numeric : self->proto.numeric; ! putsock("%s %s %s %s "FMT_TIME_T, src, CMD_MODE, target->name, modes, target->timestamp); } Index: proto_bahamut.c =================================================================== RCS file: /cvsroot/srvx/services/src/proto_bahamut.c,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -r1.6 -r1.7 *** proto_bahamut.c 2001/08/11 16:37:36 1.6 --- proto_bahamut.c 2001/08/11 17:47:43 1.7 *************** *** 407,411 **** irc_mode(struct userNode *from, struct chanNode *target, const char *modes) { ! putsock("%s %s %s %s", (from ? from->nick : self->name), CMD_MODE, target->name, modes); } --- 407,411 ---- irc_mode(struct userNode *from, struct chanNode *target, const char *modes) { ! putsock(":%s %s %s %s", from->nick, CMD_MODE, target->name, modes); } *************** *** 413,417 **** irc_invite(struct userNode *from, struct userNode *who, struct chanNode *to) { ! putsock("%s %s %s %s", from->nick, CMD_INVITE, who->nick, to->name); } --- 413,417 ---- irc_invite(struct userNode *from, struct userNode *who, struct chanNode *to) { ! putsock(":%s %s %s %s", from->nick, CMD_INVITE, who->nick, to->name); } *************** *** 1072,1088 **** static struct chanNode *cn; ! if (!argv[1]) return 0; ! if (argv[3]) { ! cn = GetChannel(argv[3]); ! if (!cn) { ! log(MAIN_LOG, LOG_ERROR, "Unable to find channel %s in topic reply\n", argv[3]); ! return 0; ! } ! } else return 0; ! switch (atoi(argv[1])) { ! case 331: cn->topic_time = 0; ! break; /* no topic */ case 332: if (argc < 5) return 0; --- 1072,1085 ---- static struct chanNode *cn; ! if (argc < 3) return 0; ! if (!(cn = GetChannel(argv[2]))) { ! log(MAIN_LOG, LOG_ERROR, "Unable to find channel %s in topic reply\n", argv[3]); ! return 0; ! } ! switch (atoi(argv[0])) { ! case 331: /* no topic */ cn->topic_time = 0; ! break; case 332: if (argc < 5) return 0; Index: opserv.c =================================================================== RCS file: /cvsroot/srvx/services/src/opserv.c,v retrieving revision 1.206 retrieving revision 1.207 diff -C2 -r1.206 -r1.207 *** opserv.c 2001/08/11 16:37:36 1.206 --- opserv.c 2001/08/11 17:47:43 1.207 *************** *** 503,516 **** } - static struct userNode * - opserv_actor(struct chanNode *channel) - { - struct modeNode *mn; - return (channel - && (mn = GetUserMode(channel, opserv)) - && (mn->modes & MODE_CHANOP)) - ? opserv : NULL; - } - static OPSERV_FUNC(cmd_ban) { --- 503,506 ---- *************** *** 522,526 **** return 0; } ! AddChannelBan(1, &mask, channel, opserv_actor(channel), time(0), 1); opserv_notice(user, OSMSG_ADDED_BAN, mask, channel->name); return 1; --- 512,516 ---- return 0; } ! AddChannelBan(1, &mask, channel, opserv, time(0), 1); opserv_notice(user, OSMSG_ADDED_BAN, mask, channel->name); return 1; *************** *** 656,672 **** char *list[256]; unsigned int count, n; - struct userNode *actor; OPSERV_NEED_CHANNEL(); (void)argc; - actor = opserv_actor(channel); for (count=n=0; n<channel->banlist.used; n++) { list[count] = channel->banlist.list[n]->ban; if (count == ArrayLength(list)) { ! DelChannelBan(count, list, channel, actor, 1); count = 0; } } if (count) { ! DelChannelBan(count, list, channel, actor, 1); } opserv_notice(user, OSMSG_CLEARBANS_DONE, channel->name); --- 646,660 ---- char *list[256]; unsigned int count, n; OPSERV_NEED_CHANNEL(); (void)argc; for (count=n=0; n<channel->banlist.used; n++) { list[count] = channel->banlist.list[n]->ban; if (count == ArrayLength(list)) { ! DelChannelBan(count, list, channel, opserv, 1); count = 0; } } if (count) { ! DelChannelBan(count, list, channel, opserv, 1); } opserv_notice(user, OSMSG_CLEARBANS_DONE, channel->name); *************** *** 682,686 **** channel->modes = 0; buffer[0] = '-'; ! irc_mode(opserv_actor(channel), channel, buffer); opserv_notice(user, OSMSG_CLEARMODES_DONE, channel->name); return 1; --- 670,674 ---- channel->modes = 0; buffer[0] = '-'; ! irc_mode(opserv, channel, buffer); opserv_notice(user, OSMSG_CLEARMODES_DONE, channel->name); return 1; *************** *** 696,703 **** struct modeNode *mn; unsigned int count, next; - struct userNode *actor; OPSERV_MIN_PARMS(2, true); - actor = opserv_actor(channel); for (count=0, next=1; next<argc; next++) { if (!(list[count] = GetUser(argv[next]))) continue; --- 684,689 ---- *************** *** 707,716 **** count++; if (count == ArrayLength(list)) { ! DelChannelOp(count, list, channel, actor, 1); count = 0; } } if (count) { ! DelChannelOp(count, list, channel, actor, 1); } opserv_notice(user, OSMSG_DEOP_DONE); --- 693,702 ---- count++; if (count == ArrayLength(list)) { ! DelChannelOp(count, list, channel, opserv, 1); count = 0; } } if (count) { ! DelChannelOp(count, list, channel, opserv, 1); } opserv_notice(user, OSMSG_DEOP_DONE); *************** *** 723,730 **** struct userNode *list[256]; unsigned int count, n; - struct userNode *actor; OPSERV_NEED_CHANNEL(); (void)argc; - actor = opserv_actor(channel); for (count=n=0; n<channel->members.used; n++) { mn = channel->members.list[n]; --- 709,714 ---- *************** *** 733,742 **** list[count++] = mn->user; if (count == ArrayLength(list)) { ! DelChannelOp(count, list, channel, actor, 1); count = 0; } } if (count) { ! DelChannelOp(count, list, channel, actor, 1); } opserv_notice(user, OSMSG_DEOPALL_DONE, channel->name); --- 717,726 ---- list[count++] = mn->user; if (count == ArrayLength(list)) { ! DelChannelOp(count, list, channel, opserv, 1); count = 0; } } if (count) { ! DelChannelOp(count, list, channel, opserv, 1); } opserv_notice(user, OSMSG_DEOPALL_DONE, channel->name); *************** *** 1082,1086 **** } mask = generate_hostmask(target, false, true); ! AddChannelBan(1, &mask, channel, opserv_actor(channel), time(0), 1); free(mask); KickChannelUser(target, channel, opserv, reason); --- 1066,1070 ---- } mask = generate_hostmask(target, false, true); ! AddChannelBan(1, &mask, channel, opserv, time(0), 1); free(mask); KickChannelUser(target, channel, opserv, reason); *************** *** 1135,1139 **** } if (count) { ! AddChannelBan(count, list, channel, opserv_actor(channel), time(0), 1); } /* now kick them */ --- 1119,1123 ---- } if (count) { ! AddChannelBan(count, list, channel, opserv, time(0), 1); } /* now kick them */ *************** *** 1161,1176 **** static OPSERV_FUNC(cmd_mode) { - struct userNode *actor; - OPSERV_MIN_PARMS(2, true); unsplit_string(argv+1, argc-1); - actor = opserv_actor(channel); if (channel->key[0]) { char *mc = alloca(strlen(channel->key)+4); sprintf(mc, "-k %s", channel->key); ! irc_mode(actor, channel, mc); } mod_chanmode(channel, argv[1], NULL, 0); ! irc_mode(actor, channel, argv[1]); opserv_notice(user, OSMSG_MODE_SET, channel->name); return 1; --- 1145,1157 ---- static OPSERV_FUNC(cmd_mode) { OPSERV_MIN_PARMS(2, true); unsplit_string(argv+1, argc-1); if (channel->key[0]) { char *mc = alloca(strlen(channel->key)+4); sprintf(mc, "-k %s", channel->key); ! irc_mode(opserv, channel, mc); } mod_chanmode(channel, argv[1], NULL, 0); ! irc_mode(opserv, channel, argv[1]); opserv_notice(user, OSMSG_MODE_SET, channel->name); return 1; *************** *** 1188,1192 **** } usermask = generate_hostmask(target, false, true); ! AddChannelBan(1, &usermask, channel, opserv_actor(channel), now, 1); free(usermask); opserv_notice(user, OSMSG_ADDED_BAN, usermask, channel->name); --- 1169,1173 ---- } usermask = generate_hostmask(target, false, true); ! AddChannelBan(1, &usermask, channel, opserv, now, 1); free(usermask); opserv_notice(user, OSMSG_ADDED_BAN, usermask, channel->name); *************** *** 1198,1206 **** struct userNode *list[256]; struct modeNode *mn; - struct userNode *actor; unsigned int count, next; OPSERV_MIN_PARMS(2, true); - actor = opserv_actor(channel); for (count=0, next=1; next<argc; next++) { if (!(list[count] = GetUser(argv[next]))) continue; --- 1179,1185 ---- *************** *** 1209,1218 **** count++; if (count == ArrayLength(list)) { ! AddChannelOp(count, list, channel, actor, 1); count = 0; } } if (count) { ! AddChannelOp(count, list, channel, actor, 1); } opserv_notice(user, OSMSG_OP_DONE, channel->name); --- 1188,1197 ---- count++; if (count == ArrayLength(list)) { ! AddChannelOp(count, list, channel, opserv, 1); count = 0; } } if (count) { ! AddChannelOp(count, list, channel, opserv, 1); } opserv_notice(user, OSMSG_OP_DONE, channel->name); *************** *** 1225,1233 **** struct modeNode *mn; unsigned int count, n; - struct userNode *actor; (void)argv; OPSERV_NEED_CHANNEL(); (void)argc; - actor = opserv_actor(channel); for (count=n=0; n<channel->members.used; n++) { mn = channel->members.list[n]; --- 1204,1210 ---- *************** *** 1235,1244 **** users[count++] = mn->user; if (count == ArrayLength(users)) { ! AddChannelOp(count, users, channel, actor, 1); count = 0; } } if (count) { ! AddChannelOp(count, users, channel, actor, 1); } opserv_notice(user, OSMSG_OP_DONE, channel->name); --- 1212,1221 ---- users[count++] = mn->user; if (count == ArrayLength(users)) { ! AddChannelOp(count, users, channel, opserv, 1); count = 0; } } if (count) { ! AddChannelOp(count, users, channel, opserv, 1); } opserv_notice(user, OSMSG_OP_DONE, channel->name); *************** *** 1294,1298 **** { OPSERV_MIN_PARMS(2, true); ! DelChannelBan(argc-1, (char**)argv+1, channel, opserv_actor(channel), 1); opserv_notice(user, OSMSG_UNBAN_DONE, channel->name); return 1; --- 1271,1275 ---- { OPSERV_MIN_PARMS(2, true); ! DelChannelBan(argc-1, (char**)argv+1, channel, opserv, 1); opserv_notice(user, OSMSG_UNBAN_DONE, channel->name); return 1; *************** *** 1304,1308 **** unsigned int n, count; struct modeNode *mn; - struct userNode *actor; (void)argv; OPSERV_NEED_CHANNEL(); (void)argc; --- 1281,1284 ---- *************** *** 1311,1315 **** return 0; } - actor = opserv_actor(channel); for (count=n=0; n<channel->members.used; n++) { mn = channel->members.list[n]; --- 1287,1290 ---- *************** *** 1317,1328 **** users[count++] = mn->user; if (count == ArrayLength(users)) { ! AddChannelVoice(count, users, channel, actor, 1); count = 0; } } if (count) { ! AddChannelVoice(count, users, channel, actor, 1); } ! irc_mode(actor, channel, "+m"); channel->modes |= MODE_MODERATED; opserv_notice(user, OSMSG_CHANNEL_MODERATED, channel->name); --- 1292,1303 ---- users[count++] = mn->user; if (count == ArrayLength(users)) { ! AddChannelVoice(count, users, channel, opserv, 1); count = 0; } } if (count) { ! AddChannelVoice(count, users, channel, opserv, 1); } ! irc_mode(opserv, channel, "+m"); channel->modes |= MODE_MODERATED; opserv_notice(user, OSMSG_CHANNEL_MODERATED, channel->name); *************** *** 1338,1342 **** return 0; } ! irc_mode(opserv_actor(channel), channel, "-m"); channel->modes &= ~MODE_MODERATED; opserv_notice(user, OSMSG_CHANNEL_UNMODERATED, channel->name); --- 1313,1317 ---- return 0; } ! irc_mode(opserv, channel, "-m"); channel->modes &= ~MODE_MODERATED; opserv_notice(user, OSMSG_CHANNEL_UNMODERATED, channel->name); *************** *** 2155,2159 **** return 0; } ! AddChannelOp(1, &clone, channel, opserv_actor(channel), true); opserv_notice(user, OSMSG_OPS_GIVEN, channel->name, clone->nick); return 1; --- 2130,2134 ---- return 0; } ! AddChannelOp(1, &clone, channel, opserv, true); opserv_notice(user, OSMSG_OPS_GIVEN, channel->name, clone->nick); return 1; Index: chanserv.c =================================================================== RCS file: /cvsroot/srvx/services/src/chanserv.c,v retrieving revision 1.177 retrieving revision 1.178 diff -C2 -r1.177 -r1.178 *** chanserv.c 2001/08/01 22:14:34 1.177 --- chanserv.c 2001/08/11 17:47:43 1.178 *************** *** 1152,1156 **** { AddChannelUser(cData->bot, cData->channel, 0); ! AddChannelOp(1, &cData->bot, cData->channel, NULL, 1); } --- 1152,1156 ---- { AddChannelUser(cData->bot, cData->channel, 0); ! AddChannelOp(1, &cData->bot, cData->channel, cData->bot, 1); } *************** *** 1700,1706 **** static CHANSERV_FUNC(cmd_opchan) { (void)user; (void)argc; (void)argv; ! if (channel->channel_info && GetUserMode(channel, channel->channel_info->bot)) { ! AddChannelOp(1, &channel->channel_info->bot, channel, NULL, 1); } else { chanserv_notice(user, CSMSG_UNREGISTERED, channel->name); --- 1700,1708 ---- static CHANSERV_FUNC(cmd_opchan) { + struct chanData *cData; (void)user; (void)argc; (void)argv; ! cData = channel->channel_info; ! if (cData && GetUserMode(channel, cData->bot)) { ! AddChannelOp(1, &cData->bot, channel, cData->bot, 1); } else { chanserv_notice(user, CSMSG_UNREGISTERED, channel->name); *************** *** 4227,4231 **** if (!mn) return; if (mn->modes & MODE_CHANOP) return; ! AddChannelOp(1, &chanserv, channel, NULL, 1); if (cData->mode_on || cData->mode_off) --- 4229,4233 ---- if (!mn) return; if (mn->modes & MODE_CHANOP) return; ! AddChannelOp(1, &cData->bot, channel, cData->bot, 1); if (cData->mode_on || cData->mode_off) *************** *** 4235,4244 **** mod_chanmode(channel, modes, NULL, 0); ! irc_mode(channel->channel_info->bot, channel, modes); } if(cData->topic[0]) { ! SetChannelTopic(channel, channel->channel_info->bot, cData->topic, 1); } } --- 4237,4246 ---- mod_chanmode(channel, modes, NULL, 0); ! irc_mode(cData->bot, channel, modes); } if(cData->topic[0]) { ! SetChannelTopic(channel, cData->bot, cData->topic, 1); } } |
From: Entrope <en...@us...> - 2001-08-11 16:37:39
|
Update of /cvsroot/srvx/services/src In directory usw-pr-cvs1:/tmp/cvs-serv23658/src Modified Files: hash.h opserv.c proto_bahamut.c proto_bahamut.h proto_ircu_p10.c tools.c Log Message: get rid of most uses of MODE_KEY and MODE_LIMIT define a few Bahamut-specific channel modes Index: hash.h =================================================================== RCS file: /cvsroot/srvx/services/src/hash.h,v retrieving revision 1.65 retrieving revision 1.66 diff -C2 -r1.65 -r1.66 *** hash.h 2001/08/11 02:33:31 1.65 --- hash.h 2001/08/11 16:37:36 1.66 *************** *** 31,48 **** #include "dict.h" #define MODE_CHANOP 0x0001 #define MODE_VOICE 0x0002 - #define MODE_PRIVATE 0x0004 - #define MODE_SECRET 0x0008 - #define MODE_MODERATED 0x0010 - #define MODE_TOPICLIMIT 0x0020 - #define MODE_INVITEONLY 0x0040 - #define MODE_NOPRIVMSGS 0x0080 - #define MODE_KEY 0x0100 - #define MODE_BAN 0x0200 - #define MODE_LIMIT 0x0400 ! #define FLAGS_OPER 0x0001 /* Operator +O */ ! #define FLAGS_LOCOP 0x0002 /* Local operator +o */ #define FLAGS_INVISIBLE 0x0004 /* invisible +i */ #define FLAGS_WALLOP 0x0008 /* receives wallops +w */ --- 31,55 ---- #include "dict.h" + /* in modeNode->modes */ #define MODE_CHANOP 0x0001 #define MODE_VOICE 0x0002 ! /* in chanNode->modes */ ! #define MODE_PRIVATE 0x0001 /* Private (+p) */ ! #define MODE_SECRET 0x0002 /* Secret (+s); exclusive of MODE_PRIVATE */ ! #define MODE_MODERATED 0x0004 /* Moderated (+m) */ ! #define MODE_TOPICLIMIT 0x0008 /* Topic semi-locked (+t) */ ! #define MODE_INVITEONLY 0x0010 /* Invite only (+i) */ ! #define MODE_NOPRIVMSGS 0x0020 /* No outside privmsgs (+n) */ ! #define MODE_KEY 0x0040 /* Actually only used by ChanServ */ ! #define MODE_LIMIT 0x0080 /* Actually only used by ChanServ */ ! #define MODE_REGISTERED 0x0100 /* Channel is registered (Bahamut; +r) */ ! #define MODE_REGONLY 0x0200 /* Only auth'ed users may join (Bahamut; +R) */ ! #define MODE_NOCOLOR 0x0400 /* No colored msgs to channel (Bahamut; +c) */ ! #define MODE_OPERONLY 0x0800 /* Only irc operators may join (Bahamut; +O) */ ! ! /* in userNode->modes */ ! #define FLAGS_OPER 0x0001 /* IRC Operator +O */ ! #define FLAGS_LOCOP 0x0002 /* Local Operator +o */ #define FLAGS_INVISIBLE 0x0004 /* invisible +i */ #define FLAGS_WALLOP 0x0008 /* receives wallops +w */ Index: opserv.c =================================================================== RCS file: /cvsroot/srvx/services/src/opserv.c,v retrieving revision 1.205 retrieving revision 1.206 diff -C2 -r1.205 -r1.206 *** opserv.c 2001/08/01 22:14:35 1.205 --- opserv.c 2001/08/11 16:37:36 1.206 *************** *** 1166,1170 **** unsplit_string(argv+1, argc-1); actor = opserv_actor(channel); ! if (channel->modes & MODE_KEY) { char *mc = alloca(strlen(channel->key)+4); sprintf(mc, "-k %s", channel->key); --- 1166,1170 ---- unsplit_string(argv+1, argc-1); actor = opserv_actor(channel); ! if (channel->key[0]) { char *mc = alloca(strlen(channel->key)+4); sprintf(mc, "-k %s", channel->key); Index: proto_bahamut.c =================================================================== RCS file: /cvsroot/srvx/services/src/proto_bahamut.c,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -r1.5 -r1.6 *** proto_bahamut.c 2001/08/11 02:33:31 1.5 --- proto_bahamut.c 2001/08/11 16:37:36 1.6 *************** *** 361,368 **** do_chan_mode(MODE_INVITEONLY, 'i'); do_chan_mode(MODE_NOPRIVMSGS, 'n'); - do_chan_mode(MODE_KEY, 'k'); - do_chan_mode(MODE_LIMIT, 'l'); #undef do_chan_mode ! if (chan->modes & MODE_KEY) { int len = strlen(chan->key); out[pos++] = ' '; --- 361,368 ---- do_chan_mode(MODE_INVITEONLY, 'i'); do_chan_mode(MODE_NOPRIVMSGS, 'n'); #undef do_chan_mode ! if (chan->key[0]) out[pos++] = 'k'; ! if (chan->limit) out[pos++] = 'l'; ! if (chan->key[0]) { int len = strlen(chan->key); out[pos++] = ' '; *************** *** 370,374 **** pos += len; } ! if (chan->modes & MODE_LIMIT) { out[pos++] = ' '; pos += sprintf(out+pos, "%d", chan->limit); --- 370,374 ---- pos += len; } ! if (chan->limit) { out[pos++] = ' '; pos += sprintf(out+pos, "%d", chan->limit); *************** *** 407,411 **** irc_mode(struct userNode *from, struct chanNode *target, const char *modes) { ! putsock("%s %s %s %s "FMT_TIME_T, from ? from->nick : self->name, CMD_MODE, target->name, modes, target->timestamp); } --- 407,411 ---- irc_mode(struct userNode *from, struct chanNode *target, const char *modes) { ! putsock("%s %s %s %s", (from ? from->nick : self->name), CMD_MODE, target->name, modes); } *************** *** 512,515 **** --- 512,518 ---- return 0; } + + /* TODO: we need callbacks when clients change nicks, so we can fix + * their entry in their uplink's clients dict. */ static void Index: proto_bahamut.h =================================================================== RCS file: /cvsroot/srvx/services/src/proto_bahamut.h,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** proto_bahamut.h 2001/08/11 02:33:31 1.3 --- proto_bahamut.h 2001/08/11 16:37:36 1.4 *************** *** 27,31 **** #define USER_NUMERIC_LEN 2 #define COMBO_NUMERIC_LEN (SERVER_NUMERIC_LEN+USER_NUMERIC_LEN) ! #define MAXMODEPARAMS 6 #define MAXBANS 30 #define USERARRAYSIZE 4096 --- 27,31 ---- #define USER_NUMERIC_LEN 2 #define COMBO_NUMERIC_LEN (SERVER_NUMERIC_LEN+USER_NUMERIC_LEN) ! #define MAXMODEPARAMS 512 #define MAXBANS 30 #define USERARRAYSIZE 4096 Index: proto_ircu_p10.c =================================================================== RCS file: /cvsroot/srvx/services/src/proto_ircu_p10.c,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -r1.15 -r1.16 *** proto_ircu_p10.c 2001/08/11 02:33:31 1.15 --- proto_ircu_p10.c 2001/08/11 16:37:36 1.16 *************** *** 469,476 **** do_chan_mode(MODE_INVITEONLY, 'i'); do_chan_mode(MODE_NOPRIVMSGS, 'n'); - do_chan_mode(MODE_KEY, 'k'); - do_chan_mode(MODE_LIMIT, 'l'); #undef do_chan_mode ! if (chan->modes & MODE_KEY) { int len = strlen(chan->key); out[pos++] = ' '; --- 469,476 ---- do_chan_mode(MODE_INVITEONLY, 'i'); do_chan_mode(MODE_NOPRIVMSGS, 'n'); #undef do_chan_mode ! if (chan->key[0]) out[pos++] = 'k'; ! if (chan->limit) out[pos++] = 'l'; ! if (chan->key[0]) { int len = strlen(chan->key); out[pos++] = ' '; *************** *** 478,482 **** pos += len; } ! if (chan->modes & MODE_LIMIT) { out[pos++] = ' '; pos += sprintf(out+pos, "%d", chan->limit); --- 478,482 ---- pos += len; } ! if (chan->limit) { out[pos++] = ' '; pos += sprintf(out+pos, "%d", chan->limit); Index: tools.c =================================================================== RCS file: /cvsroot/srvx/services/src/tools.c,v retrieving revision 1.87 retrieving revision 1.88 diff -C2 -r1.87 -r1.88 *** tools.c 2001/08/01 22:14:35 1.87 --- tools.c 2001/08/11 16:37:36 1.88 *************** *** 129,132 **** --- 129,135 ---- while (*word == ' ') word++; while (1) { + /* TODO: update this to include the new Bahamut channel modes, + * but to only support them #if (PROTOCOL_CHANMODE_BITS & MODE_foo) + */ switch (*mode_change++) { case 0: *************** *** 145,155 **** case 'k': if (add) { ! channel->modes |= MODE_KEY; ! if(key) ! { safestrncpy(channel->key, key, sizeof(channel->key)); ! } ! else ! { for (n=0; *word != ' ' && *word; n++) { channel->key[n] = *word++; --- 148,154 ---- case 'k': if (add) { ! if(key) { safestrncpy(channel->key, key, sizeof(channel->key)); ! } else { for (n=0; *word != ' ' && *word; n++) { channel->key[n] = *word++; *************** *** 159,169 **** } } else { ! channel->modes &= ~MODE_KEY; } break; case 'l': if (add) { ! channel->modes |= MODE_LIMIT; ! if(limit) { channel->limit = limit; } else { --- 158,167 ---- } } else { ! channel->key[0] = 0; } break; case 'l': if (add) { ! if (limit) { channel->limit = limit; } else { *************** *** 172,181 **** while (*word != ' ' && *word) word++; while (*word == ' ') word++; - - if (!channel->limit) { - channel->modes &= ~MODE_LIMIT; - } } else { ! channel->modes &= ~MODE_LIMIT; } } --- 170,175 ---- while (*word != ' ' && *word) word++; while (*word == ' ') word++; } else { ! channel->limit = 0; } } |
From: Miles P. <pet...@us...> - 2001-08-11 06:18:51
|
Update of /cvsroot/srvx/services/src In directory usw-pr-cvs1:/tmp/cvs-serv13843 Modified Files: Tag: rel-1_0 chanserv.c Log Message: non-users could still use toys when disabled.. oops also, ping cant be disabled for opers/helpers, its kinda of.. informational Index: chanserv.c =================================================================== RCS file: /cvsroot/srvx/services/src/chanserv.c,v retrieving revision 1.161.2.70 retrieving revision 1.161.2.71 diff -C2 -r1.161.2.70 -r1.161.2.71 *** chanserv.c 2001/08/09 12:28:39 1.161.2.70 --- chanserv.c 2001/08/11 06:18:45 1.161.2.71 *************** *** 4274,4277 **** --- 4274,4283 ---- { (void)argc; (void)argv; + + if (channel && channel->channel_info->options[optToys] == 'd') { + chanserv_notice(user, CSMSG_TOYS_DISABLED, channel->name); + return 1; + } + if (channel && !argv[-1] && GetChannelUser(channel->channel_info, user->handle_info)) { char *response; *************** *** 4283,4288 **** case 'n': chanserv_notice(user, CSMSG_UNF_RESPONSE); break; - case 'd': - chanserv_notice(user, CSMSG_TOYS_DISABLED, channel->name); break; } } else { --- 4289,4292 ---- *************** *** 4295,4298 **** --- 4299,4308 ---- { (void)argc; (void)argv; + + if (channel && channel->channel_info->options[optToys] == 'd' && !IsPrivileged(user)) { + chanserv_notice(user, CSMSG_TOYS_DISABLED, channel->name); + return 1; + } + if (channel && !argv[-1] && GetChannelUser(channel->channel_info, user->handle_info)) { char *response; *************** *** 4304,4309 **** case 'n': chanserv_notice(user, CSMSG_PING_RESPONSE); break; - case 'd': - chanserv_notice(user, CSMSG_TOYS_DISABLED, channel->name); break; } } else { --- 4314,4317 ---- *************** *** 4316,4319 **** --- 4324,4333 ---- { (void)argc; (void)argv; + + if (channel && channel->channel_info->options[optToys] == 'd') { + chanserv_notice(user, CSMSG_TOYS_DISABLED, channel->name); + return 1; + } + if (channel && !argv[-1] && GetChannelUser(channel->channel_info, user->handle_info)) { char *response; *************** *** 4326,4331 **** case 'n': chanserv_notice(user, CSMSG_WUT_RESPONSE); break; - case 'd': - chanserv_notice(user, CSMSG_TOYS_DISABLED, channel->name); break; } } else { --- 4340,4343 ---- *************** *** 4346,4349 **** --- 4358,4369 ---- } } + + /* since the switch() statement only affects users on the userlist + we've got to stop before it even gets there. */ + if (channel && channel->channel_info->options[optToys] == 'd') { + chanserv_notice(user, CSMSG_TOYS_DISABLED, channel->name); + return 1; + } + resp = chanserv_conf.eightball->list[accum % chanserv_conf.eightball->used]; if (channel && !argv[-1] && GetChannelUser(channel->channel_info, user->handle_info)) { *************** *** 4356,4361 **** case 'n': chanserv_notice(user, resp); break; - case 'd': - chanserv_notice(user, CSMSG_TOYS_DISABLED, channel->name); break; } } else { --- 4376,4379 ---- *************** *** 4370,4373 **** --- 4388,4397 ---- REQUIRE_PARAMS(2); sides = atoi(argv[1]); + + if (channel && channel->channel_info->options[optToys] == 'd') { + chanserv_notice(user, CSMSG_TOYS_DISABLED, channel->name); + return 1; + } + if (sides <= 1) { chanserv_notice(user, CSMSG_BAD_NUMBER, argv[1]); *************** *** 4383,4388 **** case 'n': chanserv_notice(user, "A %d shows on the %d-sided die.", rolled, sides); break; - case 'd': - chanserv_notice(user, CSMSG_TOYS_DISABLED, channel->name); break; } } else { --- 4407,4410 ---- |