-allow admin to disabling the 'm' mail key in ttyplay. -update README -maybe allow something like changed_menu="[Updated %d]" config option and $CHANGED in the menu banner. the $CHANGED will be replaced with the changed_menu value. the %d in changed_menu will be replaced with the banner file change time. -whenever config file has a dir, check that it ends with "/" -in domailuser(), we need find_curr_player_game(username) -for menu definitions, allow "default" commands (when user presses a key not defined in other commands): commands[default] = ... -in watching-menu, maybe we shouldn't pick players who have been idle for too long when randomly choosing one to watch. -change dgl-banner handling; we only use the top line of it nowadays... (maybe make that info config line: bannerline = "## $SERVERID" or something) -allow the admin to config the watching menu: -top banner -bottom banner -remove and reorder the columns: watch_title = " Name Game Size Start date & time Idle" this doesn't allow hiliting the sorted title, though... watch_columns = "0) 1 2 3 4 5 6" where the numbers correspond to the columns, everything else is passed through. the columns have default widths. col 0=selectletter, 1=playername, 2=gamenum, 3=termsize, 4=startdate, 5=starttime, 6=idletime -set default sort method -selectorchars: watch_selectorchars = "abcdefghijklmn" (a-zA-Z, minus qQ) -keys: currently: qQ=return, '.'=sort++, ','=sort--, etc -allow admin to set per-game "extra info" file, extrainfofile = "/nh343/var/extrainfo/%n.xtranfo" contents of which are shown in the watching menu as info-column. the game is responsible for updating the contents of that file. -update virus to the newest version. (virus is originally from busybox: http://git.busybox.net/busybox/tree/editors/vi.c but that version needs to be made secure) -allow changing the name where the ttyrecs are saved, like ttyrec_fn = "%rttyrec/%n/%g/%p.ttyrec" -maybe save more stuff in the db, if we're using the sqlite (last login timestamp, watch-menu sort-type, etc) -Allow using a ttyrec (or similar screen capture) as the menu text, instead of a text file. maybe adding a bannertype={auto,txt,ttyrec,screendump} into a menu def. auto=try to detect it from file extension. would be useful to be able to define a program to run that generates the banner? (eg. nethack hiscore list via nethack itself) -BUG: cannot quit watching until caught up with the stream. -allow configuring the watching, new user registration, email/passwd change, etc. screens. -make default_fmode configurable, and add config file command "chmod file mode" -allow setting the new rcfile access rights. -allow configuring the ttyrec dir location & file format. -maybe allow changing the watching-screen &c layouts too? -add commandline parameters to dgamelaunch: dgamelaunch --chpasswd "nick" "newpass" -some games (robotfindskitten?) are not worth saving into ttyrecs, make it configurable. if no ttyrecs, then can't watch the game, which is a pity. maybe rather just save the latest ttyrec, which ties into having configurable ttyrec filenames... -save the game name into ttyrec filename, so we can find what game it was. -allow configuring ttyplay.c; some games may use different clear-screen commands. (see for example crawl) -allow configuring the gfx stripping. (number of chars, types of stripping, include unicode stripping from crawl dgl, etc) This must be per-game configs; maybe we're running nethack and crawl on the same server. ...does ttyplay know what game we're watching? charstrip "name" { start_state = 0; state = (0 and 0x0e), 0x00, 1; state = (1 and 0x0f), 0x0f, 0; state = (1 and 0x1b), 0x1b, 0; state = (1 and gfxmap), gfxmap, 1; # initializes the gfxmap from charstrip "name" gfxmap. could also have # gfxmap_init = zero; gfxmap_init = from "name"; # the following will replace characters 128-135 with the listed characters. # accepts: # 0xff (hexadecimal), 240 (decimal), 001 (octal), 'x' (character) gfxmap = 128, (' ', '|', '#', 0xb3, 0x00, 240, 241); } in game definition: char_strips = "name", "name", "name", ... or maybe add a new command '' set_charstrip "name" '' -public (no-password) accounts? (a per-user flag) what happens when someone is playing on the account and someone else logins and we start playing? -allow users to run recover themselves -make dgl show # of watchers. this would probably require adding a shared memory block to keep track of who is watching who... -configurable stuff: allowed chars in usernames, allow char stripping, ... - Flags for operators/staff/admins or (optionally) user-bans. - Localization of variables, code clean up - Use /var/run/nologin and/or dgl-specific nologin file