Eduroam WIzard Issues

Hi all, I am a student at Cal Poly Pomona and am trying to install the Eduroam wizard to connect to the network. I have properly installed the python dbus dependancy, but when I execute the SecureW2_JoinNow.run file, I am thrown this error:

Traceback (most recent call last):
  File "/tmp/securew2-joinnow-4419.tmp/detect.py", line 115, in <module>
    arch = detect_executable('uname').run_and_get_output('-m').split('\n')[0]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/tmp/securew2-joinnow-4419.tmp/detect.py", line 68, in detect_executable
    raise ExecutableNotFoundError(name)
detect.ExecutableNotFoundError: uname

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/tmp/securew2-joinnow-4419.tmp/main.py", line 41, in <module>
    from client import PaladinLinuxClient
  File "/tmp/securew2-joinnow-4419.tmp/client.py", line 11, in <module>
    from actions import ActionFactory, NoneAction, ActionError, InternalActionError
  File "/tmp/securew2-joinnow-4419.tmp/actions.py", line 11, in <module>
    from dbusproxies import NetworkManagerProxy
  File "/tmp/securew2-joinnow-4419.tmp/dbusproxies.py", line 8, in <module>
    from detect import wpa_supplicant_version
  File "/tmp/securew2-joinnow-4419.tmp/detect.py", line 116, in <module>
    except (ExecutableNotFoundError|ExternalExecutionError|OSError):
TypeError: catching classes that do not inherit from BaseException is not allowed

Any ideas for how to fix this? Thanks all!

Edit:

Here is the source code from the beginning of the install file. Everything after this python is not plain text

#!/bin/sh

die () {
    [ ! -z "$1" ] && echo "Fatal: $1"
    [ ! -z "$tmpdir" -a -d "$tmpdir" ] && ${RM} -Rf "$tmpdir"
    exit 1
}

missing () {
    echo 'Executable `'$1'` seems to be missing, not executable or cannot be located with `which`.'
    echo ''
    echo 'Please install this program using your distribution-specific package manager (e.g. `apt-get` or `yum`).'
    echo 'If this does not solve the issue, you can try editing this script by hand to provide the proper'
    echo 'executable locations, or request your network administrator to contact SecureW2 Support.'
    die
}

dontrunasroot () {
    echo 'This utility is not designed to run as root.'
    echo 'Please start it as a regular user.'
    die
}

findutil () {
    for u in "$@"; do \
        p="$(${WHICH} ${WHICHPARAMS} "$u" 2> /dev/null)"
        [ ! -z "$p" ] && break
    done
    [ -z "$p" ] && missing "$1"
    return 0
}

whichdetect () {
    [ -z "${WHICH}" ] && WHICH="which"
    while true; do \
        WHICHPARAMS="$@"
        ${WHICH} ${WHICHPARAMS} which > /dev/null 2>&1
        if [ $? -eq 0 ]; then \
            findutil which && WHICH="$p"
            return 0
        fi
        [ -z "$1" ] && missing "which"
        shift
    done
}

# Call twice: make sure to get correct flags for actual binary
whichdetect --skip-functions --skip-alias
whichdetect --skip-functions --skip-alias

findutil whoami     && WHOAMI="$p"
[ "$(${WHOAMI})" = "root" ] && dontrunasroot

findutil mkdir      && MKDIR="$p"
findutil rm         && RM="$p"
findutil tar        && TAR="$p"
findutil gzip       && GZIP="$p"
findutil pwd        && PWD="$p"
findutil sed        && SED="$p"
findutil readlink   && READLINK="$p"
findutil python \
         python2 \
         python3    && PYTHON="$p"

tmpdir="/tmp/securew2-joinnow-$$.tmp"
archive="$(${READLINK} -f "$0")"

${MKDIR} -p "$tmpdir" || die "Error creating temporary directory $tmpdir"
cd $tmpdir || die "Error switching working directory to $tmpdir"
${SED} '0,/^#ARCHIVE#$/d' "$archive" | ${GZIP} -d | ${TAR} x || die "Error extracting embedded archive"
${PYTHON} main.py "$@"
retval=$?
${RM} -Rf "$tmpdir"
exit $retval

What does this mean?

When the install script is run by default, it throws an error saying that it’s missing a dependency called “dbus”, which I installed as a nix package and ensured is able to be imported into python.

Additionally, I have tried running the install script and the dbus dependency on all versions of python available natively from the nix package manager; didn’t fix anything.

So, YMMV, since some universities only pretend to provide eduroam, but it’s simply supposed to be a wpa enterprise network with a bit of a standard so you can log into the wifi network of any university with the same set of credentials.

Universities do like to provide silly scripts for it that only properly function on ubuntu so that it’s nice and turnkey for the vast majority of users who get confused by the auth selection (and so they can pre-load the server certificate, in fairness), but IME manually creating a networkmanager profile tends to be pretty easy once you figure out the expected settings and integrates way better.

Not to send you down a complete rabbit hole, but try just grabbing any ol’ instructions online, e.g. these for wpa_supplicant (though I do recommend using networkmanager instead): wpa_supplicant - NixOS Wiki

Occasionally you run into a university which is a bit more specific about the configuration, in those cases figuring out what settings are different from the defaults should be pretty easy to do by just reading the python script. But again, YMMV and maybe your university has some insane 2FA setup that makes no sense in practice. It’s unlikely, though.

If that fails, you’ll probably need to set up a proper python env for this, but chances are the script will make some assumptions that don’t quite hold for your system and be a nightmare to get to work, so hence I suggest the easy manual route first. 9/10 times it just calls some networkmanager api via dbus anyway, so it wouldn’t be doing anything much different anyway.

Edit: Some alternate instructions from your university’s IT support that also seem to be designed for a less tech illiterate userbase - the android settings should be pretty close to what networkmanager needs: https://calpoly.atlassian.net/wiki/spaces/CPKB/pages/2425416/Connect+to+eduroam+WiFi

1 Like