Skip to content

Add Duo Push, multi-session, kick, reconnect, and custom user-agent#32

Open
boinger wants to merge 3 commits intosamm-git:masterfrom
boinger:master
Open

Add Duo Push, multi-session, kick, reconnect, and custom user-agent#32
boinger wants to merge 3 commits intosamm-git:masterfrom
boinger:master

Conversation

@boinger
Copy link
Copy Markdown

@boinger boinger commented Jan 10, 2015

Features

  • Duo Push two-factor authentication — supports push notification and Duo key modes
  • Multi-session support — allows concurrent VPN sessions when the server permits
  • Session kicking — forcefully terminate conflicting sessions via kick_string instead of using the web UI
  • Auto-reconnect — reconnects after disconnect with configurable timeout count and window
  • Custom user-agent — defaults to JVPN/sysname, auto-switches to Firefox UA for host checker compatibility

Bug fixes

  • Add missing IO::Socket::SSL import and use SSL_VERIFY_NONE constant (aligns with upstream PR verify_hostname is deprecated in later versions of LWP #33)
  • Replace shell mkdir -p with Perl mkpath() in Duo paths
  • Fix cont_button extraction (was matching against empty string)
  • Remove duplicate debug print

Documentation

  • Convert README to Markdown with expanded feature list
  • Overhaul jvpn.ini with comprehensive parameter documentation
  • Fix FAQ grammar and expand FreeBSD/OS X answer
  • Add sample SSH tunnel script

boinger added 3 commits March 26, 2026 09:38
- Replace plain-text README with README.md (Markdown formatting,
  expanded feature list including Duo Push and multi-session support)
- FAQ: fix grammar, expand FreeBSD/OS X answer, add ifconfig hint
- CHANGELOG: add v0.8.0 (multi-session) and v0.8.1 (Pulse Secure/Duo)
- jvpn.ini: comprehensive documentation overhaul with parameter types,
  defaults, and examples; add new config options for mult_session, kick,
  kick_string, duo, token, reconnect, user_agent, recontimeoutcount,
  recontimeouttimeout
- Shell scripts: update shebangs from /bin/sh to /bin/bash
- Add sample-script-tunnel.sh demonstrating SSH tunnel setup
Features added to jvpn.pl:
- Duo Push two-factor authentication (duo=push sends push notification,
  duo=key prompts for Duo authentication key)
- Multi-session support (mult_session=1 allows concurrent VPN sessions
  when the server permits it)
- Session kicking (kick=1 with kick_string to forcefully terminate
  conflicting sessions instead of using the web UI)
- Auto-reconnect after disconnect (reconnect=1 with configurable
  timeout count and window)
- Custom user-agent string (defaults to JVPN/$sysname, auto-switches
  to Firefox UA when hostchecker is enabled)

Code changes:
- Wrap connection logic in connect_vpn() sub to support reconnection
- Add reconnect_vpn() sub with timeout tracking
- Reorganize imports alphabetically
- Add command-line --kick_string parameter
- Add $pulse_nc_dir for Pulse Secure compatibility
- Improve debug output with configurable maxlength
- Better error messages and "Invalid primary" credential check
… print

- Add missing 'use IO::Socket::SSL qw()' import and use the
  SSL_VERIFY_NONE constant instead of magic string '0x00'
  (aligns with upstream PR samm-git#33)
- Replace shell 'mkdir -p' syntax with Perl mkpath() in Duo
  push/key paths (2 occurrences)
- Extract cont_button from response_body instead of matching
  against empty string (regex always failed, leaving cont_button
  empty in subsequent POST requests)
- Remove duplicate debug-gated print identical to the unconditional
  print on the next line
@boinger boinger changed the title A few tweaks Add Duo Push, multi-session, kick, reconnect, and custom user-agent Mar 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant