diff -c -r1.11 s_bsd.h *** ../ircu2.10.01/include/s_bsd.h 1997/08/08 19:18:17 1.11 --- ../ircu2.10.01+/include/s_bsd.h 1997/10/07 14:26:55 *************** *** 33,47 **** #define FLAGS_MAP 0x800000 /* Show server on the map */ #define FLAGS_JUNCTION 0x1000000 /* Junction causing the net.burst */ #define FLAGS_DEAF 0x2000000 /* Makes user deaf */ ! #define FLAGS_NOKICK 0x4000000 /* prevents the possibility of KICK or ! MODE -o on the user; can only be set ! by server connections, not by local ! users */ #define FLAGS_BURST 0x8000000 /* Server is receiving a net.burst */ #define FLAGS_BURST_ACK 0x10000000 /* Server is waiting for eob ack */ #define SEND_UMODES \ ! (FLAGS_INVISIBLE|FLAGS_OPER|FLAGS_WALLOP|FLAGS_DEAF|FLAGS_NOKICK) #define ALL_UMODES (SEND_UMODES|FLAGS_SERVNOTICE|FLAGS_LOCOP) #define FLAGS_ID (FLAGS_DOID|FLAGS_GOTID) --- 33,45 ---- #define FLAGS_MAP 0x800000 /* Show server on the map */ #define FLAGS_JUNCTION 0x1000000 /* Junction causing the net.burst */ #define FLAGS_DEAF 0x2000000 /* Makes user deaf */ ! #define FLAGS_CHSERV 0x4000000 /* Disallow KICK or MODE -o on the user; ! don't display channels in /whois */ #define FLAGS_BURST 0x8000000 /* Server is receiving a net.burst */ #define FLAGS_BURST_ACK 0x10000000 /* Server is waiting for eob ack */ #define SEND_UMODES \ ! (FLAGS_INVISIBLE|FLAGS_OPER|FLAGS_WALLOP|FLAGS_DEAF|FLAGS_CHSERV) #define ALL_UMODES (SEND_UMODES|FLAGS_SERVNOTICE|FLAGS_LOCOP) #define FLAGS_ID (FLAGS_DOID|FLAGS_GOTID) *************** *** 52,57 **** --- 50,56 ---- #define IsLocOp(x) ((x)->flags & FLAGS_LOCOP) #define IsInvisible(x) ((x)->flags & FLAGS_INVISIBLE) #define IsDeaf(x) ((x)->flags & FLAGS_DEAF) + #define IsChannelService(x) ((x)->flags & FLAGS_CHSERV) #define IsAnOper(x) ((x)->flags & (FLAGS_OPER|FLAGS_LOCOP)) #define IsPerson(x) ((x)->user && IsClient(x)) #define IsPrivileged(x) (IsAnOper(x) || IsServer(x)) diff -c -r1.53 channel.c *** ../ircu2.10.01/ircd/channel.c 1997/10/07 01:00:22 1.53 --- ../ircu2.10.01+/ircd/channel.c 1997/10/07 14:26:55 *************** *** 1086,1092 **** break; } /* if the user is +k, prevent a deop from local user */ ! if (whatt == MODE_DEL && (who->flags & FLAGS_NOKICK) && MyClient(cptr) && *curr == 'o') { sendto_one(cptr, err_str(ERR_ISCHANSERVICE), me.name, --- 1086,1092 ---- break; } /* if the user is +k, prevent a deop from local user */ ! if (whatt == MODE_DEL && IsChannelService(who) && MyClient(cptr) && *curr == 'o') { sendto_one(cptr, err_str(ERR_ISCHANSERVICE), me.name, *************** *** 3441,3447 **** else if (!(who = FindNClient(parv[2]))) return 0; /* No such user left! */ /* if the user is +k, prevent a kick from local user */ ! if ((who->flags & FLAGS_NOKICK) && MyClient(sptr)) { sendto_one(sptr, err_str(ERR_ISCHANSERVICE), me.name, parv[0], parv[2], chptr->chname); --- 3441,3447 ---- else if (!(who = FindNClient(parv[2]))) return 0; /* No such user left! */ /* if the user is +k, prevent a kick from local user */ ! if (IsChannelService(who) && MyClient(sptr)) { sendto_one(sptr, err_str(ERR_ISCHANSERVICE), me.name, parv[0], parv[2], chptr->chname); diff -c -r1.66 s_user.c *** ../ircu2.10.01/ircd/s_user.c 1997/10/04 14:55:54 1.66 --- ../ircu2.10.01+/ircd/s_user.c 1997/10/07 14:26:56 *************** *** 835,841 **** FLAGS_WALLOP, 'w', FLAGS_SERVNOTICE, 's', FLAGS_DEAF, 'd', ! FLAGS_NOKICK, 'k', 0, 0 }; --- 835,841 ---- FLAGS_WALLOP, 'w', FLAGS_SERVNOTICE, 's', FLAGS_DEAF, 'd', ! FLAGS_CHSERV, 'k', 0, 0 }; *************** *** 2235,2242 **** showperson = 1; break; } ! if (!invis && HiddenChannel(chptr) && ! !SecretChannel(chptr)) showperson = 1; } if (!showperson) --- 2235,2241 ---- showperson = 1; break; } ! if (!invis && HiddenChannel(chptr) && !SecretChannel(chptr)) showperson = 1; } if (!showperson) *************** *** 3267,3274 **** ** Si somos IRCOPs y hemos puesto el flag K, lo acepta. ** jcea@argo.es - 16/Dic/97 */ ! if (!(setflags & FLAGS_NOKICK) && !IsServer(cptr) && !IsOper(sptr)) ! sptr->flags &= ~FLAGS_NOKICK; #ifdef NPATH if (IsOper(sptr) && !(setflags & FLAGS_OPER)) note_oper(sptr); --- 3266,3273 ---- ** Si somos IRCOPs y hemos puesto el flag K, lo acepta. ** jcea@argo.es - 16/Dic/97 */ ! if (!(setflags & FLAGS_CHSERV) && !IsServer(cptr) && !IsOper(sptr)) ! sptr->flags &= ~FLAGS_CHSERV; #ifdef NPATH if (IsOper(sptr) && !(setflags & FLAGS_OPER)) note_oper(sptr);