Skip to content

Fun-o-Matic

Sections
Personal tools
You are here: Home » Project Roadmap » FomAgent

FomAgent

Plans for new features and list of known bugs in the FomAgent module.

Module Purpose

The FomAgent module is a Windows service that runs in the background on all stations that are to be managed by Fun-o-Matic. FomAgent responds to commands it receives from other Fun-o-Matic modules. All commands, and data returned, are communicated via the SOAP protocol.

Module Status

Version 2 of FomAgent is stable and in use.

Known Bugs / Changes Planned for Version 2.1:

  • See if authenticate method of bypassing null parameter problem will work for other subs
  • BUG: drives command shows some serial numbers as negative; maybe it should be displayed as an unsigned integer instead of signed?
  • Make putFiles/getFiles overwrite directories/files during transfers (right now they require that target directories don't exist) UPDATE: putFiles seems to tell you overwrites are successful, but doesn't do them at all.
  • Hog times out during long FTP transfers--they are still running when Hog reports they are done. Maybe have FomAgent send some kind of heartbeat signal? Something that could be used to display a progress indicator?
  • BUG: Can't delete dcpp/dc++
  • BUG: When doing getFiles on a long name with spaces, file is copied to server with a single-character filename--that letter being the last
  • BUG: Seems we can't deal with non-standard character sets; Korean directory name can't be used.
  • BUG: When FomAgent is ordered to launch another program, it does so running as user "LOCAL SERVICE", rather than an administrator. Consequently, there are certain things it can't do--apparently, it can't open network connections, and can't write to certain registry keys. Without network capability, it can't launch Steam; the registry problem causes it to be unable to install certain programs using a remotely launched installer--although in that case, there is no warning that the registry isn't being updated as expected: everything seems to install just fine, but then the installed program exhibits unusual behavior.
  • Check for memory leaks
  • Why does volume command sometimes affect Counter-Strike, and sometimes not?
  • Need a command-line tool for sending messages to FomAgent; something suitable for including in croned shell scripts (for example: to mqake a script that will automatically shut everything down at closing time). This tool can completely replace apiTest.pl and testCsa.pl.
  • Drives returns empty untyped items for null serial numbers; is that what we really want? Regular serial numbers are returned as integer items; a structure with both int and untyped items looks odd, and may have interoperability problems. However, SOAP::Lite doesn't seem to be able to do the coercion we want on an inner part of a nested structure.
  • Add a screen capture function (it could only capture the Windows desktop; games that use a 3D video card can't be captured via any generic method).
  • Add a function to return bandwidth usage parameters, and add those data to the data returned by reportAll.
  • BUG: When the "cmd" function is invoked to execute a Windows command, "command succeeded" is returned even if the command fails.
  • BUG: When changing between Daylight Saving Time and regular time on computers that are also running DeepFreeze (typically all the customer stations in a cybercafe), csaAgent rejects all commands after the time zone change. The problem is that DF keeps the computer permanently locked into the old time zone; Windows changes the time zone on each boot, but csaAgent launches before Windows does this, so csaAgent always has the wrong time, even though it appears that the computer's clock is set to the right time. This can be fixed by simply rebooting each computer while they are unfrozen, but it would be better to have some kind of solution built into csaAgent.
  • fomAgent 2.0 uses AES to encrypt some information stored locally. This may create problems with U.S. export rules. Switch to using an encryption technology with no export restrictions.

Features Planned for Version 3

  • Consider re-writing in C to reduce memory footprint.
  • Consider re-implementing using an extensible SNMP agent.
  • Add ability to control other sound mixer settings (Version 1 and 2 can only control final mixer volume, but some games don't seem to use the standard mixer).
  • Investigate ways to make FomAgent accessible to ShowGames even if it's behind a NAT device, to allow cybercafes to be remotely managed.
  • Investigate ways to provide in-process feedback to FomAgent's caller; for example, it would be good to provide feedback on the progress of a putFile or getFile transfer, both so that that progress can be displayed, and to serve as a keep-alive, to prevent the SOAP transaction from timing out.
  • Add a feature (maybe to AuthCheck?) that returns the machine's MAC address.
  • Investigate adding a feature that makes FomAgent to listen for a broadcast packet that causes it to respond with some basic information: station name, IP address, MAC address, FomAgent version number, etc. This could be used to create an auto-config capability in Hog.

Long-Term Features Planned for FomAgent

  • Use caller's IP address to implement an ACL.
  • Maybe add command name to authentication token to further limit the usefulness of man-in-the-middle attacks.
  • Remote upgrade capability.
  • Python and PHP APIs.
  • Create WSDL description.
  • Find a way to make FomAgent more responsive during game play.
  • We ping the default syslog server to see if it exists, but Net::Ping apparently only works if running as a Windows admin.
  • Currently, a command window flashes open and closed when FomAgent is executing a command; can it be hidden or done away with? Make it so uninstall doesn't require a separate call to CsaAgent to unblock it.
  • Consider changing getFile and putFile to use scp/sftp instead of ftp.
  • Consider adding FomAgent methods to directly do "dir" and "del" commands, so that they can be run without flashing a cmd window.
  • Add processor and/or bandwidth utilization to some FomAgent method's returned data.
  • Access control allowing multiple game centers, with access to each centers’ data being controlled separately.
  • Change fomAgent interface from SOAP to REST.
  • See if there's a way to correct for what seems to be a bug somewhere in the FomAgent stack: when time changes between Standard Time and Daylight Saving Time, Windows automatically updates the system clock to the new time zone (if so optioned). FomAgent, though, still sees the old, uncorrected time until after the system reboots again. . . and if the game stations are running DeepFreeze, FomAgent will never see the corrected time. Because FomAgent commands are authorized within a narrow time window, FomAgent will no longer be commandable until DeepFreeze is disabled, the system rebooted, and DeepFreeze reenabled again. First: why doesn't FomAgent, which gets the time from system calls, get the correct time? Second, is there a way to either fix this, or at least to alert FomAgent to work around it?
  • Consider implementing a "phone home" feature. The way it works is that periodically FomAgent checks to see if an internet connection is present, and if so, sends a message to a master server somewhere. In normal operation, these periodic messages are ignored. If a gamestation PC is stolen, however, and FomAgent is still running on the PC, these messages could provide valuable information that could help track down the thief. Probably the thing to do, after establishing that we have connectivity, is to do a traceroute to the master server; the message sent to the master server contains the results of this traceroute, as well as any other available identifying information. From the traceroute results we could physically locate the PC reasonably accurately.
  • Is there an easy way to get at the low-level hardware health information (fan speeds, temperatures, etc). that MBM5 makes available? It would be useful if fomAgent could return this data, also.
  • Consider shifting authentication from the present HMAC system to full standard RFC-2104 HMAC.
Created by woody
Last modified 2006-03-19 01:01 PM
 

Powered by Plone

This site conforms to the following standards: