Classroom Setup and Control
How It Works
Links: Home
Summary
It's magic.
Background
Quite a few years ago we wrote our own software that was installed on lab Windows computers in order to update the software on that computer. "Pushing" files to the remote computers was unreliable and time-consuming because they were often turned off or there were network problems. "Update Service" (UpdtServ for short) runs as a service and checked to see what needed to be installed whenever the computer was started, as well as random times in the middle of the night.
Software installation has since evolved to use Active Directory Group Policies and assignments of packages based on OU (Organizational Unit). UpdtServ still installs a few things that can't be done correctly with "MSI" (Microsoft Installer) files.
At some point we added a command and control subsystem to UpdtServ. We can broadcast a UDP packet onto the remote subnet and all the computers that are on and running UpdtServ reply to the central utility. This proved very useful for quickly checking what all the computers in the many locations were up to at any given time.
Then, a few years ago, and instructor teaching in one of the labs asked if there was a way to keep his students from using the computers at certain times during the class. A command to "lock" the computer (put up a full-screen window that prevents any programs from being used) as developed, and a web-based system for displaying a "map" of the room and issuing commands to all or individual computers was developed.
The Class Control system works fairly well, except a web browser is not a great user interface for something like this, and the server-side program need to wait some period for all the lab computers to respond before sending html back to the podium's browser.
All these programs are written in VB 6, which is fast to develop with and reliable when deployed.
New System
With some additional function needed ("eTesting" setup and control) we decided to develop a new control program that would:
- Run on the podium desktop so the status of student computers could be updated asynchronously as replies are received from them (well, ok, one might be able to do that with a web browser and Java, but why bother?)
- Integrate the CLC inventory system with the room maps, to have a more accurate view of active systems; that is, don't show computers than are known to be out of order or have been removed for repair.
- Be more "user friendly" with mouse-over tool tips, buttons and controls that are visible only when appropriate, etc.
- Communicate to individual computers directly from the podium, rather than by broadcasts from a central server (the web server), thus avoiding any network problems or delays. After the first release, it became apparent that communicating directly with the computers from the podium could be a security risk. Someone could decompile the program and see how it was done, then write their own. A web service was developed to access database information and to send control commands to the workstations; the control commands were abstracted and the web service provides authorization, access control, and auditing. Replies to control commands sent via the web service are returned from the classroom computers directly to the podium computer.
Details
On startup, Classroom Setup does the following:
- Connects to a web service to be authorized and to get:
- what room it is in (resolved by podium IP address)
- a list of computers in that room, along with the status (broken, out for repair) of each
- a "map" of the room from the database.
- Draws the room map with a label for each computer in the relative location of that seat, as viewed from the podium. Computers marked as disabled or missing are not drawn. The podium computer will be grey.
- Sends a "monitor" request (via the the web service) to each active computer (not the podium and not excluded from commands to all), asking each if anyone is currently logged on and setting the podium's IP address in UpdtServ so that information about logons and logoffs are sent to Classroom Setup automatically.
At this point, packets are received from the student computers asynchronously, and the display is updated accordingly. When the instructor presses a button to send a command to all the computers, all the label background colors are changed to yellow (not replying). When a reply is received, the background color is changed to a color defined for that reply (there is a legend on the screen). We have to think of something to do for users that are color blind.
On exit, Classroom Setup sends a "monitor off" command to all computers. UpdtServ will also expire the monitor setting after 8 hours if no "off" is received.
All actions, commands, and replies are logged to the text control at the bottom of the application window; this information is also sent to the central database to aid in problem determination. Any error messages are also logged centrally.
Classroom Setup is written in VB.Net. It uses the Udpport control from nSoftware to send encrypted packets to the lab computers and listen for replies. There are various security measures to prevent and detect unauthorized use.
This site maintained by the Classroom and Lab Computing group of Information Technology Services.
Suggestions and comments about this web site: CLC Webmasters; Other contacts here.
This page was last modified: 4/21/2004 11:28:11 AM.