-
Notifications
You must be signed in to change notification settings - Fork 11
/
README-NEW-Features.txt
574 lines (439 loc) · 24.5 KB
/
README-NEW-Features.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
==============================================================================
2021.02.20 * Added -new suffixed web sql database files to use with the official webpage
Original files are kept for optional use with the original-old-webpage
------------------------------------------------------------------------------
Advanced database migration, or complete rebuilt of the database required
==============================================================================
2020.06.26 * FIX/UPDATE: Newly created users are created with no last_seen data
so without login within one day they expire.
------------------------------------------------------------------------------
Beside the usual update procedure, you must enter into postgresql command line:
/usr/local/pgsql/bin/psql cservice
and execute the command:
cservice=# DROP TRIGGER t_new_user ON users;
In case of new installation this step is not necessary!
==============================================================================
2020.06.12 * cservice HELLO now sends out a real email with the generated password
* cservice NEWPASS now clears TOTP authentication data as well!
------------------------------------------------------------------------------
The feature has to be enabled in cservice.conf:
hello_sendmail_enabled = 1
** IMPORTANT: mailutils or mailx package must be installed on your system!
For normal users NEWPASS command now can act as Password recovery in case the user is not logged in!
(For admins no change in the behavior)
If the user is logged in, the original new password generation mechanism applies.
So the new syntax is:
NEWPASS <new passphrase|username>
So for example a user lost it's password and is NOT logged in,
can recover it's password by passing the username as parameter, for example:
/msg x@channels.yournetwork.org NEWPASS SomeUser
otherwise if IS logged in, just want to change it's password:
/msg x@channels.yournetwork.org NEWPASS NewPassword
==============================================================================
2020.04.26 * SETHOST: Prevent setting some restricted/reserved hostnames
------------------------------------------------------------------------------
Restricted/reserved hostnames are set in cservice.conf.
Any number of "reservedHost = " entry is allowed.
To restrict admins/opers to set restricted/reserved hostnames edit
mod.cservice/cservice_config.h
#undef ADMINS_USE_RESTRICTED_SETHOSTS
==============================================================================
2016.02.18 * Added halfop support: mod.cservice HALFOPCommand and HALFDEOPCommand
------------------------------------------------------------------------------
To enable halfop command in mod.cservice you must
#define USING_NEFARIOUS
#define USE_HALFOPS
in mod.cservice/cservice_config.h
The syntax is very similar to op and deop.
/msg X halfop <#channel> [nick1 nick2 nick3]
/msg X haldefop <#channel> [nick1 nick2 nick3]
Warning! This feature requires Nefarious2 with it's halfop support.
Warning! Don't forget to enable halfops in ircd.conf:
"HALFOPS" = "TRUE";
If you have an existing installation, to upgrade read README-DO-UPDATES.txt
==============================================================================
2016.02.04 * Recognizing and handling Nefarious2's cloaked IP and cloaked Host
------------------------------------------------------------------------------
If you set "HOST_HIDING_STYLE" greater than 1 in Nefarious2's ircd.conf
gnuworld now will recognize the cloaked style
==============================================================================
2016.01.08 * Prevent users to set 'exotic' hostnames, like with colors, etc.
------------------------------------------------------------------------------
You might find lame to see colored/bolded/etc. hostnames, so if you enable
#define VALIDATE_SET_HOSTNAME
in mod.cservice/cservice_config.h only normal characters will be allowed.
Also it is a possibility of confusion/abuse to allow users to set hosts
with the network's hidden-host-suffix(eg. something.users.yournetwork.org)
so this is not allowed from now on.
============================================================================
2016.01.07 * Added mod.cservice SCANCommand
First puropse: find owner user of a nickname
----------------------------------------------------------------------------
To find an owner of a nickname:
/msg X scan nick|nickname <nick>
==============================================================================
2016.01.07 * mod.cservice NEWPASS: Admins can set target users a new password
------------------------------------------------------------------------------
Admins above access level level::newpass can set target users a new password:
Syntax:
/msg X@channels.yournetwork.org newpass <targetUser> <target New Password>
Note: Changing own password remained valid as originally:
/msg X@channels.yournetwork.org newpass <your new password>
==============================================================================
2016.01.06 * Nick protection through mod.cservice (nickreg/nickserv function)
------------------------------------------------------------------------------
Warning! This feature requires Nefarious2 with it's svsnick support.
Warning! This feature requires to patch Nefarious2 for a proper svsnick handling. Read README-DO-UPDATES.txt!
Also USING_NEFARIOUS must be #define in mod.cservice/cservice_config.h
If you have an existing installation, to upgrade read README-DO-UPDATES.txt
This nick protection works through an svsnick nick changing mechanism by gnuworld.
For the cservice user structure is added a nickname field, so gnuworld takes care any nick on the network is used by the 'right person'
by force-changing and generating an arbitrary 4 digits numbers ended nickname.
Syntax:
/msg X set nick|nickname <TheNick>
To clear any nickname:
/msg X set nick|nickname OFF
or simply
/msg X set nick|nickname
Also coders/admins with (levels.h -> level::nickset) access can set nickname for a target username.
/msg X set nick|nickname <targetUser> <targetNewNickname>
There is a new user flag too, AUTONICK:
/msg X set autonick <ON|OFF>
If it is ON, on login the saved nickname will be set for the client.
==============================================================================
2016.01.06 * Set welcome message-notice for channel joins through X
------------------------------------------------------------------------------
The command syntax for setting welcome message for a channel:
/msg X set #channel_name welcome <welcome_message>
To clear any welcome message:
/msg X set #channel_name welcome OFF
or simply
/msg X set #channel_name welcome
Done.
You can see the welcome message on any channel join.
==============================================================================
2015.08.06 * Set (fake)hostname for users
------------------------------------------------------------------------------
Warning! This feature requires Nefarious2 with it's Fake host support.
If you have an existing installation, to upgrade read README-DO-UPDATES.txt
The command syntax for setting a hostname for a username:
/msg X set hostname <anyhost.youwant.com>
To clear your hostname use:
/msg X set hostname off
The set hostname will be applied instantaneously (if +x), and on every login with +x
insted of the default users hiddenhost suffix
==============================================================================
* Status * command shows currently logged in officials
------------------------------------------------------------------------------
/msg X status *
-X- Status of currently logged '*' officials:
-X- Auth: SomeUser1/SomeNick1 (1000) SomeUser2/SomeNick2 (750) SomeUser3/SomeNick31 SomeNick32 (750) SomeUser4/SomeNick4 (600)
Note: The original function of status * is moved to stats *
==============================================================================
* Suspension of users on channels with reason
------------------------------------------------------------------------------
-X- SYNTAX: SUSPEND <#channel> <username> [duration] [level] [reason]
------------------------------------------------------------------------------
-X- Your reason must be 2 - 300 charcters long.
------------------------------------------------------------------------------
-> *x* access #coder-com Seven
-X- USER: Seven ACCESS: 499 L
-X- CHANNEL: #coder-com -- AUTOMODE: None
-X- *** SUSPENDED *** - Expires in 0 days, 00:09:48 (Level 400)
-X- Reason: Not proper behavior
-X- LAST SEEN: 0 days, 10:13:18 ago.
-X- End of access list
-X- SYNTAX: UNSUSPEND <#channel> <username> [reason]
-> *x* unsuspend #coder-com Seven I forgive you this time
-X- USER: Seven ACCESS: 499 L
-X- CHANNEL: #coder-com -- AUTOMODE: None
-X- UNSUSPENDED - I forgive you this time
-X- LAST SEEN: 0 days, 10:16:09 ago.
-X- End of access list
If the suspension expires, no reason will be show.
If no reason is supplied, reason will be "No reason supplied"
==============================================================================
* NOTEs is accessible for normal users too.
------------------------------------------------------------------------------
Notes can be used to bother the another, and maybe admins don't even want to get notes from normal users, for
this I introduced config lines in "cservice_config.h"
#define USE_NOTES
/**
* Do you want normal users to use the Noteserv functionality?
*/
#define USE_USERS_NOTES
/**
* Normal users can send notes to admins?
*/
#define USERS_NOTE_ADMINS
It can be choose between only admins use notes, admins and users, and admins can or cannot get notes from users.
An ignore option might be advisable.
==============================================================================
* Target users get notification about a new access modification.
------------------------------------------------------------------------------
... and if the target user is not logged in in the moment of modification, the notification will be saved and displayed when the user logs in.
-X- You have been added to channel #coder-com with access level 499
-X- Your access on #coder-com has been suspended.
-X- Your suspension on #coder-com has been cancelled.
-X- Your access on #coder-com has been modified from 499 to 400
-X- Your access from #coder-com has been removed by Admin.
The maxmimum amount of notification can be set up in "cservice.example.conf" at the "max_notes" line. Only the latest "max_notes" count will be stored.
-X- AUTHENTICATION SUCCESSFUL as Seven
-X- Remember: Nobody from CService will ever ask you for your password, do NOT give out your password to anyone claiming to be CService.
-X- You have been added to channel #coder-com with access level 499
-
-X- Your access on #coder-com has been suspended.
-
-X- Your suspension on #coder-com has been cancelled.
-
-X- Your access on #coder-com has been modified from 499 to 400
-
-X- Your access from #coder-com has been removed.
==============================================================================
* Completed users url, useable as a short description, motto, etc of the user (like we do with the Real Name).
------------------------------------------------------------------------------
It can be used with 3 keywords:
/msg X set URL <urlstring>
/msg X set DESC || DESCRIPTION <descstring>
/msg X set MOTTO <mottostring>
-> *x* set motto Escape from Paradise
-X- Set your MOTTO to Escape from Paradise.
-> *x* info seven
-X- Information about: Seven (2)
-X- Escape from Paradise
-X- Currently logged on via:
To clear a motto/desc/url must type:
/msg X set url off
-X- Cleared your URL
=============================================================================
* Chaninfo shows information about channels under registration
------------------------------------------------------------------------------
Admins get fullinformation about the channel:
-> *x* info #anychan
-X- Channel #anychan is in applications list at stage:
-X- *** PENDING SUPPORTERS CONFIRMATION ***
-X- Applicant: Seven - last seen: 0 days, 00:31:32 ago
-X- Real Name: Seven RealName
-X- Description: Channel for nobody
-X- Application posted on: Sun Jun 17 10:01:55 2012
-X- Supporters: johndoe/johndoe (0), NoBody (0)
Where johndoe/johndoe (0) means
username/nick (joincount)
If user has supported channel with YES, it will appear with bold letters
If the nick is currently on the channel it will appear with bold letters, if not, in plain, if not logged in then skipped.
If a user set it's support to NO, the username will appear with bold upper, and it will appear the decision.
Applicant and supporters don't get the joincount.
Non-supporters get's information Only about Status, Applicant and Description:
-X- Channel #anychan is in applications list at stage:
-X- *** PENDING SUPPORTERS CONFIRMATION ***
-X- Applicant: Seven - last seen: 0 days, 01:56:49 ago
-X- Description: Channel for nobody
=============================================================================
* Officials with *1+ can set nopurge for their user form IRC
-----------------------------------------------------------------------------
-> *x* set nopurge on
-X- Your NOPURGE setting is now ON
=============================================================================
* Manual commands for channel ACCEPT/REJECT from IRC
-----------------------------------------------------------------------------
-> *x* reject #anychan For some reason rejected
-channels.homenetwork.org:#coder-com- [X] Admin (Admin) has rejected #anychan from Seven
-X- Rejected channel #anychan
-> *x* info #anychan
-X- Channel #anychan is in applications list at stage:
-X- *** REJECTED ***
-X- Applicant: Seven - last seen: 0 days, 00:00:50 ago
-X- Real Name: Seven RealName
-X- Description: Channel for nobody
-X- Application posted on: Sun Jun 17 11:28:30 2012
-X- Decision by CService Admin: For some reason rejected
-X- Supporters: johndoe/johndoe (0), NoBody (0)
-> *x* accept #anychan For some reason Still Accept
-channels.homenetwork.org:#coder-com- [X] Admin (Admin) has accepted #anychan to Seven
-X- Accepted channel #anychan
The from-IRC accept is superior realtive to web-accept, because it's no needed any sychronization time betweeen gnuworld and web,
the channel chache is refreshed instantaneously, +R appear, X can be asked to join immediately.
-X- Your reason must be 2 - 300 charcters long.
=============================================================================
* Completed HELLO command with verification answer requirement
-----------------------------------------------------------------------------
-X- SYNTAX: HELLO <username> <email> <email> <1-3> <verification answer>
-X- Valid verification answer numbers are: 1 to 3
-X- 1: What's your mother's maiden name ?
-X- 2: What's your dog's(or cat's) name ?
-X- 3: What's your father's birth date ?
-X- Your verification answer must be 4 - 300 charcters long.
=============================================================================
* Channel REGISTER and HELLO commands take into account NOREG/LOCKED's
-----------------------------------------------------------------------------
-> *x* hello duckyjoe duckyjoe_2001@yahoo.com duckyjoe_2001@yahoo.com 2 Rexy
-X- Invalid username (NOREG)
-X- Usernames matching *ducky* are disallowed for the following reason:
-X- Ducks are not allowed here
-> *x* hello duckijoe duckyjoe_2001@yahoo.com duckyjoe_2001@yahoo.com 2 Rexy
-X- Invalid email address (NOREG)
-X- Email addresses matching *ducky* are disallowed for the following reason:
-X- Ducks are not allowed here
-> *x* hello duckyjoe duckyjoe_2001@yahoo.com duckyjoe_2001@yahoo.com 2 Rexy
-X- Invalid username (LOCKED)
-X- Usernames matching *ducky* are disallowed for the following reason:
-X- Ducks must stay out from here
*** Also for locked verification answer ***
In cservice_config.h i'v separated 2 config line:
#define ALLOW_HELLO ==> enable HELLO command only for admins
#define ALLOW_USERS_HELLO ==> enable HELLO command for admins and users
Note: If HELLO is not enabled for admins, than also will not be for users.
Note2: Admins with access level above level::hello defined in mod.cservice/levels.h can bypass NOREG/LOCKED's, etc.
Tha same story for REGISTER command. (cheking for NOREG/LOCKED email, username, verification answer
+ target user must be logged in at least once on IRC
Note: Admins with access level above level::immune::registercmd defined in levels.h can bypass NOREG/LOCKED's, etc.
=============================================================================
* POWER user flag, enables almighty admins
-----------------------------------------------------------------------------
/msg X set POWER [targetuser] ON|OFF
Many networks asked for a possbility of 'special' admins, with absolute administrative power, to be able to set another 1000 admin,
remove, etc.
Userid 1 always has the capability to set itself as POWER, other users can get only from an another POWER-ed user.
The POWER flag is visible in user info only to an another POWER-ed admin, for normal admins is not listed.
=============================================================================
* SPECIAL channel flag is used for prevention of setting normal accesses above 499
-----------------------------------------------------------------------------
Logic dictate to not to allow to set accesses above 500, except for some special cases, those with SPECIAL channel flag:
-> *x* adduser #cservice Seven 501
-X- Access levels on regular channels cannot exceed 499 (except SPECIAL)
-> *x* adduser #cservice Seven 499
-X- Added user Seven to #cservice with access level 499
-> *x* modinfo #cservice access Seven 501
-X- Access levels on regular channels cannot exceed 499 (except SPECIAL)
=============================================================================
* Expiration of users for more than 60 days are automatical from the gnuworld's internal timer
-----------------------------------------------------------------------------
In mod.cservice/ in cservice.h/cservice.cc it is declared a new timer looking after users expiration.
This can be fine tuned within cservice.example.conf
"users_expire_days"
config line.
For this, and for the channel expiration it is valid the
"hour_seconds" and "day_seconds" config lines.
The "users_db_idle" is the time interval in hours to check the users for the lastseen value.
=============================================================================
* Expiration of channels within gnuworld, with setting the proper MIA, LOCKED, DESC, URL's
-----------------------------------------------------------------------------
It is well known the steps of channel expiration, this does the same in automatic way.
In cservice.example.conf there are config lines for this
#
# Frequncy for check database for for channels for missing managers(in hours)
# cannot be 0, default 3 will be used
channels_db_idle = 1
# Set hour length in seconds
# (appliabale only for "new" features user and channel expires
# cannot be 0; 1 will be used
hour_seconds = 3600
# Set day length in seconds
# (appliabale only for "new" features user and channel expires
# cannot be 0; 1 will be used
day_seconds = 86400
#
# Set MIA flag on channels where manager missing for
# 0 = never expire
MIA_start_days = 21
#
# Purge MIA flagged channels after
#
MIA_end_days = 30
#
# Description for MIA starting period
#
MIA_start_desc = Manager has failed to login. To vote for new manager send mail to cservice@undernet.org
#
# MIA URL
#
MIA_URL = Only 400+ Ops
#
# Description for MIA ending period (manager has logged in)
#
MIA_end_desc = Manager has logged in. This was the last warning for failure to login
If the manager has logged in in the MIA period, a CAUTION channel flag will be set (LOCKED,MIA will be removed),
what will cause an immediate channel purge next time when the manager fails to log in in time.
=============================================================================
* Automode VOICE/OP are Not allowed in any kind below the required access levels.
-----------------------------------------------------------------------------
Everyone knows that automode voice/op can be set starting with 1 access. This is an issue to fix,
So:
-> *x* modinfo #coder-com access Seven 24
-X- Modified Seven's access level on channel #coder-com to 24
-> *x* modinfo #coder-com automode seven op
-X- Target user Seven on channel #coder-com has insufficient access for an automode OP
-> *x* modinfo #coder-com automode seven voice
-X- Target user Seven on channel #coder-com has insufficient access for an automode VOICE
-> *x* modinfo #coder-com access Seven 25
-X- Modified Seven's access level on channel #coder-com to 25
-> *x* modinfo #coder-com automode seven voice
-X- Set AUTOMODE to VOICE for Seven on channel #coder-com
-> *x* modinfo #coder-com automode seven op
-X- Target user Seven on channel #coder-com has insufficient access for an automode OP
-> *x* modinfo #coder-com access Seven 99
-X- Modified Seven's access level on channel #coder-com to 99
-> *x* modinfo #coder-com automode seven op
-X- Target user Seven on channel #coder-com has insufficient access for an automode OP
-> *x* modinfo #coder-com access Seven 100
-X- Modified Seven's access level on channel #coder-com to 100
-> *x* modinfo #coder-com automode seven op
-X- Set AUTOMODE to OP for Seven on channel #coder-com
In addition if channel has a userflag VOICE/OP, when the access level is modified to the required level, it will get the automode,
if the access is modified below, it will be lost, set to NONE.
=============================================================================
* RENAMECommand of the usernames
-----------------------------------------------------------------------------
-X- SYNTAX: RENAME <old_username> <new_username>
-> *x* rename seven George
-X- Successfully renamed username Seven to George
It is required an admin access level level::rename in mod.cservice/levels.h
=============================================================================
* Reimplemented NOFORCE channel flag
-----------------------------------------------------------------------------
Noforce channel flag prevents admins to force themselves on a channel.
-> *x* set #cservice noforce on
-X- NOFORCE for #cservice is ON
-X- Channel #cservice has 2 users (2 operators)
-X- Mode is: +tnR
-X- I'm currently in this channel.
-X- MassDeopPro: 3
-X- Flags set: NOFORCE AUTOJOIN
-X- Auth:
-> *x* force #cservice
-X- The NOFORCE flag is set on #cservice
Requires an adminlevel level::set::noforce
=============================================================================
* Implemented NOVOICE channel flag, homologous as NOOP
-----------------------------------------------------------------------------
/msg X set #anychan NOVOICE <on|off>
=============================================================================
* REGISTER command is available to normal users, to start a new channel registration from irc
-----------------------------------------------------------------------------
/msg X register #channel
and than follow X's instructions!
The admin registration method remains:
/msg X register #channel [targetuser]
=============================================================================
* NOTAKE channel flag prevents 'takeover' banning *!*@* through X
-----------------------------------------------------------------------------
/msg X set #channel NOTAKE <on|off>
The revenge action can be 3 types:
/msg X set #channel TAKEREVENGE <IGNORE|BAN|SUSPEND>
IGNORE - simply will do nothing on ban *!*@*
BAN - will ban and kick the person for 100 days at level 500
SUSPEND - will ban and kick and suspend for 100 days 500 level
=============================================================================
* PURGE command can delete users too
-----------------------------------------------------------------------------
/msg X purge <#channel|username>
If a username is provided, then will delete it.
=============================================================================
* Other minor enhancements
-----------------------------------------------------------------------------
* On Channel join (bursting channels) X looks after NOOP and NOVOICE channel flag, and deop/devoice everyone.
* Ban nicklength is now 50 instead of maximum of 15, ident legth is 25 instead of 12.
* Channel description length is now can be 128 charcters long, url is 75 charcters long.
Don't forget to adjust ircu's values too if needed.
* On user suspension on a channel, all logged clients corresponding the suspended account will be deopped instantaneously.
* On global user suspension, all clients corresponding to logged user, on all channels where is opped will be deopped instantaneously.