WHAT IS SEMIADMIN:
------------------

SemiAdmin is a SERVER SIDE ONLY mutator that integrates with Unreal Tournament
for reducing the load of managing a game server and allows for delegation and
automation of such tasks.


WHAT'S NEW IN BETA 0.10:
------------------------

NEW WEB INTERFACE:

SemiAdmin now comes with SemiWebAdmin. A cool looking web interface that will
make it easier to make big changes to the game. This web admin interface doesnt
have all the nifty features of the current admin system like the Console, but if you're
the server owner, you can still login to the standard admin and use its console since
SemiWebAdmin doesnt replace your current ServerAdmin web pages. I would like
to issue a very big thank you to "Evolution" who began the SemiWebAdmin add-on.
He approached me with questions about interfacing with SemiAdmin, and we decided 
to work together and integrate the two projects, in order to make sure that everything
worked properly.

BUG FIXES

I believe I have addressed all bugs from 0.07, but there may have been one or two that
were missed.  I welcome feedback from server admins regarding this.  If you find any bugs
carried over from 0.07, as well as anything new, drop me a line.


WHAT'S NEW IN BETA 0.07:
------------------------

COMMANDS ARE EASIER TO REMEMBER

This version of SemiAdmin features grouped commands which will be easier to
remember. By grouping commands and giving subcommands, you just have to remember
similar and intuitive subcommand syntax. For example, the map selection commands
which where known as NEXTMAP, GOTOMAP and RESTART are now divided into MAP NEXT,
MAP  and MAP RESTART which i believe make more sense.


PRIVILEGES REORGANIZATION: USERS AND GROUPS

The previous version of SemiAdmin allowed you to manage a list of users giving
them privileges. In this version, i decided to go further and added groups
management to the list. This will allow to eventually be able to have settings
that disallow users of certain groups to login during specific events like clan
matches and such.

In addition to groups, i've added 2 different kind of Security levels. One is
responsible to control how much of the game setting you can change. The other
one is responsible for privileges order and currently only serves the need of
deciding what kind of privileges a user manager can give/revoke. I will try to
explain later how to use both of these group parameters

Please note that for security reasons, groups can only be managed by server
admins or Master Admin. See details at the end of the document for more
information.

NEW PRIVILEGE GROUP: SUMMON (S)

I was asked to add a new privilege group to the current list of privileges that
would allow a semi adminitrator to summon items just like the current summon
command does.


HOW TO INSTALL:
---------------

Add the line: ServerActors=SemiAdmin.SemiAdminSA

to the [Engine.GameEngine] section of your server ini file and thatís all.
SemiAdmin is ngStats friendly and will not show in the MOD section of ngStats
due to its use.

HOW TO INSTALL SEMI WEB ADMIN:
--------------------------------

Find the [Uweb.WebServer] section of your server ini file. Find the line that begins

Applications[2]=

Enter SemiAdmin.ServerSemiAdmin for the value here.  Next, find the line that begins

ApplicationPaths[2]=

Enter /SemiWebAdmin for the value here.  If have previously installed another mod or
mutator that uses WebAdmin (such as XMaps), then the Applications[2] line may already
be used by something else.  If so, enter the values for SemiWebAdmin on the first
available line.
Here is an example of what your [UWeb.WebServer] may look like after successfully 
installing the SemiWebAdmin add-on for SemiAdmin:

[UWeb.WebServer]
Applications[0]=UTServerAdmin.UTServerAdmin
ApplicationPaths[0]=/ServerAdmin
Applications[1]=UTServerAdmin.UTImageServer
ApplicationPaths[1]=/images
DefaultApplication=0
bEnabled=True
ListenPort=80
Applications[2]=SemiAdmin.ServerSemiAdmin
Applications[3]=
Applications[4]=
Applications[5]=
Applications[6]=
Applications[7]=
Applications[8]=
Applications[9]=
ApplicationPaths[2]=/SemiWebAdmin
ApplicationPaths[3]=
ApplicationPaths[4]=
ApplicationPaths[5]=
ApplicationPaths[6]=
ApplicationPaths[7]=
ApplicationPaths[8]=
ApplicationPaths[9]=
MaxConnections=30
ServerName=

To access SemiWebAdmin, the URL is:

http://server.ip:adminport/SemiWebAdmin


LIST OF PRIVILEGE GROUPS:
-------------------------

The following privilege groups exist (in alphabetic order):

  B - Ban group. Gives the user the ability to ban players.
  G - Game play. Allows to control settings of the game and game types.
  K - Kick group. Gives the user the ability to kick players.
  L - Ladder group. Will allow to setup the server for ladder play (To do)
  M - Maps group. Gived the user the ability to change current map.
  O - bOts group. Allows to control bots in the currently played map.
  S - Summon group. Only 1 command in this one, but it has its use.
  U - User Management. Allows to add/remove SemiAdmin users to the server.


COMMANDS DOCUMENTATION CONVENTIONS:
-----------------------------------

< >         means that the parameter is mandatory

< a | b >   denotes a choice. Either use a or b, but not both.
            This parameter is mandatory.

[ ]         means that the parameter or parameter part is optional

[ a | b ]   denotes a choice. Either use a or b, but not both.
            This parameter is optional.

...         means that the last parameter can be repeated



LIST OF AVAILABLE COMMMANDS BY GROUP:
-------------------------------------

---------------------
LOGIN/LOGOUT
---------------------


command: ALI
syntax : mutate ali  

    This command will allow you to login to the server as a limited admin. A
    message is broadcasted to all users about your login.

parameters:
    username: Text - The name you use to login
    password: Text - The password you use to login

---------------------

command: ALO
syntax : mutate alo

    This command will allow you to give up your limited admin abilities. A
    message is broadcasted to all users about your logout.


---------------------
NO PRIVILEGE REQUIRED
---------------------


command: SAVER
syntax : mutate saver

    This will report the version of SemiAdmin installed on the server.

---------------------

command: NEXTMAPS
syntax : mutate nextmaps

    This command will report up to 3 of the next maps in the rotation list.


-------------------------
PRIVILEGE B - Ban players
-------------------------

Note: These will be replaced in the next version to follow the object type
      syntax convention dicussed at the beginning.


command: BAN
syntax : mutate ban 

    Allows to ban the specified player using his player name.

parameters:
    playername : Text - The player name as seen on the scoreboard

---------------------

command: BANID
syntax : mutate banid 

    Allows to ban the player who's id matches the given player id. Players id
    can be acquired using the KICKLIST command described lower.

parameters:
    playerid : Numeric - The player id acquired using the KICKLIST command


-----------------------
PRIVILEGE G - Game Play
-----------------------


command: GAME        subcommand: EDIT
syntax : mutate game edit [gamename|gameclass]

    This subcommand will make you the current game editor and will allow you to
    start using the GAME SET and the GAME APPLYCHANGES subcommands. With these
    commands, you can modify the parameters for many game types. A summary list
    of gamename and gameclass will be listed later in this documentation. If you
    dont isse any

parameters:
    gamename : Text - The short or long version of the game name.
    gameclass: Text - The class name of the game type you want to edit.

---------------------

command: GAME        subcommand: SET
syntax : mutate game set  

    This command will allow you to change the different settings of the game
    type you have selected to modify using the GAME EDIT COMMAND

parameters:
    setting: Text - The setting that you want to change.
    value  : Varies - The value you want to assign to the setting.

---------------------

command: GAME        subcommand: GET
syntax : mutate game get <*|setting>

    This command will allow you to see the current value of 1 or all settings
    that you can modify.

parameters:
    *      : Use * to see all settings.
    setting: Text - The setting for which you want the value returned to you.

---------------------

command: GAME        subcommand: APPLYCHANGES
syntax : mutate game applychanges 

    This will apply the changes that you made and while in GAME EDIT mode.

parameters:
    restart: Bool - Whether the server should restart once the settings are
                    saved.

---------------------

command: GAME        subcommand: CHANGETO
syntax : mutate game changeto 

    This command will restart the server using the name or class you specify.

parameters:
    gamename : Text - The short or long version of the game name you want to
                      restart the server with.
    gameclass: Text - The class name of the game type you want to restart the
                      server with.


***********************
*** Coming commands ***
***********************

command: GAME        subcommand: SAVE
syntax : mutate game save [slot] [MUTATORS] [MAPLIST]

---------------------

command: GAME        subcommand: LOAD
syntax : mutate game load [slot]

---------------------

command: MUTATORS
syntax : mutate mutators 

---------------------

command: MUTATORS    subcommand: ADD
syntax : mutate mutators add 

---------------------

command: MUTATORS    subcommand: DEL
syntax : mutate mutators del 

---------------------

command: MUTATORS    subcommand: CLEAR
syntax : mutate mutators clear

---------------------

command: MUTATORS    subcommand: LIST
syntax : mutate mutators list

---------------------

command: MUTATORS    subcommand: USED
syntax : mutate mutators used

---------------------

command: MAPLIST
syntax : mutate maplist

---------------------

command: MAPLIST     subcommand: ADD
syntax : mutate maplist add 

---------------------

command: MAPLIST     subcommand: DEL
syntax : mutate maplist del 

---------------------

command: MAPLIST     subcommand: CLEAR
syntax : mutate maplist clear

---------------------

command: MAPLIST     subcommand: LIST
syntax : mutate maplist list

---------------------

command: MAPLIST     subcommand: USED
syntax : mutate maplist used


--------------------------
PRIVILEGE K - Kick Players
--------------------------

Note: These will be replaced in the next version to follow the object type
      syntax convention dicussed at the beginning.


command: KICK
syntax : mutate kick 

    Allows to kick the specified players using their player name.

parameters:
    playername : Text - The player name as seen on the scoreboard

---------------------

command: KICKID
syntax : mutate kickid 

    Allows to kick the player who's id matches the given player id. Players id
    can be acquired using the KICKLIST command described lower.

parameters:
    playerid : Numeric - The player id acquired using KICKLIST command

---------------------

command: KICKPART
syntax : mutate kickpart <[*][*] [[*][*]] ...>

    Allows to kick users using only a part of their name. It is done using a
    special type of mask format defined to make the task a little easier. The *
    is simply replaced by anything and is considered a wild token. See the
    explanations later in the document.

parameters:
    *    : Token that can represent any part of a player name.
    mask : Text - Mask is meant to represent only part of a name not including
                  spaces.

---------------------

command: KICKLIST
syntax : mutate kicklist

    This command will simply return to you a list of player names and their
    associated id. You can use the listed id with the KICKID and BANID commands.
    The output will be formatted formatted accordingly:, using 1 line per
    player playing on the server. Bots are not included in the list:

    9999 : playername

    where 9999 represents the space allocated for the player id and is padded to
    the left with spaces. The number 1 will show as '   1' without the quotes.


---------------------
PRIVILEGE L - Ladders
---------------------

    *** Nothing implemented yet.

------------------
PRIVILEGE M - Maps
------------------

Note: I will implement a way to tell only partial map names in a future version.


command: MAP
syntax : mutate map 

    This command will restart the game using the specified map name.

parameters:
    mapname : Text: The name of the map to restart the game with. The .unr
                    extension is optional

---------------------

command: MAP    subcommand: NEXT
syntax : mutate map next

    This subcommand will restart the game using the next map in the map rotation
    list.

---------------------

command: MAP    subcommand: RESTART
syntax : mutate map restart

    This subcommand will restart the game using the map currently being played.


------------------
PRIVILEGE O - Bots
------------------

Note: These will be replaced in the next version to follow the object type
      syntax convention dicussed at the beginning.


command: KILLBOTS
syntax : mutate killbots

    This will remove all bots from the current game but only for the duration of
    the current map.

---------------------

command: ADDBOT
syntax : mutate addbot [<#>|]

    This command will add bots to the current game but only for the duration of
    the current map. If you dont specify any parameters, only 1 bot will join.
    But you can also specify a specific number of bots using a number. You can
    also call bots by their name. Humm ... addbot Loque ... mouhahahah. If a bot
    name was mispelled it will simply add any bot.

parameters:
    #       : Numeric - The number of bots to call in.
    botname : Text - The name of a bot to call in.

---------------------

command: DELBOT
syntax : mutate delbot [#|]

    This command will remove bots from the current game but only for the
    duration of the current map. If you dont specify any parameters, only 1 bot
    will leave. If you use a number, that number of bots will leave. I have not
    yet implemented removing bots by their name.

    #       : Numeric - The number of bots to remove.
    botname : Text - The name of a bot to remove.


--------------------
PRIVILEGE S - Summon
--------------------


command: SUMMON
syntax : mutate summon 

    I won't elaborate much on this one, its use is the same as the more
    protected version of it.

parameters:
    objectclass : Text - The class name of the type of object to summon.


-------------------
PRIVILEGE U - Users
-------------------


command: USERS     subcommand: ADD
syntax : mutate users add   

    This command will allow you to add a new user that you allow to have
    privileges on your server.

    username: Text - The username that the user will use to login.
    password: Text - The password that the user will use to login.
    group   : Text - The group that the user will be assigned privileges from.

---------------------

command: USERS     subcommand: DEL
syntax : mutate users del 

    This command will remove the user from the list of users that have
    privileges on the server.

    You cannot remove the last

parameters:
    username: Text - The name for the user that you want to remove.

---------------------

command: USERS     subcommand: MOD
syntax : mutate users mod  name 
         mutate users mod  pass 
         mutate users mod  group 

    These commands will allow you to modify the information associated with a
    user.

parameters:
    username   : Text - The name of the user you want to modify.
    newname    : Text - The new name of the user.
    newpassword: Text - The new password of the user
    newgroup   : Text - The new group this user will be assigned to.

---------------------

command: USERS     subcommand: LIST
syntax : mutate users list

    This command will list all the defined users. The list will show all users
    in no specific order.


------------------------------------------
COMMANDS THAT ONLY A MASTER ADMIN CAN USE:
------------------------------------------


command: GROUPS    subcommand: ADD
syntax : mutate groups add    

    Allows you to add a group name, which will hold the privileges and the
    security level given to the members that will be assigned to that group. The
    privileges, seclevel and gamelevel will be explained better later in the
    documentation.

parameters:
    groupname : Text - The name you want to give to the group.
    privileges: Text - The privileges that users of this group will have.
    seclevel  : Numeric - A level of security between 0 and 255
    gamelevel : Numeric - A level of game settings privileges between 0 and 255.

---------------------

command: GROUPS    subcommand: DEL
syntax : mutate groups del 

    Allows you to remove a group from the list. The group must not have any
    users assigned to it.

parameters:
    groupname : Text - The name of the group.you want to remove.

---------------------

command: GROUPS    subcommand: MOD
syntax : mutate groups mod  name 
         mutate groups mod  priv <[+|-]
         mutate groups mod  seclevel 
         mutate groups mod  gamelevel 

parameters:
    groupname : Text - The name of the group that you want to modify.
    newname   : Text - The new name you want to give to the group.
    newprivs  : Text - The privileges that users of this group will have.
                       use + or - to add or remove only certain privileges.
    newseclvl : Numeric - A level of security between 0 and 255
    newgamelvl: Numeric - A level of game settings privileges between 0 and 255.

---------------------

command: GROUPS    subcommand: LIST
syntax : mutate groups list

    This command will list all the defined groups. The list will show all groups
    in no specific order.


SUMMARY OF THE COMMANDS IN SYNTAX FORMAT:
-----------------------------------------

mutate ban 
mutate banid 

mutate game edit [gamename|gameclass]
mutate game set  
mutate game get <*|setting>
mutate game applychanges 
mutate game changeto 

mutate kick 
mutate kickid 
mutate kickpart <[*][*] [[*][*]] ...>
mutate kicklist

mutate map 
mutate map next
mutate map restart

mutate killbots
mutate addbot [<#>|]
mutate delbot [#|]

mutate summon 
mutate users add   
mutate users del 
mutate users mod  name 
mutate users mod  password 
mutate users mod  group 
mutate users list

mutate groups add    
mutate groups del 
mutate groups mod  name 
mutate groups mod  priv <[+|-]
mutate groups mod  seclevel 
mutate groups mod  gamelevel 
mutate groups list


LIST OF GAME NAMES AND CLASSES:
--------------------------------

Deathmatch:
short: DMP
long : DeathMatchPlus
class: Botpack.DeathMatchPlus

Last Man Standing:
short: LMS
long : LastManStanding
class: Botpack.LastManStanding

Team Deathmatch:
short: TDM
long : TeamDeathMatch
class: Botpack.TeamGamePlus

Assault:
short: ASS
long : Assault
class: Botpack.Assault

Catch the flag:
short: CTF
long : CatchTheFlag
class: Botpack.CTFGame

Domination:
short: DOM
Long : Domination
class: Botpack.Domination


USERS AND GROUPS - HOW TO MANAGE:
---------------------------------

[This documentation is far from complete and will be improved, any fixes or
suggestions should be posted in the SemiAdmin forum.]

The first time you try to login, a new MasterAdmin account will be created. A
MasterAdmin group is known as a group for which SecLevel is set to 255. The
first thing created is a group with SecLevel 255. The name of that group is
admin. Then, a user is created. The name is admin, the password is admin and the
group assigned to it is admin. It is highly recommended that you either change
the password and or the name of the MasterAdmin acount or that you create a new
MasterAdmin user account and delete the default one. Remember that you cannot
Delete the last MasterAdmin account.  If you have created more than one Master
Admin group, and you delete the last MasterAdmin of that group, the corresponding
MasterAdmin group will be deleted as well.

I strongly suggest that you study all the privileges and make groups that will
hold combinations of these. The more privileges the group give, the higher its
SecLevel should be. Also, I had a request to disallow the User Managers to give
or revoke the Ban privilege. This is controlled by the Security Level. Just make
sure all group with Ban privilege have a higher SecLevel than the ones with User
privilege.

A User Manager cannot reassign the group of a user with the User privilege. Only
a MasterAdmin can do so. Also, only a MasterAdmin can create another
MasterAdmin.

I have decided that groups would only be created by MasterAdmins for security
reasons.

Note to the MasterAdmins:

Please choose carefully who you will give User Management right to. The system
is highly protected but as with any protection system, the protection is as good
as its managers are. But in the worst case scenario, you can always clear the
list of users in the unrealtournament.ini file

GameLevel security:

This security value will control which settings a user with Game privilege
can modify. Basically, the higher the setting, the more settings he can change. I
currently only use 0 to 2 and 255. 255 is set only on the Admin Password and
should be held only by a MasterAdmin group to which only the server owner will
have access.  

Refer to the WebAdmin Help page for more detailed information.




[download file as is] (last changed: Sun, 12 Sep 2004 09:43:58 -0500)