SkotOS Wiztool

About Wiztool

Each of the games has a "wiztool" port at XX98 (e.g. 11098 for your default setup), which can be used to access a number of functions that sit between the Layers of DGD's Kernel Library functionality, and the underlying SkotOS LPC code that runs the ChatTheatre.

You should rarely need to use this functionality as a maintainer, and you should be aware that you have the opportunity to do basically permanent damage to your server (depending on when/how you do backups, etc.)

Setting up access to the Wiztool

For your account to be able to access the wiztool, you'll need to make sure your account is marked "developer" or "staff". That's a type of user you can choose in thin-auth, and Wafer (the local-only auth server) will choose staff automatically unless you tell it not to.

You'll also need the correct "access" flag, which is "gables" by default. Again, Wafer will do this for you and you'll need to add it in thin-auth for a VPS-hosted game.

Accessing the Wiztool

From the same machine (your local server, or the VPS server) you can telnet to port 11098 (with the default portbase). By default the local config will allow you to give any account name and password successfully. By default your VPS installation will allow the "skott" account with the master password you configured in the StackScript. If you change your thin-auth password that will be reflected for the telnet port as well.

So:

telnet localhost 11098

Or:

telnet gables.my-subdomain.com 11098

Wiztool Commands

> help

Available commands in the wiztool:

Coding / compiling / upgrading:
  upgrade   issues    unfreed   leaves    patch     possess   depossess
  command   dbstatus  debug     clones    code      history   clear
  compile   clone     destruct  clonetree inherited inherits

Files / directories:
  cd        pwd       ls        cp        mv        rm        mkdir
  rmdir     ed

Access / resources:
  access    grant     ungrant   quota     rsrc

Miscellaneous:
  people    status    swapout   statedump shutdown  reboot

> access

> help access
Command:     access
Synopsis:    access [<user>]
             access <directory>
             access global
Description: Shows what access you or someone else has.
See also:    grant, ungrant

> help code

Command:     code
Synopsis:    code <LPC-code>
Description: Allows you to execute LPC code without having to specifically
             create an object, as this has been automated for you.  For your
             convenience the files <float.h>, <limits.h>, <status.h>,
             <trace.h> and <type.h> are automatically included and there are
             26 variables (a..z) of type mixed to use.
See also:    clear, clone, compile, history

Recompiling Code

If you make a local change to your DGD code, by editing it or with "git pull", you'll need to recompile the files individually.

To compile a concrete (non-library) DGD object, you'll cd into its directory and use the compile command. So to compile skoot/some/path/obj/here.c, you'd type:

cd /some/path/obj
compile here.c

For a library you'll instead need to "upgrade" it, which will recompile all objects that depend on it.

Storypoints Grant Access

(Note: this is for SkotOS games that use StoryPoints.)

This will allow you to grant story-point-granting permissions to certain staff accounts:

This allows you to list current SP granters:

code "/usr/TextIF/sys/storypoints"->query_accounts() $171 = ({ "alice", "bob" }) You can add people by referencing that return value ($171):

code "/usr/TextIF/sys/storypoints"->set_accounts($171 + ({ "charlie" })) $172 = nil You can similarly remove people:

code "/usr/TextIF/sys/storypoints"->set_accounts($171 - ({ "bob" })) $172 = nil Or you could just bypass all of that and create a totally new list of people:

code "/usr/TextIF/sys/storypoints"->set_accounts(({"charlie", "dan"})) $172 = nil