Skip to content
jdeananderson edited this page Nov 11, 2020 · 31 revisions

What is CABS?

CABS, or Connection Automation Broker System, was designed and written by the Brigham Young University College of Engineering and Technology to allow students to connect remotely to do their homework on university owned machines. The CABS client allows a user to supply a username and password, and receive a list of pools of computers they can connect to, based on their LDAP group memberships. Once a user chooses a pool to connect to, they are assigned a machine in that pool, and their computer establishes a connection to that remote machine.

This system was initially coded to handle brokering connections to HP's RGS protocol, but is also currently being used to broker Microsoft RDP connections as well. It could also be adapted to be used for ssh, or any other client protocol.

Architecture overview

Running a cabs system involves running a broker, agents, an admin website, clients, a database, an optional auto-it checker, and the option to use LDAP for authentication and association to various pools by group membership.

System compatibility

Most of the components were written in Python and could theoretically be supported on any operating system with a bit of work. The client currently has been tested on Windows, Linux and Mac. The agent has been tested on Windows and Linux. The broker and management website have been tested on Linux. The Auto-It checker has only been written for and tested on Windows.

Windows Linux macOS
Broker No ✓ Yes No
RDP GUI Client ✓ Yes No No
RDP CLI Client No ✓ Yes ✓ Yes
RGS GUI Client ✓ Yes ✓ Yes No
RGS CLI Client No No ✓ Yes
Agent ✓ Yes ✓ Yes No
RDP GUI Client ✓ Yes No No
Database No ✓ Yes No
Admin Site No ✓ Yes No
Auto-It Checker ✓ Yes No No

Note that a "No" in most cases does not mean it is incompatible, but rather that it has not yet been written for, or tested on that operating system.

Frequently asked questions

What connection protocols are supported

RDP and RGS are completely supported and already implemented, but adding new protocols is not that hard.

Can a broker handle multiple protocols simultaneously?

Currently no. When a client connects to a broker, it is assumed that all of the agents querying that broker are all using the same connection protocol, such as RGS, or ssh, or RDP. There is currently no code on the broker to keep track of what connection protocols an agent can or client talk. The current method to support more than one protocol is to run more than one broker server on separate machines or ports and use different branded clients connecting on different server ports or IP addresses to establish connections.

Why Python?

Python was chosen for portability between Windows, Mac and Linux.