Commit Graph

54 Commits

Author SHA1 Message Date
Henry Camacho 2623741ef2 Added Missing Domain 2017-03-25 20:43:31 -05:00
Henry Camacho a72bbc63e4 Updated to support load balanced API Rest
- system collects all the domains, servers, and stats. /domains
- added support for a WSS state, displays on the UI
- moved all server related domain structures to ServerDomain* etc. to avoid collision with Domains
- create new Domains structure to handle Domains, Domain, Servers and Traffic at each level.
- updated initial lastUpate to the connection time rather than 0 which gave a silly duration.
- added properties for DomainTrack (Requests and Responses)
2017-03-25 20:33:09 -05:00
Henry Camacho 41adbfaef5 ServerName is now 1st domain in token. Awaiting new token structure for true ServerName. 2017-03-25 17:22:28 -05:00
Henry Camacho 0e1f99c8da Round Robin Load Balancing feature enabled
- the system implements a rough round robin also.
- members that are removed, do not remove preserving order.
- this many skew RR slightly, the small trade of with a non-order slice removal
- fixed issue with reaper, would not reap connections that had closed based on write failure
- reduced well to 120 seconds.
- place holder for other LB ALGO’s like least-connections.
- at this time no support for heath checks.
2017-03-25 15:01:57 -05:00
Henry Camacho 55e49fb966 Merge branch 'admin' of git.daplie.com:Daplie/go-rvpn-server into admin
# Conflicts:
#	rvpn/genericlistener/conn_wedge.go
2017-03-24 17:50:55 -05:00
Henry Camacho 1701b1acb0 Back and running 2017-03-24 17:45:54 -05:00
tigerbot 0a7ef4c601 fixed bug with peeking I introduced during the cleanup 2017-03-23 17:57:43 -06:00
Henry Camacho 12c8275326 Admin Status 2017-03-23 18:10:49 -05:00
Henry Camacho 2233e08ca1 Put the 1 char peek back in. With TLS byte awaiting aren’t valid, however they are valid with non-tis. 2017-03-23 18:02:38 -05:00
tigerbot c7b6a4a000 changed GetState and State to State and SetState
https://golang.org/doc/effective_go.html#Getters
2017-03-22 17:45:47 -06:00
tigerbot 9acf50c2ff simplified mutex handling and defer statements 2017-03-22 16:53:12 -06:00
tigerbot 92f951544b simplified some function inputs and returns 2017-03-22 16:53:12 -06:00
tigerbot 87a1d9c0ae cleaned up a few import statements 2017-03-22 16:53:12 -06:00
tigerbot f163b4ec7d rewrote how packing/unpacking is handled 2017-03-22 16:53:12 -06:00
tigerbot 8fb732e3b8 cleaned up a few of the packer functions 2017-03-22 16:53:12 -06:00
tigerbot ce512ece34 removed empty packages and files 2017-03-22 16:53:12 -06:00
Henry Camacho ba67cebb29 Several Considerations for Load Balancing, Collection of Bulk ServerStatus
- added a number of global status collections
- this requires wedging into things..
- removing direct address to come functions putting them though serverStatus
2017-03-19 19:04:47 -05:00
Henry Camacho 057ec00f82 Connection Track Read/Write Map issue, implemented mutex around the map. 2017-03-19 09:57:28 -05:00
Henry Camacho 4696ec4ec2 Added support for default load balancer method. 2017-03-19 09:56:33 -05:00
Henry Camacho 860580c7c8 Updated to include selectable domain statistics.
- added support for decent duration display
- added support for byte count display (k/m/g/, etc)
- added detail selector, you can watch n number of connections and refresh while keeping them open.
- refresh button
2017-03-18 14:28:54 -05:00
Henry Camacho 129e7df710 Got admin SPA up and displaying basic structure, H5BP, Bootstrap, Angular 2017-03-14 19:26:01 -05:00
Henry Camacho b85e7e3f24 Starting connections, we may not need this. 2017-03-13 20:29:35 -05:00
Henry Camacho f2082baf74 Removed — replaced by api_collect_domains 2017-03-13 20:29:05 -05:00
Henry Camacho 3d5d272736 Adding support for Domain and Domains 2017-03-13 20:22:44 -05:00
Henry Camacho dd7d63baf6 API Rest Interface answers to servers and server/{id}
- built envelope based on AJ spec, self standing package with transaction ID increment and unix time stamps
- fixed servers end point
- created server/{id} end point
- created rest mappings for GET
2017-03-13 16:46:11 -05:00
Henry Camacho b88817e4d1 Committing API code, and clean up. 2017-03-13 11:43:28 -05:00
Henry Camacho 74591fd150 Added support for YAML configuration file
- implemented viper module in code.
- removed all the older configuration, not sure if we want to use flags or just the configuration files.
- added support for dwell, idle and cancelceck timers
- generic binding is now an int passing to the generic manager.
- passing dwell, and idle directly to connection table.
- adjusted all dead time structures, the system supports a map(string)interface{} of various dead time counters
- this version also supports variable sized buffers for each request by using the bufio.reader
- we peek all, and then pass everything down the channel we have.
- I am wondering if this will be a problem is someone just starts pouring data down never ending.
- direct support now for terminating domains
- there is a domain for admin, and wss.  Each shared the external address listener (testing 9999)

Additions
- added support for Discard for wedge connections
- added support for ReadByte to wedge conn
2017-03-11 14:28:49 -06:00
Henry Camacho 2fc5cf5e69 SNI Detection working, sets ‘HTTPS’ for packer for external connections 2017-03-11 08:28:04 -06:00
Henry Camacho 5334649fba got non-terminating traffic identified, and used SNI to figure direction 2017-03-10 23:36:42 -06:00
Henry Camacho f3bb9cb584 Implemented domain tracking for external connections
- system now tracks both in and out bytes
- various clean up.
2017-03-09 21:38:23 -06:00
Henry Camacho d7e01e8b40 Adjusted to remove excessive packages.
Moved XLATE into generic listener.
2017-03-07 19:34:16 -06:00
Henry Camacho b11f6c54bc Implemented Docker Container Testing.
- a few other minor fixes.
- removed RVPNMAIN
- there is a bunch of other clean up I want to do…
2017-03-04 12:18:08 -06:00
Henry Camacho 0eb136db75 Updated documentation 2017-03-02 21:32:53 -06:00
Henry Camacho 8f2e4f58c0 Working version of RVPN
- got too cute with the package names, needed to bring everything into one package, except for packer.
- system is passing traffic now, ran a load test generating 1000 connections, seems ok.
- removed a lot of message logging since traffic is passing.
2017-03-02 18:47:59 -06:00
Henry Camacho 98da3d491c Debugging, return traffic is coming back, unpacker build
- it does not look like the client is limiting the amount of traffic coming in, and it does not look like it is chunking.
- need to know the max chunk.
- increased to 64K
- unpacker code v1
- fixed packer logging.
2017-03-01 21:02:20 -06:00
Henry Camacho 493477179b Added support for a Listener Manager
- I anticipated having to bring up new listeners as tunnel-clients connect allowing different port use for a single domain
- completed the code, however did not see any port information coming back from WSS client.
- opened an issue with AJ.
- all listeners are now dynamically generated.  The run method takes an initial port, once functioning, the runner send down the channel a registration for the initial port.
2017-02-26 17:27:38 -06:00
Henry Camacho b122a6091b Fixed PeekAll
- added to handleStream for protocol detection
2017-02-26 12:40:10 -06:00
Henry Camacho 9e2a04c8a7 WSS Client now working with protocol detection
- added support for PeekAll…still not working 100%.
- passing important values inside the context, no longer on arguments
- stream handler now detects wss_client, validates the token to make sure.
- then passes to was handler which invokes http.Server with oneConnListener
- removing listener wedge, going to stay with oneConnListener.  It is working.
2017-02-26 12:35:06 -06:00
Henry Camacho ebafa277df Generic Listener supporting unencrypted, encrypted, with TLS version detection before TLS Accept
- added support for context passing between the various functions
- support for withCancel, allowing administrative canceling, and a clean up of Go Routines.
- generic listener now supports a single port for both encrypted and clear text protocols.
- employee the buffered wedge connection for peaking into the protocol
- implementation of the oneListener.
- when TLS, leveraged the NewListener which uses oneListener as n inner lister.
- once the stream is decrypted, or if it was already clear text it is passed to handleStream which performs application detection.
2017-02-25 23:17:39 -06:00
Henry Camacho d611757b10 Support for generic listeners, with protocol detection
- connectionWedge supports reading from a connection without consuming bytes (peeking)
- allowing protocol detection
- was still connections to 3502, it will support any port (443), admin follows this port.
- matches RVPN.DAPLIE.INVALID and redirects to admin — AJ to provide authentication framework.
- api/servers is also served by this path as we’ll.
- listener_generic is the beginngins of protocol detections.
- listener_wedge is an matches the net.Listener interface, and allows passing to other processes an already accepted connection
- this does not work for HTTP for some reason.
- spent a lot of time trying to figure out why.  Posted to go-nuts
2017-02-24 23:56:40 -06:00
Henry Camacho b179ecef0c Various fixes
- removed some debugging information/prints
- expanded the BIND for 3502 (the DAPLIE WSS listener)
2017-02-20 20:41:32 -06:00
Henry Camacho 43bf242ffd fixed debugging
- I was never able to get delve and visual studio code to work properly with this project.
- not sure if it is too complex, however a simple application could be debugged just fine.
- I’ve implemented godebug, and resolved the vendor dependancies
- now able to debug in development, and build self-contained code into QA/STAGING.
- this resolves the issues at this point.
2017-02-19 15:51:54 -06:00
Henry Camacho dbfccc4a0c Added support for connection reaping. 2017-02-19 14:32:03 -06:00
Henry Camacho ff3e63da8d Correcting Critical Bug
- when testing streams to WSS client, I caused tunnel.js to abort in xfer.
- this caused a panic in go.
- found that connection was reaped and garbage collected during send routines.
- placed synchronize around a connection states.
- moved connection creation into connection table.
- allowed connections to hang around while in a false state…
- will have a go routine remove them after some idle time and connections being false.
2017-02-19 14:05:06 -06:00
Henry Camacho d7ef074ea2 Testing for AJ 2017-02-18 15:21:36 -06:00
Henry Camacho fc89682b9e updated to include domain stat traffic
- add support for domain_api container for JSON encoding
- separated server api containers out of the listener_admin
- added domain track to connection
- add extension to the send channel to identify domain associated to send bytes
- helper function for adding tracked domain
- implemented outbound byte counter for domain (inbound will come when we resolve the packer issues)
2017-02-15 20:06:26 -06:00
Henry Camacho 3dbdd694df Admin interface — added api/servers
- collects a list of WSS servers, and the connection structure
- calculates a connection duration
- collects the bytes in/out
- encodes to JSON and sends response.
2017-02-15 17:53:34 -06:00
Henry Camacho 2fdb033c55 Fixed minor bug…. 2017-02-13 21:13:29 -06:00
Henry Camacho 938e950261 Updated documentation and more debugging information 2017-02-13 20:53:27 -06:00
Henry Camacho 8a5ab4fe76 Data Written to the Channel
- added support for ConnByDomain which looks up existing WSS and registered domain
- passed connection table to External Listener
- on request, obtained hostname and map to domain, split the remote address and port (will go into an table eventually)
- look up the domain and find the WSS connection
- packed up the frame.
- sent down the channel.
2017-02-13 20:36:01 -06:00