Intro
-----

So you have sucessfully compiled, confugured and run verlihub, congrats!!

Now I'll tell you how to kic, ban, setup hubs, slots stuff, and change settings on the run..

Kicking and banning user
------------------------

You know how to kick by mouse context menu, don't you? :o) Ok and now if you add some stuff to the kicking reason, you can do even more at the same time. There is a method in verlihub whih you kick and (temp)ban user in one action. It's the _ban_ (case insensitive) keyword and it's friends...

So if you have a fake share user you wold give for a reason something like this "fake share _ban_" or if you prefer "fake _ban_ share" or even "_ban_fake_share" whatever as long as there is _ban_ substring... User is kicked and banned ...

Of course you would like also to use temp ban, well that's similar..
e.g. "incomplete files, remove them and come back in a week _ban_1w" (you can use almost any simple time units ..)

time units:
second (s,S) minute (m, but NOT M), hour (h,H) , day (d, D), week (w, W), month (M but not m), year (y, Y).

You can use any resonable big positive integer in front of the time unit. Don't put spaces into the _ban_NUMBERUNIT stuff and it should work.

Note: a simple kicke gives itself a small temp_ban , 300 seconds by default, you can override it with the variable tban_kick = 60 for e.G. which would be a minute.

There are even the classic ways how to ban and unban, which work slight differently.
Important to know is that verlihub doesn't let you ban someone without a reason. First you must kick him and provide a reason, or you have to add a ban reason at the end of the ban command. 
e.g. !ban 1.2.3.4 Fake stare
!tempban 1.2.3.4 14d Sharing rotten tomatoes and bad sandwiches
or in case  you just have kicked the guy you need not to retype the reason, verlihub will take the one from kick. Note that this way you ban only ip address and not the nick. See next section (Ban methods)

Note: you can personalize the message that is send to a banned user that tries to login (msg_banned variable). Since verlihub banlist is on mysql database, you can create a php or similar site that let's user ask for unban if he feels innocent or whatever, and put the url in the msg_banned variable. A working example is on http://czpro.no-ip.com/unban .

Ban methods
-----------

Verlihub has a special banning scheme which gives a certain solution for users with shared or migrating ip, who often have bans for someone other. Simply every normal banis for IP and for Nick. Meaning if user matches ip or nick that is banned he can't go to hub. There is an exception which makes the scheme work better than the old ip scheme, and that is the lowest registration level. Every registered user ignores ip bans. And since there is a nick ban he can be banned too, by the nick, and if he would want to change the nick, then there is still the ip, so he would have to change both nick and ip. 
To resume: it's verified that it works ok..

To ban only nick or only ip there are also commands available:
!nickban
!nickunban
!ipban
!ipunban
togetrher with 
!ban
!tempban
!unban
!ipbanlist
!ibi
it makes quite sufficient set of commands..

Note: you can also !kick and !drop users

some more:
!hidekick nick   - you can hide the public kick message from given user
config hide_all_kicks = 1 hides them all (0 doesn't)

Sending PM to multiple users:
-----------------------------

You have a choice,  ops can send pm's to OpChat (it's name may be set by config variable opchat_name ) that send the same to all other ops.

If you want to broadcast all over the hub, you can use command !broadcast (or shortcut !bc) followed byt the test of message, Every user in the hub then receives PM from hub_security user. If nywone writes pm to hub_security, at most one user will receive the response and it's the sender of last "broadcast message". Don't be surprised, even if you after !bc will send pm to hub_security you will receive your own echo.

There is also similar commands:
!regs and !ops which send broacast to corresponding users class..

Nominating OPs and regs from DC
-------------------------------

The important thing about velrihub is the ops hierarchy. Noone can nominate anyone of the same class, neither one less. Even regular ops (class 3) can't registrate anyone. So to be able to create registered user you need to be class 4 and higher, and as such you can make users of their_class <= your_class - 2. To create an op one needs to be class 5. Clear? There is nevertheless a possibility to create temporary op status or even higher. Temporary status may be given to his_temp_class <= your_class - 1.

Commands:
!regnewuser nick [class=1] (or shortcut !rn)
for temporary op status it's !class nick [class=3]

Setting password:
-----------------
once you !regnewuser a new command (+passwd his_new_pass) is available for him. He has then to use that command to set his access password. Without doing it he will have not the given status, and will be prompted to set the password on every login. The only thing that will work on him is the ip ban ignoring. So if someone asks you by other means to be regged because he has ban for someone else, you can do it, he can access hub and setup password.

e.g.
<TheBigOP> !rn UserName
<UserName> +passwd MyMumsName
<VerliHub> Your password has been updated successfully.
<Username> +passwd IChangedOpinion
<VerliHub> You can't do this, ask any op.
<AnyOP> !regpass UserName
<UserName> +passwd IChangedOpinion
<VerliHub> Your password has been updated successfully.

You can see, noone can change his password without someone higher knowing it. If any op wants to change pass, he must ask higher op for permission. If You, tha Master of hub want to change your password, you need to do it manually in the database or use some bash script.

!regclass nick newclass (or !rc) changes a class of already regged user.
!regdisable nick  disables user's registration without deleting it from database, useful for temporary purposes
!regenable nick
!regdelete  (should delete a user, but I never used it so it may not work :o)

DC Tags
-------

Verlihub also recognizes dc tags. You can configure the hubs and slots rules by means of following config variables:

tag_max_slots_default
tag_max_slots_28kbps
tag_max_slots_33kbps
tag_max_slots_56kbps
tag_max_slots_modem
tag_max_slots_isdn
tag_max_slots_cable
tag_max_slots_dsl
tag_max_slots_satellite
tag_max_slots_microwave
tag_max_slots_wireless
tag_max_slots_lant1
tag_max_slots_lant3

tag_min_slots_default
tag_min_slots_28kbps
tag_min_slots_33kbps
tag_min_slots_56kbps
tag_min_slots_modem
tag_min_slots_isdn
tag_min_slots_cable
tag_min_slots_dsl
tag_min_slots_satellite
tag_min_slots_microwave
tag_min_slots_wireless
tag_min_slots_lant1
tag_min_slots_lant3

tag_max_hs_ratio
tag_max_hubs

You can add these to the config file. Defaults of these variables are either too low or too high for being restrictive.

You can also hide all tags from user descriptions, by another variable show_tags
to show them all to everybody, use show_tags = 2 to show them only to ops and hide tags from all normal users use show_tags = 1; hide tags by show_tags = 0 .
Remember also that op's tags are hidden for everyone. I think that they have no sense.

Hublist registering
-------------------

Verlihub has also a versy simple and a bit incomplete hublist registering support. It's TODO to make it better. Well there are several variables and one command that make it work. Those that are used are:
hublist_host - the ip address of the hublist registering host
hublist_port - usually 2501 which is default
hub_host
listen_port
hub_name
hub_desc
and the command is !hublist
you can use this command once above varibales are set correctly, but don't use it more often then in 15 minutes interval, hublists tend to ban hubs in this matter.


Triggers - User defined commands
--------------------------------

Verlihub has also this feature, which makes possible to show any text file on any specified command beginning with "+" sign. There is a mysql table called 'file_triggers' that contains definitions of these triggers. You can use provided script calles 'trigger' to create triggers in the database. The changes will take effect until invoking command !reload or hub restart.

Of course you can modify the trigger files on the runtime and the change sin file contents will take effect immediately. You can add your own script into crontab to modify the files...

TODO: triggers that do mysql queries and show the result, min delay for invoking triggers, and more

Share limits, nick chars, etc..
-------------------------------

You can personalise minimal and maximum share allowed in the hub. You can also set minimum and maximum allowed length of user's nickname. You can unallow certain characters in nicknames (ie. you can say which are allowed). 
Corresponding varibales are:
min_share
min_share_reg
min_share_ops
max_share 
...

min_nick
max_nick
nick_chars

You can also allow only users having specified nick_prefix or "[OP]" prefix...

Main chat controlling
---------------------

Verlihub has diverse parameters to protect chat from very bad flooding. There must be some compromise between heavy restrictions and possibility to chat.. So there are not yet all protections, and also because I have not done all of them.

Maximum length of chat message (max_chat_msg) and maximum number of lines in each message (max_chat_lines). Also minimum delay between two chat messages, which is currently in seconds, default is one. 
None of these restrictions apply on OPs.

You can also restrict given user from chat temporarily. Using command !gag nick will keep him out from chat until his reconnection of !ungag nick.

Sometimes you would also like to get rid of the kicking messages, specially when you use some bot that kicks very often. You can use a variable "hide_all_kicks = 1 or 0", 1 hides them all. Another possibility is !hidekick Nick and !unhidekick Nick.

There is nothing in verlihub that prevents user from saying
something
something
something
something
something
something
...

Well I use a dcgui-qt client that does this job automaticaly kicks user on such event.

Verlihub doesn't prevent users saying rude words. Anyway there is a possibility to configure verliBOT to kic/ban such users.. Besides you can teach verlibot to do quite intelligent conversation and be for someone hardly differing from human.

Hub redirection
---------------

You ca setup up to 10 hubs where verlihub will try to redirect every disconnected user. The choice is made randomly among all ten of them. If you want only one hub to redirect to you would set all ten of them to same hub address. varlibales are redir_host0 ... redir_host9.

TODO: mass redirection, spceialiezd redirection by type of disconnection (ban, kick, share_limit, country, etc...)

