]> www.infradead.org Git - users/dwmw2/openconnect.git/log
users/dwmw2/openconnect.git
4 years agocan't determine encap-header location until after HDLC'ing
Daniel Lenski [Thu, 14 May 2020 23:38:33 +0000 (16:38 -0700)]
can't determine encap-header location until after HDLC'ing

Tested with F5 HDLC and non-HLDC

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agofactor out redundancy in HDLC de-encapsulation
Daniel Lenski [Thu, 14 May 2020 22:15:46 +0000 (15:15 -0700)]
factor out redundancy in HDLC de-encapsulation

Tested with F5 HDLC and non-HDLC

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoremove redundancy in HDLC encapsulation
Daniel Lenski [Thu, 14 May 2020 21:42:36 +0000 (14:42 -0700)]
remove redundancy in HDLC encapsulation

Tested with F5 HDLC and non-HDLC

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agofactor out add_ppp_header
Daniel Lenski [Thu, 14 May 2020 22:14:57 +0000 (15:14 -0700)]
factor out add_ppp_header

Tested with F5 HDLC and non-HDLC

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agofix HDLC packet logging buffer overflow
Daniel Lenski [Thu, 14 May 2020 21:30:41 +0000 (14:30 -0700)]
fix HDLC packet logging buffer overflow

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agon != ppp.hlen for HDLC (will only work by coincidence if PPP header is uncompressed...
Daniel Lenski [Thu, 14 May 2020 21:41:19 +0000 (14:41 -0700)]
n != ppp.hlen for HDLC (will only work by coincidence if PPP header is uncompressed/4 bytes)

See https://gitlab.com/openconnect/openconnect/-/commit/c060e713f7aba546ccc3a1e729dd6e2e21e0e43b#note_342889873

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agocheck pre-un-HDLC packet length for NX
Daniel Lenski [Thu, 14 May 2020 22:52:41 +0000 (15:52 -0700)]
check pre-un-HDLC packet length for NX

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agofix a couple off-by-encap_len bits of NX
Daniel Lenski [Thu, 14 May 2020 21:26:58 +0000 (14:26 -0700)]
fix a couple off-by-encap_len bits of NX

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoMerge branch 'nx' of https://gitlab.com/Rondom/openconnect into f5
David Woodhouse [Thu, 14 May 2020 16:33:06 +0000 (17:33 +0100)]
Merge branch 'nx' of https://gitlab.com/Rondom/openconnect into f5

4 years agoMerge branch 'master' of git.infradead.org:public_git/openconnect into f5
David Woodhouse [Thu, 14 May 2020 16:31:30 +0000 (17:31 +0100)]
Merge branch 'master' of git.infradead.org:public_git/openconnect into f5

4 years agoAdd initial SonicWall NetExtender support
Andreas Gnau [Mon, 11 May 2020 19:20:58 +0000 (21:20 +0200)]
Add initial SonicWall NetExtender support

LCP works, no error handling yet.

Signed-off-by: Andreas Gnau <rondom@rondom.de>
4 years agoTag version 8.10 v8.10
David Woodhouse [Thu, 14 May 2020 15:46:24 +0000 (16:46 +0100)]
Tag version 8.10

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
4 years agoUpdate changelog
David Woodhouse [Thu, 14 May 2020 15:27:43 +0000 (16:27 +0100)]
Update changelog

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
4 years agoMerge branch 'bug721570' of gitlab.com:floppym/openconnect
David Woodhouse [Thu, 14 May 2020 15:09:14 +0000 (16:09 +0100)]
Merge branch 'bug721570' of gitlab.com:floppym/openconnect

4 years agoBump Android API level to 23 to allow it to run on Android 10
David Woodhouse [Thu, 14 May 2020 13:28:21 +0000 (14:28 +0100)]
Bump Android API level to 23 to allow it to run on Android 10

Nobody cares about older API versions, which would only be needed
to support Android versions older than 6.0.

cf. https://gitlab.com/openconnect/openconnect/-/merge_requests/92

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
4 years agoUpdate Android dependencies
David Woodhouse [Thu, 14 May 2020 11:56:46 +0000 (12:56 +0100)]
Update Android dependencies

Update GnuTLS, libxml2, nettle, gmp and lz4

Based on a patch from Severus <huynhok.uit@gmail.com>

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
4 years agoMerge branch 'Juniper_frmNextToken_submit_button' of gitlab.com:openconnect/openconnect
David Woodhouse [Thu, 14 May 2020 11:18:41 +0000 (12:18 +0100)]
Merge branch 'Juniper_frmNextToken_submit_button' of gitlab.com:openconnect/openconnect

4 years agoMerge branch 'GP_stop_asking_to_report_unexpected_arg19=4' of gitlab.com:openconnect...
David Woodhouse [Thu, 14 May 2020 11:09:31 +0000 (12:09 +0100)]
Merge branch 'GP_stop_asking_to_report_unexpected_arg19=4' of gitlab.com:openconnect/openconnect

4 years agoMerge branch 'do_not_strip_newlines_in_CSD_response' of gitlab.com:dlenski/openconnect
David Woodhouse [Thu, 14 May 2020 10:50:07 +0000 (11:50 +0100)]
Merge branch 'do_not_strip_newlines_in_CSD_response' of gitlab.com:dlenski/openconnect

4 years agoTidy up PPP strings
David Woodhouse [Thu, 14 May 2020 10:27:21 +0000 (11:27 +0100)]
Tidy up PPP strings

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
4 years agoparse real Fortinet config
Daniel Lenski [Thu, 14 May 2020 03:41:00 +0000 (20:41 -0700)]
parse real Fortinet config

Based on these two real examples (https://forum.fortinet.com/tm.aspx?m=170415 and https://forum.fortinet.com/tm.aspx?m=105123).

Tested with sample XML in comments.

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoadd test-fortinet-login.py
Daniel Lenski [Wed, 13 May 2020 21:29:41 +0000 (14:29 -0700)]
add test-fortinet-login.py

Often easier to prototype HTTPS-based authentication flows in Python, since
they're so fiddly and arbitary.  So I copied `test-f5-login.py` to
`test-fortinet-login.py`.  Currently only handles basic
username-and-password auth, no 2FA:

```
usage: test-fortinet-login.py [-h] [-v] [-u USERNAME] [-p PASSWORD] [-r REALM]
                              [-c CERT] [--key KEY] [--no-verify]
                              endpoint [extra [extra ...]]

positional arguments:
  endpoint              Fortinet server (or complete URL, e.g.
                        https://forti.vpn.com/remote/login)
  extra                 Extra field to pass to include in the login query
                        string (e.g. "foo=bar")

optional arguments:
  -h, --help            show this help message and exit
  -v, --verbose
  --no-verify           Ignore invalid server certificate

Login credentials:
  -u USERNAME, --username USERNAME
                        Username (will prompt if unspecified)
  -p PASSWORD, --password PASSWORD
                        Password (will prompt if unspecified)
  -r REALM, --realm REALM
                        Realm (empty if unspecified)
  -c CERT, --cert CERT  PEM file containing client certificate (and optionally
                        private key)
  --key KEY             PEM file containing client private key (if not
                        included in same file as certificate)
```

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoBasic ConfRej handling
David Woodhouse [Wed, 13 May 2020 21:21:29 +0000 (22:21 +0100)]
Basic ConfRej handling

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
4 years agoMerge branch 'f5' of gitlab.com:openconnect/openconnect
David Woodhouse [Wed, 13 May 2020 18:25:40 +0000 (19:25 +0100)]
Merge branch 'f5' of gitlab.com:openconnect/openconnect

4 years agoUse LCP protocol code values for feature bitmask
David Woodhouse [Wed, 13 May 2020 18:25:09 +0000 (19:25 +0100)]
Use LCP protocol code values for feature bitmask

In preparation for handling ConfRej

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
4 years agosecond time's a charm?
Daniel Lenski [Wed, 13 May 2020 18:07:43 +0000 (11:07 -0700)]
second time's a charm?

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoFewer magic numbers for NCP opts
David Woodhouse [Wed, 13 May 2020 18:07:22 +0000 (19:07 +0100)]
Fewer magic numbers for NCP opts

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
4 years agoMake encap_names[] compile again
David Woodhouse [Wed, 13 May 2020 17:53:27 +0000 (18:53 +0100)]
Make encap_names[] compile again

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
4 years agoMerge branch 'master' of git.infradead.org:public_git/openconnect
David Woodhouse [Wed, 13 May 2020 17:50:26 +0000 (18:50 +0100)]
Merge branch 'master' of git.infradead.org:public_git/openconnect

4 years agofix encap_names for Fortinet HDLC
Daniel Lenski [Wed, 13 May 2020 17:15:46 +0000 (10:15 -0700)]
fix encap_names for Fortinet HDLC

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoUse do_https_request()
David Woodhouse [Wed, 13 May 2020 15:44:54 +0000 (16:44 +0100)]
Use do_https_request()

That's a lot simpler than open-coding it.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
4 years agoFix fortinet_bye() path
David Woodhouse [Wed, 13 May 2020 15:24:44 +0000 (16:24 +0100)]
Fix fortinet_bye() path

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
4 years agocombine comments from heretofore missing ppp.h
Daniel Lenski [Wed, 13 May 2020 14:28:28 +0000 (07:28 -0700)]
combine comments from heretofore missing ppp.h

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agosave four bytes in HDLC malloc
Daniel Lenski [Wed, 13 May 2020 07:05:55 +0000 (00:05 -0700)]
save four bytes in HDLC malloc

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoAdd basic attempt at Fortinet support
David Woodhouse [Wed, 13 May 2020 13:58:56 +0000 (14:58 +0100)]
Add basic attempt at Fortinet support

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
4 years agoUse ID from struct ncp
David Woodhouse [Wed, 13 May 2020 13:32:41 +0000 (14:32 +0100)]
Use ID from struct ncp

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
4 years agoMake proto strings static
David Woodhouse [Wed, 13 May 2020 10:24:07 +0000 (11:24 +0100)]
Make proto strings static

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
4 years agoAdd missing ppp.h
David Woodhouse [Wed, 13 May 2020 09:45:44 +0000 (10:45 +0100)]
Add missing ppp.h

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
4 years agouse HDLC_OUT macro
Daniel Lenski [Wed, 13 May 2020 06:38:51 +0000 (23:38 -0700)]
use HDLC_OUT macro

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agocheck for PPP state transitions before/after each packet received
Daniel Lenski [Wed, 13 May 2020 06:13:17 +0000 (23:13 -0700)]
check for PPP state transitions before/after each packet received

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agomove PPP #defines and structs to ppp.h
Daniel Lenski [Tue, 12 May 2020 22:26:23 +0000 (15:26 -0700)]
move PPP #defines and structs to ppp.h

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agounused label
Daniel Lenski [Tue, 12 May 2020 22:29:57 +0000 (15:29 -0700)]
unused label

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoHandle ConfRej for anything that needs it.
David Woodhouse [Tue, 12 May 2020 21:27:24 +0000 (22:27 +0100)]
Handle ConfRej for anything that needs it.

If get a ConfReq with anything we don't want or understand — and that
includes bloody VJ header compression, since I'm not completely batshit
insane — send a ConfRej.

Do this by building up the options to be rejected in an oc_text_buf as
we go, then rejecting that set if it's non-empty once we get to the end.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
4 years agoFix un-HDLC corner cases
Daniel Lenski [Tue, 12 May 2020 21:12:25 +0000 (14:12 -0700)]
Fix un-HDLC corner cases

1) The initial 0x7e is optional, the final 0x7e is not (was reversed).
2) Dangling escape can occur even when we haven't run out of buffer. 0x7d 0x7e is an invalid sequence.

While not breaking…

3) 0x7d can be the “target” of an escape (0x7d 0x7d → 0x5d)
4) 0x5d as the “target” of an escape (0x7d 0x5d → 0x7d) doesn't indicate a new escape

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoget rid of a bunch of casts
Daniel Lenski [Wed, 13 May 2020 05:20:24 +0000 (22:20 -0700)]
get rid of a bunch of casts

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agostop asking users to report unexpected GP login argument arg[20]="unknown"
Daniel Lenski [Fri, 1 May 2020 18:49:25 +0000 (11:49 -0700)]
stop asking users to report unexpected GP login argument arg[20]="unknown"

We don't know what this one means, but newer GP servers always send it and it's basically uninteresting.

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoAdd FCS support
David Woodhouse [Tue, 12 May 2020 19:41:06 +0000 (20:41 +0100)]
Add FCS support

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
4 years agonope, F5 HDLC isn't emitting junk… I'm just failing to unescape the FCS
Daniel Lenski [Tue, 12 May 2020 20:15:37 +0000 (13:15 -0700)]
nope, F5 HDLC isn't emitting junk… I'm just failing to unescape the FCS

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agotweak unhdlc_in_place, in preparation for multiple concatenated packets
Daniel Lenski [Tue, 12 May 2020 17:37:00 +0000 (10:37 -0700)]
tweak unhdlc_in_place, in preparation for multiple concatenated packets

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agosimplify PPP header checking
Daniel Lenski [Tue, 12 May 2020 06:16:34 +0000 (23:16 -0700)]
simplify PPP header checking

There's no point whatsover to checking if the server is doing ACCOMP/PFCOMP
as negotiated:
- Even if negotiated, they're optional.
- Even if *not* negotiated, they're unambiguous.
- Either way, it's much easier just to ignore the negotiated options.

“Be liberal in what you accept, and conservative in what you send.”

Some day I will acquire a time machine, travel back to 1993, and ask the
designers of PPP not to add meaningless boilerplate bytes to their protocol
in such a uniquely strange-yet-approachable way that compels future implementers to
reinvent clever ways of dealing with them hundreds of times.

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoF5 server sends frequent extra junk/padding in HDLC mode… just accept it
Daniel Lenski [Tue, 12 May 2020 02:39:36 +0000 (19:39 -0700)]
F5 server sends frequent extra junk/padding in HDLC mode… just accept it

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoworking unhdlc_in_place and hdlc_into_new_pkt
Daniel Lenski [Tue, 12 May 2020 01:02:19 +0000 (18:02 -0700)]
working unhdlc_in_place and hdlc_into_new_pkt

TODO: verify incoming FCS and generate outgoing FCS (F5 accepts it set to zero ¯\_(ツ)_/¯)

https://tools.ietf.org/html/rfc1662#appendix-C.2

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agorip out HDLC skeleton as a thought experiment
Daniel Lenski [Mon, 11 May 2020 22:56:36 +0000 (15:56 -0700)]
rip out HDLC skeleton as a thought experiment

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoremove state-machine fall-throughs: unnecessary, error-prone, make the transition...
Daniel Lenski [Tue, 12 May 2020 02:14:30 +0000 (19:14 -0700)]
remove state-machine fall-throughs: unnecessary, error-prone, make the transition display confusing

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoget rid of offset-by-1 in lcp_names and encap_names arrays
Daniel Lenski [Tue, 12 May 2020 01:47:10 +0000 (18:47 -0700)]
get rid of offset-by-1 in lcp_names and encap_names arrays

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agolog ancient deprecated IPCP IP-Addresses option
Daniel Lenski [Mon, 11 May 2020 23:54:47 +0000 (16:54 -0700)]
log ancient deprecated IPCP IP-Addresses option

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agouse tcp_control_queue for PPP config packets
Daniel Lenski [Mon, 11 May 2020 22:34:34 +0000 (15:34 -0700)]
use tcp_control_queue for PPP config packets

(Also fixes the dodginess of using high nibble of first byte to distinguish config from data packets)

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agooncp_control_queue → tcp_control_queue
Daniel Lenski [Mon, 11 May 2020 22:34:34 +0000 (15:34 -0700)]
oncp_control_queue → tcp_control_queue

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agocleanup state printing
Daniel Lenski [Mon, 11 May 2020 22:10:06 +0000 (15:10 -0700)]
cleanup state printing

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoadd timers to resend Config-Request after 3 seconds
Daniel Lenski [Mon, 11 May 2020 22:04:27 +0000 (15:04 -0700)]
add timers to resend Config-Request after 3 seconds

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agosend_config_request → queue_config_request
Daniel Lenski [Mon, 11 May 2020 21:52:20 +0000 (14:52 -0700)]
send_config_request → queue_config_request

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agonow storing {in,out}_lcp_magic in on-the-wire order (for ease of assembing util packets)
Daniel Lenski [Mon, 11 May 2020 19:34:36 +0000 (12:34 -0700)]
now storing {in,out}_lcp_magic in on-the-wire order (for ease of assembing util packets)

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agofix header shift prediction
Daniel Lenski [Mon, 11 May 2020 19:33:16 +0000 (12:33 -0700)]
fix header shift prediction

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoBetter attempt to get HDLC outbound right
David Woodhouse [Mon, 11 May 2020 15:12:34 +0000 (16:12 +0100)]
Better attempt to get HDLC outbound right

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
4 years agoUse CONFREQ et al definitions instead of numbers
David Woodhouse [Mon, 11 May 2020 13:26:38 +0000 (14:26 +0100)]
Use CONFREQ et al definitions instead of numbers

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
4 years agoMake oc_ncp state a structure, including the id.
David Woodhouse [Mon, 11 May 2020 12:39:10 +0000 (13:39 +0100)]
Make oc_ncp state a structure, including the id.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
4 years agoDrop hdlc and we_go_first args from openconnect_ppp_new()
David Woodhouse [Mon, 11 May 2020 12:29:28 +0000 (13:29 +0100)]
Drop hdlc and we_go_first args from openconnect_ppp_new()

We should always go first for *our* outbound ConfReqs, not wait for the
server to go first. And HDLC can be inferred from the encap mode, to
which we can add PPP_ENCAP_F5_HDLC.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
4 years agowe're never gonna want outgoing header compression
Daniel Lenski [Mon, 11 May 2020 18:47:54 +0000 (11:47 -0700)]
we're never gonna want outgoing header compression

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agohandle we_go_first
Daniel Lenski [Mon, 11 May 2020 18:40:59 +0000 (11:40 -0700)]
handle we_go_first

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agouse queue for conf-ack packets too
Daniel Lenski [Mon, 11 May 2020 18:17:55 +0000 (11:17 -0700)]
use queue for conf-ack packets too

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agotwo more dumb bugs
Daniel Lenski [Mon, 11 May 2020 17:57:02 +0000 (10:57 -0700)]
two more dumb bugs

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoqueue util packets
Daniel Lenski [Mon, 11 May 2020 16:58:33 +0000 (09:58 -0700)]
queue util packets

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agofix two bugs which were cancelling each other
Daniel Lenski [Mon, 11 May 2020 16:58:12 +0000 (09:58 -0700)]
fix two bugs which were cancelling each other

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoconsolidate send_util and stash packet header length in packet
Daniel Lenski [Mon, 11 May 2020 08:28:12 +0000 (01:28 -0700)]
consolidate send_util and stash packet header length in packet

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoPPP: use echo-request/discard-request for DPD/keepalive
Daniel Lenski [Mon, 11 May 2020 04:32:50 +0000 (21:32 -0700)]
PPP: use echo-request/discard-request for DPD/keepalive

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoworking PPP mainloop
Daniel Lenski [Mon, 11 May 2020 03:39:03 +0000 (20:39 -0700)]
working PPP mainloop

Still TODO:
- Handle we_go_first option where we offer our Configure-Request before receiving one
- Handle HDLC (blech)

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agostate naming/handling cleanup
Daniel Lenski [Mon, 11 May 2020 03:36:33 +0000 (20:36 -0700)]
state naming/handling cleanup

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoplan to handle different types of PPP encapsulation (F5, array, etc.)
Daniel Lenski [Mon, 11 May 2020 03:33:43 +0000 (20:33 -0700)]
plan to handle different types of PPP encapsulation (F5, array, etc.)

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoinclude ppp state in `struct openconnect_info`
Daniel Lenski [Mon, 11 May 2020 00:37:18 +0000 (17:37 -0700)]
include ppp state in `struct openconnect_info`

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agofactor out send_config_request
Daniel Lenski [Fri, 8 May 2020 21:35:13 +0000 (14:35 -0700)]
factor out send_config_request

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoworking PPP config negotation (LCP+IPCP+IP6CP)
Daniel Lenski [Fri, 8 May 2020 09:40:47 +0000 (02:40 -0700)]
working PPP config negotation (LCP+IPCP+IP6CP)

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agomake buf_append_{be16,be32,le16} global
Daniel Lenski [Fri, 8 May 2020 07:11:51 +0000 (00:11 -0700)]
make buf_append_{be16,be32,le16} global

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoadd test-f5-login.py script
Daniel Lenski [Wed, 6 May 2020 20:01:28 +0000 (13:01 -0700)]
add test-f5-login.py script

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoextract basic IP configuration from XML, including default and split routes
Daniel Lenski [Thu, 7 May 2020 00:01:51 +0000 (17:01 -0700)]
extract basic IP configuration from XML, including default and split routes

Based on code structure in gpst.c, and hints about interpretation of XML tags from:

- https://github.com/rei/f5vpn-client/blob/HEAD/f5vpn-login.py
- https://github.com/rei/f5vpn-client/blob/HEAD/README.md

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agognutls: prevent buffer overflow in get_cert_name
Sergei Trofimovich [Fri, 8 May 2020 14:39:41 +0000 (10:39 -0400)]
gnutls: prevent buffer overflow in get_cert_name

The test suite for ocserv calls openconnect with a certificate that has
a name that is 84 bytes in length. The buffer passed to get_cert_name is
currently 80 bytes.

The gnutls_x509_crt_get_dn_by_oid function will update the buffer size
parameter if the buffer is too small.

http://man7.org/linux/man-pages/man3/gnutls_x509_crt_get_dn_by_oid.3.html

RETURNS
       GNUTLS_E_SHORT_MEMORY_BUFFER if the provided buffer is not long
       enough, and in that case the  buf_size will be updated with the
       required size. GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE if there are no
       data in the current index. On success 0 is returned.

Use a temporary variable to avoid clobbering the namelen variable that is
passed to get_cert_name.

Bug: https://bugs.gentoo.org/721570
Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
Signed-off-by: Mike Gilbert <floppym@gentoo.org>
4 years agoJuniper frmNextToken: recognize secidactionEnter as submit button
Daniel Lenski [Thu, 7 May 2020 16:12:09 +0000 (09:12 -0700)]
Juniper frmNextToken: recognize secidactionEnter as submit button

ping #137

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoDisable OpenSSL RDRAND in COPR tests to work around SoftHSM deadlock
David Woodhouse [Thu, 7 May 2020 14:17:37 +0000 (15:17 +0100)]
Disable OpenSSL RDRAND in COPR tests to work around SoftHSM deadlock

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
4 years agoFix name of tpm2-tss-engine
David Woodhouse [Thu, 7 May 2020 09:42:57 +0000 (10:42 +0100)]
Fix name of tpm2-tss-engine

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
4 years agoAlso disable cURL's use of HTTP/1.1 expect logic
Daniel Lenski [Wed, 6 May 2020 22:05:00 +0000 (15:05 -0700)]
Also disable cURL's use of HTTP/1.1 expect logic

This is only a useful optimization for large payloads, and seems to confuse some Cisco ASAs or middleboxes.

See https://gms.tf/when-curl-sends-100-continue.html#disabling-expect-logic

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoFix f5_bye
Daniel Lenski [Wed, 6 May 2020 20:21:42 +0000 (13:21 -0700)]
Fix f5_bye

Like oNCP, one GET request takes care of it

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agotypo
Daniel Lenski [Wed, 6 May 2020 16:12:52 +0000 (09:12 -0700)]
typo

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoStart adding PPP
David Woodhouse [Wed, 6 May 2020 21:10:42 +0000 (22:10 +0100)]
Start adding PPP

It's going to need a state machine, with timers and non-blocking reads.
But that's not so hard, based on cancellable_recv().

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
4 years agosome ASAs are confused by stripping newlines from CSD response
Daniel Lenski [Wed, 6 May 2020 19:15:42 +0000 (12:15 -0700)]
some ASAs are confused by stripping newlines from CSD response

See #139 for report of this.

Using `curl --data-binary` instead of `--data` should avoid this issue.

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
4 years agoFirst attempt at F5 support
David Woodhouse [Wed, 6 May 2020 11:26:45 +0000 (12:26 +0100)]
First attempt at F5 support

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
4 years agoFix up COPR specfiles for bash-completion script location
David Woodhouse [Mon, 4 May 2020 15:27:46 +0000 (16:27 +0100)]
Fix up COPR specfiles for bash-completion script location

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
4 years agoMerge branch 'bash-completion' of gitlab.com:bluca/openconnect
David Woodhouse [Mon, 4 May 2020 12:50:38 +0000 (13:50 +0100)]
Merge branch 'bash-completion' of gitlab.com:bluca/openconnect

4 years agoUse shorter pathname for COPR RPM build
David Woodhouse [Mon, 4 May 2020 10:56:36 +0000 (11:56 +0100)]
Use shorter pathname for COPR RPM build

If the path of SOCKET_WRAPPER_DIR is too long, it doesn't fit in the
sun_path field of the sockaddr_un, and libsocket_wrapper gets very
unhappy, reporting 'Too many unix sockets'. Despite actually only ever
trying *one* path over and over again 1024 times due to truncation.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
4 years agoInstall tncc-emulate.py too
Luca Boccassi [Sat, 2 May 2020 10:58:05 +0000 (11:58 +0100)]
Install tncc-emulate.py too

Signed-off-by: Luca Boccassi <bluca@debian.org>
4 years agoFix typo in autocomplete test log message
Luca Boccassi [Sat, 2 May 2020 10:57:14 +0000 (11:57 +0100)]
Fix typo in autocomplete test log message

Signed-off-by: Luca Boccassi <bluca@debian.org>
4 years agoBash completion: install as /usr/share/bash-completion/completions/openconnect
Luca Boccassi [Sat, 2 May 2020 10:53:37 +0000 (11:53 +0100)]
Bash completion: install as /usr/share/bash-completion/completions/openconnect

This is the common default installation pattern for quite some time

Signed-off-by: Luca Boccassi <bluca@debian.org>