* Merge HTTP and HTTPS routes builder in coordinator
* Extract HTTP/S routes
* Rename config in coordinator
* Generalize child services
* Extract games library helper function
* Use string address instead of port for HTTP/S
* Use a dedicated port extractor function
* Add missing GA tag templating
* Rename shared server address and port params
* Introduce TLS config parameters
* Simplify HTTP/S server constructors
* Update server auto port roll
* Extract init function in worker
* Reorder return params of address type port fn
* Refactor config handler names
* Update TLS default config params
* Extract HTTP to HTTPS redirect function
* Use httpx in monitoring
* Don't log echo requests
* Remove error return from the abstract server
* Add WSS option to the worker-coordinator connection
* Change default worker config
* Make worker send its internal connection params
* Decouple gamelib from the coordinator
* Expose HTTP/S listener address
* Keep original HTTP/S addresses
* Remove no config handler in worker
* Use HTTP-HTTPS redirection
* Wrap net.Listener into a struct
* Clean http server creation fn
* Redirect to https with a generated address
* Use URL in the redirector
* Use zone address param in worker
* Make use of actual addr and port in the monitoring servers
* Use auto-justified monitoring addresses info
* Add the non-HTTPS worker to HTTPS coordinator connection warning
* Embed TLS struct
* Move connection API struct into cws package
This allows switching GA client statistics on the client by setting these params in the config.yaml file:
analytics:
inject: false/true
gtag: (your tag)
By default, GA analytics will be disabled.
Both worker and coordinator display version number in the console during startup. Coordinator displays its version number in the top right corner of the index.html page.
If a worker (game) is shared, then without tracking players it's impossible to tell when it becomes available for a new game which leads to emulator share and crashes.
Docker-compose does not support host mode along with the port
binding anymore. Additionally there is no necessity for using
port binding under current configuration since it takes no effect.
* Disable CGO (C libs) for coordinator
Needed for static linking.
* Fix "error strings should not be capitalized (ST1005)"
* Fix SA1015
Using time.Tick leaks the underlying ticker, consider using it only in endless functions, tests and the main package, and use time.NewTicker here (SA1015)
* Fix SA9004
Only the first constant in this group has an explicit type (SA9004).
* Remove unused code in the webrtc package
* Fix S1000
Should use a simple channel send/receive instead of select with a single case (S1000).
* Force dir creation/check for core downloader
* Update Makefile release script
* Disable ASLR for worker builds
* Remove WORKER_BUILD_PARAMS flag from the CI
* Don't force recompilation in release
* Add Debian packages installer script
* Build worker app without libopusfile
* Test worker app without libopusfile
* Add opus wrapper without opusfile
* Make install.sh executable
* Add opus lib in Win builds
* Make insecure HTTPS requests when downloading libs
* Add ca-certificates for Docker build stage
go mod download works only with SSL certificates installed.
* Move libx264 wrapper into the repo
That way we can get rid of a lot of not needed external Go dependencies.
* Update the dependencies
* Remove jQuery
* Remove browser (vendor) prefixes for some CSS properties
* Use simple device orientation test
* Realign D-pad pointers
* Make GameBoy text unselectable
* Cleanup console.log
* Keep 90% size on mobile browsers due to gh-ribbon overlap
* Remove legacy `unselectable="on"` attributes
* Align UI buttons
* Remove not used UI elements
* Change Options button
* Don't show player change message when not in a game
* Add click/touch handler for circle-pad
Negate exact matches with multiple video codecs when a negotiated list of codecs will be stripped of partially matched ones.
As an example, if we want to use the h264 codec along with vp8 then in some browsers we'll have the exact match on vp8 and some partial matches on h264 (different browsers have different SDP Fmtp) which leads to the forced use of vp8 when the app is streaming h264.
As a workaround, we should add only one codec (vp8 or h264) into the list.