* Initial work on restructure of application state
* Updated MOTD with more flexible input and add basic version
* Remove unnecessary type ignores
* Add wrapping and smarter output per process type
* Add support for ASGI MOTD
* Add Windows color support ernable
* Refactor __main__ into submodule
* Renest arguments
* Passing unit tests
* Passing unit tests
* Typing
* Fix num worker test
* Add context to assert failure
* Add some type annotations
* Some linting
* Line aware searching in test
* Test abstractions
* Fix some flappy tests
* Bump up timeout on CLI tests
* Change test for no access logs on gunicornworker
* Add some basic test converage
* Some new tests, and disallow workers and fast on app.run
* Fixup for 3.8+; Sanic still supports 3.7 where loop is required
* Added branching statement to hanle asyncio.Event() loop parameter removal in 3.10, and optional supply in 3.9
Administratively merging because @vltr and @ahopkins are the release managers, and @ahopkins is originator of the PR
* Add Python 3.10 testing (and support)
* fixed py310 tox environment for windows, quoted '3.10' in python-310 tests to avoid numeric compression
* updated tox.ini for py310
* quoted the rest of the bare 3.10 references in the workflows
* Issue with pytest requires version bump to 6.2.5 for python 3.10
Co-authored-by: Stephen Sadowski <stephen.sadowski@sjsadowski.com>
* Initial support for using multiple SSL certificates.
* Also list IP address subjectAltNames on log.
* Use Python 3.7+ way of specifying TLSv1.2 as the minimum version. Linter fixes.
* isort
* Cleanup, store server name for later use. Add RSA ciphers. Log rejected SNIs.
* Cleanup, linter.
* Alter the order of initial log messages and handling. In particular, enable debug mode early so that debug messages during init can be shown.
* Store server name (SNI) to conn_info.
* Update test with new error message.
* Refactor for readability.
* Cleanup
* Replace old expired test cert with new ones and a script for regenerating them as needed.
* Refactor TLS tests to a separate file.
* Add cryptography to dev deps for rebuilding TLS certs.
* Minor adjustment to messages.
* Tests added for new TLS code.
* Find the correct log row before testing for message. The order was different on CI.
* More log message order fixup. The tests do not account for the logo being printed first.
* Another attempt at log message indexing fixup.
* Major TLS refactoring.
CertSelector now allows dicts and SSLContext within its list.
Server names are stored even when no list is used.
SSLContext.sanic now contains a dict with any setting passed and information extracted from cert.
That information is available on request.conn_info.cert.
Type annotations added.
More tests incl. a handler for faking hostname in tests.
* Remove a problematic logger test that apparently was not adding any coverage or value to anything.
* Revert accidental commit of uvloop disable.
* Typing fixes / refactoring.
* Additional test for cert selection. Certs recreated without DNS:localhost on sanic.example cert.
* Add tests for single certificate path shorthand and SNI information.
* Move TLS dict processing to CertSimple, make the names field optional and use names from the cert if absent.
* Sanic CLI options --tls and --tls-strict-host to use the new features.
* SSL argument typing updated
* Use ValueError for internal message passing to avoid CertificateError's odd message formatting.
* Linter
* Test CLI TLS options.
* Maybe the right codeclimate option now...
* Improved TLS argument help, removed support for combining --cert/--key with --tls.
* Removed support for strict checking without any certs, black forced fscked up formatting.
* Update CLI tests for stricter TLS options.
Co-authored-by: L. Karkkainen <tronic@users.noreply.github.com>
Co-authored-by: Adam Hopkins <admhpkns@gmail.com>
* Add ability to log all exceptions
* Fix linting 🙄
* Remove shorthand
* Make `ErrorHandler.log` backwards-compat
* Ignore mypy error
* Don't store `noisy_exceptions` attribute in app
* Added tests
* Store noisy exceptions setting in config
* Default to not-noisy if config key not available
* Add CLI tests for `noisy-exceptions`
* Remove debugging line I left in 😅
* Fix tests
Co-authored-by: Adam Hopkins <admhpkns@gmail.com>
* Replacing assignation by typing for `websocket_handshake`
Related to #2272
* Fix some type hinting issues
* Cleanup websocket handchake response concat
* Optimize concat encoding
Co-authored-by: Adam Hopkins <adam@amhopkins.com>
* fix ipv6 display in startup info log
* refactored to oneliner by request
* Added test for passing ipv4 host
* Added test for passing ipv6 any host
* Added test for passing ipv6 loopback host
* style: add some type hints
* fix: *args is a tuple, but overridden as a list
* fix: if touch this, it will be a maybe breaking change
* fix: remove unused import
* style(app): more correct type