Skip to content

Repository files navigation

UA OpenConnect GUI

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.

Screenshots

Connect

UA OpenConnect GUI connect page

Settings

UA OpenConnect GUI settings page

Features

  • 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 .deb package

VPN Command

The GUI runs the equivalent of:

sudo openconnect --authgroup=campus --servercert pin-sha256:ogyts2NKCqrrSwgu30T62VkpZojX8Nm9ehpvQJnnSB4= https://uavpn2.ua.edu

The server certificate pin is included because UA VPN may otherwise ask to accept a certificate interactively.

Requirements

  • Linux desktop environment with Tk support
  • Python 3
  • OpenConnect
  • sudo
  • Python packages:
    • pexpect
    • Tk bindings
    • Pillow ImageTk support for JPEG logo rendering

Installation

Debian and Ubuntu

Install from the generated .deb package:

sudo apt install ./build/ua-openconnect-gui_0.1.7_all.deb

Or 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.py

To rebuild the package:

./scripts/build_deb.sh
sudo apt install ./build/ua-openconnect-gui_0.1.7_all.deb

After installation, launch UA VPN from your app menu or run:

ua-openconnect-gui

Fedora

Install dependencies:

sudo dnf install openconnect sudo python3 python3-tkinter python3-pexpect python3-pillow-tk

Run from source:

python3 ua_openconnect_gui.py

The .deb package is intended for Debian-based systems. Fedora users should run from source unless an RPM package is added later.

Arch Linux

Install dependencies:

sudo pacman -S openconnect sudo python tk python-pexpect python-pillow

Run from source:

python ua_openconnect_gui.py

The .deb package is intended for Debian-based systems. Arch users should run from source unless a PKGBUILD is added later.

Server Certificate Pin

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.

Usage

  1. Open UA VPN from your application menu, or run ua-openconnect-gui.
  2. Enter your UA username.
  3. Enter your UA password.
  4. Click Connect.
  5. If sudo asks for your computer login password, enter it in the popup.
  6. 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.

Project Layout

.
|-- 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

Building a Release Package

Build the Debian package:

./scripts/build_deb.sh

The 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

Security Notes

  • The app does not save your UA password, Duo response, or sudo password.
  • Credentials are sent only to the running openconnect process.
  • 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.

Troubleshooting

The app does not open

Make sure Tk is installed:

python3 -m tkinter

If this fails, install the Tk package for your distro.

The VPN connection stalls at a certificate prompt

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.edu

Then paste the new pin-sha256:... value into the Server certificate pin field in the app's Settings tab.

Sudo password is rejected

Use your local Linux account password, not your UA password. Your account must also be allowed to run sudo.

Contributing

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.

License

This project is licensed under the GNU General Public License v3.0. See LICENSE for the full license text.

Disclaimer

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.

About

A lightweight Linux GUI for connecting to the University of Alabama VPN using OpenConnect, with Duo push support, configurable certificate pin, and Debian package builds.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages