A lightweight desktop GUI for connecting to the University of Alabama VPN with
OpenConnect. The app wraps the UA VPN command, handles certificate acceptance,
asks for sudo only when needed, and guides the user through UA username,
password, and Duo push authentication.
This project was generated with assistance from OpenAI Codex.
- Simple Tk-based Linux desktop interface
- University of Alabama VPN endpoint preconfigured
- UA crimson accent color,
#9E1B32 - UA logo support for the app header and desktop launcher
- Duo second password setting defaults to
push - Sudo password prompt appears only when connecting
- Editable server certificate pin in the Settings tab
- Uses OpenConnect under the hood, so the actual VPN tunnel is handled by a mature system VPN client
- Build script for an installable Debian/Ubuntu
.debpackage
The GUI runs the equivalent of:
sudo openconnect --authgroup=campus --servercert pin-sha256:ogyts2NKCqrrSwgu30T62VkpZojX8Nm9ehpvQJnnSB4= https://uavpn2.ua.eduThe server certificate pin is included because UA VPN may otherwise ask to accept a certificate interactively.
- Linux desktop environment with Tk support
- Python 3
- OpenConnect
- sudo
- Python packages:
pexpect- Tk bindings
- Pillow ImageTk support for JPEG logo rendering
Install from the generated .deb package:
sudo apt install ./build/ua-openconnect-gui_0.1.7_all.debOr install dependencies and run from source:
sudo apt update
sudo apt install openconnect sudo python3 python3-tk python3-pexpect python3-pil.imagetk
python3 ua_openconnect_gui.pyTo rebuild the package:
./scripts/build_deb.sh
sudo apt install ./build/ua-openconnect-gui_0.1.7_all.debAfter installation, launch UA VPN from your app menu or run:
ua-openconnect-guiInstall dependencies:
sudo dnf install openconnect sudo python3 python3-tkinter python3-pexpect python3-pillow-tkRun from source:
python3 ua_openconnect_gui.pyThe .deb package is intended for Debian-based systems. Fedora users should run
from source unless an RPM package is added later.
Install dependencies:
sudo pacman -S openconnect sudo python tk python-pexpect python-pillowRun from source:
python ua_openconnect_gui.pyThe .deb package is intended for Debian-based systems. Arch users should run
from source unless a PKGBUILD is added later.
The included server certificate pin is not expected to change often, but it can change when the university renews or replaces the VPN certificate. The app lets you edit the pin from the Settings tab and saves it to:
~/.config/ua-openconnect-gui/config.json
If the certificate changes, OpenConnect usually prints a replacement value that looks like:
pin-sha256:...
Paste that value into the Server certificate pin field under Settings and reconnect. Use Reset to restore the default bundled pin.
- Open UA VPN from your application menu, or run
ua-openconnect-gui. - Enter your UA username.
- Enter your UA password.
- Click Connect.
- If sudo asks for your computer login password, enter it in the popup.
- Approve the Duo push notification on your device.
Keep the app window open while using the VPN. Use Disconnect to close the OpenConnect session.
The Duo second password defaults to push. Change it from Settings only if
your account requires a different response.
.
|-- ua_openconnect_gui.py # Main Tk desktop application
|-- requirements.txt # pip dependency list for source runs
|-- LICENSE # GNU GPL v3 license text
|-- scripts/build_deb.sh # Debian package builder
|-- packaging/ua-openconnect-gui.desktop
|-- assets/images/landing_page.png # Connect tab screenshot
|-- assets/images/settings_page.png # Settings tab screenshot
|-- ua-logo.jpg # UA logo used by the app/package
`-- build/ # Generated package artifacts
Build the Debian package:
./scripts/build_deb.shThe output will be:
build/ua-openconnect-gui_0.1.7_all.deb
The package installs:
/usr/bin/ua-openconnect-gui/opt/ua-openconnect-gui/ua_openconnect_gui.py/usr/share/doc/ua-openconnect-gui/LICENSE/usr/share/applications/ua-openconnect-gui.desktop/usr/share/pixmaps/ua-openconnect-gui.jpg/usr/share/doc/ua-openconnect-gui/README.md
- The app does not save your UA password, Duo response, or sudo password.
- Credentials are sent only to the running
openconnectprocess. - The VPN tunnel is created by OpenConnect, not by custom networking code in this project.
- The server certificate pin is saved locally and may need to be updated if the university changes the VPN certificate.
Make sure Tk is installed:
python3 -m tkinterIf this fails, install the Tk package for your distro.
The app includes the current server certificate pin. If UA changes its VPN certificate, run OpenConnect manually once to get the new pin:
sudo openconnect --authgroup=campus https://uavpn2.ua.eduThen paste the new pin-sha256:... value into the Server certificate pin
field in the app's Settings tab.
Use your local Linux account password, not your UA password. Your account must
also be allowed to run sudo.
Contributions are welcome. Good first improvements include:
- RPM packaging for Fedora
- PKGBUILD packaging for Arch Linux
- Better desktop integration across GNOME, KDE, and Xfce
- Optional settings for alternate UA VPN endpoints or auth groups
- Automated release workflow
For changes, please keep the app lightweight and avoid adding heavy runtime dependencies unless they provide a clear benefit.
This project is licensed under the GNU General Public License v3.0. See
LICENSE for the full license text.
This is an independent community utility and is not an official University of Alabama application. University of Alabama trademarks and logos belong to their respective owners.

