From 0edba2ee2a9e9563789fc30ff9a95d6dffd34200 Mon Sep 17 00:00:00 2001 From: "Earle F. Philhower, III" Date: Tue, 23 Aug 2022 15:51:32 -0700 Subject: [PATCH] Add WebServer, WebServerSecure, HTTPUpdateServer, HTTPUpdateServerSecure (#791) * Add HTTP-parser lib to support ESP32 WebServer * Add WebServer from ESP32. Only supports HTTP * Separate HTTP server from the network server Instead of managing the WiFiServer/WiFiServerSecure in the same object as the HTTP handling, split them into separate objects. This lets HTTP and HTTPS servers work without templates or duplicating code. The HTTP block just gets a `WiFiClient*` and works with that to only do HTTP processing, while the upper object handles the appropriate server and client types. * Add HTTPS server * Clean up some THandlerFunction refs * Refactor into a template-ized WebServer/WebServerSecure * Add DNSServer examples which need WebServer * Fix CoreMutex infinite recursion crash Core could crash while Serial debugging was going on and prints were happening from LWIP/IRQ land and the main app. * Add HTTPUpdateServer(Secure) * Add MIME include, optimize WebServer::send(size,len) When send()ing a large buffer, the WebServer::send() call would actually convert that buffer into a String (i.e. duplicate it, and potential issues with embedded \0s in binary data). Make a simple override to send(size, len) to allow writing from the source buffer instead. * Fix WiFiClient::send(Stream), add FSBrowser example --- .github/workflows/pull-request.yml | 2 +- .gitignore | 3 +- .gitmodules | 3 + README.md | 7 +- cores/rp2040/Arduino.h | 9 + cores/rp2040/CoreMutex.h | 6 +- cores/rp2040/SerialUSB.cpp | 14 +- .../src => cores/rp2040}/libb64/AUTHORS | 0 .../src => cores/rp2040}/libb64/LICENSE | 0 .../src => cores/rp2040}/libb64/cdecode.cpp | 0 .../src => cores/rp2040}/libb64/cdecode.h | 5 +- .../src => cores/rp2040}/libb64/cencode.cpp | 0 .../src => cores/rp2040}/libb64/cencode.h | 5 +- docs/ota.rst | 138 +- keywords.txt | 13 + lib/libpico-ipv6.a | Bin 3102370 -> 3089330 bytes lib/libpico.a | Bin 2683640 -> 2671500 bytes .../examples/CaptivePortal/CaptivePortal.ino | 36 + .../CaptivePortalAdvanced.ino | 143 +++ .../CaptivePortalAdvanced/credentials.ino | 27 + .../CaptivePortalAdvanced/handleHttp.ino | 122 ++ .../examples/CaptivePortalAdvanced/tools.ino | 16 + .../examples/DNSServer/DNSServer.ino | 41 + libraries/HTTPUpdate/src/HTTPUpdate.cpp | 14 +- .../SecureBearSSLUpdater.ino | 122 ++ .../examples/WebUpdater/WebUpdater.ino | 48 + .../WebUpdaterAuth/WebUpdaterAuth.ino | 51 + libraries/HTTPUpdateServer/keywords.txt | 21 + libraries/HTTPUpdateServer/library.properties | 10 + .../src/HTTPUpdateServer-impl.h | 161 +++ .../HTTPUpdateServer/src/HTTPUpdateServer.h | 44 + .../AdvancedWebServer/AdvancedWebServer.ino | 152 +++ .../examples/FSBrowser/FSBrowser.ino | 634 +++++++++ .../examples/FSBrowser/data/dir1/file1.txt | 1 + .../examples/FSBrowser/data/edit/index.htm | 1128 +++++++++++++++++ .../examples/FSBrowser/data/favicon.ico | Bin 0 -> 1150 bytes .../examples/FSBrowser/data/index.htm | 22 + .../examples/FSBrowser/data/pins.png | Bin 0 -> 55578 bytes .../FSBrowser/extras/feathericons.png | Bin 0 -> 1558 bytes .../examples/FSBrowser/extras/index.htm.gz | Bin 0 -> 6261 bytes .../examples/FSBrowser/extras/index_htm.h | 529 ++++++++ .../examples/FSBrowser/extras/reduce_index.sh | 60 + .../WebServer/examples/FSBrowser/readme.md | 137 ++ .../HelloServerBearSSL/HelloServerBearSSL.ino | 148 +++ .../HttpAdvancedAuth/HttpAdvancedAuth.ino | 64 + .../examples/HttpBasicAuth/HttpBasicAuth.ino | 46 + .../examples/PostServer/PostServer.ino | 126 ++ .../SimpleAuthentication.ino | 134 ++ .../examples/WebUpdate/WebUpdate.ino | 77 ++ libraries/WebServer/keywords.txt | 39 + libraries/WebServer/library.properties | 10 + libraries/WebServer/src/HTTPServer.cpp | 687 ++++++++++ libraries/WebServer/src/HTTPServer.h | 252 ++++ libraries/WebServer/src/HTTP_Method.h | 6 + libraries/WebServer/src/Parsing.cpp | 624 +++++++++ libraries/WebServer/src/Uri.h | 26 + libraries/WebServer/src/WebServer.h | 26 + libraries/WebServer/src/WebServerSecure.h | 25 + libraries/WebServer/src/WebServerTemplate.h | 117 ++ .../WebServer/src/detail/RequestHandler.h | 48 + .../src/detail/RequestHandlersImpl.h | 163 +++ libraries/WebServer/src/detail/mimetable.cpp | 44 + libraries/WebServer/src/detail/mimetable.h | 43 + libraries/WebServer/src/uri/UriBraces.h | 65 + libraries/WebServer/src/uri/UriGlob.h | 19 + libraries/WebServer/src/uri/UriRegex.h | 42 + libraries/WiFi/src/WiFiClass.cpp | 10 +- libraries/WiFi/src/WiFiClass.h | 2 +- libraries/WiFi/src/WiFiClient.cpp | 19 +- libraries/WiFi/src/WiFiClient.h | 2 +- libraries/WiFi/src/WiFiServer.h | 1 + libraries/WiFi/src/WiFiServerSecureBearSSL.h | 2 +- libraries/WiFi/src/include/ClientContext.h | 17 + libraries/http-parser/LICENSE-MIT | 19 + libraries/http-parser/README.md | 249 ++++ libraries/http-parser/lib/http-parser | 1 + libraries/http-parser/library.properties | 11 + libraries/http-parser/src/http_parser.c | 1 + libraries/http-parser/src/http_parser.h | 1 + tests/restyle.sh | 3 +- tools/build.py | 2 +- 81 files changed, 6837 insertions(+), 58 deletions(-) rename {libraries/HTTPClient/src => cores/rp2040}/libb64/AUTHORS (100%) rename {libraries/HTTPClient/src => cores/rp2040}/libb64/LICENSE (100%) rename {libraries/HTTPClient/src => cores/rp2040}/libb64/cdecode.cpp (100%) rename {libraries/HTTPClient/src => cores/rp2040}/libb64/cdecode.h (90%) rename {libraries/HTTPClient/src => cores/rp2040}/libb64/cencode.cpp (100%) rename {libraries/HTTPClient/src => cores/rp2040}/libb64/cencode.h (93%) mode change 100755 => 100644 docs/ota.rst create mode 100644 libraries/DNSServer/examples/CaptivePortal/CaptivePortal.ino create mode 100644 libraries/DNSServer/examples/CaptivePortalAdvanced/CaptivePortalAdvanced.ino create mode 100644 libraries/DNSServer/examples/CaptivePortalAdvanced/credentials.ino create mode 100644 libraries/DNSServer/examples/CaptivePortalAdvanced/handleHttp.ino create mode 100644 libraries/DNSServer/examples/CaptivePortalAdvanced/tools.ino create mode 100644 libraries/DNSServer/examples/DNSServer/DNSServer.ino create mode 100644 libraries/HTTPUpdateServer/examples/SecureBearSSLUpdater/SecureBearSSLUpdater.ino create mode 100644 libraries/HTTPUpdateServer/examples/WebUpdater/WebUpdater.ino create mode 100644 libraries/HTTPUpdateServer/examples/WebUpdaterAuth/WebUpdaterAuth.ino create mode 100644 libraries/HTTPUpdateServer/keywords.txt create mode 100644 libraries/HTTPUpdateServer/library.properties create mode 100644 libraries/HTTPUpdateServer/src/HTTPUpdateServer-impl.h create mode 100644 libraries/HTTPUpdateServer/src/HTTPUpdateServer.h create mode 100644 libraries/WebServer/examples/AdvancedWebServer/AdvancedWebServer.ino create mode 100644 libraries/WebServer/examples/FSBrowser/FSBrowser.ino create mode 100644 libraries/WebServer/examples/FSBrowser/data/dir1/file1.txt create mode 100644 libraries/WebServer/examples/FSBrowser/data/edit/index.htm create mode 100644 libraries/WebServer/examples/FSBrowser/data/favicon.ico create mode 100644 libraries/WebServer/examples/FSBrowser/data/index.htm create mode 100644 libraries/WebServer/examples/FSBrowser/data/pins.png create mode 100644 libraries/WebServer/examples/FSBrowser/extras/feathericons.png create mode 100644 libraries/WebServer/examples/FSBrowser/extras/index.htm.gz create mode 100644 libraries/WebServer/examples/FSBrowser/extras/index_htm.h create mode 100755 libraries/WebServer/examples/FSBrowser/extras/reduce_index.sh create mode 100644 libraries/WebServer/examples/FSBrowser/readme.md create mode 100644 libraries/WebServer/examples/HelloServerBearSSL/HelloServerBearSSL.ino create mode 100644 libraries/WebServer/examples/HttpAdvancedAuth/HttpAdvancedAuth.ino create mode 100644 libraries/WebServer/examples/HttpBasicAuth/HttpBasicAuth.ino create mode 100644 libraries/WebServer/examples/PostServer/PostServer.ino create mode 100644 libraries/WebServer/examples/SimpleAuthentication/SimpleAuthentication.ino create mode 100644 libraries/WebServer/examples/WebUpdate/WebUpdate.ino create mode 100644 libraries/WebServer/keywords.txt create mode 100644 libraries/WebServer/library.properties create mode 100644 libraries/WebServer/src/HTTPServer.cpp create mode 100644 libraries/WebServer/src/HTTPServer.h create mode 100644 libraries/WebServer/src/HTTP_Method.h create mode 100644 libraries/WebServer/src/Parsing.cpp create mode 100644 libraries/WebServer/src/Uri.h create mode 100644 libraries/WebServer/src/WebServer.h create mode 100644 libraries/WebServer/src/WebServerSecure.h create mode 100644 libraries/WebServer/src/WebServerTemplate.h create mode 100644 libraries/WebServer/src/detail/RequestHandler.h create mode 100644 libraries/WebServer/src/detail/RequestHandlersImpl.h create mode 100644 libraries/WebServer/src/detail/mimetable.cpp create mode 100644 libraries/WebServer/src/detail/mimetable.h create mode 100644 libraries/WebServer/src/uri/UriBraces.h create mode 100644 libraries/WebServer/src/uri/UriGlob.h create mode 100644 libraries/WebServer/src/uri/UriRegex.h create mode 100644 libraries/http-parser/LICENSE-MIT create mode 100644 libraries/http-parser/README.md create mode 160000 libraries/http-parser/lib/http-parser create mode 100644 libraries/http-parser/library.properties create mode 100644 libraries/http-parser/src/http_parser.c create mode 100644 libraries/http-parser/src/http_parser.h diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index db3aa37..be61c52 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -20,7 +20,7 @@ jobs: - name: Run codespell uses: codespell-project/actions-codespell@master with: - skip: ./ArduinoCore-API,./libraries/ESP8266SdFat,./libraries/Adafruit_TinyUSB_Arduino,./libraries/LittleFS/lib,./tools/pyserial,./pico-sdk,./.github,./docs/i2s.rst,./cores/rp2040/api,./libraries/FreeRTOS,./tools/libbearssl/bearssl,./include,./libraries/WiFi/examples/BearSSL_Server,./ota/uzlib + skip: ./ArduinoCore-API,./libraries/ESP8266SdFat,./libraries/Adafruit_TinyUSB_Arduino,./libraries/LittleFS/lib,./tools/pyserial,./pico-sdk,./.github,./docs/i2s.rst,./cores/rp2040/api,./libraries/FreeRTOS,./tools/libbearssl/bearssl,./include,./libraries/WiFi/examples/BearSSL_Server,./ota/uzlib,./libraries/http-parser/lib,./libraries/WebServer/examples/HelloServerBearSSL/HelloServerBearSSL.ino,./libraries/HTTPUpdateServer/examples/SecureBearSSLUpdater/SecureBearSSLUpdater.ino ignore_words_list: ser,dout # Consistent style diff --git a/.gitignore b/.gitignore index bc0a261..99add2f 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,5 @@ system tools/dist docs/_build ota/build -tools/libpico/build \ No newline at end of file +tools/libpico/build +platform.local.txt diff --git a/.gitmodules b/.gitmodules index bcf48ee..6f83976 100644 --- a/.gitmodules +++ b/.gitmodules @@ -34,3 +34,6 @@ [submodule "ota/uzlib"] path = ota/uzlib url = https://github.com/pfalcon/uzlib.git +[submodule "libraries/http_parser/lib/http-parser"] + path = libraries/http-parser/lib/http-parser + url = https://github.com/nodejs/http-parser.git diff --git a/README.md b/README.md index df61ef5..5f18956 100644 --- a/README.md +++ b/README.md @@ -147,6 +147,8 @@ The installed tools include a version of OpenOCD (in the pqt-openocd directory) * Adafruit TinyUSB Arduino (USB mouse, keyboard, flash drive, generic HID, CDC Serial, MIDI, WebUSB, others) * Generic Arduino USB Serial, Keyboard, and Mouse emulation * WiFi (Pico W) +* HTTP client and server (WebServer) +* SSL/TLS/HTTPS * Over-the-Air (OTA) upgrades * Filesystems (LittleFS and SD/SDFS) * Multicore support (setup1() and loop1()) @@ -187,7 +189,10 @@ If you want to contribute or have bugfixes, drop me a note at `__ -- `Web Browser <#web-browser>`__ - Coming soon -- `HTTP Server <#http-server>`__ - Coming soon +- `Web Browser <#web-browser>`__ +- `HTTP Server <#http-server>`__ +- Any other method (ZModen receive over a UART port, etc.) by using the ``Updater`` object in your sketch The Arduino IDE option is intended primarily for the software development phase. The other two options would be more useful after deployment, to provide the module with application updates either manually with a web browser, or automatically using an HTTP server. @@ -48,16 +49,16 @@ Check functionality provided with the `ArduinoOTA `__ and espota.py use `Digest-MD5 `__ to authenticate uploads. Integrity of transferred data is verified on the ESP side using `MD5 `__ checksum. +Certain basic protection is already built in and does not require any additional coding by the developer. `ArduinoOTA `__ and espota.py use `Digest-MD5 `__ to authenticate uploads. Integrity of transferred data is verified on the Pico side using `MD5 `__ checksum. -Make your own risk analysis and, depending on the application, decide what library functions to implement. If required, consider implementation of other means of protection from being hacked, like exposing modules for uploads only according to a specific schedule, triggering OTA only when the user presses a dedicated “Update” button wired to the ESP, etc. +Make your own risk analysis and, depending on the application, decide what library functions to implement. If required, consider implementation of other means of protection from being hacked, like exposing modules for uploads only according to a specific schedule, triggering OTA only when the user presses a dedicated “Update” button wired to the Pico, etc. Advanced Security - Signed Updates ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ While the above password-based security will dissuade casual hacking attempts, it is not highly secure. For applications where a higher level of security is needed, cryptographically signed OTA updates can be required. This uses SHA256 hashing in place of MD5 (which is known to be cryptographically broken) and RSA-2048 bit level public-key encryption to guarantee that only the holder of a cryptographic private key can produce signed updates accepted by the OTA update mechanisms. -Signed updates are updates whose compiled binaries are signed with a private key (held by the developer) and verified with a public key (stored in the application and available for all to see). The signing process computes a hash of the binary code, encrypts the hash with the developer's private key, and appends this encrypted hash (also called a signature) to the binary that is uploaded (via OTA, web, or HTTP server). If the code is modified or replaced in any way by anyone except the holder of the developer's private key, the signature will not match and the ESP8266 will reject the upload. +Signed updates are updates whose compiled binaries are signed with a private key (held by the developer) and verified with a public key (stored in the application and available for all to see). The signing process computes a hash of the binary code, encrypts the hash with the developer's private key, and appends this encrypted hash (also called a signature) to the binary that is uploaded (via OTA, web, or HTTP server). If the code is modified or replaced in any way by anyone except the holder of the developer's private key, the signature will not match and the Pico will reject the upload. Cryptographic signing only protects against tampering with binaries delivered via OTA. If someone has physical access, they will always be able to flash the device over the serial port. Signing also does not encrypt anything but the hash (so that it can't be modified), so this does not protect code inside the device: if a user has physical access they can read out your program. @@ -134,7 +135,7 @@ Compile the sketch normally and, once a `.bin` file is available, sign it using .. code:: bash - /tools/signing.py --mode sign --privatekey --bin --out + /tools/signing.py --mode sign --privatekey --bin --out Compression ----------- @@ -155,14 +156,14 @@ If signing is desired, sign the gzip compressed file *after* compression. .. code:: bash gzip -9 sketch.bin - /tools/signing.py --mode sign --privatekey --bin sketch.bin.gz --out sketch.bin.gz.signed + /tools/signing.py --mode sign --privatekey --bin sketch.bin.gz --out sketch.bin.gz.signed Safety ~~~~~~ -The OTA process consumes some of the ESP’s resources and bandwidth during upload. Then, the module is restarted and a new sketch executed. Analyse and test how this affects the functionality of the existing and new sketches. +The OTA process consumes some of the Pico’s resources and bandwidth during upload. Then, the module is restarted and a new sketch executed. Analyse and test how this affects the functionality of the existing and new sketches. -If the ESP is in a remote location and controlling some equipment, you should devote additional attention to what happens if operation of this equipment is suddenly interrupted by the update process. Therefore, decide how to put this equipment into a safe state before starting the update. For instance, your module may be controlling a garden watering system in a sequence. If this sequence is not properly shut down and a water valve is left open, the garden may be flooded. +If the Pico is in a remote location and controlling some equipment, you should devote additional attention to what happens if operation of this equipment is suddenly interrupted by the update process. Therefore, decide how to put this equipment into a safe state before starting the update. For instance, your module may be controlling a garden watering system in a sequence. If this sequence is not properly shut down and a water valve is left open, the garden may be flooded. The following functions are provided with the `ArduinoOTA `__ library and intended to handle functionality of your application during specific stages of OTA, or on an OTA error: @@ -215,6 +216,125 @@ You will not be prompted for a reentering the same password next time. Arduino I Please note, it is possible to reveal password entered previously in Arduino IDE, if IDE has not been closed since last upload. This can be done by enabling *Show verbose output during: upload* in *File > Preferences* and attempting to upload the module. + + + +Web Browser +----------- + +Updates described in this chapter are done with a web browser that can be useful in the following typical scenarios: + +- after application deployment if loading directly from Arduino IDE is inconvenient or not possible, +- after deployment if user is unable to expose module for OTA from external update server, +- to provide updates after deployment to small quantity of modules when setting an update server is not practicable. + +Requirements +~~~~~~~~~~~~ + +- The Pico and the computer must be connected to the same network, or the IP of the Pico should be known if on a different network. + +Implementation Overview +~~~~~~~~~~~~~~~~~~~~~~~ + +Updates with a web browser are implemented using ``HTTPUpdateServer`` class together with ``WebServer`` and ``LEAmDNS`` classes. The following code is required to get it work: + +setup() + +.. code:: cpp + + MDNS.begin(host); + + httpUpdater.setup(&httpServer); + httpServer.begin(); + + MDNS.addService("http", "tcp", 80); + +loop() + +.. code:: cpp + + httpServer.handleClient(); + +In case OTA update fails dead after entering modifications in your sketch, you can always recover module by loading it over a serial port. Then diagnose the issue with sketch using Serial Monitor. Once the issue is fixed try OTA again. + + +HTTP Server +----------- + +``HTTPUpdate`` class can check for updates and download a binary file from HTTP web server. It is possible to download updates from every IP or domain address on the network or Internet. + +Note that by default this class closes all other connections except the one used by the update, this is because the update method blocks. This means that if there's another application receiving data then TCP packets will build up in the buffer leading to out of memory errors causing the OTA update to fail. There's also a limited number of receive buffers available and all may be used up by other applications. + +There are some cases where you know that you won't be receiving any data but would still like to send progress updates. +It's possible to disable the default behaviour (and keep connections open) by calling closeConnectionsOnUpdate(false). + +Requirements +~~~~~~~~~~~~ + +- web server + +Arduino code +~~~~~~~~~~~~ + +Simple updater +^^^^^^^^^^^^^^ + +Simple updater downloads the file every time the function is called. + +.. code:: cpp + + WiFiClient client; + HTTPUpdate.update(client, "192.168.0.2", 80, "/arduino.bin"); + +Advanced updater +^^^^^^^^^^^^^^^^ + +Its possible to point the update function to a script on the server. If a version string argument is given, it will be sent to the server. The server side script can use this string to check whether an update should be performed. + +The server-side script can respond as follows: - response code 200, and send the firmware image, - or response code 304 to notify Pico that no update is required. + +.. code:: cpp + + WiFiClient client; + t_httpUpdate_return ret = HTTPUpdate.update(client, "192.168.0.2", 80, "/pico/update/arduino.php", "optional current version string here"); + switch(ret) { + case HTTP_UPDATE_FAILED: + Serial.println("[update] Update failed."); + break; + case HTTP_UPDATE_NO_UPDATES: + Serial.println("[update] Update no Update."); + break; + case HTTP_UPDATE_OK: + Serial.println("[update] Update ok."); // may not be called since we reboot the RP2040 + break; + } + +TLS updater +^^^^^^^^^^^ + +Please read and try the examples provided with the library. + +Server request handling +~~~~~~~~~~~~~~~~~~~~~~~ + +Simple updater +^^^^^^^^^^^^^^ + +For the simple updater the server only needs to deliver the binary file for update. + +Advanced updater +^^^^^^^^^^^^^^^^ + +For advanced update management a script (such as a PHP script) can run on the server side. It will receive the following headers which it may use to choose a specific firmware file to serve: + +:: + [User-Agent] => Pico-HTTP-Update + [x-Pico-STA-MAC] => 18:FE:AA:AA:AA:AA + [x-Pico-AP-MAC] => 1A:FE:AA:AA:AA:AA + [x-Pico-Version] => DOOR-7-g14f53a19 + [x-Pico-Mode] => sketch + + Stream Interface ---------------- diff --git a/keywords.txt b/keywords.txt index a98cae4..5ad7e09 100644 --- a/keywords.txt +++ b/keywords.txt @@ -32,9 +32,22 @@ usToPIOCycles KEYWORD2 f_cpu KEYWORD2 getCycleCount KEYWORD2 getCycleCount64 KEYWORD2 + +getFreeHeap KEYWORD2 +getUsedHeap KEYWORD2 +getTotalHeap KEYWORD2 + idleOtherCore KEYWORD2 resumeOtherCore KEYWORD2 +restartCore1 KEYWORD2 +reboot KEYWORD2 +restart KEYWORD2 + +getChipID KEYWORD2 + +hwrand32 KEYWORD2 + PIOProgram KEYWORD2 prepare KEYWORD2 SerialPIO KEYWORD2 diff --git a/lib/libpico-ipv6.a b/lib/libpico-ipv6.a index b425d48a7a998c486caa3bf853265d732f57e26c..18b1a5032e28ca16865c96f69b2287365e046bda 100644 GIT binary patch delta 228712 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 NfLM3?mM41e3IXdMKlA_q delta 241264 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 yc62`U2chaQZ zR{#>m;~?*Cb0e55FhrF+@P1^*yc;3BN$R@sMmWsclJZNQGweaGiORbe= zzJT@%Kw#J!s39<9b2zq%*|qqb%z{}lt3<65$LW19{>8w>B4e=C6Bn0WJJ?ze`^eu9 zw)#Mv(RGMb8DPUfZ|Mu5D)sjf8-`e|)lTA%L#%=zZRk;NiM`z2oFFa_vAT!cAdh-W z@mI&Qq-p(39Vd?jP z?l32b-ovc4`19y!>L#&O*P4^j8`MoAwBCH41wl878SXY~83)}YC;Uy&-U0;OBtlzE zXBZGvlL&1!X(N!TNgVOp&7I&AswVvltg+L)k2uGx!Nq`fnJwe+sGHOW{%(_(>ryxA z?|}B2@3Pj=O?nv6K64QZgl^IaK>N+}L<-#`*6g6^2is6JiO?bQQ}zT@lL#F(&$11m zn#ATkZr(uB7AK&W%-<+t;&5E!{Ipm;+#0FgAl@7fu6RWJJlx7sKM+|XtYWZ3zYz`W zaKXV!kR9$HVYM#YPLe)OJ_;78R2*e2_GNT7W|T9i2$huB9{v}_cO$@M`J&TED^~b4 zf}oMaWSajb5DtwbQtI@(Q73355%BnL7ICD`UWW3Ze#F!ve`ltylmOL_yug%lR2&#- zm3CbP8bZAjjhwa{{2A(_rjU1)l$B`lP_-H*ltNirsGpko1oP5PTd041%}Ruxa?s}pR4y| z;7J4=h0C2RHjS~`!JPNYW2^}7oBit;G%n0>jkPk=&qTkmmR-DnL>%)pW&y9^jduzz z`wy(kF;5w1!WcM{hUT)L7I%-e`eH@#?pSL!%UgV3GPzy-r@NTkjx$w_ zrwjiCt2o?};01Rvxt_uPfao*9D%GIPxnhE~LLFMCPPG26s?Eh0ldQB5ry{kH+m!vO zl$8p5vSl~AL`r^g#TZ&Hx6OWbNuE~&=^hgUf*mX%38>~H^+rZ_%i$f9CPPK)YG}XF< ziD2L~E45hiYYS%=^3QD0F$pf4lapHFY|P2&F9@K~03`3B5G zFN;rMTPN}~*iR`&nfqJj#GuL`r`_UzSnrk&z*VQ$fXPs01-*CiT&STT|o-6|M ztteEi3g%md>fpM8^Q|#j{7aS}gZM2(=icb9rQSG??x!fVm(e@B z5DYD-4H!jqdM;F-HX;d~4pH`?e}Gfy-1oR^azO%J=)CH#xe<&&hkHKUH8kucnl7^R zcmsJ=y@8DmGVq$ln4jnZ5SkDA2n|CAq4}U~ zU<*13&1)_K3ti|WN~KN&UFct+IuoIp0Z?i0EANWt~5dtUi!pqiPv2<6=Cyt)BR@U8o#`?#vi`FU7O2W-{ z%_r3@IBR80kMr$8nfhPoqff@-na9s>qmPcI^#mSHx&a+YeXZZnhrU)X^dM?1`m2)t3UztJK<{qpG#U7MHxfC8}8_$-$POUO}`g5VN&4tffh!+ zde-aM5YPs|A{PBY(@-F4qt#Mf0RB*X9$|*iMnDD+Z8U8Rz9UgfZ9MhM;ZKC-8vV(N zG8DDeuEVh_`cv`tO@}`nEr=Zj?FMW(p*6HQ5UssnT@nfH8e=YZ* zsO}5D;-J_{zxtrKM1Sx>QBfV8uitVoA?sftzL=PmAp?|cqs`;K5xdWs9#i~J3pIAOH+D*%SUK~XT%;2XCLc&dA z^&n*1D&C@ZP!!j|I|-x1(E(c17sSaL&{Fz>XjDrYUl7yjcY8q`q(A)y;TsH8x4<|s zk~?1%y8(*(hM+9h5R{erqNpAs6Wl)pXxE6(=hpazE=I7xHJ;@c8d<95S*)tHKU?UV9%~@R5S;P-x?Jy zaM>HM5)2E^=xDZo+twGuofrL}A;lKUqWsTb?kjftL(=B&aP@$qoMyBI)+@LFj2YmmnP z%dPXH8Sxh}aXM}yvtKzW^(9!^LF-pnr80AX&QXPThSo273s6Bq(++dE;}T{$NN9u% za?{2LBs5&ZLP9edLk$udYFa=lGa0l<9kUrg>;ezrWiRu27|V)F6*9-W!0B9(P&3Q$i){;{ zks(7#L|KrUBGS%&VriaK?xKAu{WNkwZ3&O6&Qt!H?n8Qqeiv%$)OnFrl3q#b^_`e~ z+&Wb?J+OZ3T^P0FU!V!0tb}POZajwuTyDGqV)$(jeJi6DD3%z9@VnTcL4`%eT>LJS zmPHmARY*18n1R;2(a1sgJi|t%<{G!7fH_7rerFrp$%X{xR#1ey*RnyRkH>R(4(eH; zZRB5vWH<;#K=DsN7vPq(19*1&yNMSUMq@?ifFHM{QEcw>OU;L~67UD=Z%JcJz~9Wk zT|m){W?!K|+>F)(foOz@gxbXp0=tWLlzsmM&Ac8h1pe`VCHgIjHYuS_tKKz6wFy@y z!aZA%E78WdB5f!_bPF^qdcJJMHsX;*(ZWD;G$yY|qin_>7Vj)VYgVJ0xDIV0g1iX? zMrnYTBIxr`3utqpbXA{*M@@eU6?f=QAjGLB<2Om~hhLZeBf8VAzm7B>{Q-nPQii-< zeGAYS`hB3)r>iVezl^>MfFEVkybPMHsISs<6zTlGLqqzygrshfzf|0{I2tVsBf{5B zhPnL1kQe8)Bun|<06Jd}33&a>#i_;7{5and4Lwk6SM(Pp%kZ?p`I_)XSnj0B?od^C=4tORT&l?d(c-v+ zBwW(mqx^-gFeP2T{b9C{vzcY@2v?2wtE-L|=C;zsA& zU(rXSizzbu4T7SN1*>xZr$p`$pd2ng~Sj@{#Ca}o+k8r4otn*EvbiX?4{_!6jt zhlvbAGqT`C^OUfcBaq|U4}&;l>A#z6M7QP9A{fM(iMY^SG^ZaTw6?$r6F57>z00F{ zYOZ*3d9(y#wlC>@EwbVWJSuv|qdl?3wJsiARd_$zz!@m>yn~E>&JTe$j{5nb08xRC znTHYMs}WsRU<)L~pjxT2=JLM=Iszl4#+t`Z6~MqK3F!V0nQV+q<_%DFE-=o)0>G%K zZD70vpgJdS&|89tP_V7%UN$Ew2$nlI1A!a*;3wEAb2(ysJUO-brl?+c0O^B+6GZx1 z-{4SLlGD#`_~39!gUf%5Xn9jK7Gig=b@`Z z3sPp0v;Dfb@1|&L|7K(ht*}*uITnfYH$_Vt(cIX{2zjZ*&TN%ykb`aSR$e!%vUxldTf5~pGl=F4+<-oPbRb`$+d~zhw zx!ugi&u35LgnLW>TP!6Pz-`bn^}I9I(WnMr$TRU`Z_VOdfbnhQN~0 zLi0stuS`Ho&0`5D%(xZiWR?zrC81l)A#4T+EXM-6!@QO_al(?&DwDH+GEP_$T4R37 z=71EFjkDI=N9lhuh6%y-rp-2h7?VlwHm_wI#F&SHe3O~O;vvQ)w8i|81wxETXsh`S zkwT2gx8`mp1T#}@m}%4tm zf*TW~WZpRCg<0_@SEJgEkg`Cns4oRoK z92H5akbuWOTTHk;8f$S8EuGR?rVjaiAUCB_0+fdy2U_b0T07iTjdJW*GsL5}M+@Qw z=&Ue=qpV)zjo^kbgriKLSRXQZKQ(h2NVB|*f;?2_9f8E*K?xw^X7q*H$0FegIcSDF zaM(A>D%FP!Wt!>$d9FTWIT%On7Z3yPh^DudmcR!5GMbfD2L{-`^%+=Wb)fl+kal9n z9nqY8wx?R_XXn=^orgN9Lw*^O<`b9hh&E28_*?zPjil%oICX3G7}5C7sEyTAyE~)T zs5N5yozXJ&hr_` z5aFz(-t9_bM}Lc|ac{Elk7CIh)*bjr^{ zB|iZM>Om#@JFuAgk*2B#kTyqZc7CMg%Iw)eR%AZn3@oST9x(QJLRENd}I z7+!DbsQ5~%;aZWzP(D}OygoXh=#NCSFvhS4(O(EhLUXP9# zC~`JL^RZ^^vmsil&Jpnq(aGw^br&~8v)u6qz(;hc)vjuu(V#P@xciMk8FX%FfcAR| zCD4TrsIKZ$XcIbfyu06b@afz(B08WZbm8IQemr_g=Pp3@Ob|*JeojrU=B-Y2;bGzG znLg}B&P3_qnsC1o^cG$C_rUcS`im|y&fQN(R=V&R;NtEaT{5J9)h$sPU3fsa-!mYb zF8mkO-LDo!(}f{EtEN1c&Z-FZs{?z`h2KLeTwAFrZ;GV*qM7j*P(8Zv&~Wu?P(&B5 z4fmsVFkSdr6#fnZ>3ET2HKZo;N_o$AS9Kf|(S=8Z`^DhXh0h{KDNxdd>yYCV@X&<^ zhWqio>VbHTXHvEf29<#m2l?ah{1TYxt8h4}h-VMbM~J)<Qe#>G{Y zo6W!ufesb!A<%gXBs&DLT`_}`i9rhCP7huDxoxa0em{}dp9}1cIkrKL^E^suI2Xvd z5QgQqgIJf7atx1yW(6V6c^^RzC!d!mEaCE;7Q{K@AN)+}?mzXv0@3#5;MYjS_qoZP*~*31*-`_i?=gn=(Xm2JRCQ@CGYj zVX}QJFV4+k_dA{(q~I-(dq7NJG3x7af8wbH!k|R{=`WH0J;)O|P9^XjJx^=TOr{Hf zcF2Tk5e9omXu@LkS@CNS`85Obo_*o|CBg4X>dO;5p zqy|@@P7w4Eh$sQRzbNRT2slyXAQ@F(WQ_#0;Fm0-RsznTEPSv8T#3SmNWc@klemWh z5JxLw$!S~A01)o5s6dcsxFFmi5DLB^zO0DFx*H4|EyE%~np1*ohY6y=Ug%E9b_m#t zxgK~6Ro^F`GbD2~0)1aZC=`aaiAVJB7_)*0*+Q3PV6R|`Tg>YiD+?B)XDHuc(xcX! zVt>b2@ffOPP`<+|>pYTpMO^bE0PlDpQoQHUBfL~i106Q6R+i$L-=c#o@+ZYLOs!aC z6-sN!Do*P@QQ0YG2g!Ss)*J(_YO6$C-zf$u2vAZm^DzQ^KW22 zXnjFs5XB5e=ppMt@h0-6@59)m)a9QDJZXJM)R4NojKbfxE{f#Nv9!=d=7ZFQ&2`Z# zbBT)1u|iGriEH3v17aN$rJ*+{Y1s-qkhDA`4s?#?XNia}Ee z%>@mwWRC9cR#0@Sigj=I3aEoNmmH~st;?uspg`4oBFXT`jJb1Rdn!TsNQ>Hq0SE&) zrbkcjOhOB-Cd3H|0ppfhtrAd}&CwsiGhfKeX`bS!VwM$0ipF)1&fD-fcfsWT#SQ+U;)~7 zleH1-8GwX<&=zZO5TCoyP?O+R>qa7lh=4QicFWDA5D{DpqIOz5o*RIO;1kfl%i@fI zt8;_<0qwS^dJuqwU=&jBwa$`kNC@~%z0bNpERYbi1GL}jO$ZVKR`;L?;RToaBJ__4OJV#(rTE>B#?x`sawxr=d}sv83dxxtyF;jmlw zv{JrNbm$+OuI{Sa)jx*&Lv}%PHa1P&BbE+~Rp<0UgQ>&Z-ZS`^Zo8889PXA}j}~Py zt!rK4vw?VzN}OHXrR==2_n51TyGjB(z`AOcJA=vFz^F|(cj9B9bt`a%+Ssj<`_<>L z)=gBPu{&Q@Kw@m{ZhaMFV|SOU7&8(W%TSb}W{TSfVS>9^oE{Xr393qiYGR`_$RwYv z!FPRY@l#E#41(s;+SneXxmXL{MKuS<^0hu5Q9d}9vqvg8E*0EV9c?*M9PrZ z1ohdv8;8VlHMLgUHw<`ZibliX9S{!;k5yBVvP)=)n=O zA}gJ3+|41|_$>D0PrzkObc+v0#8Qe=7}>)i8*(UEr3NnR4K`ZOMBp+6aQD9Bopl)_ zG461pqx+~>Hp{$zRID&UjV5)CTEn2y!)47B zA0dBaB@4bg5w{WHw==FrG#(vm+hq=MZcD_CLU-4~b>t_2n&D8n2I!QDrrwf=961~# z@2duTV*`?{gUdQ2Hjj?AY)X@^>PSt-Ink+j;VW6ZwN@RK2rNfHDFX}ix^G6u-cr>G z;`G>9$GojMr9qPqm7SMGXGhb{cpI3^OI3v{N6HG7aU%PRt>UuNj{s>#* zct?S~K9StjgNE1CzcsKb^Y)xAmXC|oVpzR8F4h746c``drruTe~=z4K1&^dF11A1g{H#j-Jf4x1D!$)#OlIzNO)l{3Hks;RWw@{XYb$-Jv-9I4u}dQF(b(=^OC{w2I)wl?+&B-) zI%gh@b#l~=ej?UqXuL0`2(J5ipq%S|+Fzl{4!0sTtfgO~j}b;K0jlb}MITJL4Q)rn1DAOTa&|2Y( zg&H$$UJ0PJ*YuaUVCBSnPY}axL+y-!8!^2uA=|aHHAafQ_@b_luqI5&R8;@lNj= zWb9V4DahEZ;v)TlTSaNep0AbvUhEDb^u9?4y?-f1~YT9udcJ|A^U-GCH3t{E=@t&gp{88hnTP(*xT+DY-RQ6MZGbwqfQ z>gtPm#JLyGuyiy~26?#e;N%x8WEPVcq$Mo`CpiaT5JF}#Uk15D2ugA$@pbK7&6okP z^^9@4d0H#UlhhG0Ngnrl6ow`B4^@j05(jn8E)G&5xwpMOWhxv5k6{5cpJCyQ?3^IlT1EahW7>lSEm zen*0rr;L7!u~UH!M~i;uGbK1UTJ#N{X+{9Hdkto|j0}(?6!Muj{kf}>Pa%!BBS`bO zdw6L5LS7l;?x|PfSuq|I{VhA&eguGfV8JeU0qV85Yvct*&K4fA%CgfMy^gSudyFR= z)iAvHagR0m45KI>@dwLp5^usH%5Y!-^D95K+$#G9hfVH8vXng_UP);K^3)V6KWZr} zkkFAboz+iihmoI@!aHSLDL$lhr*MVgNx2IlddfsRdlhdHF!1cq&kZEt>=2(7gCdre zI6QO$fYVrmFdQBtA)aK4HgI-`fY+FVmeS97*t9<5195-Uj!iaM#5*#K=72~nuDM5; zrbhVY@t#2l?eaE5W`pOuao$Kao#HGeVeMjJ#CV&dY?|er(2xxFa`~(nrMig5>_+%T zD~s99isph?8tFa8gnTo?NbfS4us`YQD@jRJoR@G=){e!Gu!bpkIicY$Bbk;$k&z>1 z70Py|@WPU$6kbc?N@;^JYFMRgK{oUfe$|xgky%R#aC6j=@-7=eaTbV{wq4SOMrKY1zV>_rY=%63^R0u` zQ4H?I1`hYN&uL* zqcN;L20$l+wzmTRl08~!d_drGpa#WO*}UBci(1)$-E0~q<`S1Ey4(Lmop6fD6DQas zZQhJIN+7Drj_hT>KrCqqsM`LRP$MZ$1`Jk0;;j8=ffp38DOwYeVD*+8p zYgi(a*GAfx@yjJLQ;xPTGG#MB;y{|+EY1^ZTq={8sW#PBxKt)I&8C_Mm&(jI-ToWn zuv8{7vusK^xKt)I$JW>^SSmB+Jo{_r!%~^hLVGGpz*3peQhQAT3KLpkuWVQ<6THP9 z&LXf>Cek}>s*-W3OlXzuA*W!eOlXb$2n)ngnKfK%_aIU%l?ko4XEPs`%1n8;y_LjZ zsr&>&H`%lu!lg2yE%qy}`lT{K*efPdER{Kwx7#je#8UYoWZ7viA%vweC)Hi{n@owN zGTCmoeK+HKYd*2<+at9#J?&W)uUm&ybW*%a7v zsZ8joeTMbLQkh+G+#bX@910@zlFdVIfu#xP&vsYF#S_p8NR&Kcf4bcqHYPq!x0|T% zh;U=OXD=FP3fz{w2w2_DUC7~m9F%nnyyqduCWg)jzZ^OVpnm9laCPWB*x1gSDu>Pm z2b-pT=v?^a(7Eu-p>yGvLkBUaK_}x*{9^6Spnz8FGg&53z|f8SjaOnRYdHy#JVq zFQ7-oSDAK8T=<%kWtT^|V#P(87E#Vb7QVFe9u%{)>~ZQ~@k*8*Q6ChaWZ6ZqG8WFZ z+eW7oeKwCcCBE0xt;zT%Z8BL*$hK3Fc7C>9q6(jOFpH#OP8T>=yZqbDmwu3=)(87%T@plU3jCr>{T=>U9eM_E0oMS zZ=T)S<6Z~mcPOj=7gs3%r%xkb;nJ&aM+^I+Qy7)`jm5{McE*2Qp@YnQ_BBTxUJ2?p#N^O|195XiqL|`hy*~ zu=y>0Fv11;Sd`Fo4Hq`E=wq#Mm_8OZ-Ol#l5%FY~ zCLu9$6xJN&rQ()R_?{nLD$dcru2kfX#u{XODX^nwn~R@6_gmub(O4)P5=Tbk8~+WF zG6vo!ViG(pS|;|5LB_%|;T&uKNh>cCC&$|J@$KJroV`FR?<@|E<9ea1@QuehVV4*+ z9>Zg!xP3g91HHP5-Q)3r|4Q!Jk$^IaMf3u23N%tn$ot$8Yung)u z0n3Funo1iV`^5c#l5(*CQ{^f_EAK8YO|Tmj)muWb5bD1rElW$~GU1N8aTD#1hVc+S zhWWW=uK zBE}S88G3bBlZtxS)$9ul*wtKsTu@V|Y#ck8*Lv_qlX~jZ&2sHUo$GC(z6UO7u!VXE zaSgUm2OxjLp66na-mvHSI@8zN8Mu!{C2XNO{tE7BFopUJ3#~VWN;8#Cm_kLg;>Z_= zX40PSRDE=sIcuXg1@3_Uy_j)>oi&s@u&SPph%Uwv z{H|0LAN2@Bt^=Oi(NBJUN4gG%_^kNJ^sajIoc;*}j!RQ}JnTPHah;HW*Iz3x-eBj) zZ$?3`s}?(xfx=eiUrmo=sb737!~kcj1GE{HnDf4uX6EAR+rz? z`Z^S>>W9e_Feiz6rg}PfT&ST$=&8{8toYT(#Hv|#^Nf{%5@?{8&MQUrRwx&CSn=!9 zM~J`7vJ2yr(GJ{^+)Omw0{8Y#Vp?dxp{u-CEU;cganM!g4ycQ1Q`Z2Cw}12@Jeys? z9bQ-ikU$wiyz3G`gSFJs09R7_8>pC~zl!>*`dzGs9_PS!=+rNF>XcR`>3fjKrGE=7 zZk?K~9{m*Rt?Pq8saL0Q21D-;M)2vF;Gx&fyGH|xZxMpH$N3%#^6v*e>~T`fO!0GP z2YZ|Zw7@kBU?xF6JN-B^4hwYMB;@j6MCn-OFqy~yIf%g4Cjqa2AhGq7fX~m3SYIy* z1pEh>r?&(`ekV%C)+qB_(SawB>c5NFs$~px;C~BxxHZaUWjsOZAQ@LrYK;UmlE=MK zqJSnZOByTzSAx1B67VFb8!7>Bf}mj%@cGA~t*}i>1OfkaG#|D}355J9Y`>8JhJaS+ zivt=Zqf-43vDDELi1VZHo^#QeE-jXFTQG}lg_oQ|I3RwO(%ziHJmwUFu0KvcnTg-94_~u6Yb{Mu?GT+XFcF}|LAq3ba zUYKt`7w5TFD#bg9lhYTJ;;A5tY^zX5D8;jfe0>p}8tCnzw9~&26%EvzqV@j+A%S{R zwEp+d)`5Ccv;mr;4b+>W^~+^Zy(wD%zfb_w>3_m7!H}dR75emm6zJ1~9_Z7vNv`PA zlQy5fIhr2&^aP+!&&yGK6r)g|{zU+ic<9s1sZw#A0|MyN?_@Gwic%P?@f5)K--^

7TF^U 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%0Ds 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

hozvN=6D~Kv{Wyeh}mTnLq>Q=3?U6gsO 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

8WAM=CwUw+8cZ)cE-VWl( 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

  • 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%0AEo`C5UqMxLOVe| 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

    huVoc_t9@%|Yg(D8>_4(r6?o z|B63xCXinL6<8F1W4RO|RL~tyd^hJNU+^3PtcHuJ#dP^yMSBkzu3SS%0 z+g*I=0qwVk9|`JNt?CD%!e|y~(A$kVSV2A}UT>iC=yvPx$VcCyRTEv{GoO6S{x*=0 z+20=W1A_1^`Gz3SI!(;LY?1sd?5&dDQV{l$k6GX~XhWI>cBOAyTNt!EOAqZaO$?9h zr+*-eYX|c7gY`b*rh)vX!TPo0o`L)igke~v_Yj?ozpNs!fS(+q?_@Cka*19iE*ivh zha%0LgZNzXR}SKP$$xYZPa6jR`9XZ@FrqbxA0Gzc<9mbnO~dtTLG1V8dSCI*sl3mn z$O5!4)mySw*y)#XAJL_{SNvuMKXs{|p|r-l^bMXkLN~;pyYWsV0CIH~1lalB81LtE zM(9!E>}&ZFf^X^3G-VS%@4*ifsGvWLmhkBJ{f4-*j^~cl&l`xb4hOd_id_1b5?(V> ze_V9-L4&yHCgZarzjU;oK6Vz~0?{thW-&zMtq>zWif6TD!XUgr5SNo21M{~A0OhH8 z9q49diV@W^YEW6Zm16b*OYNJukYZ%jMQQ92-IR&^;AlNHhQ!A91Yb8GsGIO758}=- zdd2`UqhcQrOPXCUnnHQnDp(@&(O$nyi&Gm@f@Xp5V02Z7Z^r3CCh@58dhCdQBMV1CBh&j) zI7fdgAiH}YnPaL&5vHfeijLzdX+L?-AWc9@@V*Y;y%P{A*+I{O^O~80lx{sU_hAgq zskP@dz+&9AX)fhi0l)iRifL=5NpL?4uB7%> zOp5ypDJ)LVuVESSpvO+T*=V4K=$ml5I17&%%L#rqmZ~LVzs&EwOfQOi7c8(n<|!trU|hDMbzvXToKd5S1x0?*K+3 z`rZTszBoyr&8G4CN%}M5Z*sWs3O$PUp}S7jFHNC4VCA8C#Ef9pQlQ!|(M5B4D`mcI zvYya02|O$F3*JXuUJU+}`IQlDGFYZummg{zxwTWUbu`aZwdmU}Ru_Wr|QaMJcf+RlkN*jEqsH-PlH>&oUNmGQeGcLnjRpAZu^|mY=x=}Cs%O|4oQORwXLR_iXl>tA{oHk!L1#Av^| zkl*wmu=Du)4+48853R+h{as`eG+~w9iv{|OwR#JsPY@zFzGkg%(8X`7665*7wYpbX zfX~tqOKnSDr<2XW*mXc2pWQTUyO-jz97P2lwB`E0lAgj^E#LTYhO!G%i9y!J=bm-? z1sk8`Nie6IUufCqn;FjfxBjs+c@{pJE}G|D4@b+Lrk^;Or$42)=rILTM)6tH6vpZr zL_%}45^11gNSZ<7Skx=V>X{THs~>3a?3TtEbhnq{1KqT#DXZ=H(x>!{>~{gQn|@lh zD>MtU(VsXA&0x>-UrA7!(L(F=Eq>%FJ=fEjcMw+@wcAv#0Ymk2pceA1ayrSG?MLmWsu&jBJ^R~9Qy(tWczdtnNp zI#Hj3-MQ3@!PI#OaEJ4D{5zdFNEPLL4rTK?uR%Wby7Ml8bms*82c0?+8_v&A5vH>a zoQ0f=z;m9{j!MfHMB0W_rirAVZzG19*sEnjK+AbM$U?3U8q7I^I;8U}szm4IsASoh zje1d>kD*;`&S79%bzbIy?J2u+ti|R1_;)x9c;zNNBQq5Nv6=iLMw>s*55S7xyakoS zoV$^U==_~8+oUJ;dl0!W=VeyyZU7Dz`Hl7VvF!+@tN}v6ISFaXo1;!JhDLXG1y_P| z8_LR@v^ygT;ynKACOy5r5*3EK-5V)68KZBEbAZLf9Pr1SD~Sogttf4nwiuC~`REWz z0duVfO>7e*SEXGf#5|wlZB^Pcm(@o+pA%+bBu*Bh{vgyMCQ%kPBIVZVm5xj!i)|6A zWfxH`zldr@6V*9jPN{69>e)o0E|HMpaZ~WzuMg`*gRSJNn3GT%liwc+ zG0#5Yb9E#ndIsY?QPxC4lIKsV)CVIW8C(1at&M~fRF7+mo+9RYc=i@O8){{Px9Aha z6c69NMNeYu`A1vyDlF9lTlG$?10S_jPhf?7=2kr&*5g)e)iVpLXn2vORQCN={wPf7+_IsERH{vdhmyyMH{L7jc4`to<~rT?%b%8AR;8kanEyl zV$|>Gqwf5uM=0myWH)dBoc=;@(tc!4I&=y(Df~-L50c8xGQ6dV(~C8c&G{kvnd+nk zyWRN#Sk(k^6Ik(7O0?%4$2`52K?o=3^77~PIMnPV&+B+^btxR=q9J>9H6z+yKbF{<`Gm1{5PY4t^@fImT&6-f`E_{RHa0M;SyY0zOz z6^s|qR;;8kY!i$W8c<3b!-`-i6z&x1#1MfQag@HSF)RtjLDU~BZw#Yo$f>*ZA?5T6 zVGil(yOb)0vbqOQ)~hj$th!UUcVigS0^EtzUdu*{$C6A?NG?Nrvr50kYH}{+)5R*I zm~7*}y`U#Tmo;viUhJkVGB!Y@OwDROVjG6xU6l9e-~td+Feo(-`0R}B3Ba5~P-;;y zi}}Ob^j@%q_R}^!#NOwr+x1ZF7%FiRi>00sN!;RRKfh$Vo*iFEQ8Sg?^`Mvq7b3s4 zo3GfeKNpFdsN_-P+i-gtBd>T-e=rg`OevtqmFOANM<}KFlD+^Zwl}<_w~XL)k5He8 zsvHkTI420_6uX&uD2f6A?h1CnjWz-7|Q#{QJc>1`vSaUlUm@};jv^7!|w`WFB>5OeeX zyY%sK>1b7Ux7?jdXW~5yz-6}LyLaiAihsuP%-8kpsJky;*E_{qbZ(NT5S<^9(P=oM z)A0?xQhZM3H@u-|=a68G&6Uf@wCm;QSmWR#9L$w_Qp!aDEQF(!2j0-9cw>d?f+=Wv73cyc|DQ4`}D{*#U>u$X~!q2n_&J`%eWpG5*yGO5VwVV2OS)`t3 zTlI7Z5|vCwbx|hgP+&RmZ-dL+#T)kMBVb1R&>lT4*+*ac{nEg7sELwWiOc~h=?5@Z zvXjTXshhY{wB$`ptYaPgwm0>}+%;g0)k$t*l{KVbdo~|$4j`H9k#9TeWvr8mC{Pme z@OR(TGlsm0Y}w6{_4b!6Mq@HA84Z--cle^PdnNx~Lca^+6T2^hR$2|xB_C7tBB>?i zBXlaspx$u56nq)JPJz^?_fRRKP9tT(7($fZ8^c<2w^g5N?P5h)u@fInBt(T>>6iX>f z=2PY6H3nX$YRYd6SVY=25drC0Z{eGm!MDDp_vrL2jX@`v)y0RR&$E^B*$_+~K@+&~ zfF=g)42$-FqPT2C@dCW9eUM)O8>Cr|2GR1h};}o7hhs%1IPktL8rwqRM zZGAJ#2v@$Nzv;mB?$HPJ0l0B?{6YN_@vM(m9nuFP_MSt!$P$LoJGhkDsCDT_wa8Ys zewROe7@zn){4jY@T>C`NZhbj$*fr;I(UE{Vz#v|x{0I0BKK2v6YtsnM$MGVIH>VJi)Ijt+G|JyxevWb* zMhYn64SwlfD+A)&erRXz!`w>00(;1?C zNgMh^4Dngd)%!q282km5xPJ;oNJ*^``;vzM<@AiP?{^RywwWh=ipkP6-r-Zscd{_T z$hoW?&5zp6rRhR0>tYe>@DM<93=2?5dIA*MS;#T0oRCXsE+s?l+(PdAGKwTCkWuVu zMpRg-HR~GYLKl*044o7jf*yS8Q#~c%AzFJPgopndpCS3# z6lr)EWs@Jq!&07oR1b*>QM~_AjQS7pdE~X^Paf6NTen0Jlqj)?TD0U>G_evb#?UY- zbU2Kjq(H{Mp2`!GkMgK){^wC>qN(n1`e*t}V*MXJK_KUO$W}8CRY%UV)>dPndy(_3 zvDLJU5(ILdRkoUQ7&*u}m)L6PRVL^B*f#1UvZ8Y@QNpMrAa@RLVU#f1iK38Wnano2 z0(D4^WieX~X$`~iQOEW6_3e=nId8qMW*6REa^4BiH6I`&a^B&#nkP_9a^AYsnr}db zoOfDU%@kBMIq&S$nz85wZb|dM>zC%;;)N#IGSW)F8)Mx(Ag;7I$~(=HaAHOj&)&TVSz8Pms($5GX4nuuymK%3I`N(b`M2S$*O;dLJQ_zsfX zoRn$~k{`rs22DgtHND8sgq9uoEd^l=dLkX5c$EBnK_J-zc2nwwCG=1v2(-5?c0g|= zzZAm(+KZHHmXcpC2y_fitQ3UpXj8FD5VoRoiroZZGL6?g(az{IVjl=R$?uO>g8V@c zk*<$RCL_YiM|JVmR*M;0{$>`7}TLWDxr=PxIWT;D7TppG*D^PxHOx z|MoObdpg($2AHQj9mKkxzd)X!yEnm0;Ume*;g6A5%6})X7w^3p-XOjTo_KH*Ked_Y zZQ`At0Ug|c^o*6{5P7A%RoF^0hrAK|P4dR`)GbIkdo!Q91t}M7=G(|$yP12o!hdx$ zuOa`v&3q&IpKs=WkpInQ-sf5PzisCC!w0J;p9M8P@Aw=%IlTC};Oz|gr@nxo$)}K4 z%U^gQSSKF*gty;@BwhH8+W_sw-`^H&$&T@9KjVyse|yj?E)sdh_F#tc)_f>N^8VX{ zhVuKp7!Q_z_koWu0tWN)RojCt#6=R{L5ThCZR&`}b#28QhUU5bK&k16%_frnN%sIQ zw@g5PqRpns0AaIf2tpF=;L6R)LUgkTHk)n(y0nyHnw5nXQjA?0g&6EPk+wq6p3Ot$qY67grpY#*{lsx}vc-Rc9K(q~K66|ynN~6M%RKZRm z);<)kn_#EwN0_}1(G7wG!|iKc2_{&n1v|-Gn03#Hh=a2H%~yg+lb*H`Rar4ej3j;rrOz7y*cx%(gc#{qBLKz3@j>ZRCOwKrcP+(1*@mn* zy8H5euLe{5o;Bztd;f%0I_HA$66;*5+QaZs)gmd=tzY< z_CbJH8!H1>EFGa^ZLNSO_Br6Pc1guRgIatmqR?I%4KMB}pY&P~+h7DL@zOq^99dZ> zC5Zfi*MbSdzoDqLCKV9Fll4npZovu&Mh)8;E*W26;Pp%f6O-|HIl&<81Z>2Uc)k;E z5nKv&zXM<)IHYcVNOLR`Z5)L#z-5K<;k^Jn=;De%LNOv=4SbMB@^!HYpWLZOFF6pkSEK{(`o z?d!pwg`_vjI{PVGiS&YVEKWPOCfppWF*^^T7Rk0MwJO@urf7K&Klget?cNC6z96>JnSQzkx^-e7jJv09CNldTe_LnB;7{{}oE< z@~da5Vdw7P2vtm0_{v#v=}n*P3qO%f>I>F4_`mB%^bVif7u+VrRQByNXh7dyqXrJD z=vp4I(VLz&rzkMLs?;>c^mp<}!jU^uz;>u{_ZqBChzIXH|~$)u5!)GCw>>qbRX0s0+0-8rn zyP)a*0g(YjP^5$Re>;%O?cWD8@h!>!KG>HprF#$-d>`zEFW)-=;4`M52|mCBX8?co zOt2PT%i1HLEe%ctQQn}oBdvnzSl*41o^n|9LIPk80MvETjFhLV(Z}a@lTosaFXKpujlQK-1 z&hO0a#n6VGxfuXrXYN6KiqG%NP2*jdp=a*}uyJS3wgq`9^e65{_iEgkv+V@{J9F3b z+nJGEf7*|rwi$UbjU+yzmO#`=^`Z-6Y(p50*IGyPTc*8D6F7~g?UE+rS=JPAq-cql z(Al)pSR<$!4X}3YNt9UAV$sVT+6KfrwF0Dy(w+joSL=-IbdALE^}5yvUQk@R->cFQ0Bz{pUteFU~`G5Fx8JX21%H91rrnj z+iv4{j%1|wD*#Q_v`c5hwi^u;T0S@vwEIz?OpB+of*)INru73KE)qN0nl`Ciosgle zX_LzJ8oy66lDp4932aT9RIaN*($=&|Elx)_Zc{}#ZQ7=CVJa`! znzpH2Ip_m6Y*UQ|JCdu4@0E=r==!RPF%i4wOfY)~nRjyR|7J`7^ zN78DgngaYSo8e$>_(wJ)zy5wOA!&3pM%GrL>nK_rwWW3|2&vka__u4b(L9=#3rvSb zk}#)6p9hzAJGgZ>bu8E2Y$3{}O#`EXHUvqS_AT-hwRiC^X>F;18cDLeS|W%@FV0115GbFM) z2p1SiRpDWSDOp#Hw`6D}SPaHkEQ=!s>CgjhVFwqg{4O`R*~WLfji7ki7yj05v=y;$ zYj}-3s8bE{8g(qh_jrwt;K~tgT+hT>8^1ZmfTke-F~(>WA^c1%(OrVV-U?S_6>eMf z)5LUPYhL9u9uwc!_zylK2Zld%Ki=VD-raA^fL_jazmbK|SAL^X{MyBHV~qh~SmQUu zTDXtL8ZBZi-j`WfyoYS|!WG`iPsAGi+2_1toN+Zf%s0k?%xZoh4t%%cTD*}f4p(_` zyfH8SHmb&f=v0w416%n@Jf^h8FsfwuqAXSiH?n%a#?QnXb6Aj1OEB8ilOR#dtsW{rA#B}Nn(o4

    Vewp!Rr%^^wdAld&s$O^Hq^lh@3LZQMDfxwx2&o zD5HQ)&b`D}H49*J;&5Bl4$$4fe*#M42(U`d)7e%<`$^NsHJlGF1$?SqQ$^}U5A{< zyg>5!x60dp6+(KH?%|pF#s^V+MTJoLtdtKzd;bV)xAFp4$;So{zlUXonzEe7^VY;Q-MZSe6p!KH(9b93nnNOs zt<)7pPX-lUYq2#T!qJ4kEVkz5V9ixb93}GVdyNY&iMZEDkP6yFl-Ik2*W7D-E2n6f z&bscvh;$tWiA;P0dvvx4*r{E9yu zHk?T@vKotCjb+yJAdY3$V30k(%zB*O44SFi{4pV*i-mY?Yze+1JS*!7@F6g4jk=Lr zuoWYSkE65OB6^Wnczur$ERd4on=P`)l8c!GnW$dyC#bjJ9bsxGdUMo$)?n0xR?99Y zvQFoKS5*wbm@-*<@9Jb^>riV!*Qo}P z*wxI$BDRF69|ik@O2(8RLIj$q+5nN7(e7lM2`z{yLH!j~#8evqqIxCOXEWL=MpjtV zdfHqN)UIHVsn%$s&IGokK7$&U)h|FrQOT;eO(oMas=6L_IBJrQiOr2nph^YXu z1+@}?OkDy1mSETOZ`T-!>SKTjssV%jMr{3dtB7%^ZKgg?&5p^qjFlHDm^%)GzTC9( zay$=C<))RF<1C2C10pk5(eVpvKpq$gNscY3f4ONn=I91ax$>wPkUxui7JrxEMP1jeHH$=r20HR{oJHp)$8cCi8>Ku>? zlRCU7g=ao!q}J1-UWQcI!gbKO4;fP7EucWBa}a`5m_o9H)I(%Qg(+kcoM)-HkP1J6 zBno{)BqkQ1C|;RJdF5^Zd1dN1(VE&?y9Ez1RAFkqm6s4h^`-V~6UjNoL!p95#xWA% zwX)-OAfm@kddG^fC6i3bG0|4kC{rU zrMgP0EgBh6=RNp{H5Y%5Nt-1#ciR$-OhZZjdwmMuSDvd9qTEobWhf15% z=o;WrR8#TaQc`~hkD5wWAss3mcXBqTxr1FoX+FcBpuTS7AFMS-hsdIXy2tf8!Jv~s zIlUbZ`SQ{&##JrCBfxO@9M+xPW zs9hT6BiqT;73BSqP`8+07;pHu5v+fQa7v_^$XQOJN|sCTXEDu$va&D#X2 zQ>ZE$*g$HnJK+|=rO{>wTM((^_W;;S!1q-?bUnls-T6!Fjl|2Wj8B`C#X!_D*)KMF z6X&Nbbv|0nEhgAW3pP9r%#o~k4xCBK`0NL3xe+4k2<)d=Dog^{_QGYX08z5J8Oq}2 z4?)~g$j3ZnTsink(8HmrL|ReN{nd2*C+#UppA-Rp0>B{x(qTK6!u)iqtj!=08@RumgBHbYZJOBW_EfLbCEa@w}NVEfWf`E5~ zqaQZLvHB@g*e%UV)lJBWt(=95H>~Q~l0wx*$D2>U8MJg_TRJCzLLm~if-{on_1j{t zTIV2q9b9N2{@4pKuOjVgJd%_pQf)8AQMEmT@Fs#yp-pb~vehdO0Pr3GYq$Bd!kQISu3%t(l{8hS+w;_3~g-2rDjrSb+$z+_0)iw9|BA~F9bFo%3tbFS%4ZPV%Pzx8yx2^-_ z`z*rG5R3*6R@a+gUm*N3!Dzr>b)%?bbU{^m={_~SYui|Iu zH7}2+DCuitTxbn;~+4f8Zbo8KB?YTMhAPyY29pP)u2euK03OLq}}AO{w})*J~{gY zM;Ub|a`tO{WnZH%$%!LvWi9ZMk+V#4R z>Rm>&C7u88?Y^8hjLWo`iIc{UnsU{Q=@Vdd^lDrRI;uAO<33}x9NuuiSg-JV4jYgD z=Ykpe$MUcC8J=*}C&rS$S!nM&V*H#njI1crI-15y+S(gMRe+*f>uao|*HM_((d7Hl zhNucs!I?{b0^-R}#)v|GYGhm!19VY&$Z77Dpo{UH$Lx#KXBAQKhVo_Pjpm<{H<9Oi z;WhAi9eR)ib*#}!$V`9uYkogdv`@kqc7>YNb6meiGP{_bDw#B(<`34ig)A^AIFGu+lKX%Mo@@0Or zg;HKE2%{rQ-nW5?96lxR>aI;IUiTh6l9jbwWL97qlsVW7XZWmh%8=^Mi#5;Rpz}|5 z^w!0h7vJndE736a^@g!VLRX{aw4i=3U&bJ@5ZvAd^pMZ~jzIih!=? z@Fq&=8>8Vj{h)$Xi;+rt7;vds1&da5P{Fz$SW*VYeyLdn>n$3#WMwMQp<3m``wg|L zathhiyOHX=+Ld*>oTRRDg0FuLC@J%a+%7_DRJ)=nHB_zADK};>1Zga{XeuM-G1}o% z=K&Gic1(NmO2rCo1XjYCZ-Y8{B#R4BheK0zbBU8T!AG#I7A7f_vx zY@I41A&rm$_o_ws*Huh3@IMZ*L3KOm80s?Mn`#B%A@$#Y=c!)+lHXL$DDiuC6iL-V z_!HEtd8=YGtzH5gbYN87AT}> zpMe1pq6G@sG>JlxEKo?*$jp)m$pVG!g5xA597ft`NI03lQEYl*4iF5xzJx+&6P-u- z*TrUz@ggxWjd`rLb7B=ah5)cRWdTH}uI=T;9n7pKs}$JqwFqcgd>Vjxi>NSljZ6uS zUX*qwlYT}OD?^DXTtNbuOP&dcyN}4<=wRls*Z5BzOkK=p;iMAN&f>`!ZKJu&Y+`R^ z9!eM0n-`awdfIR>&ZdkacG!R@qRggDvzQp@&1ZaOso7dAm-vQK^Hl4-6kBb(0y)!f zG#p#`A&7a30D>_adcFZjv*A34_>PWd0k)QZ?Pw;Z_M?2p#;ryg7mytm4VOFtzWZyQ z-^nZ#he-U2PG)AkrS^lJocX|&#-QWqhp9QRlS2WNmX1#Z13yybU_Zw~TiA?-{TvG| za5u$c>bM&232x3S$!q?1-`>REp z3l*fB#`k|<(8fZAK^#~3>aJ$JbkQi;9A~SAs&wwS^{0B67f;tnlPi3#r|DuEp}?8XO^He{?0hek-G7-<1iW8gxUR%T+hU8s$jh7 zRUS^lKDDKFJA#5QB6z1|C}07C?yEB+%CVRm3JJWTUre$x2+xuI19t-+$*MXjA|_e0 zsil}a&av)#c@ZhQEZ3o+)oX%z-fjS0Ld5eYrRK0V!Vga{Z&2&QD6FdxR1(oS&|=L$ zaUfby&Wg_`FtgoGy_3dPDCKssK=us?L8$&N@SsqPm}a5+1|UPIevo2H@eHNhnUqFW zNvZ{*`f_9hp?b2&ADLpN`mRP0inugBN2KSoW&ZILvxSp-kt#z@4r`(i#;#ob;k=jfx)57m-q{@-@KoJL@Q>+6pA# zEnW{6VAxLJ-L5iYq6CWUZOOfG^4`WLU1erq4{0epC&z9RU*Y{` zp&viRSI;uT>?j|4J-ij%JKKC31Kz8%%~3!#=a?HoaNitrFq^@%=9)JWGf&Jl;}G0A z*K8eo8uiPLMWn{4k*853*}J*3-b_iMg%aDrtYvTxEvpgezXb?FRz0t*kMMX+y_wO{ z!h9s6oZ!Vyh6^suO7RFAPbrE4$S2?o{z^USYl##-Rd2o`rrbzmm$SU%K+3VmEN7LJ z0vYl*Z!i;p%D=e5%o9gRJaN7`Im$x1k(D(eEuU{@)my+>thf;fnzL9p3JBS>?aXSK zpL&q=8P;`?Y-(A~dE{DF5XQ`IwTX`%)_!feBaSzVT<^nNY z=GsEMo(;UsLbFA74OQzTEBSVi*a{a(ex;TC48kV}M#&eNk9ue{Vl{_D&|pcQ=@t^_;Ycidw36z5C)lUvM@G<)cDt9dofay)*k*`az8T1UL3dM}YF z_yIgf8?z-9JM!(OOqhZ|)p10$C#jyaaUfw8a-@)+NFp4x4{h0XKFnL+W~TV9n1=&} zk(d~YnHnB-n>kU@HB`>y062uMGr>4HJ1i)ZVj?;Fl8dD}o^bv$^GJ?51Fxebto#qD z4%84X`rJ2vye~YF^^f%;u6)s475$%+fu>9p-fF+;=GwdF;){{UAl=>Xno}7+*~zen z2ft@7VBrq?%}xU?xh72lK1bn5FQOd^Oh$($l8*_!h@M399Loq1^dfFT&C^k;8q^aV zrCLsYx*&W=eh^2tF@d0?RC6KbBE1Of1XLELr=Uqksw@k25Wvt`Z?QFwQsrQ#L1(K5 zkl$7iR*>JW(ZF#b7kY&_Bz$dls9MFK{z86;WJ&He@K*4V@Wi+0@{Mgmu%k4W z{{f#rpC5AZp>0E5#M5*6{cS^i@O?Vj7WhNM9ScJ746~rY?JO$m;E7Mv^B>zG`IdTK z-5&mn_55z~57hJHNLKs zB$NSK#|ZJaT8zk?&9fQq%o((xqgk^c46|lhMG#c?vE)|D%pDMhMovAgDh-`K^|a(S zcY@fqt#$0FJp6NM=q=_PkDlXt0Nu#1@_n5`rhf>!8CKPFHWHTeX!lWS#hqoLq7m@` z*(N34K}}*;H^6IBKX{O0zD#&(GCl^wA2_KJ&8iFfJ>qA(S^H` z6u}O=dQ`TB(Nz?JT|LTSQ8b;xvcs+(VJ?lP8z=37Na)V!9x~ru5el+5`KgM~uwJCF z)Z&^2_9`N+hw{1rE+;>oI9S`O0tkimJ*hGhBj#GeR%mKVfKagQOWikPZ}J` zY?Q+Oy}i@FTHXKK&&vN~((VGA{&bIMqxf<8cYh8Je>pTHsosfoqw21iR6AkRlrhsM zPZ%%o=nth>?id{!c+t1UV)d6Xq0ZrvqeDHJHhm&CAOf(V&r8OJzJe{u&=VKozZ6Pp z%hLykQo=pPhcaS=x1r+bdvt<)d`n1Cl)gs`P>H0cx62m3gaz}YzK=t<^JOt;DWx7i`ny&92MH%8jIen?8@dG{pByw{wNi2-!loKRohFgt{! zKXXDWv2GnRH&iE{YsWvDivfB?5znrNzpIGPst;we2l$hpiatK`b0wO;UXM|;7T>*k zvViB~_J)v`o#A?HN<7b_XFIQG2(`f8!X$Xg>K0AotGK5Hf3_i%p?m|;%{@H&71dB0 aO0nqXbn543eO?GI1Fl6_pO^W;wEqX)P(F14 delta 201241 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 BchLX< diff --git a/libraries/DNSServer/examples/CaptivePortal/CaptivePortal.ino b/libraries/DNSServer/examples/CaptivePortal/CaptivePortal.ino new file mode 100644 index 0000000..6774fff --- /dev/null +++ b/libraries/DNSServer/examples/CaptivePortal/CaptivePortal.ino @@ -0,0 +1,36 @@ +#include +#include +#include + +const byte DNS_PORT = 53; +IPAddress apIP(172, 217, 28, 1); +DNSServer dnsServer; +WebServer webServer(80); + +String responseHTML = "" + "" + "" + "CaptivePortal" + "

    Hello World!

    This is a captive portal example." + " All requests will be redirected here.

    "; + +void setup() { + WiFi.mode(WIFI_AP); + WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0)); + WiFi.softAP("DNSServer CaptivePortal example"); + + // if DNSServer is started with "*" for domain name, it will reply with + // provided IP to all DNS request + dnsServer.start(DNS_PORT, "*", apIP); + + // replay to all requests with same HTML + webServer.onNotFound([]() { + webServer.send(200, "text/html", responseHTML); + }); + webServer.begin(); +} + +void loop() { + dnsServer.processNextRequest(); + webServer.handleClient(); +} diff --git a/libraries/DNSServer/examples/CaptivePortalAdvanced/CaptivePortalAdvanced.ino b/libraries/DNSServer/examples/CaptivePortalAdvanced/CaptivePortalAdvanced.ino new file mode 100644 index 0000000..9897d5f --- /dev/null +++ b/libraries/DNSServer/examples/CaptivePortalAdvanced/CaptivePortalAdvanced.ino @@ -0,0 +1,143 @@ +#include +#include +#include +#include +#include +#include + +/* + This example serves a "hello world" on a WLAN and a SoftAP at the same time. + The SoftAP allow you to configure WLAN parameters at run time. They are not setup in the sketch but saved on EEPROM. + + Connect your computer or cell phone to wifi network pico_ap with password 12345678. A popup may appear and it allow you to go to WLAN config. If it does not then navigate to http://192.168.4.1/wifi and config it there. + Then wait for the module to connect to your wifi and take note of the WLAN IP it got. Then you can disconnect from pico_ap and return to your regular WLAN. + + Now the Pico is in your network. You can reach it through http://192.168.x.x/ (the IP you took note of) or maybe at http://picow.local too. + + This is a captive portal because through the softAP it will redirect any http request to http://192.168.4.1/ +*/ + +/* Set these to your desired softAP credentials. They are not configurable at runtime */ +#ifndef APSSID +#define APSSID "pico_ap" +#define APPSK "12345678" +#endif + +const char *softAP_ssid = APSSID; +const char *softAP_password = APPSK; + +/* hostname for mDNS. Should work at least on windows. Try http://picow.local */ +const char *myHostname = "picow"; + +/* Don't set this wifi credentials. They are configurated at runtime and stored on EEPROM */ +char ssid[33] = ""; +char password[65] = ""; + +// DNS server +const byte DNS_PORT = 53; +DNSServer dnsServer; + +// Web server +WebServer server(80); + +/* Soft AP network parameters */ +IPAddress apIP(172, 217, 28, 1); +IPAddress netMsk(255, 255, 255, 0); + + +/** Should I connect to WLAN asap? */ +boolean connect; + +/** Last time I tried to connect to WLAN */ +unsigned long lastConnectTry = 0; + +/** Current WLAN status */ +unsigned int status = WL_IDLE_STATUS; + +void setup() { + delay(1000); + Serial.begin(115200); + Serial.println(); + Serial.println("Configuring access point..."); + /* You can remove the password parameter if you want the AP to be open. */ + WiFi.softAPConfig(apIP, apIP, netMsk); + WiFi.softAP(softAP_ssid, softAP_password); + delay(500); // Without delay I've seen the IP address blank + Serial.print("AP IP address: "); + Serial.println(WiFi.softAPIP()); + + /* Setup the DNS server redirecting all the domains to the apIP */ + dnsServer.setErrorReplyCode(DNSReplyCode::NoError); + dnsServer.start(DNS_PORT, "*", apIP); + + /* Setup web pages: root, wifi config pages, SO captive portal detectors and not found. */ + server.on("/", handleRoot); + server.on("/wifi", handleWifi); + server.on("/wifisave", handleWifiSave); + server.on("/generate_204", handleRoot); // Android captive portal. Maybe not needed. Might be handled by notFound handler. + server.on("/fwlink", handleRoot); // Microsoft captive portal. Maybe not needed. Might be handled by notFound handler. + server.onNotFound(handleNotFound); + server.begin(); // Web server start + Serial.println("HTTP server started"); + //loadCredentials(); // Load WLAN credentials from network + ssid[0] = 0; + password[0] = 0; + connect = strlen(ssid) > 0; // Request WLAN connect if there is a SSID +} + +void connectWifi() { + Serial.println("Connecting as wifi client..."); + WiFi.disconnect(); + WiFi.end(); + WiFi.begin(ssid, password); + int connRes = WiFi.waitForConnectResult(); + Serial.print("connRes: "); + Serial.println(connRes); +} + +void loop() { + if (connect) { + Serial.println("Connect requested"); + connect = false; + connectWifi(); + lastConnectTry = millis(); + } + { + unsigned int s = WiFi.status(); + if (s == 0 && millis() > (lastConnectTry + 60000)) { + /* If WLAN disconnected and idle try to connect */ + /* Don't set retry time too low as retry interfere the softAP operation */ + connect = true; + } + if (status != s) { // WLAN status change + Serial.print("Status: "); + Serial.println(s); + status = s; + if (s == WL_CONNECTED) { + /* Just connected to WLAN */ + Serial.println(""); + Serial.print("Connected to "); + Serial.println(ssid); + Serial.print("IP address: "); + Serial.println(WiFi.localIP()); + + // Setup MDNS responder + if (!MDNS.begin(myHostname)) { + Serial.println("Error setting up MDNS responder!"); + } else { + Serial.println("mDNS responder started"); + // Add service to MDNS-SD + MDNS.addService("http", "tcp", 80); + } + } else if (s == WL_NO_SSID_AVAIL) { + WiFi.disconnect(); + } + } + if (s == WL_CONNECTED) { MDNS.update(); } + } + // Do work: + // DNS + dnsServer.processNextRequest(); + // HTTP + server.handleClient(); +} diff --git a/libraries/DNSServer/examples/CaptivePortalAdvanced/credentials.ino b/libraries/DNSServer/examples/CaptivePortalAdvanced/credentials.ino new file mode 100644 index 0000000..a5e76fb --- /dev/null +++ b/libraries/DNSServer/examples/CaptivePortalAdvanced/credentials.ino @@ -0,0 +1,27 @@ +/** Load WLAN credentials from EEPROM */ +void loadCredentials() { + EEPROM.begin(512); + EEPROM.get(0, ssid); + EEPROM.get(0 + sizeof(ssid), password); + char ok[2 + 1]; + EEPROM.get(0 + sizeof(ssid) + sizeof(password), ok); + EEPROM.end(); + if (String(ok) != String("OK")) { + ssid[0] = 0; + password[0] = 0; + } + Serial.println("Recovered credentials:"); + Serial.println(ssid); + Serial.println(strlen(password) > 0 ? "********" : ""); +} + +/** Store WLAN credentials to EEPROM */ +void saveCredentials() { + EEPROM.begin(512); + EEPROM.put(0, ssid); + EEPROM.put(0 + sizeof(ssid), password); + char ok[2 + 1] = "OK"; + EEPROM.put(0 + sizeof(ssid) + sizeof(password), ok); + EEPROM.commit(); + EEPROM.end(); +} diff --git a/libraries/DNSServer/examples/CaptivePortalAdvanced/handleHttp.ino b/libraries/DNSServer/examples/CaptivePortalAdvanced/handleHttp.ino new file mode 100644 index 0000000..aec2556 --- /dev/null +++ b/libraries/DNSServer/examples/CaptivePortalAdvanced/handleHttp.ino @@ -0,0 +1,122 @@ +/** Handle root or redirect to captive portal */ +void handleRoot() { + if (captivePortal()) { // If caprive portal redirect instead of displaying the page. + return; + } + server.sendHeader("Cache-Control", "no-cache, no-store, must-revalidate"); + server.sendHeader("Pragma", "no-cache"); + server.sendHeader("Expires", "-1"); + + String Page; + Page += F("" + "" + "CaptivePortal" + "

    HELLO WORLD!!

    "); + if (server.client().localIP() == apIP) { + Page += String(F("

    You are connected through the soft AP: ")) + softAP_ssid + F("

    "); + } else { + Page += String(F("

    You are connected through the wifi network: ")) + ssid + F("

    "); + } + Page += F("

    You may want to config the wifi connection.

    " + ""); + + server.send(200, "text/html", Page); +} + +/** Redirect to captive portal if we got a request for another domain. Return true in that case so the page handler do not try to handle the request again. */ +boolean captivePortal() { + if (!isIp(server.hostHeader()) && server.hostHeader() != (String(myHostname) + ".local")) { + Serial.println("Request redirected to captive portal"); + server.sendHeader("Location", String("http://") + toStringIp(server.client().localIP()), true); + server.send(302, "text/plain", ""); // Empty content inhibits Content-length header so we have to close the socket ourselves. + server.client().stop(); // Stop is needed because we sent no content length + return true; + } + return false; +} + +/** Wifi config page handler */ +void handleWifi() { + server.sendHeader("Cache-Control", "no-cache, no-store, must-revalidate"); + server.sendHeader("Pragma", "no-cache"); + server.sendHeader("Expires", "-1"); + + String Page; + Page += F("" + "" + "CaptivePortal" + "

    Wifi config

    "); + if (server.client().localIP() == apIP) { + Page += String(F("

    You are connected through the soft AP: ")) + softAP_ssid + F("

    "); + } else { + Page += String(F("

    You are connected through the wifi network: ")) + ssid + F("

    "); + } + Page += String(F("\r\n
    " + "" + "" + "" + "
    SoftAP config
    SSID ")) + + String(softAP_ssid) + F("
    IP ") + + toStringIp(WiFi.softAPIP()) + F("
    " + "\r\n
    " + "" + "" + "" + "
    WLAN config
    SSID ") + + String(ssid) + F("
    IP ") + + toStringIp(WiFi.localIP()) + F("
    " + "\r\n
    " + ""); + Serial.println("scan start"); + int n = WiFi.scanNetworks(); + Serial.println("scan done"); + if (n > 0) { + for (int i = 0; i < n; i++) { Page += String(F("\r\n"); } + } else { + Page += F(""); + } + Page += F("
    WLAN list (refresh if any missing)
    SSID ")) + WiFi.SSID(i) + ((WiFi.encryptionType(i) == ENC_TYPE_NONE) ? F(" ") : F(" *")) + F(" (") + WiFi.RSSI(i) + F(")
    No WLAN found
    " + "\r\n

    Connect to network:

    " + "" + "
    " + "
    " + "

    You may want to return to the home page.

    " + ""); + server.send(200, "text/html", Page); + server.client().stop(); // Stop is needed because we sent no content length +} + +/** Handle the WLAN save form and redirect to WLAN config page again */ +void handleWifiSave() { + Serial.println("wifi save"); + server.arg("n").toCharArray(ssid, sizeof(ssid) - 1); + server.arg("p").toCharArray(password, sizeof(password) - 1); + server.sendHeader("Location", "wifi", true); + server.sendHeader("Cache-Control", "no-cache, no-store, must-revalidate"); + server.sendHeader("Pragma", "no-cache"); + server.sendHeader("Expires", "-1"); + server.send(302, "text/plain", ""); // Empty content inhibits Content-length header so we have to close the socket ourselves. + server.client().stop(); // Stop is needed because we sent no content length + saveCredentials(); + connect = strlen(ssid) > 0; // Request WLAN connect with new credentials if there is a SSID +} + +void handleNotFound() { + if (captivePortal()) { // If caprive portal redirect instead of displaying the error page. + return; + } + String message = F("File Not Found\n\n"); + message += F("URI: "); + message += server.uri(); + message += F("\nMethod: "); + message += (server.method() == HTTP_GET) ? "GET" : "POST"; + message += F("\nArguments: "); + message += server.args(); + message += F("\n"); + + for (uint8_t i = 0; i < server.args(); i++) { message += String(F(" ")) + server.argName(i) + F(": ") + server.arg(i) + F("\n"); } + server.sendHeader("Cache-Control", "no-cache, no-store, must-revalidate"); + server.sendHeader("Pragma", "no-cache"); + server.sendHeader("Expires", "-1"); + server.send(404, "text/plain", message); +} diff --git a/libraries/DNSServer/examples/CaptivePortalAdvanced/tools.ino b/libraries/DNSServer/examples/CaptivePortalAdvanced/tools.ino new file mode 100644 index 0000000..65219bd --- /dev/null +++ b/libraries/DNSServer/examples/CaptivePortalAdvanced/tools.ino @@ -0,0 +1,16 @@ +/** Is this an IP? */ +boolean isIp(String str) { + for (size_t i = 0; i < str.length(); i++) { + int c = str.charAt(i); + if (c != '.' && (c < '0' || c > '9')) { return false; } + } + return true; +} + +/** IP to String? */ +String toStringIp(IPAddress ip) { + String res = ""; + for (int i = 0; i < 3; i++) { res += String((ip >> (8 * i)) & 0xFF) + "."; } + res += String(((ip >> 8 * 3)) & 0xFF); + return res; +} diff --git a/libraries/DNSServer/examples/DNSServer/DNSServer.ino b/libraries/DNSServer/examples/DNSServer/DNSServer.ino new file mode 100644 index 0000000..ee72367 --- /dev/null +++ b/libraries/DNSServer/examples/DNSServer/DNSServer.ino @@ -0,0 +1,41 @@ +#include +#include +#include + +const byte DNS_PORT = 53; +IPAddress apIP(172, 217, 28, 1); +DNSServer dnsServer; +WebServer webServer(80); + +void setup() { + WiFi.mode(WIFI_AP); + WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0)); + WiFi.softAP("picow", "12345678"); + + // modify TTL associated with the domain name (in seconds) + // default is 60 seconds + dnsServer.setTTL(300); + // set which return code will be used for all other domains (e.g. sending + // ServerFailure instead of NonExistentDomain will reduce number of queries + // sent by clients) + // default is DNSReplyCode::NonExistentDomain + dnsServer.setErrorReplyCode(DNSReplyCode::ServerFailure); + + // start DNS server for a specific domain name + dnsServer.start(DNS_PORT, "www.example.com", apIP); + + // simple HTTP server to see that DNS server is working + webServer.onNotFound([]() { + String message = "Hello World!\n\n"; + message += "URI: "; + message += webServer.uri(); + + webServer.send(200, "text/plain", message); + }); + webServer.begin(); +} + +void loop() { + dnsServer.processNextRequest(); + webServer.handleClient(); +} diff --git a/libraries/HTTPUpdate/src/HTTPUpdate.cpp b/libraries/HTTPUpdate/src/HTTPUpdate.cpp index 48ad465..d65ac22 100755 --- a/libraries/HTTPUpdate/src/HTTPUpdate.cpp +++ b/libraries/HTTPUpdate/src/HTTPUpdate.cpp @@ -165,19 +165,19 @@ HTTPUpdateResult HTTPUpdate::handleUpdate(HTTPClient& http, const String& curren http.useHTTP10(true); http.setTimeout(_httpClientTimeout); http.setFollowRedirects(_followRedirects); - http.setUserAgent(F("-http-Update")); - http.addHeader(F("x--Chip-ID"), String(rp2040.getChipID())); - http.addHeader(F("x--STA-MAC"), WiFi.macAddress()); - http.addHeader(F("x--AP-MAC"), WiFi.softAPmacAddress()); + http.setUserAgent(F("Pico-HTTP-Update")); + http.addHeader(F("x-Pico-Chip-ID"), String(rp2040.getChipID())); + http.addHeader(F("x-Pico-STA-MAC"), WiFi.macAddress()); + http.addHeader(F("x-Pico-AP-MAC"), WiFi.softAPmacAddress()); if (spiffs) { - http.addHeader(F("x--mode"), F("spiffs")); + http.addHeader(F("x-Pico-Mode"), F("spiffs")); } else { - http.addHeader(F("x--mode"), F("sketch")); + http.addHeader(F("x-Pico-Mode"), F("sketch")); } if (currentVersion && currentVersion[0] != 0x00) { - http.addHeader(F("x--version"), currentVersion); + http.addHeader(F("x-Pico-Version"), currentVersion); } if (_user != "" && _password != "") { diff --git a/libraries/HTTPUpdateServer/examples/SecureBearSSLUpdater/SecureBearSSLUpdater.ino b/libraries/HTTPUpdateServer/examples/SecureBearSSLUpdater/SecureBearSSLUpdater.ino new file mode 100644 index 0000000..ba73a51 --- /dev/null +++ b/libraries/HTTPUpdateServer/examples/SecureBearSSLUpdater/SecureBearSSLUpdater.ino @@ -0,0 +1,122 @@ +/* + SecureBearSSLUpdater - SSL encrypted, password-protected firmware update + + This example starts a HTTPS server on the Pico to allow firmware updates + to be performed. All communication, including the username and password, + is encrypted via SSL. Be sure to update the SSID and PASSWORD before running + to allow connection to your WiFi network. + + To upload through terminal you can use: + curl -u admin:admin -F "image=@firmware.bin" picow-webupdate.local/firmware + + Adapted by Earle F. Philhower, III, from the SecureWebUpdater.ino example. + This example is released into the public domain. +*/ + +#include +#include +#include +#include +#include + +#ifndef STASSID +#define STASSID "your-ssid" +#define STAPSK "your-password" +#endif + +const char* host = "picow-webupdate"; +const char* update_path = "/firmware"; +const char* update_username = "admin"; +const char* update_password = "admin"; +const char* ssid = STASSID; +const char* password = STAPSK; + +WebServerSecure httpServer(443); +HTTPUpdateServerSecure httpUpdater; + +static const char serverCert[] PROGMEM = R"EOF( +-----BEGIN CERTIFICATE----- +MIIDSzCCAjMCCQD2ahcfZAwXxDANBgkqhkiG9w0BAQsFADCBiTELMAkGA1UEBhMC +VVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU9yYW5nZSBDb3VudHkx +EDAOBgNVBAoMB1ByaXZhZG8xGjAYBgNVBAMMEXNlcnZlci56bGFiZWwuY29tMR8w +HQYJKoZIhvcNAQkBFhBlYXJsZUB6bGFiZWwuY29tMB4XDTE4MDMwNjA1NDg0NFoX +DTE5MDMwNjA1NDg0NFowRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3Rh +dGUxITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAPVKBwbZ+KDSl40YCDkP6y8Sv4iNGvEOZg8Y +X7sGvf/xZH7UiCBWPFIRpNmDSaZ3yjsmFqm6sLiYSGSdrBCFqdt9NTp2r7hga6Sj +oASSZY4B9pf+GblDy5m10KDx90BFKXdPMCLT+o76Nx9PpCvw13A848wHNG3bpBgI +t+w/vJCX3bkRn8yEYAU6GdMbYe7v446hX3kY5UmgeJFr9xz1kq6AzYrMt/UHhNzO +S+QckJaY0OGWvmTNspY3xCbbFtIDkCdBS8CZAw+itnofvnWWKQEXlt6otPh5njwy ++O1t/Q+Z7OMDYQaH02IQx3188/kW3FzOY32knER1uzjmRO+jhA8CAwEAATANBgkq +hkiG9w0BAQsFAAOCAQEAnDrROGRETB0woIcI1+acY1yRq4yAcH2/hdq2MoM+DCyM +E8CJaOznGR9ND0ImWpTZqomHOUkOBpvu7u315blQZcLbL1LfHJGRTCHVhvVrcyEb +fWTnRtAQdlirUm/obwXIitoz64VSbIVzcqqfg9C6ZREB9JbEX98/9Wp2gVY+31oC +JfUvYadSYxh3nblvA4OL+iEZiW8NE3hbW6WPXxvS7Euge0uWMPc4uEcnsE0ZVG3m ++TGimzSdeWDvGBRWZHXczC2zD4aoE5vrl+GD2i++c6yjL/otHfYyUpzUfbI2hMAA +5tAF1D5vAAwA8nfPysumlLsIjohJZo4lgnhB++AlOg== +-----END CERTIFICATE----- +)EOF"; + +static const char serverKey[] PROGMEM = R"EOF( +-----BEGIN RSA PRIVATE KEY----- +MIIEpQIBAAKCAQEA9UoHBtn4oNKXjRgIOQ/rLxK/iI0a8Q5mDxhfuwa9//FkftSI +IFY8UhGk2YNJpnfKOyYWqbqwuJhIZJ2sEIWp2301OnavuGBrpKOgBJJljgH2l/4Z +uUPLmbXQoPH3QEUpd08wItP6jvo3H0+kK/DXcDzjzAc0bdukGAi37D+8kJfduRGf +zIRgBToZ0xth7u/jjqFfeRjlSaB4kWv3HPWSroDNisy39QeE3M5L5ByQlpjQ4Za+ +ZM2yljfEJtsW0gOQJ0FLwJkDD6K2eh++dZYpAReW3qi0+HmePDL47W39D5ns4wNh +BofTYhDHfXzz+RbcXM5jfaScRHW7OOZE76OEDwIDAQABAoIBAQDKov5NFbNFQNR8 +djcM1O7Is6dRaqiwLeH4ZH1pZ3d9QnFwKanPdQ5eCj9yhfhJMrr5xEyCqT0nMn7T +yEIGYDXjontfsf8WxWkH2TjvrfWBrHOIOx4LJEvFzyLsYxiMmtZXvy6YByD+Dw2M +q2GH/24rRdI2klkozIOyazluTXU8yOsSGxHr/aOa9/sZISgLmaGOOuKI/3Zqjdhr +eHeSqoQFt3xXa8jw01YubQUDw/4cv9rk2ytTdAoQUimiKtgtjsggpP1LTq4xcuqN +d4jWhTcnorWpbD2cVLxrEbnSR3VuBCJEZv5axg5ZPxLEnlcId8vMtvTRb5nzzszn +geYUWDPhAoGBAPyKVNqqwQl44oIeiuRM2FYenMt4voVaz3ExJX2JysrG0jtCPv+Y +84R6Cv3nfITz3EZDWp5sW3OwoGr77lF7Tv9tD6BptEmgBeuca3SHIdhG2MR+tLyx +/tkIAarxQcTGsZaSqra3gXOJCMz9h2P5dxpdU+0yeMmOEnAqgQ8qtNBfAoGBAPim +RAtnrd0WSlCgqVGYFCvDh1kD5QTNbZc+1PcBHbVV45EmJ2fLXnlDeplIZJdYxmzu +DMOxZBYgfeLY9exje00eZJNSj/csjJQqiRftrbvYY7m5njX1kM5K8x4HlynQTDkg +rtKO0YZJxxmjRTbFGMegh1SLlFLRIMtehNhOgipRAoGBAPnEEpJGCS9GGLfaX0HW +YqwiEK8Il12q57mqgsq7ag7NPwWOymHesxHV5mMh/Dw+NyBi4xAGWRh9mtrUmeqK +iyICik773Gxo0RIqnPgd4jJWN3N3YWeynzulOIkJnSNx5BforOCTc3uCD2s2YB5X +jx1LKoNQxLeLRN8cmpIWicf/AoGBANjRSsZTKwV9WWIDJoHyxav/vPb+8WYFp8lZ +zaRxQbGM6nn4NiZI7OF62N3uhWB/1c7IqTK/bVHqFTuJCrCNcsgld3gLZ2QWYaMV +kCPgaj1BjHw4AmB0+EcajfKilcqtSroJ6MfMJ6IclVOizkjbByeTsE4lxDmPCDSt +/9MKanBxAoGAY9xo741Pn9WUxDyRplww606ccdNf/ksHWNc/Y2B5SPwxxSnIq8nO +j01SmsCUYVFAgZVOTiiycakjYLzxlc6p8BxSVqy6LlJqn95N8OXoQ+bkwUux/ekg +gz5JWYhbD6c38khSzJb0pNXCo3EuYAVa36kDM96k1BtWuhRS10Q1VXk= +-----END RSA PRIVATE KEY----- +)EOF"; + + +void setup() { + + Serial.begin(115200); + Serial.println(); + Serial.println("Booting Sketch..."); + WiFi.mode(WIFI_STA); + WiFi.begin(ssid, password); + + while (WiFi.waitForConnectResult() != WL_CONNECTED) { + WiFi.begin(ssid, password); + Serial.println("WiFi failed, retrying."); + } + + configTime(3 * 3600, 0, "pool.ntp.org", "time.nist.gov"); + + MDNS.begin(host); + + httpServer.getServer().setRSACert(new BearSSL::X509List(serverCert), new BearSSL::PrivateKey(serverKey)); + httpUpdater.setup(&httpServer, update_path, update_username, update_password); + httpServer.begin(); + + MDNS.addService("https", "tcp", 443); + Serial.printf("BearSSLUpdateServer ready!\nOpen https://%s.local%s in " + "your browser and login with username '%s' and password " + "'%s'\n", + host, update_path, update_username, update_password); +} + +void loop() { + httpServer.handleClient(); + MDNS.update(); +} diff --git a/libraries/HTTPUpdateServer/examples/WebUpdater/WebUpdater.ino b/libraries/HTTPUpdateServer/examples/WebUpdater/WebUpdater.ino new file mode 100644 index 0000000..54178a7 --- /dev/null +++ b/libraries/HTTPUpdateServer/examples/WebUpdater/WebUpdater.ino @@ -0,0 +1,48 @@ +/* + To upload through terminal you can use: curl -F "image=@firmware.bin" picow-webupdate.local/update +*/ + +#include +#include +#include +#include +#include + +#ifndef STASSID +#define STASSID "your-ssid" +#define STAPSK "your-password" +#endif + +const char* host = "picow-webupdate"; +const char* ssid = STASSID; +const char* password = STAPSK; + +WebServer httpServer(80); +HTTPUpdateServer httpUpdater; + +void setup(void) { + + Serial.begin(115200); + Serial.println(); + Serial.println("Booting Sketch..."); + WiFi.mode(WIFI_STA); + WiFi.begin(ssid, password); + + while (WiFi.waitForConnectResult() != WL_CONNECTED) { + WiFi.begin(ssid, password); + Serial.println("WiFi failed, retrying."); + } + + MDNS.begin(host); + + httpUpdater.setup(&httpServer); + httpServer.begin(); + + MDNS.addService("http", "tcp", 80); + Serial.printf("HTTPUpdateServer ready! Open http://%s.local/update in your browser\n", host); +} + +void loop(void) { + httpServer.handleClient(); + MDNS.update(); +} diff --git a/libraries/HTTPUpdateServer/examples/WebUpdaterAuth/WebUpdaterAuth.ino b/libraries/HTTPUpdateServer/examples/WebUpdaterAuth/WebUpdaterAuth.ino new file mode 100644 index 0000000..a7ca3e2 --- /dev/null +++ b/libraries/HTTPUpdateServer/examples/WebUpdaterAuth/WebUpdaterAuth.ino @@ -0,0 +1,51 @@ +/* + To upload through terminal you can use: curl -u admin:admin -F "image=@firmware.bin" picow-webupdate.local/firmware +*/ + +#include +#include +#include +#include +#include + +#ifndef STASSID +#define STASSID "your-ssid" +#define STAPSK "your-password" +#endif + +const char* host = "picow-webupdate"; +const char* update_path = "/firmware"; +const char* update_username = "admin"; +const char* update_password = "admin"; +const char* ssid = STASSID; +const char* password = STAPSK; + +WebServer httpServer(80); +HTTPUpdateServer httpUpdater; + +void setup(void) { + + Serial.begin(115200); + Serial.println(); + Serial.println("Booting Sketch..."); + WiFi.mode(WIFI_STA); + WiFi.begin(ssid, password); + + while (WiFi.waitForConnectResult() != WL_CONNECTED) { + WiFi.begin(ssid, password); + Serial.println("WiFi failed, retrying."); + } + + MDNS.begin(host); + + httpUpdater.setup(&httpServer, update_path, update_username, update_password); + httpServer.begin(); + + MDNS.addService("http", "tcp", 80); + Serial.printf("HTTPUpdateServer ready! Open http://%s.local%s in your browser and login with username '%s' and password '%s'\n", host, update_path, update_username, update_password); +} + +void loop(void) { + httpServer.handleClient(); + MDNS.update(); +} diff --git a/libraries/HTTPUpdateServer/keywords.txt b/libraries/HTTPUpdateServer/keywords.txt new file mode 100644 index 0000000..1c2c6d5 --- /dev/null +++ b/libraries/HTTPUpdateServer/keywords.txt @@ -0,0 +1,21 @@ +####################################### +# Syntax Coloring Map For HTTPUpdateServer +####################################### + +####################################### +# Datatypes (KEYWORD1) +####################################### + +HTTPUpdateServer KEYWORD1 +HTTPUpdateServerSecure KEYWORD1 + +####################################### +# Methods and Functions (KEYWORD2) +####################################### + +begin KEYWORD2 +setup KEYWORD2 + +####################################### +# Constants (LITERAL1) +####################################### diff --git a/libraries/HTTPUpdateServer/library.properties b/libraries/HTTPUpdateServer/library.properties new file mode 100644 index 0000000..fb201cf --- /dev/null +++ b/libraries/HTTPUpdateServer/library.properties @@ -0,0 +1,10 @@ +name=HTTPUpdateServer +version=1.0 +author=Ivan Grokhotkov, Miguel Angel Ajo +maintainer=Earle F. Philhower, III +sentence=Simple HTTP Update server based on the Pico WebServer +paragraph=The library accepts HTTP post requests to the /update url, and updates the Pico firmware. +category=Communication +url=https://github.com/earlephilhower/arduino-pico +architectures=rp2040 +dot_a_linkage=false diff --git a/libraries/HTTPUpdateServer/src/HTTPUpdateServer-impl.h b/libraries/HTTPUpdateServer/src/HTTPUpdateServer-impl.h new file mode 100644 index 0000000..46526f1 --- /dev/null +++ b/libraries/HTTPUpdateServer/src/HTTPUpdateServer-impl.h @@ -0,0 +1,161 @@ +#pragma once + +#include +#include +#include +#include +#include +#include +#include "StreamString.h" +#include "HTTPUpdateServer.h" + +extern uint8_t _FS_start; +extern uint8_t _FS_end; + + +static const char serverIndex[] PROGMEM = + R"( + + + + + + +
    + Firmware:
    + + +
    +
    + FileSystem:
    + + +
    + + )"; +static const char successResponse[] PROGMEM = + "Update Success! Rebooting..."; + +template +HTTPUpdateServerTemplate::HTTPUpdateServerTemplate(bool serial_debug) { + _serial_output = serial_debug; + _server = NULL; + _username = ""; + _password = ""; + _authenticated = false; +} + +template +void HTTPUpdateServerTemplate::setup(WebServerTemplate *server, const String& path, const String& username, const String& password) { + _server = server; + _username = username; + _password = password; + + // handler for the /update form page + _server->on(path.c_str(), HTTP_GET, [&]() { + if (_username != "" && _password != "" && !_server->authenticate(_username.c_str(), _password.c_str())) { + return _server->requestAuthentication(); + } + _server->send_P(200, PSTR("text/html"), serverIndex); + }); + + // handler for the /update form page - preflight options + _server->on(path.c_str(), HTTP_OPTIONS, [&]() { + _server->sendHeader("Access-Control-Allow-Headers", "*"); + _server->sendHeader("Access-Control-Allow-Origin", "*"); + _server->send(200, F("text/html"), String(F("y"))); + }, [&]() { + _authenticated = (_username == "" || _password == "" || _server->authenticate(_username.c_str(), _password.c_str())); + if (!_authenticated) { + if (_serial_output) { + Serial.printf("Unauthenticated Update\n"); + } + return; + } + }); + + // handler for the /update form POST (once file upload finishes) + _server->on(path.c_str(), HTTP_POST, [&]() { + _server->sendHeader("Access-Control-Allow-Headers", "*"); + _server->sendHeader("Access-Control-Allow-Origin", "*"); + if (!_authenticated) { + return _server->requestAuthentication(); + } + if (Update.hasError()) { + _server->send(200, F("text/html"), String(F("Update error: ")) + _updaterError); + } else { + _server->client().setNoDelay(true); + _server->send_P(200, PSTR("text/html"), successResponse); + delay(100); + _server->client().stop(); + rp2040.restart(); + } + }, [&]() { + // handler for the file upload, gets the sketch bytes, and writes + // them through the Update object + HTTPUpload& upload = _server->upload(); + + if (upload.status == UPLOAD_FILE_START) { + _updaterError = ""; + + _authenticated = (_username == "" || _password == "" || _server->authenticate(_username.c_str(), _password.c_str())); + if (!_authenticated) { + if (_serial_output) { + Serial.printf("Unauthenticated Update\n"); + } + return; + } + + if (_serial_output) { + Serial.printf("Update: %s\n", upload.filename.c_str()); + } + if (upload.name == "filesystem") { + size_t fsSize = ((size_t)&_FS_end - (size_t)&_FS_start); + LittleFS.end(); + if (!Update.begin(fsSize, U_FS)) { //start with max available size + if (_serial_output) { + Update.printError(Serial); + } + } + } else { + FSInfo64 i; + LittleFS.begin(); + LittleFS.info64(i); + uint32_t maxSketchSpace = i.totalBytes - i.usedBytes; + if (!Update.begin(maxSketchSpace, U_FLASH)) { //start with max available size + _setUpdaterError(); + } + } + } else if (_authenticated && upload.status == UPLOAD_FILE_WRITE && !_updaterError.length()) { + if (_serial_output) { + Serial.printf("."); + } + if (Update.write(upload.buf, upload.currentSize) != upload.currentSize) { + _setUpdaterError(); + } + } else if (_authenticated && upload.status == UPLOAD_FILE_END && !_updaterError.length()) { + if (Update.end(true)) { //true to set the size to the current progress + if (_serial_output) { + Serial.printf("Update Success: %zu\nRebooting...\n", upload.totalSize); + } + } else { + _setUpdaterError(); + } + } else if (_authenticated && upload.status == UPLOAD_FILE_ABORTED) { + Update.end(); + if (_serial_output) { + Serial.println("Update was aborted"); + } + } + }); +} + +template +void HTTPUpdateServerTemplate::_setUpdaterError() { + if (_serial_output) { + Update.printError(Serial); + } + StreamString str; + Update.printError(str); + _updaterError = str.c_str(); +} diff --git a/libraries/HTTPUpdateServer/src/HTTPUpdateServer.h b/libraries/HTTPUpdateServer/src/HTTPUpdateServer.h new file mode 100644 index 0000000..ef49cb2 --- /dev/null +++ b/libraries/HTTPUpdateServer/src/HTTPUpdateServer.h @@ -0,0 +1,44 @@ +#pragma once + +#include + +template +class HTTPUpdateServerTemplate { +public: + HTTPUpdateServerTemplate(bool serial_debug = false); + + void setup(WebServerTemplate *server) { + setup(server, "", ""); + } + + void setup(WebServerTemplate *server, const String& path) { + setup(server, path, "", ""); + } + + void setup(WebServerTemplate *server, const String& username, const String& password) { + setup(server, "/update", username, password); + } + + void setup(WebServerTemplate *server, const String& path, const String& username, const String& password); + + void updateCredentials(const String& username, const String& password) { + _username = username; + _password = password; + } + +protected: + void _setUpdaterError(); + +private: + bool _serial_output; + WebServerTemplate *_server; + String _username; + String _password; + bool _authenticated; + String _updaterError; +}; + +#include "HTTPUpdateServer-impl.h" + +using HTTPUpdateServer = HTTPUpdateServerTemplate; +using HTTPUpdateServerSecure = HTTPUpdateServerTemplate; diff --git a/libraries/WebServer/examples/AdvancedWebServer/AdvancedWebServer.ino b/libraries/WebServer/examples/AdvancedWebServer/AdvancedWebServer.ino new file mode 100644 index 0000000..7a95636 --- /dev/null +++ b/libraries/WebServer/examples/AdvancedWebServer/AdvancedWebServer.ino @@ -0,0 +1,152 @@ +/* + Copyright (c) 2015, Majenko Technologies + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or + other materials provided with the distribution. + + * * Neither the name of Majenko Technologies nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include +#include +#include +#include + +#ifndef STASSID +#define STASSID "your-ssid" +#define STAPSK "your-password" +#endif + +const char *ssid = STASSID; +const char *password = STAPSK; + +WebServer server(80); + +const int led = 13; + +void handleRoot() { + digitalWrite(led, 1); + char temp[400]; + int sec = millis() / 1000; + int min = sec / 60; + int hr = min / 60; + + snprintf(temp, 400, + + "\ + \ + \ + Pico-W Demo\ + \ + \ + \ +

    Hello from the Pico W!

    \ +

    Uptime: %02d:%02d:%02d

    \ + \ + \ +", + + hr, min % 60, sec % 60); + server.send(200, "text/html", temp); + digitalWrite(led, 0); +} + +void handleNotFound() { + digitalWrite(led, 1); + String message = "File Not Found\n\n"; + message += "URI: "; + message += server.uri(); + message += "\nMethod: "; + message += (server.method() == HTTP_GET) ? "GET" : "POST"; + message += "\nArguments: "; + message += server.args(); + message += "\n"; + + for (uint8_t i = 0; i < server.args(); i++) { + message += " " + server.argName(i) + ": " + server.arg(i) + "\n"; + } + + server.send(404, "text/plain", message); + digitalWrite(led, 0); +} + +void drawGraph() { + String out; + out.reserve(2600); + char temp[70]; + out += "\n"; + out += "\n"; + out += "\n"; + int y = rand() % 130; + for (int x = 10; x < 390; x += 10) { + int y2 = rand() % 130; + sprintf(temp, "\n", x, 140 - y, x + 10, 140 - y2); + out += temp; + y = y2; + } + out += "\n\n"; + + server.send(200, "image/svg+xml", out); +} + +void setup(void) { + pinMode(led, OUTPUT); + digitalWrite(led, 0); + Serial.begin(115200); + WiFi.mode(WIFI_STA); + WiFi.begin(ssid, password); + Serial.println(""); + + // Wait for connection + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + + Serial.println(""); + Serial.print("Connected to "); + Serial.println(ssid); + Serial.print("IP address: "); + Serial.println(WiFi.localIP()); + + if (MDNS.begin("picow")) { + Serial.println("MDNS responder started"); + } + + server.on("/", handleRoot); + server.on("/test.svg", drawGraph); + server.on("/inline", []() { + server.send(200, "text/plain", "this works as well"); + }); + server.onNotFound(handleNotFound); + server.begin(); + Serial.println("HTTP server started"); +} + +void loop(void) { + server.handleClient(); + MDNS.update(); +} diff --git a/libraries/WebServer/examples/FSBrowser/FSBrowser.ino b/libraries/WebServer/examples/FSBrowser/FSBrowser.ino new file mode 100644 index 0000000..53bd0f1 --- /dev/null +++ b/libraries/WebServer/examples/FSBrowser/FSBrowser.ino @@ -0,0 +1,634 @@ +/* + FSBrowser - A web-based FileSystem Browser for Pico filesystems + + Copyright (c) 2015 Hristo Gochkov. All rights reserved. + This file is part of the Pico WebServer library for Arduino environment. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + See readme.md for more information. +*/ + +//////////////////////////////// + +// Select the FileSystem by uncommenting one of the lines below + +//#define USE_SPIFFS +#define USE_LITTLEFS +//#define USE_SDFS + +// Uncomment the following line to embed a version of the web page in the code +// (program code will be larger, but no file will have to be written to the filesystem). +// Note: the source file "extras/index_htm.h" must have been generated by "extras/reduce_index.sh" + +#define INCLUDE_FALLBACK_INDEX_HTM + +//////////////////////////////// + +#include +#include +#include +#include +#include + +#ifdef INCLUDE_FALLBACK_INDEX_HTM +#include "extras/index_htm.h" +#endif + +#if defined USE_SPIFFS +#include +const char* fsName = "SPIFFS"; +FS* fileSystem = &SPIFFS; +SPIFFSConfig fileSystemConfig = SPIFFSConfig(); +#elif defined USE_LITTLEFS +#include +const char* fsName = "LittleFS"; +FS* fileSystem = &LittleFS; +LittleFSConfig fileSystemConfig = LittleFSConfig(); +#elif defined USE_SDFS +#include +const char* fsName = "SDFS"; +FS* fileSystem = &SDFS; +SDFSConfig fileSystemConfig = SDFSConfig(); +// fileSystemConfig.setCSPin(chipSelectPin); +#else +#error Please select a filesystem first by uncommenting one of the "#define USE_xxx" lines at the beginning of the sketch. +#endif + + +#define DBG_OUTPUT_PORT Serial + +#ifndef STASSID +#define STASSID "your-ssid" +#define STAPSK "your-password" +#endif + +const char* ssid = STASSID; +const char* password = STAPSK; +const char* host = "fsbrowser"; + +WebServer server(80); + +static bool fsOK; +String unsupportedFiles = String(); + +File uploadFile; + +static const char TEXT_PLAIN[] PROGMEM = "text/plain"; +static const char FS_INIT_ERROR[] PROGMEM = "FS INIT ERROR"; +static const char FILE_NOT_FOUND[] PROGMEM = "FileNotFound"; + +//////////////////////////////// +// Utils to return HTTP codes, and determine content-type + +void replyOK() { + server.send(200, FPSTR(TEXT_PLAIN), ""); +} + +void replyOKWithMsg(String msg) { + server.send(200, FPSTR(TEXT_PLAIN), msg); +} + +void replyNotFound(String msg) { + server.send(404, FPSTR(TEXT_PLAIN), msg); +} + +void replyBadRequest(String msg) { + DBG_OUTPUT_PORT.println(msg); + server.send(400, FPSTR(TEXT_PLAIN), msg + "\r\n"); +} + +void replyServerError(String msg) { + DBG_OUTPUT_PORT.println(msg); + server.send(500, FPSTR(TEXT_PLAIN), msg + "\r\n"); +} + +#ifdef USE_SPIFFS +/* + Checks filename for character combinations that are not supported by FSBrowser (alhtough valid on SPIFFS). + Returns an empty String if supported, or detail of error(s) if unsupported +*/ +String checkForUnsupportedPath(String filename) { + String error = String(); + if (!filename.startsWith("/")) { + error += F("!NO_LEADING_SLASH! "); + } + if (filename.indexOf("//") != -1) { + error += F("!DOUBLE_SLASH! "); + } + if (filename.endsWith("/")) { + error += F("!TRAILING_SLASH! "); + } + return error; +} +#endif + + +//////////////////////////////// +// Request handlers + +/* + Return the FS type, status and size info +*/ +void handleStatus() { + DBG_OUTPUT_PORT.println("handleStatus"); + FSInfo fs_info; + String json; + json.reserve(128); + + json = "{\"type\":\""; + json += fsName; + json += "\", \"isOk\":"; + if (fsOK) { + fileSystem->info(fs_info); + json += F("\"true\", \"totalBytes\":\""); + json += fs_info.totalBytes; + json += F("\", \"usedBytes\":\""); + json += fs_info.usedBytes; + json += "\""; + } else { + json += "\"false\""; + } + json += F(",\"unsupportedFiles\":\""); + json += unsupportedFiles; + json += "\"}"; + + server.send(200, "application/json", json); +} + + +/* + Return the list of files in the directory specified by the "dir" query string parameter. + Also demonstrates the use of chunked responses. +*/ +void handleFileList() { + if (!fsOK) { + return replyServerError(FPSTR(FS_INIT_ERROR)); + } + + if (!server.hasArg("dir")) { + return replyBadRequest(F("DIR ARG MISSING")); + } + + String path = server.arg("dir"); + if (path != "/" && !fileSystem->exists(path)) { + return replyBadRequest("BAD PATH"); + } + + DBG_OUTPUT_PORT.println(String("handleFileList: ") + path); + Dir dir = fileSystem->openDir(path); + path = ""; + + // use HTTP/1.1 Chunked response to avoid building a huge temporary string + if (!server.chunkedResponseModeStart(200, "text/json")) { + server.send(505, F("text/html"), F("HTTP1.1 required")); + return; + } + + // use the same string for every line + String output; + output.reserve(64); + while (dir.next()) { +#ifdef USE_SPIFFS + String error = checkForUnsupportedPath(dir.fileName()); + if (error.length() > 0) { + DBG_OUTPUT_PORT.println(String("Ignoring ") + error + dir.fileName()); + continue; + } +#endif + if (output.length()) { + // send string from previous iteration + // as an HTTP chunk + Serial.println(output); + server.sendContent(output); + output = ','; + } else { + output = '['; + } + + output += "{\"type\":\""; + if (dir.isDirectory()) { + output += "dir"; + } else { + output += F("file\",\"size\":\""); + output += dir.fileSize(); + } + + output += F("\",\"name\":\""); + // Always return names without leading "/" + if (dir.fileName()[0] == '/') { + output += &(dir.fileName()[1]); + } else { + output += dir.fileName(); + } + + output += "\"}"; + } + + // send last string + output += "]"; + server.sendContent(output); + server.chunkedResponseFinalize(); +} + + +/* + Read the given file from the filesystem and stream it back to the client +*/ +bool handleFileRead(String path) { + DBG_OUTPUT_PORT.println(String("handleFileRead: ") + path); + if (!fsOK) { + replyServerError(FPSTR(FS_INIT_ERROR)); + return true; + } + + if (path.endsWith("/")) { + path += "index.htm"; + } + + String contentType; + if (server.hasArg("download")) { + contentType = F("application/octet-stream"); + } else { + contentType = mime::getContentType(path); + } + + if (!fileSystem->exists(path)) { + // File not found, try gzip version + path = path + ".gz"; + } + if (fileSystem->exists(path)) { + File file = fileSystem->open(path, "r"); + if (server.streamFile(file, contentType) != file.size()) { + DBG_OUTPUT_PORT.println("Sent less data than expected!"); + } + file.close(); + return true; + } + + return false; +} + + +/* + As some FS (e.g. LittleFS) delete the parent folder when the last child has been removed, + return the path of the closest parent still existing +*/ +String lastExistingParent(String path) { + while (path != "" && !fileSystem->exists(path)) { + if (path.lastIndexOf('/') > 0) { + path = path.substring(0, path.lastIndexOf('/')); + } else { + path = String(); // No slash => the top folder does not exist + } + } + DBG_OUTPUT_PORT.println(String("Last existing parent: ") + path); + return path; +} + +/* + Handle the creation/rename of a new file + Operation | req.responseText + ---------------+-------------------------------------------------------------- + Create file | parent of created file + Create folder | parent of created folder + Rename file | parent of source file + Move file | parent of source file, or remaining ancestor + Rename folder | parent of source folder + Move folder | parent of source folder, or remaining ancestor +*/ +void handleFileCreate() { + if (!fsOK) { + return replyServerError(FPSTR(FS_INIT_ERROR)); + } + + String path = server.arg("path"); + if (path == "") { + return replyBadRequest(F("PATH ARG MISSING")); + } + +#ifdef USE_SPIFFS + if (checkForUnsupportedPath(path).length() > 0) { + return replyServerError(F("INVALID FILENAME")); + } +#endif + + if (path == "/") { + return replyBadRequest("BAD PATH"); + } + if (fileSystem->exists(path)) { + return replyBadRequest(F("PATH FILE EXISTS")); + } + + String src = server.arg("src"); + if (src == "") { + // No source specified: creation + DBG_OUTPUT_PORT.println(String("handleFileCreate: ") + path); + if (path.endsWith("/")) { + // Create a folder + path.remove(path.length() - 1); + if (!fileSystem->mkdir(path)) { + return replyServerError(F("MKDIR FAILED")); + } + } else { + // Create a file + File file = fileSystem->open(path, "w"); + if (file) { + file.write((const char*)0); + file.close(); + } else { + return replyServerError(F("CREATE FAILED")); + } + } + if (path.lastIndexOf('/') > -1) { + path = path.substring(0, path.lastIndexOf('/')); + } + replyOKWithMsg(path); + } else { + // Source specified: rename + if (src == "/") { + return replyBadRequest("BAD SRC"); + } + if (!fileSystem->exists(src)) { + return replyBadRequest(F("SRC FILE NOT FOUND")); + } + + DBG_OUTPUT_PORT.println(String("handleFileCreate: ") + path + " from " + src); + + if (path.endsWith("/")) { + path.remove(path.length() - 1); + } + if (src.endsWith("/")) { + src.remove(src.length() - 1); + } + if (!fileSystem->rename(src, path)) { + return replyServerError(F("RENAME FAILED")); + } + replyOKWithMsg(lastExistingParent(src)); + } +} + + +/* + Delete the file or folder designed by the given path. + If it's a file, delete it. + If it's a folder, delete all nested contents first then the folder itself + + IMPORTANT NOTE: using recursion is generally not recommended on embedded devices and can lead to crashes (stack overflow errors). + This use is just for demonstration purpose, and FSBrowser might crash in case of deeply nested filesystems. + Please don't do this on a production system. +*/ +void deleteRecursive(String path) { + File file = fileSystem->open(path, "r"); + bool isDir = file.isDirectory(); + file.close(); + + // If it's a plain file, delete it + if (!isDir) { + fileSystem->remove(path); + return; + } + + // Otherwise delete its contents first + Dir dir = fileSystem->openDir(path); + + while (dir.next()) { + deleteRecursive(path + '/' + dir.fileName()); + } + + // Then delete the folder itself + fileSystem->rmdir(path); +} + + +/* + Handle a file deletion request + Operation | req.responseText + ---------------+-------------------------------------------------------------- + Delete file | parent of deleted file, or remaining ancestor + Delete folder | parent of deleted folder, or remaining ancestor +*/ +void handleFileDelete() { + if (!fsOK) { + return replyServerError(FPSTR(FS_INIT_ERROR)); + } + + String path = server.arg(0); + if (path == "" || path == "/") { + return replyBadRequest("BAD PATH"); + } + + DBG_OUTPUT_PORT.println(String("handleFileDelete: ") + path); + if (!fileSystem->exists(path)) { + return replyNotFound(FPSTR(FILE_NOT_FOUND)); + } + deleteRecursive(path); + + replyOKWithMsg(lastExistingParent(path)); +} + +/* + Handle a file upload request +*/ +void handleFileUpload() { + if (!fsOK) { + return replyServerError(FPSTR(FS_INIT_ERROR)); + } + if (server.uri() != "/edit") { + return; + } + HTTPUpload& upload = server.upload(); + if (upload.status == UPLOAD_FILE_START) { + String filename = upload.filename; + // Make sure paths always start with "/" + if (!filename.startsWith("/")) { + filename = "/" + filename; + } + DBG_OUTPUT_PORT.println(String("handleFileUpload Name: ") + filename); + uploadFile = fileSystem->open(filename, "w"); + if (!uploadFile) { + return replyServerError(F("CREATE FAILED")); + } + DBG_OUTPUT_PORT.println(String("Upload: START, filename: ") + filename); + } else if (upload.status == UPLOAD_FILE_WRITE) { + if (uploadFile) { + size_t bytesWritten = uploadFile.write(upload.buf, upload.currentSize); + if (bytesWritten != upload.currentSize) { + return replyServerError(F("WRITE FAILED")); + } + } + DBG_OUTPUT_PORT.println(String("Upload: WRITE, Bytes: ") + upload.currentSize); + } else if (upload.status == UPLOAD_FILE_END) { + if (uploadFile) { + uploadFile.close(); + } + DBG_OUTPUT_PORT.println(String("Upload: END, Size: ") + upload.totalSize); + } +} + + +/* + The "Not Found" handler catches all URI not explicitly declared in code + First try to find and return the requested file from the filesystem, + and if it fails, return a 404 page with debug information +*/ +void handleNotFound() { + if (!fsOK) { + return replyServerError(FPSTR(FS_INIT_ERROR)); + } + + String uri = WebServer::urlDecode(server.uri()); // required to read paths with blanks + + if (handleFileRead(uri)) { + return; + } + + // Dump debug data + String message; + message.reserve(100); + message = F("Error: File not found\n\nURI: "); + message += uri; + message += F("\nMethod: "); + message += (server.method() == HTTP_GET) ? "GET" : "POST"; + message += F("\nArguments: "); + message += server.args(); + message += '\n'; + for (uint8_t i = 0; i < server.args(); i++) { + message += F(" NAME:"); + message += server.argName(i); + message += F("\n VALUE:"); + message += server.arg(i); + message += '\n'; + } + message += "path="; + message += server.arg("path"); + message += '\n'; + DBG_OUTPUT_PORT.print(message); + + return replyNotFound(message); +} + +/* + This specific handler returns the index.htm (or a gzipped version) from the /edit folder. + If the file is not present but the flag INCLUDE_FALLBACK_INDEX_HTM has been set, falls back to the version + embedded in the program code. + Otherwise, fails with a 404 page with debug information +*/ +void handleGetEdit() { + if (handleFileRead(F("/edit/index.htm"))) { + return; + } + +#ifdef INCLUDE_FALLBACK_INDEX_HTM + server.sendHeader(F("Content-Encoding"), "gzip"); + server.send(200, "text/html", index_htm_gz, index_htm_gz_len); +#else + replyNotFound(FPSTR(FILE_NOT_FOUND)); +#endif +} + +void setup(void) { + //////////////////////////////// + // SERIAL INIT + DBG_OUTPUT_PORT.begin(115200); + DBG_OUTPUT_PORT.print('\n'); + + //////////////////////////////// + // FILESYSTEM INIT + + fileSystemConfig.setAutoFormat(false); + fileSystem->setConfig(fileSystemConfig); + fsOK = fileSystem->begin(); + DBG_OUTPUT_PORT.println(fsOK ? F("Filesystem initialized.") : F("Filesystem init failed!")); + +#ifdef USE_SPIFFS + // Debug: dump on console contents of filesystem with no filter and check filenames validity + Dir dir = fileSystem->openDir(""); + DBG_OUTPUT_PORT.println(F("List of files at root of filesystem:")); + while (dir.next()) { + String error = checkForUnsupportedPath(dir.fileName()); + String fileInfo = dir.fileName() + (dir.isDirectory() ? " [DIR]" : String(" (") + dir.fileSize() + "b)"); + DBG_OUTPUT_PORT.println(error + fileInfo); + if (error.length() > 0) { + unsupportedFiles += error + fileInfo + '\n'; + } + } + DBG_OUTPUT_PORT.println(); + + // Keep the "unsupportedFiles" variable to show it, but clean it up + unsupportedFiles.replace("\n", "
    "); + unsupportedFiles = unsupportedFiles.substring(0, unsupportedFiles.length() - 5); +#endif + + //////////////////////////////// + // WI-FI INIT + DBG_OUTPUT_PORT.printf("Connecting to %s\n", ssid); + WiFi.mode(WIFI_STA); + WiFi.begin(ssid, password); + // Wait for connection + while (WiFi.status() != WL_CONNECTED) { + delay(500); + DBG_OUTPUT_PORT.print("."); + } + DBG_OUTPUT_PORT.println(""); + DBG_OUTPUT_PORT.print(F("Connected! IP address: ")); + DBG_OUTPUT_PORT.println(WiFi.localIP()); + + //////////////////////////////// + // MDNS INIT + if (MDNS.begin(host)) { + MDNS.addService("http", "tcp", 80); + DBG_OUTPUT_PORT.print(F("Open http://")); + DBG_OUTPUT_PORT.print(host); + DBG_OUTPUT_PORT.println(F(".local/edit to open the FileSystem Browser")); + } + + //////////////////////////////// + // WEB SERVER INIT + + // Filesystem status + server.on("/status", HTTP_GET, handleStatus); + + // List directory + server.on("/list", HTTP_GET, handleFileList); + + // Load editor + server.on("/edit", HTTP_GET, handleGetEdit); + + // Create file + server.on("/edit", HTTP_PUT, handleFileCreate); + + // Delete file + server.on("/edit", HTTP_DELETE, handleFileDelete); + + // Upload file + // - first callback is called after the request has ended with all parsed arguments + // - second callback handles file upload at that location + server.on("/edit", HTTP_POST, replyOK, handleFileUpload); + + // Default handler for all URIs not defined above + // Use it to read files from filesystem + server.onNotFound(handleNotFound); + + // Start server + server.begin(); + DBG_OUTPUT_PORT.println("HTTP server started"); +} + + +void loop(void) { + server.handleClient(); + MDNS.update(); +} diff --git a/libraries/WebServer/examples/FSBrowser/data/dir1/file1.txt b/libraries/WebServer/examples/FSBrowser/data/dir1/file1.txt new file mode 100644 index 0000000..454174c --- /dev/null +++ b/libraries/WebServer/examples/FSBrowser/data/dir1/file1.txt @@ -0,0 +1 @@ +I am in a subdir diff --git a/libraries/WebServer/examples/FSBrowser/data/edit/index.htm b/libraries/WebServer/examples/FSBrowser/data/edit/index.htm new file mode 100644 index 0000000..f0ad562 --- /dev/null +++ b/libraries/WebServer/examples/FSBrowser/data/edit/index.htm @@ -0,0 +1,1128 @@ + + + + + File manager + + + + + + + +
    +
    + +

    Loading...
    + + + diff --git a/libraries/WebServer/examples/FSBrowser/data/favicon.ico b/libraries/WebServer/examples/FSBrowser/data/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..71b25fe6ee6012a4c26602977262d217af885520 GIT binary patch literal 1150 zcmd5)T}YZ?6n@3p3@y{hrv0dyWg4`Ks8LiSs1Zp~iZo)Ag)vw}5=AXod1FBkBZ8nH zm^Z-|?V=!w1lNUBASeXo@J`0^VlWvo2dii2d%G#v{l>?6f6jZJbDr~@k1-K_xw(v1 z9ebI0x7Iqot*#Mb_8XCpMW( zReHVNRa#m)qtR%dYqeVa%E}7s=;*k^yt%pgaZOFlCyT}Mt)ikLSyomSAdHVNiTwQh zYlT9AoSdAi?Ck6_l}cqxrBb4{wllAZC#W|h5(!LCPa_ZrfO4a^w-*$T#l=O$<8hpvoWSq* zr+q%3e_~?7OnSW+IMa^f<71qjo??H0AF)^rR;v~3>+77){QNxD*47Y-M377-5sgNF zZ*FeBB8@*378YW1auP>JN7&xpMmQYC!NCEBhljDWw8S}YZEay}Y>emI+uIY~)4^cy z8F70`_|(9_00svKF*G!U(a}+OJRTk|_-LM-)6~=yc6N5SQH{@((@6bGii?Y1E0xNx zGMVg3&{-mpfX*l>DM4Lb9lE=_xgNW_yPVhI;UPky&|8{|m^5NE!wk}(ie_b}IlBq} zMVOVKdwqR9$B&PX3*3JY_m9Nk&GPc{gN==iJO5F2bv2uvofXmS?P|3;LfBta`3zy6F#O-#g&(F`<>gww4@PB>= d7!xdbpRqYH(Gg7acUp7g|4wmf`3*+E{Q*gMMA`rV literal 0 HcmV?d00001 diff --git a/libraries/WebServer/examples/FSBrowser/data/index.htm b/libraries/WebServer/examples/FSBrowser/data/index.htm new file mode 100644 index 0000000..254188c --- /dev/null +++ b/libraries/WebServer/examples/FSBrowser/data/index.htm @@ -0,0 +1,22 @@ + + + + + Pico Index + + + + +

    ESP8266 Pin Functions

    + + + diff --git a/libraries/WebServer/examples/FSBrowser/data/pins.png b/libraries/WebServer/examples/FSBrowser/data/pins.png new file mode 100644 index 0000000000000000000000000000000000000000..f988bf45e3eff7380cf899affb33f7bb17e23cd5 GIT binary patch literal 55578 zcmd>mWmgHt3PzD?pj@Ss%r1EYmQ<23&CqsvWgTs=SlhS~Ldk2DpgV#lU_g3?n7_;H6 z0!~dyOZwfrcX04*q%1gi%%9j0;MnkZI9TzyxH#e972wcpF*p?AI34(iWLU@@>G@;@ z7@QCkdEQ$Ib11y$(_j>`q+qw>MNm{il61m$l46zBW>>f2c2MCr{;miQr%KGG_z6jl zpWX%u&WVD-nFr2`hC_x-Q;o`4mR%i4YhgwObf#Ce{OF-BL8z?&&~?IBc3`!Z!F1GM zcDBRuvgcG&SCjv039?pGvbML(8ZDD4s>>7C=}7vb-p#}~uN5hw>t z0T|@6S;SLX$Mf3Nax2CufU49zlYrkt-90MhT*|DSx_Avcw4D1?-~wAY16$!j`?$ge zbpuj#BC8E@>RqE^Y~$-3i>hVgM!yy+gR9M}7mxcFReA!@+R_ zr+5SBe8Vey!)Dc`k3D8jI_%1HCry5%%KTtUe&fPZpdrvJ zs9g2e4P3+xTl9@|%#B*%tw+d>b46er!`Kqy*k5lrc0Zqr;}QDoi6vA`uCgQ*x1;Jl+xtl%p^#CNlHXPW^O}y zQb9psA*8mb22#}6S_8?47D8Jaird=SqAMq&Th@ykhswGj>Ag#FLnqY(<7Ja44ciZ0 zS+P@gnsE3M*o4Db-vdO!~t=Zl`Be44O(S*~fiigem;o;$t#qFi_ ziLtZC!-bjq(WA%n@txh>-Q(-Sr^CI+=i8&bhyA$V7dXvZ6o$7^L35P*>H-Ic-TmJM-{(+d_Et&eDh+bgbTD`IFme6{r)FYh@5-(s ztwrO`&CbKl$tim&@dXZUDoS2TT+7q&=-K}d;jAwsdKR(idm42@8&k{)M3XDNZfXEL6!T zIT2A6-t|848RI12PU*xfpx}n3bz-LdAO(*YBP(}cLd`z~F^YxpB(U-RhM2w^>5Pf5 z&Nj~-pw2^>bSYyr%pVX{93`#FW`!ku)9T$4X^JP3`3kO0Cml9M)QYq5 z|8OatN2RHuU0ef}-YNp6XK##w*{IO3gi1*9d}@SHc>T#O-r=l>-lz^bx~yS79g zwh3(30dEf$M1v+h^7osx2`VO*aKw75I$4AFYXXW92oL?pZ4sw|;^fP4YDBh-1r-gd z(cw(ygsf!T;YdB-U9^yTY*ToZ#%j|%6AS#{pitX81uElaJS}92hM~xQCOc* zCUur9Y$5W02SkSwSY`8d~&wBwHiKP;V1dQ7WHjF`~u^MIN6r)>btgF?q<{$rXb8 zM@&34798L+Ak8ZSfyC{)WU=Cd_H`JR{!oyGX=Cc&J!HicA7t{Vz{l|ctQ|t%QHbDA z^+ec$P`X2usZG7@SHNkE-sz%qbLyCdAXH|;woDsPP!y0G_JurXm^XcH*Q_275l`{7 z*JtJg`EQ2D1AMb)@Ce(T5>Gp{C96n!S<&seYqyJ|_L~je-XiLQmd;IToDhkT9mA83 zyxdLp7xc3)x)kp3>Nl6}+l?|z9o!Ov|=yRP>mudm@^{}~cy8M8;c?ba& zgTbXBd&c^W;j#G*5d0%)*Qt8N={#syjuh`aLjoFD61X;Wm!#JfQ9D=0GPya%(7;ssfY6M34w4R%z`T?F_PnjOG zp7Y~$Ss=~Kj9Fh&V#FQXv2LR!UR#cy^vws3f3Y47Zro82$-vRa6t2cSm6gvMENwhJhrAB*h9Q*yLJ7+TtUBEo{Qiw;G1KkU^90e#EKR*cy5B(~c@j)2vo zcPMyH9PFVMcKq-^J#J94z1pHR?%}sc7)k|fxH$ZkZ{>HG@H|#@V)?6N4fQ4f17;H>K()?GS`>6*+A`mz|O8qX&^s?7Fe4Zmc|IIiJq7mM1!0WZ`T7!E|nzPJt1`J{w zUu`y$%Nf9S-*zt4S*C_nA$m%Ewi;nsdUN$DM(R2k3h31O+h7?PTGi*0rPJ9u^aZ6Y z1&2*^22v3H?|7U7SdM4IwwlITo2|m_!vagFg?MQtcKEj8+)DK0Wd9i6lqan!a*W5i zFscI35z8vqqeJ#jky=b-?fYvd``8DU0UKH)^EMy#J9ssW$5*-_vmr8Ad9U3_GfusW zD*kQl;P5j=eOzROF&K|p?55$JBh@#%V{?&C`yMx)w8o|OEPP*bbX1Y6*L4Os-b?hC z!N5R#+aSN627}8Iti0#O|MKsGkY@w}b&(DYLKpvyNiAtSj{pfGIwm8&WnH)l4hqtV zMijEwr*D1f3O)~;aUY4z(k0lt2LRfhO2Zf${gZZe%uZJFe3T!GPhh8%@%|i_Jv*6t zONXdW;nEQl`r9AHsD9Q$?_8sn>q*BD*vxIti6A`&73dP)p z1RfIRtz$oMPLd>(UWqWA#^U0PFe^?MKo>%RE$Yw~3>yVMg#_uBi-2%941XRG8xYY4 zmh9AE+By2@&UG*)Ea=rFW{voVOV(Q&$#81NU=&f%>14ue`4< zPF7lN)qigf^;N&N0o#UCQ#`hVqCxdRcTBQb(?Y0oASNA``U`eJ0d=Pwz-SOf?O(W7 zqOnUopVZ>W?Qe7>8j*x%8wsySc5yh5Z z^aDLA9P1=lf~>i&q?0`bR77WLgOUB>Gd%F@<>|ZJr_)#x4#L!Vj* zYGru!%>I1#OVIJ2cHYqr5IQc?0ceFMon3oQ!-2nK238#0|?+C zXk?`A$N$;#I>}pSMK*m*7NC#0O7CBb)4#h(GRzizHc;!;BVev8 z^9d@#6qbS}l3)Z)u{qqm>vz5_hS(!y1``xb69K=Ahk}ue!b_srrdB=n4;0}~K2}J? zfTfM(sJgRBB>1Z_FX=SeC;@5%ByWoC_M`xt;Qi-9Ku1T}e#OOIf#BoS259t*Xpl z5caTG(9Leix{XPLCI{K*Xl*t%uA3I0Zx-!xSna_*2 zy)pN_Xw3nlTvbpU_5*d29H!n2P5UxCqAS7(Mr#xsTs7uK<`r^f<+vg@hJz$I18o2W z=#!p9;csK`etzsR-BQS{tHm^dv&v-$r0((3vBDF79`UCSi`EAgya{r;D~*`YU~8$f zb8_cmHSn}y=}Iu2XnbvwuoLvmsHYiEi1?fmdbFwaq{inlW4jgNW2JpY(23i-Jcp=p zb3VD2^FP=z3_TcrHkuS(>PtRVHKv|Tn+a+M#uT9Yu`XCYm5?$R5uNOP!4t%3T=hr~ zgQn0syv6mt?^gPTWZH+kQJ?-CZM0*QhvUA--7qxGsGU z+z&o}{=`ss_ft>udwqr3V}FbCO0_h#fgW$QZJn-FF%U2gRtMls&OF`~eBByp^$KNo zHvHK~;xNQO+z#L#dn_js?|IfE(-YCzpX#(n*?25X z&#E5{K@X{$qvsTk+^4H{J((qWS7C}pdl^I8m(kBjY+8pz3GyMd8db2=vqY%fie>G~ zhM>$Kn8cDO$mD1a(K+{)&il3W1Q$GQcJi7AyD|xDh%a+!8-}O2^rxkQI_gLiEUN!Z zMd@AuOQKg2u4^xYd-=>qE5gyxSdv5uRuX))yzPmg9g+8X+ua8wv^}jpM24$3L|bDW zT7b@zU^@jfB*S$j8ae3E$1)apD%+>LNAwH3NUVnocgblT3_5M3t7D~4TXJ{n=%4@T zI1aJ{Pc@atg9FPqGOXUg0-|HtEhe2GOlPy9V`We$a!3x$3Rcym)KEPB%NP|mkmv?E1l2u+(pi6(R^ znN!Yb%7bR1VC97%PZ_BB|HJX)ANP`1JAY3#Z9y58OV(f&@Sto{b&x7G8VGE{2 zg1pg#%4!`3c+GnD$6zUuI`0Hx@dWZG^3EKFfF#+W=w9r(O~v}Q z;beR2tIUS~7>mT1plLt09elu)!shb-Fnv5qLfx!>foS2N37GWyGMA0u@_sh$Dr1j1 zuI^~{KVX9GEg_EnZ&L*&9j^F?%6~y4ThrZL3U%|LHT{2B*=_ zOW~lo)=#u^IBN16XX`nV2*Nn)nV=zLUQn z21K?Uj0Q)~#4+IpMssOaGl?#+!A}C;+lF07V-AAQFCSvVnFX#tY?-)Wh{@I9@W+8- z!)sMV2VZ^-E-Z_KqIvUgC^*XMkCw!?4!S@0oI z0M4u=;f>0tr+WIUsTLw*@5NNlaqUbK+geQfHbtR=<9GK!nweBeLH8#e@^V$k zL>$lVXv*VJCXP7ld%tT&`g=XH$8p%r{cd=VCR^!81v}9{@43t936kAYy{(-ECs|+% zhUubVz&sK0{Ekw(4=7yH(Ci1X$o^8VQn4JjZkid1rob!;+lXtDGuHBkccRzwu(z*I z{TNC2aqkc4D=H_wo*N_=v^Htyef#V*1VGFT1hes|9xw9RthSA%qu{ikRW@E%dQ$`( z-nLdE{)y;FSA(|M*}tAZ-?2g4MJ8^3OHm+0J6M-#qf+KBWut|__MZFst<~@0!QxOV z-Z2#o=*t$4zsAGDtCh!r@k1DJ;e40CRPd#6xzxrqgR??K=_o^w^(#EADuLgoPRZ7& z``^oq%ZHh6g)G_O=n|J|*aEQKW&}6vc`Jigyz#DM9%QlL8M1u;)d70pGXnFMC=7D7?#{=Z+AVKgN8uw>l6Wy+ul5P z5WFJfeA4I@gGF=ywEYD~)B-8yPChLEW*A$iO5yd#PyguF$yb{r>es&6S1L4B)9CSQ zTL?7%?zEXtoy_xi8$38bp9@bYB@>dX1c6rgKT|hOHv{&M_cNZuh8~;3-D0FylU~sg zac%sE6$@bB5nP%l*nfD;GPB%2ii|W3PyH#|}muLAN%{@rJ z2pJt3#lh_{LH8J!nx$vm^w-9wp9!6sja%2U2?Hadak>_&_Ra^fU{Zu>=507<Eh* z0dgN#os6lmMa|mi*Ku3!2^HlpCZM@R=r8#&iZEY~bT93|Kzh3v7JGGmS0W7N=;LpR zP;>>zIfv-Wbw!}Gg@@3~HKqUEC4LF0!=D+tHK_3E*T2-h*F~xQbAKPFzNq%qfMt$& zujotTn#fv`o)eSH?l41cR6Q{N)f(mv<4v2~@41?d(QAkErMNbdqGAFlzwWWbrBo7N z0?+EVBw=HT|J9F3s-S5xS_STA&KaARj(T&mvr0ivmH%{??2iePE{z}7ks`d z7=G!ortEY0^)XzJ26?GY=CeQFdDht-$MKy5K{Df+2bvH8xG}NpobvSt*NahSUKVv% z>_pV7#YX9eB*J4$@K>!yFk&T&g<>G@4B zULHs}5CkOKq?Ln;r8}kN-zxouBb!`6s%2v(4g)5pVDwbhb3?&Y{f%@6Cgt}p6;eyL@m3z8rw5eeDJ-GqW3MH}9=@{X`Ke1}iPZl3hl^RbiH+#w+ zaVC4e_tPhN{~7+?uV0~V;>pdDbU+xkiFY_(H)o`n!nebsy(k;)#Y;T19)7*y--*ss zTJf^J`udzr`Rb;BsGAIcz9cW9o^AM(uAUc0t3DNq&Jq|tRg{2qYv{vxUhW@9dy^`t z92T8>pHK_`$-qNzzDNOzFCtIxvN%reBHCXcMLnN(zk7({Mcs!2$9g9Q^-RO_ft`w* ziy{#ve}O=znY%a~1;^p1N`Wu;LIn8?0kAj^9XMA;Be=q!>L3ht=a}O7U;^K0aP?x% zjiTfu^Bib#1c7BD$Pjp@!dtpYQHNN?sgBA5=3&tFUs*DzZtBwvc6-$ha`RIw{B}`LC)_0CcWS2K>A~+x~Lh zewRfH>c8HXHeKPFIN zPCOOw7@>V(xaDOD4HqMvCu@WEPa#;mO(5dlz}Dh5=WEcbN}diz#MiKI(&16Y5%1iH z4sVO3CqC?@0kt3`{j_yhetm*%r?;4V#F1aJz?6Di7#oN|`=qnI3l=XA`KCDcWE0fH zRFsRq9@Y(u=}WYwnTQoFPN`p>N?&p63SXTz;>2tMwtF#-PVYDfUiY06T#AEzug9dJ zDvIOfmsE$pId2mehSMT6XuR!!YUIdWYj_c9VcxOL6ptZcPL0i3xeDQerpG|FWYDJK zPMbT+-!&9G8?fl$!=4yszoef5QTC7s`_Fr;D|R#f7g5 ztERPyBM?)?;gVA-&@hRftkRJcqj|hZL!_H~Usl#Db!FyvkEiZ@!?6N{b@!*u_p5}h zmbov8Gb$YP*vEGfiX0*@?Tl>?A$+Q#z+GWtg)N+qR1)Gsrn*MYg-JY~FR$iMa;fUR zpf!A(ry>8l=-u{*yRos8yLLaWx^4#i4UeZRQU2p)I|H!t9|vx8gASyiP#*Z3_tlm# zSwDOm@E-^3-DgVoQWsX=SXskbZ;^k!Ipv|ll_!0@Vh5P7_rF-b2y}SpR0~{wswYNO zl~Jj!y@~F(F{!@b8}%X!V9&(S;KZ;iPW}X9IUP7)B4+XPzW?rmZG`I`?ncQHa$%VA zd14dgvxHrlS_`SS;nB8(-=ey6n5TIb?oQ=6I*rrMXJqp*+hfy>!(jDwpm=Ck6s3O@ z`Yf&OYr4LU+Cw#^;0uS8WD%mpUrLLw2}V9oLxK(4Uj7w{P)jhh6(MOTn#rK|i81pK z<@~4N4ZQbfTy`j)qQ47_gUy@__3ZaD&!M`+BxYCniq%~&t6TV-s(IC7`mUKw& zyI=Ny+YoQIqlm!D!XNoXa5kxgM^Sw^PbO45By-ZW(OF*|!F;sAz)sD+DIeb>Z8(tO ziS)`uSg3{F?l>g5yy_^6L1ITV% zT18HjipYjQ8E$_r$#@+GcpT@1gSJjF-=bEmA#dR$?Z@C>>%-819U7Y(B?5bH4keNs zwl6oEJVZWq3hi6PA*OBKTXL5#nLPZDq~*BM@wM5^-7(AyYV<{mOH|=v(E<+&g<6CX{j$=8?5^B0YC--q zfKUX#suEMlW8~Vlc$zZJ0MGj_awEuO`m z*`C>5rQ;qNNC(WszjH4hNFhCjRsZOTl_-N35AY6yTPKFxsh=r~jDH^PSqiRxhetf- z#hm2Xk;cIwnhwUwS#JsN~1DDZM+jjO2GnuFI9S3kj1 zM5|pa-Gq1&nGs+A&So^R#tk;iRtw$izl)o3c__DtjFDdxEXKbMy?!)Lf~>wQQMHlH z-wDmaPHR%S~mY$^jt#M{R*EqoNulFIUrTyVb zk;9IFL+0@8PVQbf$+z=cCV!3|f%ksOA?4R#OR#d+__?(fQti}Y26Cv|;Ac4q@4mV? zHH6`a)p=E_7^K^DLt!aoE+Xau(fL?c!T#a`T^zpsQ0WtQl%!t4a+lYrGDGcq(z=sY zAEWq#(8*Qk$@^fh!C|#~ z=i$O>f7dVsG&y}K5rT-vB_~Qm#P$@Vf}sQ5*6Ic>YjNJ`Uzjq?&yQnu@!9N>oSe@xOlAi55#ovl$#0&R@mgvRE5+0JTsYT3(zWRr>>Lo~KecBk=p_SQ88%nSqlJoya58QNwPkRj9OwuFe@|CR=* z;*3dcesnj!xlmk{#YlpG|KU$^&N**BPUT`1Iu@~B$bV2|(#-|QCNTv^wYd&!LWGSt zvu+r2>4|3+rL*c{&De9Td&ktkk^WwNv+c;lJZpOmo9(na{>8bQW4=*QerSDtWX+lSKt{z zIoNjy#;c8oflNG*Ctq2u4(?Wyg<_ZH($@|O2vm7^*XC|Iuakxmh3#tqE>QpAcZ#D9 z$3(>%YxY^bjJp@M+9Uuw`HP;!n|LRekxO`$4i6shIZ{=e{NF`0d7`Stk* zUsg6jbaoudSs$yhsB1}IYAl3=lw9VtNm8a*sTY$j30N=J?{YJdqWqa1q6Hm%(NR{1 z+~(v3DV2k#X|9xb(N&Vcopf>IMAF5$8tVhwNvTn> zUHCq~u@^l#Pd~h8G!3SK$C1pVBI?nYRkI|oMHjb19_XvIMC3uqjsA=}5ZsmMY}Nq$L_ z#6n$T(!M|ZA-UHt57;?dgQ*$?qUeMmXTx-T)uqmh^t)JQtg7YzRB1s+tu<-XMdaOw ziew=UUwa;ocXdk$ZE%XrJhki~O~6ip@asODs)$FOz3AHHY~PLOHxlp5vD7px7`5!n zRzc8%K;40%0be2=C?{MV;|&`g+eZ17B-xOZ<~{$)AJVa-$!1P~So+U=Mk0xd$L88~ zLf+RF7lyE00)*J*fcmKJUB5y_+>YeZD-0xTA-*zEP2mgx!78D--U|xK*V8w*`q2Ls zCsI%#iKukc8{phBeYSC@M`{p8~(PL ze2n^CnU@K90|D02u166E?1sKz&~-`RBHs^*?5&M+P9p+WS9 z*?Zml1!7FvPf~3FXeCE1d3)zOF<0fvC@|D%qq7yK9%gJhzd#)ZbazeIbanjz)ivZO z3#0=|Ye+yCehtJ43Fn@Tgn`}U+0(ILb zAFculb%*^$>z0L{rzV>-fh5l%L*_|LGm5fF6O|f0Iex<4Yqya#SP$8-oLqWgGVeFi ztxD$X>T`bH-f*>n{RU9EQBiJbi=`BlqGGar{`OPjPI`y^ObS=?Nk|n@wIkOm#jYC} z667}EKnGG&1JpmkjU`)nJpzA64j)H|NlkYa!nKu8^Ax7&liEn!Q$H*A)58KmzUb>c zJ58!wojmOt6^GK4QZ>C|cHy`e#PTe_C9CHu}7sr5wRx|vNnI|>Z{ zXb7iwrFzTL0SXXgNNT2z+V_s`c_G#U@S+Sl{+^-&APL+z2vLI5a47~UF_!=pn z111!HffJxIb0U0X|1LN3lcT8k!IJSEvGjdix=8RIxK|g(dx44@m5Yb;>1#cr9t2JM z^~ zs@=}qm}7oQ)o-EU)F}rG$ca)WD86|#FQDt3oqcv_p19)=9q9hyrog!cR$KjB zpOyR+av;62lVX&@-ojwM@?Ci{d4BfuX<_H(s7S$}YUyDqm41`n^XF2P?JjEHXT8Fs zQ6mdj(?rSIlu7^AuL#gw3J(jdgZQ#hF8>|l;b$^d@h}SncQWH-Dq9m>IoWsI zLY#J<_4mV{*Nk{7y5`LsGA))$))F_Yhj}#unCqYg*xOD>$1@U#&txMaNE30x9&8hi ziRAgr*}_hibTr7cbrB}?Xe^!jD?YF$yI&xkRq8`GRRF%cZn&GtDFvjTi0k*0IGyio z7pTr+{XLe;2b$aW0q>+o%JJolQdGdLHoBqLhupC5^uv4a0}BWgi|J2|=2#d`r1(c^ zWrgEZ9BHCrepU6%m{mmvA;%dZSsio@EGaO4FlNAw%;gT}L7Vc$aQ>FU1vWsck5%~m zW_k^1Z)-9t;|v26`XU7f5eK4bqHb!sAh5*O;5dkhxR}0$Mw3P}bRC1ZQh`pzta?6q zK!j8*R9$};U2@)*T9btT4{e=LtL0%hk=T(J zHz&;PcG<)GaBS(>3C&OcrG*~O-Af2TM;3aOA9C1MW<&BF7AQ#jhCP>&7bhjdX`=i% z8&sxz+g4bCp+JigEj0*BeSfhAtxgVq0z2tL(y2yGTgb88s7m7ZrKa{Y<(}|j4VOl7 z_sVhwZBr0$3COY~7{xTu2v*6k|Q^71o3L;Du-%$VqL$71@ABrSsNJ!p#A}Ci=jtchD%+C};!mpo{zcD)z zCuq*N6w%n56Opr*$F>i39SXre^bm*eI&M+!bPMWLF3_eo4$jrFtuS+AmJO|n!Rc>BkC~(iS*9A&$|)DfMv>og(n`Yt@Ijk)ISttf#R=d zPQHy7nu2%`LV^AzQwK}79Nvf6`zT@CX);sfwD2Q+z!b-|0q^|wr(!ofhH{ohf~ zMqE&KifygpBc%F>KB>yQ=Rk8ZTdwsISH(~@2nQ^4ZXTiS=yN-R9xgH_!RQamCDaAK z&9IM2!`n^A&wL@^>(PsG1u51U@Hk8PD#nQz)J&C6N+MRJU8T*}oR^6>pfnex0QqQ2 z-afFBdK#>7>}Aiq7u@fVqUsx8URaNspP3M48Q@5y=z$ouZv_vLIslwn!Nj|l34Ot#76kSxA7}Dctjim6qzPRiz873 zI7eynV#jlLt3i{!34Xj#q%*ra_mbv>oO&1s}f?`Z*c(^0JP?Qo1u0h+h3N;W8M4+^gGnwP=y@?pT#!`bZ^;-=< zJLaD-NbSF5^kd{38q#?j+YhtQ>Dn}7sK=rtkEIs$=x$N4v@0nCw+Zt z&zg%sh^lI#mQ_#`p~11#%cBds7C5I_IrX?a!xaOlgm7r)`^{vq05dC7t`$twn zD4lz8Scp+SJbX|Nm^drfV|riMmzG7q5jrRTKQ-MtmOu2~8Y9Gs%X2!GoLFL^K$@Z0 z;I4%KNjQlmsZQ~S?w8jRP6eutWdy;IkX2^q;M$}1!tE+M0KQ`JRTxW87kAdVE|HG` z>rAghWtoK8VPk%hMA5>^j}b1)*+MGljV8a^RDC^Tb!rk1No~2C{qJMrd|n5doM#sf zKR=Tr*;T``k4Hwnu{e7&q1R1kG*qv?qyG94e@kdwp7|4=+QLFwiZ%3}H1oB03wX?R zCZ6D+9aKda=VF9u?aJ9S)} z%uT+15kZk}Zb01W^7VScWLv`v{$$VuYJv3Q^{KefOAH$C{u`+&$OKbNbh-3yk(?*| zlU<@LbuQ%wmRO^Eb|r(5E~Lp&O<2V3-*oYKSE>yPSP@Z`Q|4Pzs{XDVZFjK-p1vdp zS~$VHW%@yIfgH!YbW2|j*f*feCy(U5rh5B}dsS)-;ic7t;9oPPuFr}`>qB%iY&&Vq z20YG0iol~2Vi!v6rz#fW+bv_%@+dGHF~6=51}wH0W1awAc$Eu-M|v-10d$&ZZ9-E6 zRHORWTDDu~VqBs5@gq$7woBUU)(6hF`4=N3DiC3*=zC`;u)?29U4@<4Umy}|I9&u8pdUUWUeAjz5_#52U0Zb;W z-}DMeDv9Vl616y1F`AIo3>G5whXu2?Eph8}TXmK?lnL$JyJ;(;&!=toJ032NiXO{L z$ZbN#VCsc?s!alb-dERID9-XVm7X_5`ZJVC@haTBK?ACWXBP4IzQH$|=qo{sf-py$ zNx7c?Et^&@@7&iC1qDct8UEsu11I(4)<=?bBXcvFH(xM~r)NCro&+aNdDp$W+!4C^ zhr%X^vi;C+*&k6`ngar$*yF3m*!J~4>=&)IGzn*%IqV2}U&~DMck501&k@u7p_zZM zM*QR8i%V*Vn6kaPX1=aOzal{W{Z|l=*`#qBlV*OefR!rSdt$)@Eycru@ugf_OAxd2 z3Cw2{lSUXBO2~szhr&fdS8^_~iXj>9-qoSOdu&$TzNeFy!FIaaq%5Vh!W5DUx_&^n z4j!9%)+awSodAh1r`egKLCd{tK2(&)frUR(Encmx1f8zwd{D53I9Of^umk}pcgPsg z0`P4%Fu58Cf`2Zf&6Rb4DHyMPr2JRvRx&t6Q}`AGb6P~}=H6FEQsTw6|AT`TtOkM1 z$`E$PoS=f={uuG^wqWVDXbarNParKgVIDB=jwOD0S-JFhbnZqIZ9Gd`W~R5v z%hLFa{Mw8B%dk#Q+GqwDU-2 zakoOZEl(~^-4A0u)TK__2`_H{+F$4FOn9{k&TMY@XY~7jWQ+uuTKDQ@DR>4A=rglV zL80vLG9#yP$-KlVep}JZT&=}V%0bds_h1TB*#5kUZya{orlkQ>DGpSBc;hAqIol~L z?r~+AX)Xu@T~t+&T2_IdBhrFATR`@dx7oiy$)8jCcr!^H`YtP=SV#d*^BE0Vc^sf^ z{o?Xc(`i(@>o@N|UoxW{&0}_XHiPLWzD?nBf-s2*!+eZH+AH8gp7Kx3B%HhRlhO)M zg=5Lolciyy!pOLy){fJbR&i+3yDBW*w*wsg0T$m5G(9r4=Be(>1)tVp=_z2(bK~!1 z&Elr$S9{8ZOEgQg|7L=%8m-}Uz70n>W!&nh8A0#ZY4>`*VnJ`(vTWM?>#(gDe4_~; zY3b&RtuSpU*`~kfSf`YlQi2;VM_UaZvd@ph+OT-ryRfsq$Uy{qU5nxaH%x0`8?4Ox z$`~?JI>BKD!X%g3}NNwlhC7lSdIC_$`gB1azWR9BhJB<80kmPJ!ZvLcA^8 z_DcpdL`)el?+E z)+C#uQHwtgOZ%C-Ih_)eathOKW@s)4XYkl?WUebVSWn?9dh5o5W@yW%>h`;WF@hOf z#*~k~=zUbcw9WEA@qwm046)f(^pNTF2>?4Ul!{jgRrCFCm$*#reGhFX_6XJzFh4(= zNxI~>RV0BFcLJH(?_i_6-`QX2zP>B)?Htap&W-+LS4O?kIO$&P8FFRWgmLtUJHr=r zRMH95hL~JfkCzY=2z~`w@4Rv9s2@54Kx@Bx&g1HDXYSadBlQP2M%+bdgzIy>m&4=q zs;T6L0=C64X4xCkRekyp{;I3)9a5$l!%M5tc=Yn~hNyGHFiUXj2_@y&Jq6_<^UPec z`q?~6DOqj!HvW*CT($7ie4(|E-qBJwlv+N7z2l2c34?Z|taea%4|AwP$E&P3ply5i zik_n0mp82NsPxUKVnAFNepakUxF9Os%J{?2!wuA`Mlmk22fP#8d#uGviLiRJ6Yr1pBScf~t6E_YTJX#8*1Je9dn(qWk~ ztj>JI>3LZI0&ow1qyl${CVd_R1tvo?S}n4?lE6e#02|Xt)tPZlBgeQ(=D{~z7v@Y! zsrasPi)iRL7y@Il+pX=@{T(C!h^sq@w;uj&$oEr= z*KSApDjqW1CgOuPUm=dP(vyFJ@9Jl+EeR%xl0X(d>`zS9bC6sP3acJNFq(n5p&qNLw=ujlJA9j8pbqw@ZpKkoww6u7YBVApdz>jJEKNt!OcN3xBh?g$hQ8<=eA7l6 zdb5{|9QS?*a^>#llHi1j-U8RR{PPXrt=^IT_>*pU_9)&|zQ}*{5lR~1STo~qSmjk< zr;;f!ZBMa=I`dV5LjLac!1%iUdc>bIyl*2{)l@0TRAYH0D9(f-={_YA&?R{acvYyQ z`}C2J?C%UusW7*^?MV*bJ|Sv#A|XpZwe>x|s0%+U=l`^JVrMcBO3E*9vNHK)UsY6; zUeCA_NqO%cMtSb0nNTRl-Q(GJR2@k5|6ONH>6|S>?&^&e9W2^jPNr8B!F(RQ=8+lzR3+cAj z4gk%LZ(VGfnC|`~0aHp&pM7OS`>36tyJVun;xeRnhk4s#ij>hjat z(d(gkKjJ|SE`NyT*~iA!!+I|0-bY}yf6JQ~kHyx*!hMtMv5m5GHx(XCv;_os%RyY_ zaep*}b$h^@h+c;RdBxU4xFjg~WRK!Z#J;nPZBi4gUHX)VT1e{cdSi{das~C0Wwx8r z%{?yVen*PQoO1rNO^{m}JAgqa6IoF_>tfg=t(g294i+ z@(q_3P*orB%N5z)7h9YD5TW?A0s!qAHu8qG5nC<)=5 zTrl!UD@bsY(*#F4L_Aw6VM1g(veOzhOc2~7|FVEj`y?rQ7T!H7TPP$Zq1y(7R=IYL zjq!h$VCCVX(DJ_zj?osM{C+v|Wfdu>Av2=~vuQKV5~#a@fwOo*EJ#MhNc zlJqV-WTZmK+qn4tb86M$fI+kCuT$S|+=p|#;b|)Jfbi=|$D_Hpud8<6tK|l&!UhF2 zfB&1!)2^;Q$7>%bDP^a}p`+fAw}2Cmt1E!_WY5zX6WCGBc3ELrqNPRPxai&&LiUy# zvW{DmAt&%s#Fsb!KnbeV60t=i_Y&9V)Ugizj|AMCEBI>EFDymru2o>fGwBIw_?J)p zXbV)_y=WzbBQD;hoBuEx;{(?zg&Dhp582U4FEq@xJ&GV*PCvpl=^kbN(wEoMIy)%eeW zr}iWYi54^~tO&uVyp=&9*##I}Q2zDr8|tDW92TeqC1tICFrR>Xb`kB+kfZC9@*gMM z_ARbrmEcZ>nV)C>G1Y5Md)G5@Gw?7B?BH4+Pd0-?2CzZYv;8Q1kob}YqZ;~#?hU(v0CtZg_WC2S_ z%H%vi>wNG?0RIfl&il91xeFt9lRx=)X4wf&ooC64#Fej_S0z;4i!*-XK~KKD;vhKDof-DjVD)?RC!YyUx8(;E~Uz1gbqJ;O!!OZX?J zws$NTUY*IxY_!jbe`fyv*)(rhF@YG-ZVvzK@R7&}{H7z2Xq0R6x`;EkAd2-Qc&SICZ+mEQWRLQ^$eB^TLGVmQYWvi`7 zjDC#aPwS?5c;fm>#9QJoGKPnexBWl28bU2ng&U~Kc9r3g1vAySqp=!_bYNP3FU1qTupXupoqladQUVemhpieS5$m}()KQ4-S8}e%(;ERI*zgM` zI6lkO%dh#<%(IUD`E|h5Nv<8{-?dwBRb3rJ<0+g@70dEovWoiJeBnNSk(!IlU$1`dPGuWFlRrnw%besT_jwH!Sh#LW`{` zs`QN0fLE(xkph9XLY?^bM8e^PvgP>?p=B@aD}y{OEE z{Zm75vn|a38mg67N^l5^<{{NaW=I(y{$7l#(){q1?`s4sUIii_eC$HwBvok=Nk8N8 z==0di<{?_X9n1_FB_)bR)28KcNm^~XV6)hSL{Y`e4|;+trYn#6lVEDZ(joF6o%uf1 zqZSMok^?mu?69p0kDi++(hejH+9UjGXlB&IuVmus!6r_KTO3oCc$i)Sir*=>cJYJ>uqv;YLvRrP~D|xiH`CRI*~1Bc@OpY&wq}<-g_9a6<6Pi!xqJ zk_5gsu3!Nj)K9= z*1GKxN1|axJqBU{g=-O1J4X&aOOVo=xPNaM%?CwFvEwJi;W<*ZOk^soLTFxlyj}fr zKNIi*9`W;x3r@hAUmuO9KhR6iIE(MAs+n?%s{*~2(NpKZAZ#2~I- zItW0RjhWC_Zb*@rUeV}UIb&x(_Z*m*4x1uxR`76UmD#a4*gWm=V*oKZSa$#6Q;W0> zP#wxl&4ZcR#sEp&!3LKhLwk7)kM~^jC^m}iM+ci* z-+Q(%To1kg(IZ$&=OT#P*bWFOQdOkQyY;v|tMdQelvgVn4pA1;k!%~RhT%qa%;JK0 zd~1zTCNpLj+oEG^|FM^T>eeGAG7x|fxaGHV?|`sGm<*I*T>Fhc~@=8{=~62lGc0ur_OysXdB|ds78-BKbq#z>3MXe zU!$AsVfaVOG+Oy%uq8|b>wrp;*Dn~`NqPWdO??362F>XQm`wN8$5y!0cXQLU10Akd zw*~42h>o(65AiqIp<2}nm_pwA64DMO3G8g#s%mNK;iBo*N>1*c<}M3CZbUY%HwA9xjmG4fFpLn5@e|a*9++G zhQ2kEs2XS&Q)5=Fi^?5jnO za>GKOfigF<)1lVr>DvEtjaTeQ3V!xmt9kI~~{IhN7MdM#AuTOY$)X|Ba$t+L=fk=QJnnPBxGoS|e z8v6QRP%h$~UoY;`+TZx8SD_)t7JlwP4W?Pf7{sAmGB`|Zj5F#}I{x)&vgi@&?!AsS zw6H1}`}g73F{2v)?N3WyD+b@wU&eee7WhF8kSKD#!ux+)T_m~KO{-ilDIHp}O8`yy z2&2_C>ryzQS>JUEn^t`Yf{&&*Pao+R!)?+ydBWzS&(`FxDppVfBMJhEPp!#LJMLhA z?O3TXSOt`4^Mq@8C?}I9==m5^*{+BKSU{lf43s z5|uQgDV-VvXzzR{*^!~5*;N!9{i&x`i)5@wBs-Y`LQX#HMgN9h3~x*FU1)7 zr-r<}wzpO9)~<|Hl;Q?}B*2yjvz6_%due&lTSAI{{e#q{RysaX)eVVw(x?VxXK+q? zctKD^l@R48747WW!@fQNMNItt;=tA@_A+7PL*#_?aSir&WB2by<}UxKD_AiEL?I;p zGg=K@;L1<`>`s*op;}rP?$7#S1Mh0dW#0W*_MPnPtE?Ayu9qb?03{Yp)W8mX{?4T5 z=prJWmWuV0fxHc9Y!$=&b+=rIne3bMWd!Ihz#okg*iFC~h*(|w2CHNnaeLNVJag<3 z9LH?2x*n{cT$RBo${hCetv^2fl5THaD-w;Jt?_90Pg^WMF|`t`%ded4D^1{NNLGr+ zPS73|U)VD<|7majFAuWCz@D10$ab<+d>9GC<~mj2OQ&*((5khoc>MchMH zr!Sw1%O9Q+bbi2fX4+c&P`9)&nDyT;fyWUL%k}>$S`c#2$zR!0(hT9$QyAu?$Bl$t zN`6#)h49-o?yXTIf5m~ssEtyyhWcOTMeKh1Bb-zV9G1(me09sZ*xW_o>>UtYra}~u zdtOi$^1iIpB*Jt<9w<~N8jsn`JmGfL=|2^@gfbdh5{|FSsn=*se9f` z_SX;gh5!5LpA1c|Z54t=URRIn<=~#qgqHmHMvd=K!L@3ZkyXQ2X4uJ}UKI;<__ZN% zGyOC?w{s07?Y-I4Y!&7F6!b03Lg=dU7pIL}mO~OdFYu8w1;+J&= z9hocwP)z7h1>Pm2O~=1%(F@Tuh3PfU<;@{jiU{L?aLcxU&8igCo)GG9Mc9nOw2w%A z-@nmipz&|O-M+xCs6n!=_9KPDhYcvj!SMMTaQ*0qlvO;@M1eP$e--d1qw~`~^fUc4nf zAt2OY2*`Agssa{Nw1{w7F=RD5e)be~s6hCVFk0d`hKC6aUO033q2upaihJh1Z;Z^8 zDRaG19O-A~)bEd<@A=cAh-3>n==5_HAZIiyb!WF#{r4h)$jrO}yT7d4oC^e%(JlU0 z{UmRL{WT1zX6k$r>+xSa8=2Cc>1F(bK@O4`4XUvu+1{aKLTj<+i? ze^Reg?)tEhr4{ zD};tl9gO){19nPXs|`&0w5%#1pv(PY4F03Y`DE zBBtQ2F?;jBfhW8jPwGTI5Uf#!`u55giSs{kF;D=^k>SwiJTek^QFOZy{r|=su<$UB zpsv(-c@qB#TMR`9p8OilWq+*AKk_K4dmhVJGY7)M*J;CZ3E9Y$6Jf3IfIbomi;)>S8x8*mBp|LI& z5Q*hr>0EMF#Hd;k)$Xz3EbjZlq$7F2zSCTY;gdUH*d4K5Q&k*#$ITzVb$4Ld+4zyC zPYNdMuvpLa?o9_b%@GsnnzQ%yg&4WcFI^EzNBDyBg1uWceuUjlbM_D}#u#y$SPIc| z+QRd$*tPKzkG2HZxqWdj;Y-f}kgAFic0UM4SqQZs&vEKwZT47c{QOCbJCPHLfc`jn zxoy{L+&fbCBqc>Dv!m_qnF&pSHuC)e>%v0zk6$fYz2dSc*;(z-KYrT0lY`E9BIp(G z9Z|BQL=TLCCI(0RlVS+mGFGQOJC6lejL&hNn;^OC@VkWo7!aH2!Bh!(q2lG0b>l#{ z^WMlPu0`wm^>^{`_s8Xx3O9lPzrgaXTM3n=<+CXos(CJx$-fUxGM=|RiMTXV>%|XE z(T>az|5_o-1mhNIJoMC*UU=3zU+SLDeos=A>6}*9FATAG17z}%L$lShlL?$<%hSHZ zCxhSXqAFgCEA$wjgZXp+s8Spmt!d16JJqt9Af7KSXC7<4^UGNI@C_dNNdK%mk$i`n z(f*FNS?V3+)eB7xuBsFMWpZV5o^;KMqHaFG)qqc?xD^#up6O-aghgiYSi5aNBev1a zC2ZhOg99ZUa_b2tE+>m4VIGAyNEOFR(K6_I#SY){BWEn)w*5+Am^#v#n%&Zc^mB{E zVV}rvCyUfMirQy~a$|2989NX-B{UT<1mPn6c3(LfSSfkxm9t4YoAlrR3l`v{$>do0 zEsCE*WV-DPa``Mpo+`d_5v5H_d-^wiox3anwtnD4Uh#NuO*vrW6Tu#Cs5S$$`mTTu zg|OVC2vL7RQ)Ztv^GAc8O#9i_(?S`r5%h!o)Ps2j?UP&e%&+iQJ`8m+gYK$LljoTtG86oNBKCgCOE;55R&fL~6Eh?LKfbp=eAI8-ewPp%w+56B zHG#6?X<@XXql2j=mG`|(z7Z_B&##E~a10)}guR?!j2jGBu~P8lZw4!2a6e-=ELj{> zrn}U9ZAZV@pj!@x1#k%;omzci(OJN@&3IIkA=XA1eF9|Npl?kLQHaJmqqfAF{4B6OViHp1B()TUhy8?CzQswigCj!PFFLM zL`piN#!Ge0GivzE4Mr=*osiRt-j>q;+;Nv6rmo+|Isfh`MFb9h%dGxG&Cu*1Eq~<4d+XTH_qs9|qXdE2y>uyh z$mEIHHFkpl5AE_o(fw?7!_UtWwP~r%%Z2L zc8~ZutYnCw3>CNY4Uu*u2oIw_YRS~TNOCqJt>c;(@Xs)=h%S~-jn=0+m(dgI)ZyU4 zvT#yoxd45DX_(&|epn%-Gs}|1saP51W9P-b(~to9nPWF|e^|dN@9q~n3_hqLscQX; ztJfX>xJn9}G!boViqsB{k$F%k+H%cRMw6;_k8DNWo<(X47sUjBDiZxEch9HPw7r$k zDqAC}xf$_*v*(_x^^P>tIn2PZ?QzC{8=fKs5P|C($%-(|fw-o#M7!$zvhEHQ=IvP> zWLl?wkc0z)f7k$>=UoD3%}Q~KF*=Hc@)T1D33*tuGvvO)q%WYEO3cwK(hW&}{Q-i@q#k{UaCD4bt z*?t&Wi$rLyrIEQ}2lAaPDuH?WUg#Df}ou2r!@*xildA-#;81_E=TKa|1whk8^ z8>ERh!q=^GjX1#?ewGI1UoXV1w*I~LWa));di~;d7*PWE1+eB6cJLRn_j53LoXbS* zV6MX}mhaTc{&=TF1*H7V2AyD>_T7wQ( zJ2Nj$|K%5@be6JgNE|?tuC(r2Adme^Z}4!so4Ja3YDTeIy!k&p98Q|4%%#=_(-%+J z1jC-?XydA;+ZIg_?J2M>-0H}e+n7Z{BxLg>^XZe=Bog{H80f}{s%-6Ql%EvcrgG#a zHlmPQEi4=zDo4&;33G3-#1UCB8Z}p2AEJ5_Dkgsv*Q1O!Z+NVq|~vEninpnieH`f+cmVWV1v#fw!=?A5sWIyjy>sC@32-Ls&t zja!r2&2q`LGkc@ETuG!tfg*ECAYIA;(Q%O7c=$c9j`{e~{-muH&1Xq#R?|fp4^8kJ z4x&O!em`zOVnJNe~s2?j+?+Vj=N zNE=f`vhi2SrkcMPLr})A*JDp+DAeJ?BHs;?43Oo~^MewLQ+({J!*^gjwc47lSi#iV zkJv0Ql%~P1RuO|;4c$?vgx5jeZR|U%JQ^*lLYfV)-)x>tq|1JjYN`KH6*Z-B;@E~KhZS`GJh*>2_azL_m~ zMWFxpKQ;rM4eInf2bb$#B=e&n4xJqth?Z2bw}uD&di9B#^Vm!NN;gF&j}Ey_JUHjW zO1O$7r!b2Qrn(Qk$nHrhKv6k#dgWI118**~HkY+* z`g18RTeBMQZbznTt7nsvQofNj)BC@s24;F0c8U977HMWK!*fA#0(aPc*0sUvPC(+pfNW2^KT#W`|W=r9Y%yi7C zvYD|ST)h}*8ws^}YWMlhR;7{dD#WV2@v~x&JN7+DK<#oviz431h<7*%lJk@ZD{-4` z=K%b5nntA|Z$eQgz0EAi;WhbtkvB7(JITt+u$Z4i-<6)(2o~{(a%f?wyNA$Mu4X$BW_C&aQ(MsvWHv**#8WuW78m<=PgsJA-$2wUhaF zFURvKuT8DE*8(4AD-P8qjjqIbUQ$i+3+x&Pk%IM7wzdboQEzK2K6~fp^aupj=1RWQ zY5qm!GcMNL|KG6*_1{lIWcn$@_nkNaC;zdZob%@>@Ue;w4D#7iuD(?i?)VeCQ5#|$ z;y{00KQhooVCOeP#^XPfU`#p2$a8wz79hb>C{^gs+hG~`U-kq;KTW_^I_1PqvhIF& z(ifi&H&}7^HiSzHH6+=@2bt6iWWJ>wQ>*U0=#FdNytZfLx8Z-7%RjH7`pg`( z(vv++1QoSjd;%X(CFbwEsdRP{=eay@Pxx=tz>#$3-p8Xn0TyZ8YcpqrT}5?O7q!*e zIr4t1c9X)U!C55<9~nfByxSL&9K8T8(prLWZfEuXJ^TNY8No|nV2KSbp!@g7M^ zD@<-BEKK5C!_SCcV)d5zG1vck#JKofno1RkH@P*2W~Zn-)^KHv<&i-g*{uXysS9w{ z_mJkBt5}(xxy?DcJMKFO*9T&tf6G=I{^|a;f3KtzT62sbe|uyZZdOToetYC zvQ;FuiC_zOc4!6SJV?ck2?SYl(7OmTq3wJ{{nq&P9ANOE;{I1ffrB-dO{F`HVX-Eq z);ly(#vI$nK3zO2O>Tvmh23>(Fv4A@G&LXCc+nkd&-3PF^-Oz8TJUpQ(h>|_X{e0%Bl zA(40hNiwST+;GsC_5u!2`F92g8j`0`-S~hsRq|^%huzsCzs1vAC81BYzvg5ld&VoJ-uDVpKd+x8e5ug5>Kx%X)d z_>(pLwV3*SULmfKpe&fFJG&8WFlpPU)>ZRaCtgBpK(ml$ zXnUwN;LFeW5QyYxOx2QU?QwM_6CWMDGO}r}G1$gU$3@M&?^NsfaydmCI;CP-n~2X@ zlgVtG#0-e;HZmnxy1be@_Y>wb;ii>gK)=6<7--*C>&@&cwt-{&f<=i3@6|eX^jiPO zU*F2#1*R1FkiJu3m>8{WC4So61uk&|?wTh{Byr`pwqGvW9I3DxCrCax zp*MgJ7@+aWg^Omx47U{s3rF$jA-0I!VB%DB0UNImWVfM+AzayWkt^u~(z~MMcf1NY zNZjf@KKLZay545MTPE%UE*17yMMe}lS0exM_*3nfX2!UTk`)sfE+?KuSy5Lz>|nCy zDk+v7+qnUtdML->!XQ^oqH?t2cHkYt|D0CK&h(B$r~3Sre|q z%?Yn~nPUVAdKm-%pj$sA^bQw=u4&l8nUn1091~gf5`4sxK>1VQ_~zL;P%HdHeMUoU zCPM-5p~#kg*|r7h88zN_0%!S`buY&0sUzRM#>h}s^s+v&GjN-We*}-@S?~$eQjD!S z?%BWKc%$QXbwoY%Wph&){(AoD!onMK>@pd|fLtAar539E=)-SVi)d4UaQwIWYnx9%IZm&h$v*m&^i}Lf<*D5EtiQvO z@l>}+9kg9drrhq$d!~{@JdOR4TJzpyY8xDxIF(3w7O@JvcLH9l;c_33&+8#S1o@vI z2I*5e&J9A3gUEdTlAp1sFneYnP915XU~YDMetL>naS0q2wx-u760XNvhG)vs#pSp{ z@nV|{YKNi3t$q5VIif71M({KlG1ODb^n~4Dket%GL2yubKfQs0Zi|7KSp?FNWZN4U zJU~BBk|JR+l1EekiOGvwi|yTBPKu|3^|oQPPZjz`d0+f5&1%_f^mG$LfcC1&4?m|>z8PQ*^< zOjXDZ- z0XxxSV5rry-R5EC&?*Ca1-Y z;+BknENisM9q)vYq}X~G5Gt^FUBozuJ7%cj{dGkny@l>FA67MI58?t=YGRjHYEg(Uw7wNG?Cf5Ie^ck-DtBz*ZonQ*-9_ zGJ$=3`C0>0$9q59RobUX-otj(Og0ny45#pTESk28q$x{N(}xu?vItX@eUoPUy*+AM zfp`44*r4WlYj339I#EA<=|@|oK7Az~P;Ua|p@M~RcxWJIASf523gJ;ga1{4zd`v6x z&po{Om?X8rUWI9N;P!vklvs#e!mO|FM(4O` zFqHQ?n6K5?ye$&7bD1hh-VGv?`w_fR$948TiCni_rb)$ag(8vfz+l#nPshs6%iU)V zA9uEW)ir_z*Ne=OPUq%q`1PL`o20m1zbF!aQm&m-=J1jxV848i*XS@6R#EYca$mX0 zEs1MkC>_jUHx>gfHx^urZg2XNb=GkK{!v1aE#c8N@AwWd;#XL3JzSyq#q}TEkL?GI z7WuNS{_f=DtcUXr{N^_OY5fmUYCSx1F4oVY(RR20h)K)qhiZ8zsDJ#9^tc zk=?zn{*9+05h7VXnQxg`K`yzxaGKQ{88p!)$z_Cxi(=Cp^~hwCP8fE+t00bNZ0CvqdIB=w+r$s-nfHRZ3v;&?L!AB z$rd?|hR?2;V)01) zTDh_-=PWA!4zZ?(^+8+fGJ65M%&Q@IdQ&9Cf)W0Fa5}xAT4K;mj2ER@)1LYAzr^Mm zb}|zwXb0cJ;eMWGIce@mpU|S$(dSFTmMK$<^pq5x7vHoIBzB+F$gN=-;?(}*Hcj_# zWW3(mrR&6W*^V$&u;E!C>%>;YtVS?2O6LH*Wfd$lNbXlji-O5MM`xrQ^wM|=pBa7r zA}BoErkOHpDxLlll2ka1mNbTteeNTMN-#Al1O7{Cp*SvWugIayC&TYV=zpau z>G(h39cHK0}JK-eHyum14c<> z=MyaA6bgg09j+$f-m*(OxVXZq0;FRvw&+!i&m~e9zl-e2s3B{`MIurcdNe;Pv=$eb zkzhP}Z7FSiqO#X-j6&gT?`gV|)ZIPHx#W{}>(UMd%-@m#E&oiIMoHJ}A>82-l(tp2 zM#z#*VM3~~o+ih(EaytNb*XtTnk)c`RV8gx(l@P7yvz-{Lk8qrhwF0Q$LJxHUof^n zrW@fX7ciFQTH|YX+;ZrnDE+!MC&nY2yBF9>fJR<1Jj;S^s>Wb;Xhd)#0o%q<{fhb= zb7@o=Pm=bjk_F;GmP}GEr`^VDrkLm~X(E+l0#=w6sPtzxtw}fH$4U96-;CrT2B;QR z7X5JeV(CBOgxTMVOJ#pb{d zZ#kzyME}Ba{e1tRpirn>+Q<)00qb9r&#H*o$c5?cL8yblHwW&GEep?a>?f$B{Y4hwY z;%3(XY(h7$_G3EZL8uz?W zirg#IJAuQGX0bJ`Loj8S;Hhn>gz4qt1yEPUt|bGnAimt`H4Jx$t$H)a_sj+$DB$== zEKR4o#=sD#!`Rc1iVfJG@7VWY!vQ;eP$+&^6hfs*y+3B2s}5!^L&Ep;1#8HcKq59k z=zk&eBDRdpON?_G(tfHZ&d3lVe0e*{u(U`pZSY&sLdm$->1bUi@(FA|-gp>2i;z%; zFioPH9{?hTv!ZhplIbPb3iB+yar7sH0OQW`j^)d761JQUY;%o_Z$CB8Ar(5wPl|$; zf+^yNgGpyPEg{-f_k-KZ49ES|yYeK+= z{*MSZ*zeNw_y<@M%LiB{!%ucSBQpu2S$ydxYSpKwz0i;agpq+5-|QsQDcD$FYUn65 zjqQ^~dvZmYh5Bl21@+MzJRxX$Ot4TojVZm`-pvavo}2o?r>CfPyEcshHZ zO?8&HCvxeJQI6ipeT}7UUhYOX?ih^u(6vDWfzbKVWC~8d$&H?xi}x1bZz2oCtBzG+ zgz}AW4JQ>!HHw7#SZYaqNFs%Kc^F^_@SHQ}KlgBG_*UO!MCIYmZ;?en$}E4k_FKC; zdA>*{sC%g>(C@R98ABK#NIhWrH%w@)^#(MDD~Si*I!JRlSc}n_AdOx|=mvzE z1_cu6NJ(${-uPDS=zjTjhac<%GCz3#lEpnOB?Xha%KFDCj$MKcIWeNlZsCA_ykd69 zn)EIipFD^zR;z}x0`_Dt|El^yLt+et-TXq_7dWLVje$MI|BAb++jGje{FVQ+_S@*r zV&tGx?-wO1!{^+f?LWU{lIKYLH)}-J0!8Nx%txy*-;GjpQ!&8mRDmlS%UH{a>qG+Z zuDX12EGI6Mla&alK6ZrF4wu=V6?;SQ50dO$iU417;cU%xohRj5#({j>oFYyijhC(o zQwEiPdXEb(FL5Sm0tJl;=Z<_naZtaxXP>Qw#Fl-Fl4=+LGo`B=@g7o8sNGE_YI zC`;dar++wPgDX083qMyZ1!8E(84jWbDT2 zGAgT`fxr(1mXFtpb!?NVqk4YpN0(x3J5L4HmEf8d(OnGP*mh7PGW9Ifk1Bar!{&H} zKJvzdFvMy2_t3jGo^p~hEu+>rFfJ8eriWoKdL&6Kfex=fR~HwyyiBl6JUHN?kw!F@ zXrc&*be#!(IMc6%rzU6_sg3!l2ye@NK7L~KaPa2wy5o6*LyFl)2CelkyJPOVqn4Kq z-VG-k$3McIsDApZ4sn)@h(NpNTUP(C|H!6!>w8r_v9cX@&IYmZxBEGQsy{&W7<+`* zwmL|NVu_c68irkRzD$UJ;@77Pt%DJX^~dk%t84{W;lQ)ZFQSQ@Rw~^{PWb3a=;4>> zk=`o^rvr%b_DV#SJq`#3Icz1{Y!(pWu zLkeQdk9npHJqiY4hOuE+C7vPxnvlXDWiw{d2Q7X^Ritaw5zxS5lF9Zibo~PkXgUj= zkqo?SX*LH$d}m+g_Lbj^xCojJ;9r5eA$C^U6VdGyfEn|T+d?T`UO@C89mpHv4WHY) z-q0r5{;=j_7YY>Q9S3n6MPb*!Sb|BvNNk4grG3qUKn7$_@-2xzk?OvMk2D?~pA1oV z{ryi{daTBvxfs{0fC;T~q)@m&Rus>*YzoqNAb<`0{RzlcJv{CNKK=IEcJzQ^DrmAz z6_q@55FwM2-@dvYBysi)@NO%F#cDuI+Huc}0Rym!=vyN?LOf4SAD|lKUyQy5PjF{< z#)>XR!zP~4bajyq80^`49t;r&gaG|36efS?r^M8<9OiLUvUBo-8T_bJAMaNQ?_M8S4oB@|qXbTqUA)3& z#I`b-5nWL-q#;!I1LoIfi=y1FU~p@X0uf*Ij>J?o{h8c9BGFn7r`Rg^j=Ae>Y zrUVw#bOF}*HMm}I)IxL#atm+ETp5rIDO83uA9;El9)!gS=Tnm$Z%j@X(D|_y>kMGL zZC^MnY3vIIy&`wQW!+^jY6naXM8bYQR&#Iy7cnQjYOV=nrctRy80 z;ztRBTh`#7aqrpZn*xJ88O2KCm`#KG86t@*MDB?P-1^`7F;(tjC$ON0@7&R|PIi%6 z6z>_jB3j|N?&WuHYUGydG0;!qNTp~_1z;rGicrLZ>$9E9*>?mjeNLsYGJ|XeZZtq@ z)yKdw5G%(-C^8^1i<~szURrhJ-V9v*GHDJ%sIt&xG z$Hvl%iF1o7(Sg1lBF&$add^~yy=_!O_;U6E+YzSohB79KCE+iZ|1rS{Hjjx%16%Te zSsG{W%H{$3R_^YvPVe^pCSA+8s>8?vDDlQcl8>^QY((^8Ua zfdr}m20ulCs63vC?C~q`8`bNYAI5+OX;h@j-d2C=CqtsK%l@YRAH8qZBH* ziw>Vx1>6*CRuC7zT*ZFev0SOBUuXYgv*tvCx1sE@BsR~2Lm)_edawXO0)J|0!)Jo< z`wcW+mYLrt#Itvsy8y}Svxf*7yTM1}>A1mfb}SKx`l@u?uZQ-fd7;;K)yDn6i(R~k z`qp16f_!9vR3|n014|z5F66Pl3uHLQzQVxyz6i%KYPxgCBXp*UA$SGh^C`2H5m;+8 zqOGNLb|U7hD_=5CS_->7C12|G0wqS*am-QGsi@a&ewT@VySygrz=Zy*qvjBpOzi<8 zfxkJkep~zAq?aymqCfMTwYb|vVT*JDiV}Baf5WXfGp93#h{Cenp}Ox+%Az1kbL52= zq+2a*ML13pV3S;%T$$EpR1RMpU4M3*iw+F70_pZe2jT!1NoL8@?2@_YJbTMnd&j)L z6LFQ{Chi_}`kQR={-(+yQ1I=Q15_^s<^ZjFvRHsyMU>bj@B#6kQYNjfZHA+G>NE0F z5uIPJSYcLwasGR-3bNOK^7Jh)>OHOHNrVYkNj6wNM4Y$V%Bk4rgCL{{LPOX9Sz=H& z!LFj<8Sg&mYgvXNC&aLUd8x$9Jm#TEshjKUO1ev?whf#GxlB7O!*b&enozvJPX3(J z#FDKC zAi4yaxt8r@ifjCQlUDgN4)=$xdJqy}A1%~|+IJ!bDo;NE=ZYdD%{z0?oXM;&dmArR z(LY@vaUKnG z7{M}hLY3r`v1C6pq-(z<7A=w$C~3p>UB<*C=V5u-p(}UYJ;ZR6{9gR(x*Q#JtH)49 z1kRyAFFK{p*#MZ6A~#*)B6JJGG#VD3Gsm(38@2V2Kg;))c@7jnXz}U2{bBwq{HvVl z?smJgofW=OomHQIExlu>-MiFBA6*)KpAvHBT8@+Kp7zum z<@z!zCww?g*GF_Dw0dl?yjtw;7Z!j>nZLF|gvm?<5Iel9u!(ezE7blSFT+DKyKI_9 z&J=I3yx5giBioH%naLKWRGw?|SgJU4=WP3ta#3?~`FjUUr-g^PfpoKYYE$(|f&-SP zmJ6*7;PvJuqUd%0{g^AeU?M3aWbtk9Y%n{cJW_9fZoC^=AB!18(M+JiFE^h-w!go$ zX41RaS!1KYNMDzh%O7sQC~YkH3kYA`T5BXbVBNa*FyenH6F)nMD+_0244Io23U5+2 zV^tkvB>hP{Ga{1*TUpF`ygbanihm@c-NzwPLK|D7RmGsgt{_GUG4223SYj;r7XBf% z+0Kh6v%FHi)-o=nY289<;~<+tnhfD|#N$XC$=8WLgI%uvOanJ5)Hd(pd#0v+K9o{v zU}ne%GmOjN;kQ1Nni@Bwge5EC6IkG&k8~mMv3}_m+A8vx$Fa=5>n(r3Od2YZLIyFr zwDp=sErR#5Rxuu)98h(?9G6ueyL>w!1fyt_LzdaKNnn_~&;JW!2{0VV=y*oOG1%dW z4FQhJFBln}UKxY5-qhFJ1y4?i$bu-6Xx3EKZfjb);0npJ-_BG7B&092)eI!e7 z3&r^O@haEUHGJc6QQ+?7flIDG3$#V_0vxQ*;nDkNX`oVfTZRhl7ld)d*!ruNnn%gmIWSHD~zXx98csHCjl+>JJ)mx4@M@?_9w| z8Ca4~VF}^~?g}|?;!)g zAv?QARrKf7=JmI?JT)=pJUNxE23|PG#HcO$g_Z7#Mmd9&285!HtLxp-TmbP6TIBLI zQe1l$$n)FkDkxGHg0HVXWF3s9zFZB=~XvQ5CQLxiUY|57>aHG)isT%vrTMPFaTt0Z*{4>#pI+PJ&~i)4aDi~MH17Hi7M z05;vIZ^x;$T6*yRvIQkZ(Yo`~=>wms#@S4!)=MDO2GiBa*e_Y%uXQr^^+kiU04tJh zgB(>SuSzn)_@^^<|7G3MotuO1rl+UV6{Y~SO04eV`XfoGVw^?9R@2`lFolx{Q(+@T zp8Ow8us1gsKR(XiNIA8~{oW4a4+|-e-0Hx2=#XdJY=XnFk zNtqUXM6N|A6ujLzpdaHj@T5+B_2=P5$mV^|F2d0o3OIE=I{2tJQelf0v(gjoe)pX z3VQ@J#GSYJOQ5EkNbf;l#964SBekO)M^QKb8NJTneMiS1VzhZ7FDu!>ecKEo?>5Xp&7mUw!_V*yb(M!=>ib|3oyosUjl;xlkJWdA+mhJwynAZS(;c;~>%go3$v^SB z(HpAmlZXC3N4PFXnyLFKg!i%&fRrC*K2fclj=wM2BD(qm6!j`D(*l91!*j**FKu zqg!_17v&no(f+Ji&&wdQ0tuota40WcS*a34BSw%I-HGUW)2!+%|B< z{0eL1r6pF1YnR}2|6L$K^AAC@ht$V@8y-y%;_@+OV2nPkjNKZqRwLZ^gUD z@gxL^b5c1vSSn`{?MQu-MQ6Vx_?Z1?co^2ZEv$RH4=v^cqm)!@2Wd3*q2|mWN>GT{ zA5;O+9??mv80A0H-fB6MvT9Z;8Rl1l(X=Wb`C9Z4S*mTAk56f*K zML`!e;mOpA=ZaeyexU2JV>oZ8FI~MSKUI7j>J*ZWPACu%b8K8y2kwoWx?+|ssqedF z;|#uDm2E4I@ap<)(9i)dqM;*WCcPv1!umKikm?9-7e!hFJ6gPZ!R=iof0$t0R>DT9&U$$jGejg=_0O315Bw$!G1y(ER0_fUKUBR1 zTa<6u^(zR1bfa{GFo1No2!eDCjYBBiUD7>tcXtd(m%t1mT_c?m(ntyj`~E-sdEb5P zPXKe>SFZD1>o;>XeQH$W^|90ZOS~6dFgSa=GUXOi&kL6$32%LkUV8G=;_0l#HNu(m zfI}BwQab4$a`xOy^fwb8tt3fcTJbi^?95HSSb!HD7an3WV-QFvVIduj!s+h%JtDj@ zER7gibZ>aeo1jzzv^4zbi8(R&SfFY!514pxKhSG2^ik`x5}kkK%^UV(N&L7Wro{ZS zerS?r(l6^x@c$9l1d%0WN)oA`G!GSzBJ#n^qL#TB&I=>IWO;TxGEkK&Z*7UwUl6&C zrN=-^rD=LyVbY!5hU5^2VDJp(+s&^6lJ%eDgQ+=_K6JdY_4J&0Ut^q&>T67JMKXGa zFBaiDyCvHHfj~Mx$Sb^VK+SjPhMGq4SW2AW_kpmz1UH?&SyC4T7k7J#2kH^~uLZ-m zLc^J`oX5=|w?AGdsVQ>on~MqL3R@f2ky?b&&GZQK!(=trRC-v_>nalA7r&K+iBxNc zWLQDT|0~78U@V(5Mn8rzNs)h4X@~%%_>yb;IOecBU?Aey0n+j;2Z z8J@d3QgHHau{UFu==3nkZ6aTi(l*6-wv;jKUM-V|=KuaBYy@V;Nwf(IwKG3JM=eHPLS}N!Q0g6_W`Z7~Muwo30icewbB2 zRFENU?K*uNH*{Rxeo&HcP&jFYdX1gWJJj-8h147U$w6aioF{8@V5e*Ea(mtcg6x2U zVPKf8h-8$Mc2%j>Jxt7*@ipRXmt46L}RuX#d`J%2Uw>BoiW9M*_@sNkfvW@SQh*UITET=LnA0aAn7%e(vb>ZLAC(6EO1Vzk!ys=}Pd9d%h}DfW2_j zMC*8Jbfn7!+(a_9j-k(Uaj7S92Ss#w?Q68j-LZeahttOdFs5*4ilur_RVufD6+{%21`kwlCvka1iOCgl=6>!7##^1790&8u{7%7b`khn3`y+enA)8%rV zjWAjo9PZ%Oj(0_{qj(=x)ttLwDY^S^%%Q-yxPF&EYd`{Pu~QX&Tj*ypKt>@WeB+7e zE4|O{sm*T2+gH|&y6ax9eL6FDD;$%~#S_8svAo0%^QF>gXyVmagU%u^WGlV~LTlbR zvO_(B3}_F0quk1>zqiELiTjG1DqcCGebd<2fEozgDV60LlxrPafYLL@aGM965Lh;y z&$eEQn1|Tv)vB>nSoLA*{*S|U_W_LJ=?bWYx-Ki1mbZ~QTO|*~96jc%rILI2vMseo*sWARA38d=((&hOv2sk~83?Uk+deWLIAeKexdk)|d`F|wN zIE-_+%$vh4MI*pd;I@zfJE|7kSa=By;(@{T;wwl3ZG$TmQX!!exs{(JDG@5qQ3y7Rj;)qORE z&73D<7grv&Yn>-TxVG~#1G~iB|Mau5!GElQ+5fTkMmD;_Fdp)r#1Ci{ghIg^FZPs< zA$%Qs0(SA6>f)oH#C1xkIBc4Mok|Vn!&iCoT;lgw(4U;!Z}mP~QO_$-PDE>lv~rSP zSvO8|-Teo*2*I?2V7EiPWS-bncZ5^iXS@$mcv+rXvX^N2%RR63k}_oFH5NC2t19Jx zC_DCgZ!SjI0JfERbx16mJ83r@Y(hDsxkFrQz|D^C!;ExP{NhItOnS&G9+~~c{J-UH zk6UBkS-lvinOv;$; zkIAfUX+F5=D9aoOlq@!5JAzOH`*6*2US1omw+C#<9yveiToJmaVk|ei-+3gG=+7f= z?=rXfoXMs{X9?6yC$ZI|nuU6P%n%Id$M-K0y^%}B|B=FNLG7d(-pAG;;KUyo zore%lXBh0myjXZU8>uVvMN2$Shll8DX~RHoBay;vgPaTTk02DlDX)dJWuC&y=0e)Y zQsc-qE=u21{VARy7HK^1XPC2XqxkqL{7!<~$SdXL)`aBY2dX&hLvI=UPj$ja=(6h6 zSc$r)&rTAgH?k8Vj*39I7if41LEsjh*k94;P?Y=uo;fO!hs;uGx)T#xRk4^jLh39A z015Wrj(_^!#%Z_9kHZ)BEj=hBlQbIaefUBGzWcU{SClO`B7>*t^Q1%6oojkkZ*)QD zyC;Fa%1sH?U6$85BAhGPoH7q6oUT?Q$cWZ`gZR#kyb`}rJG-v##o@cGGRTjfd=|gy z_8_ZV^;jhv1oOyLlE-DBzG|DI-vHPw<7#?{F# zyfd6N;eIIkJdIs3^l85g4;y4oiC`f$a@hAusxbzr{(Bdv@j)5oEQ$v7shKI`68Y&CEF~`RLg%Vxfryt? zRpix0*?$fVz=y4o`$77$TnkP4U5u?#>Vc+knHKEvil5Lng>f^OAe59nL4FCPy;eU| z$R)>~+OBkitK!Xci9Y@0N38Q*b|la)xP=3geQP0&vycCiv~VNrPw12H%0JbduUgtL zP>AeVnKoz#RRkVDY_$ASzwUMcy{1tm)Wv9`uRmO-1r>tOKJwv-UhN;Il!w(lW{?9u zk7jrWQ|(6joYX@6TS)HDl=NuwX5x8tv}kgr`rpR6+^vcxGp)KkucX31Mu0!u?P2Q_ z6c6xL78A=9G=(@nV}ylhiGJYOwA>&n1B+QQ+uEIWD7Q9}9bKMczAA>zD~NY3D}XY? zTW<<*Cb|Okgoa?hF1tnT>+5b#mv(T6#{QPOsnA_+#YALa77j$1d>fcxF8~)j=LqHv z7hBLtL0M2R8Tr#qDw{L5XUPlLNlx%Anz-fGobVXDPF^~*m3=u6dv%MTwj%jt{yRuw z<;eLbMFTy4EY@J2C|q>??P=W$nEHf$MGqu3?E$04HA|k=)H~j%BO>a5g_hw0Ok!8KiI_-BL+TmT-Lrvg_J3HP)$77qono!MW^B zeY3JWbC74B&4)@@0~Q;11k@^Q-n%JcHE}wTM0bq$9ZbMMH zZf*#zA<>a@_~YDAjY6DaYUh~>=^l;3H7?>gB{ULJVazIVy~^Vs|3hS_Xvxwmpzzi=*Ew}!|i zcHRvIYfy)dEaopoYrGsaB#x8kM&)CUKsFbYlawZfP_?FcWdp8xz7pX2CqG6?f|&9R znZoi|weSHW(xz@8$};T7kCf0KWGTj0A&LtVf)|Bgp%&0r?NzZ((!;Q_tGtQD3u%t{ zP%cDO8UbQy@y{mfl7Z9%Tx=}Dv&F2l3Ag0VSPCZD<+?Y{8BR#Icn@3r3m1cUN}yQ# zMl`&|Jhg#Y(uRJC2?9r`9GN+0w?As6WUkU7b9Q3R)ulJM<9j04t><}9KDZ?89d<{^ z6iJEQ?NHEhy5=?dD`v$1w6tlS*)z3_!ugjFBUEsVoBEL7?q`>r^>(A#!asB z+HU84mb3Umu+R=AI;3Dh^YwmNI{sRudG0z03vyg92hx;rk49sQ@Eh$`FNaR} z>K0wD&bC*&UZcLB$eTP^mz|wPf&ASkDbuHqp8sQbOT3fBnRy964gN%ik2&PgGKTOO zS-D}`UbAMDnj74Ic1v0fAoMB_LEx#nRR!O4>5>+WitDTeQ~IgS@i8&4Z{#+E?d9)a zkJ?BkWZ}TZoJL|D_v!6(wngkYKJs`9o_O(*qHg}Ib#&N|9RQ`>u~}Nik$)%%yox{# zc9Kb7O|tv=8aUJMll1vqs+d`3@4gyMac1aQEDnEZgZOi>L^t0SPj(B1+b;v*#qY(f z127I9GuKg0^E7k}K^VasM29I8aT*i}J#u?7aNANrl1dlvH&-xhuB2Qa_nKb1ZONQ| zn&KcuNL((wH^=1Ru>xn9SMuxZYicMjZ16~%#wVS*y_4YtM=XBKQUe13mduPqMM&BX z;CGgTfiZRjullx``wGBVXiWT_HG$~TNF*lDkHSALrvgoNGR97yj_%sc6o-z`!JZT0 zy7mUk)?{>{9mVOdU?vN_p>NWnC&&vv+QU3K3Lm0N`h>9@|Wx z)53hx;dv*&y_KRYb)$IX3mIT|!9c3zFz?_h*NEpsUpnpSKjMQlf!$!YyD7O|8o z488kwRPv2e^Ff*ecPGau8XdyRwO4?t^}&vMVLcs4N<O~m>uEE6rqe@^Yz}`;@qk(Ze`1E{{B|BDZ5vd_WhYS%OjzjS3k0E@4e6q< zzyBRv^kD!YXI07s5T#9*o%gHb1LLBvZVQV`Ud?PEZ zoOS+Z)YB@flW?f3?r_{~6~~TT@~zbl!$g*O6T)4x={?pSs$Vda=tuKSK#Wfgpd8R-oq*M$bVnVqZU}vn+?xXIp6->w>hfYL8*(+3LWB@w`*5EbL zLU6Wmw+Puh5qDl`WV2j_9=h{;Yma;|;PQChr~h%Dyb{%5p~$y2KJc-p3AST9m~JOx z9spPVrx;zBHVouGC$X>J?n!m7yICbE(^t57*1sHLkpXGcoUaRIyS2tTK{mb5&M>av zSP*+tt!Z|!8Z5ZtnLc|H*1Y(FR@2@(fuZj|BdRcnb8U3<45&?yZP&J2J*?_|D8#>S zs$%JH{p<5*HokK#*vg=ab($_py?fS7gYF=wwG>7n6__9hW_ z^-XxIaT^>mB8&wYcco%o)tlk|*1;ZW^YhFwT3L|$Z;o=!OUW_&PcaT%3!S?g2Z1)! zXoaD;yAhf=lv*`B|33uc1`zWDAhM+aYyR+Dmis0=Ye5pfRlgXlZQKhvj(6tA-SmD| z0j6Q}!~VU)Sui2-b7<^ADg5=PmQ-WW0s9*6jHkFhZp;th&T4g# zeuzEAU%WbbSji^jv(rUbFFRZGB|~I$I&N_H@>m>Q8ozdfYDSPY!b1w4|FP^S400uj zN2Cww{!U@Wjl-chza8P@+pD|iRp>#gja?NYFp_#&rn`fY-k(+!C%+ae4GVA02J6vd z{611(sKmwx!c`BR28|NP5msa&JGEwFkA}r$r%}$RmK@@WCYBAfL%= ze6zi|k(YScew+P>86qsrzcR7^181>QkNy9{Su!TmmT45iS5|8 zJSzXCP`_9H@jC75^?sdTt4Y&Vq8-cJ1#oVY4h#}Q#>sD%-GbE-Ghc4-?i*H?=eplT zC!xho9j=Z{ZydtBH#%!;f=sX(8}SZCqh9Ot+3Z3-6a0BDoB>v#63)GDS51e4*oxtj z+vZ|P{!6oVuFz1t;P=T8-Sa4+s(_z_SG(?IFj$=&tlyAICph(59rK+JK_<^Y^9(y% zY!GCJUf+tWNGu^TI+ga3=-O#DSzP56f}Oc3)+ZjlXQkyanUik3b*%pAue;s~| z0P*Ei0i$!)q~f+n5(UFuQ}Hi?xy$xoD9Qc!2&`qEoYh0$@j<~X|FZu_e-PBQQ+=(q z75bnRBVKuU+4YPyQ20E7-{4!%of;>tbl<~x;K_^WqjS18IK?_rl($3Ty10oG+l1Pd zqxCVKJM(_&O+9lFJ*9H*KD%|4I*8{jLYUZ>*mH8d5_|8S6d<%5xy|ZlR$~BBvfV2K zyDwW%`v*}^OLUxayXf-VS=l_s{f-Z5+CzJW?l=vH?rT{AP7E&zW1vn#1f+NP>tJ(V zl@IG<^Xu)X+$B|TSo9!vC02`>KiH1ODcX-n@maIn!d)8{M?^Or5?k!C;09g$Zx5E_ zxem{_XoUh@ZB7x5vx*>z6w3K)@s^#J-0!j81PEMoV9l^cRsd7qs?7-^BBhkhgbEAC zHvM%h{jCH&(cfFYnkv!2^47OzFRvG!b=)9+Dj8F{CygiFw!)lAOCOeZABv=SZkD|~ z`SsAV$gIJG8GW`ICg}&E1u!Ic&3&u+r>13$pF=5zGE*GE23Tlv~o*l^@8klM@3*F-vjYe8;|* zoo{wmVh_w(7mcXWroQZ?+9V2?VBOSJolNwa{(nfCKUKkLj<{w-2Oc8BS(K%G_7^;p zD_3ZjrFZMb51R$rC+ACyD9*iBcvLH<%~W6A=D9HZHxJ}hFOK!NPx(UpJ8=9RzZCQq z$|vJr;a=n4s-EXcUUv8XT}xooB|iVaXA$_sAs+$&5-nJD!3@U`E_bgv!975`r_d+Rv^ zi3%%H)B|shD|p<<^F=F`AV$w%3`_9%aYq9OG1)S$kkfg26SW|J&HYT#@T`Dfk&Y9) z86|fe)qh~fE9DwhkISZiXxZ&}C*IRkKyZ5jS4v(^7rf}pOVeQT5A<;nSu`=>mie_; zTXH$%^>r-q-aMA@4)zQ4zZ&V_gMDF>8f#K~CS++56wm8%1^)M9Z=%-&1!Zt|=brro z$8WVC>#N@5;$Oz(32bYR*HkSlO`43mXD?hXo$wFhsbfTMXR4ayG?(}Z|ITUED47mn z(Z0`bDn7(|^JQvUBWoH_3j5sa)=#RS@bhVUncnF1y}tROkH|G|$xwT>nNEYEL*%pR z?E#;am}15j*8Tlkf0xJ;DC5?C% zQ^y4CnhG<^XD?88a*9h#jhv+WM6xGXI##2;dRZ}_Se6>Cw`kT*OZ?3hr& z&V1+NbUSgyJXB+GW#ll;ek)W@J_76;l{QU8nXWV~(kGU{%S^8x$W58+++PZ9KYAN?}1O6wY8S2ufKiZ^5u z2nPC)(#Dp1f@}Z%RTz6%i9Fm_B(h0oai%T&saTiroHG+w`VDqqe6zxRP2hl?AJpIe zFP;~^sdm<(lOkag&(S}cSO7hPLPf3DDc=r-v_qk`0AwddSPB@6+*OW!$*x^UC3vOf z8dZ!n%YBdK{jweY%D-J26|9B4A3@z&KWN}GF}J#~N%U{OU;L>oHdl>JYM%K9`P_2( zxdQ`4EH!)<_BWJ0?b_xp!L7>cGfvH4p@O(m>hp;-{Nt7OZ36@>q?IDgOdG%wcDFX*JMpH^^ugX($7>B#XRK_)%dZ8V_7T>9z<~ z8y-n~1An=@kVh_Kiru};pNnRXP0))uk)AFo-tM~2-uICY1WismTL`m4q3x@K-?lj{ z%5VLEBfk+xuVxP+@vGetel5Q4vP$EOt8W(&;SeVz-ny455fhjhePuG(#eMnD3Gl@B zPoJ|dfJ>QeCsbyposU-8{vJi_D9`~Z=SMbuCg8>)t^IY(%PiU?aOXp}cX5<_>3MR2 z3(Agk&EG>o_X+x5Q6Xd6L-5ab2ai~zE{%?sdSa7B8kM!ERP3z*QfyFRFRAa7_0Qgx z=#$`nhEGdGQ7emoC}X2HbW$O(<-5}$;boPrFWkN`+86mg_^lbSM7A_lUdv<4OafkL zN>Sp}X^+a?OMNeSuNk)OSUpkfLCm2pN;RdZ)YRCBKEc@$E|p?8H}Mew=rI1UEpoT# zxwC+QWNgJo`9dRR-*6r>6Y(*cur@diY_;9GKz`QE(;>`z&bzs#NnjuE?ws;? z64U^ody?JV#>jJ+aH1RkmrbAc!o;_o?RlMAYVr2k;2l;PHT95M=ARYuU^9e41CDzi zU#*(5)F)FZBUGKfe@9+hg>x*K3UAUHi+l=SqE`aF4DKsUGh=+zksXpP9>?9eHE0e8 zD|6nb9g7zZ{1-oPuna7yCchwNIBzWiG=R`dME`lNeeJDhCpY~;ZjgT_h&`(LY~%6Y zfv}x}f0iIJ=9eZqtb~tVs|kbnU$_hdK@<KJwx+U{bLE(;)TYy@`-R)O_Y9_)ex0HqQ#g2FbNES9%c;3$Xf$i*f zw$(Q4!z2Ax$<+$$SpB<9ur5qoVJIzQ7D;ike=A2)hhGGqp5|Gz3gFKL)|4z2^=hNh zm7V8FKRkHt?f#rkL0MVjXk=J4kI`Dfs7%ccO zlGtitM7ndA*z^cHyVrG-|Kz2*V6bafc(2%5&ex?g#Z0Eq=@q<+ZrI1!3yHEuqgf1S zi-o+tO;~;T)o~1a=EKGkxCu`drhYFsrHjrHDNjB`?(vY>Mp&$gIRY_0tA?0U2gm8i zfMBo&l27y>=qB-ksf&SEvGB2R1xa-Ac5v5Wd@2V{AR+uNz{IZRf$c{&VQ(U#pfz28 zw5fJ=K{;5q!ZAw%=!+|a&pd_}3dktegzRFFLZLa%+cUoaNK#Z-&Y-b^!dwB+@;mqd zt0~^rb#_|`tLC{2KHOhu!+-@qu^$7vfT?o#%;F_J>6INUT3&-yU2df-*K@n52NK4~ z^l>i^=FWKmNC#%jpelFu8ax0nOYsNhI@>X^XtgHW^gU2>r{AsQvjpO9@?Ze-et$jT zT@T)gm|?*0x=!J|vB2wxFqs;B7^UAUc2Zkp$SAE{ak=8@jMzY8o0bQbMdr)nE+-@IRMXFOU6#6$yDef?*BeP}HtATO7Q5ao=#tL%D9K3}WiM@8%8FdYb|U40zSX3PVjgP^jgJ-kwPj*<5JwRnQl33IIy}ytll_o06)$Z8)`=e#LaZ7P=1>Urw&Vw9@ zE#w~K$@)Z|7FMw!{ToVq_DRdenWOM)HMsgYNrs?q=yRS*XStf^?lQCV(amJh2(tda z{aGSZXOQFWhVP90qg+4V6Jcx9t3BfCiG6aOUjWyzwNyg7_vBU*WpZWJKY)DRI`Cx< znA%~e2#4eB{HC+@utfOub;S93W861Mt;I+sVe|CE>gg{TIHFRcnY&rPb6wp$U3Eb<7yyVdjYL#! zBp-NQjUToXwr=gMvGN>LkfJGr(rAbd?V(K!%K&qW9oEHq0k*s4WCVuJOWk(5?t%vB zO^m3Yns#RX_m+d2nzbCvtCXCxC)WU}?OC9-{ae#5Pj6{G;`ir;4d?oZwS9t~-Dk?j z+ZHp(-yZ?Ts4nhxv3=h=%G{5Sbzw-4H926wEZt1 z)w;|bO5+e4ffm_?38yF*0h>$YvWCmgDS!j2H&mlpsm(1RjvO@|+#QkL@S5fs>@l<$ zBUmNE^XRtN1nAAuVBn8-9>Ok_qht$)r+wyJ@u`9Vcs@vO78tu?*9f!*a++} zHZn~`Y8yJi)Gh;^`Q;HI%RVMq*PfEqErQI9{Gz` zfWOzJ@<0Py%vN#dn28S8RH$rXDfev|IHl7EYK$~lWnUd|Ni?^h6_Ot7u&;uEe>#=OA3q(ch%8Ivb zF@Ql42CUxhkvcp3!#s=uO$%+s+ao;MD3dK?y#QC~Wxx$}S~OQM@RA>tZf3d0zDWfW zm*46-&B|AAm6n>=4#LsaRR&Q%e}=Ze;Nl%9+6I`9`jpkF|G1E~?-Ji$6lnRyyH9qz zj!{Ta`^QYBMXG}c(A!5Sw{Dy`RQs>l;`vlbRh9&Y-_}y6E$T&muiBViQ^+7Z2;p98 zaZfm~SE{jHLi7_Mig-0((CeOI!G5V{$!^jsQU|sE@$!X4oslu6;liRO%Q}E%Z-b1Q z`Xc0DKl09muu+hfH?@z|(9LL)y6`Tsu#vbBT!D&eF-?=h#T~T1H`oUEF`0R2fuqTg zasb|TjVbEsKEMw$6)y<%xC6bgSPDby@YfjU_ngV(a-W={N}#oy;QG z5OMg--EA>yUF?tUFQ9xJOO6*0ZsW|>bu7oZIgloWL8^73BdcN!2iwOo1IuJu`<}(J)|60%A_@hr&{;udfZ)OPA?V@K+Dk`|1Py+18@v zTUrm0G0*IBJlW8IqIJucFG20AreKS9b95|-w9I}r2u6^j^XXW+34_B!*< zaIaJU#*fC|lO?=zTt6AGjZRr|qV~U|>)Xs^lVQEKz=%2Jjr3H0IP|E}7Hm}>!tBIa zIp~*??LR^Bpx$&(Q!V^ouEg4iWPoveis9YUk8@TAV)~JS~V!H6IM|qKE{Dk+XzL>rVx51*^w{ z9qI75MB$qF5QlZ{W#B*7@u2Iu_3rV09glUL)u(+PyO>>M4?k z+A-BHPQQW3*-t2}%{}+eqel-5RJsJxJU*{_9h1I(SJzcHk@uK@~a9`fi+egMr04J+*6@)nCIP}83b`Nm~3`|1!NAf_xmSwzw2 zQhR_kRkf}5-+(Fa1%ed20OP#k+F?k>7@?u}F zMyuoz&-XK??A{Q7dCr~)dF54N6?;VoNu`b~1WS2Wx&QJz|J>6ylQa)RGn*QmxP7@t zU8bQReFi(Y%1JZs~JaN677#66evMQ{P4VsGX~V8z35VpNp7o+Rq8!Cai<*UZ8e$?u{zK z?KR4x!EV#^YEAo3A~u{vpxievOn4uO2wL`R>B2t5_@PzxUQw4H<}lP7>qjWY)?|L= zpg_{u+xjX3kBMd0mUWx~)*y9Qk1A#dxTTi4b645U@WZ`n;D^#RjTk()fa5-X7)*YY z-1kYTBfK=e>pD8=@qC!IOXrM|2DUJs+hpn78G#4)HCU*Pir`Pg`$ZEPXiWpZRXpg} zmn(qi2orF?{G3afVRg}jnGB@ZE9auu^IVs%Mz0K)7e8QZxo3+yrr?EaX?K0tt`oWt zC1|;PsZauWlU<=;$qJ!`y?P2m=5juX-4mphYvanlh2drEuipCx(1IX4C)2ClyyP$8 zk?6kfYcP+fDXeVKrmFJse=~9zaYPw2){Mjmiee=u6oKy12-TpjzzQG;p6 zf3M<&^&o&1Ho7Iw^wVjhjDQXHi0~qyEg4moi`Lncwj-@(ICLMk z$6uvC7u05cjcSw1mPYxr(s_e%1t>33b zQ;x)#!Uq)g#!v~KL%Qj71fhqss! zVp#Hb=C~maw%?w2)vEH6SK_~K#;ST1q%)ZePT&N_9s)E8mWhrHOF4{4(7SOkGg#b67RlWCff>XfB#XS4g@$lOzpsW?HG(dEaz> zhs2wuKLH=S|47d1%pM-#4zked6vKChYwE$OawGr2eds*+#z7Yjb(Tu=8&NP25J0^q z6%LVT^b_(h6n+l-ZDlArq;Rh+c7m9>4pH#ek(ofV#-OeVK3>J+{opG``Sv>@lwSBj z!iPW(ShX-+bRl{|iO3l5S0?J99cpydAdn)@$@_0u9nn`gwOBsU&CZkdI8KcUA4qtL zigchBEqN!N8f$ zstKJEHINw8J{_sWV~u=ca+fO_WwVcZGH>rt?*V)!(Gf*XL&x@aI=6KxqKAMan4_p1ogk<{;zSeCqFyHzGp`fW2T&oSzla5_nb=N%M0jah7>s5*0zTFu1H=&-bmdGKg;O|Jb(N>w3nYoE{IPVM%m6rgRfHjK>hYL zdp&PBNj6sVZh|W*3)Q>k4@Eo=XrMk;1e$W7F5ZghtFkk?y3gh+vCH-XIU?7hl4zw@ zh|Qw(Dv9vQbD7~8f!?O=HK;qv)7{W^0ZBv41x+2&-3k8#(nCqAd;*F`Bd;mJ`9-4r zFHH8c*cXCRUWMO(C|`(pP2qNYSe$Vv?r!pruq9l3c|+QPl|R*hUytLg8v6bjV(B8s zxJ#;&!)XAloO05sAaE=G*zNVSo_A#h4)E8mw{U%_1CnC8+mpnHa1H@n=5H@EzdDm2 z5R9T9I3ktxyH<=1&^{@CP+Q=&J)Ie7t9LX>g(UU@{(GD{s(!X~utfFz>?@TpWy zU$WkgehQ>x_^L;Q0dCme-@o@Vlh$JcKtJ+}NSOnu1I&90cWvSK-)2L{*x~UEhc4$5r zpux)UfD0lY981328NJ*l(**HnGJals%!{BGMLcqT`h1V5PMQFwgv3975JBT6;m#2= zC5cz4w=W03Iv2VCK*V-*wX*-J3J&KM=;K1M;3!i=6o&7-Cuvp{!HYu}R?Ts_8sKFk0U!1;TtA#%WSiCyybWkWapT^>J z;<-cUST1cOfWRnLuxQ$Qt#2z=KxsC0<%J_70Vxz02(R9f5jO#qSCj*V8n1*}Djn{| z;7HP6`)qZ-R=Dj0;ZM=z#6VhOe-@@wnKr?|>3-Ypi$yq+t|z2k=U_ZR9)ZPzoLPw2 zL6Dj%cPEQ{xWV>LCB5h#Oj2XY&6vY?;aaz&XTA=$x&Z2`&c;VOhh~nu+C5w^-2NmM zchAs6=)G7Z+>fVbWiT}WMeA3LDekxHJ(^#(9EbbEk}aYhonCQ~L*@cS@2#;e-1rYi zwMuLLn$x(m+>E?j zJmda53|rpW;f}g8af;HSpPF@^6f%Tp10YRzwQL{p@N3f87QiyJ??oD^W6)2d8F$qM z*s8Z>RwqNE5RaOG*tLXmSg}}U>nNmMAIUs6c(;ngAB8iV#{RyJ@@$d()QSD$+W^_jeXcRjH;i!M z{aHSa3_Xq7;GM#izk!$ZM?H%19G<}n!#^E7Ud2*hcF|wK4a9A}1)A;1Dhxp$wX^ky z^2mW)!5P{ZKmbLxtX3A47^n5P=d;E)`At$}-_zmd0> zw)Q=`z)L(J#{X^bCOguCn))7FmFnf_f9UzN!+l{%^@qnV?2=(nXgmN^X0!(#?t^V& zIH5XMeYi|WITHa<-xC*Kr6n&MwHFtaZ4+>po z7JvMEU*gJZw&%>mKw3SKL9Sj-Ii96*TpI(wIe1|_g#5E`1%obLsAK#J)pz}Or`^sb z6B1>)*9TcuwXZcTijVvghWD4u#yrRvIsYnw-jXW$+nt;Zp$w zW-9umA6R@68FTjKaoVH2+jh>~jii|eeXO(<`kg^;>-gDsunc-=C`M)tK5f^Tf+iUS%`W8l;DIqyF1o*90CX+OijJr8TH> zgT!eYVG@h=j@{EW-9dTaEg3)VDD>5X9Enq!%%ltf#NWv4@o=3OGfL&%J_Ckhe<9_2 zngd@4oil1l$jf{>y%wL_@7#3r5ucoY|Ein^ND=Ct+i3AQBBVx*eC3Vp)bIm;aL0FA z2mSf`;o8pTaJD`4uh9q}s<{zuNo_)pFc+lE(DQOEnhqrbtPv6C5Jz#7ZJXzWM|CfoM%ep+SHL&B+t zH-*!;9=m0c9&VSTO5aft2G&;1GaUx44#{_fv#FtcrFFlJtjX*Q6hu0R4~LoCbP}SQ z;r0o1pTDQ)+6(@w)XD@?(Zv-a@niB9wW1E-~S8m$mkV8LaID|<=FCGjM?ylWy(E|iq949xwC;9y1?Sq$iQ!X7S zl-TVVlXq0q=IMYE-Pwhzps-R60B4~g^e1au>K;dYv z7GBtGT)|%g*9p&aX#DbdAS7HDONHl@=mXab8fb0`Gr0KP!#b;H^>H-=@ zSdArm?jPVhFyoX4X@H;@Y-xm#g+ioIs2N2h24qKsiI|#NEHU8}=F+Y;Xe34{NS2D1 zqP=K7V5U78vv>17%iu{ezr2_&?Z2T2p0||vZ=V44^}j$By45!c3Vm`DfkJ5uinpbN zPJp@ymb>tBquElKl0Rl@H-&=2gVnBqH6Rtg?DJkD#)x!tyR20D-UwAWbaN|lN3;U% z^onDqot3V+SFSaD!iBeTOPZ!A1j=jJ$@2IO!qNOAh8w1r8tX$ z01i=L7ihf+2KQuYxeKr8t1+5&)9aaNBTf z)|z6*mzWUTJ?z!C?_J3`SBc}~4EhT$7JU^x!3Vz;XDZ5zh4#@gEHx=dFMvr8@IH3; zBNgP@iWwJlJ=|(;XsY|C6CK^1E0LDCZ;+wFqD3SZHW&W5_){bY5k*`uP!-k0SAYwv zaGX-z%o9xS8sB>x0je_nHL>LG7s9-MiJH*p<8yWQd-X)d_?3WmkjppR&<%~}Fc>ca ztI(ZgaP4J_RRga2Wpspyx&znEzwM9XUb;_aTK-SM-=a0lm_qTRGEBRBf=#r1ys|so z?6AVv$;?I@TAQcvJTQPG2}^v~Ue>d5=KVd^olTkma~Bp3ETL0{Qb5P1G){nZ`R(p2 z$_#Pd{=Gkx~kYjTY?-&+kK$1WY0Y-HH6(DW=U&r{xTpLF~9j%dSY z95kWHE?cTe)!J0pEs=dAuhE_@BG@x${ORJJ+L9;eMAT9)1@l4ijGrh>$$D4IIH87s zB%PsWXZB;G8cXo&^$YtN1O8m_1JB_A2f0k7_Y+KPJEK2QFi{Wu~ts}(0GZL zg<>HU2Dcd-%tB*PsCiGxZ8Pl$@s<*%X)08ngL$#b97m5aB!)v4A?tqMYS&ogr7_- zaVUEV!J5sogs4*Bq3Gh>QbV{Nmy54pg|7oasqv#`b6~84&@p4HNBgotbMQ-m^pVRr-{pm7Fb6&SjT|ZVk;_Huoryq~YlflN zBeSg6VG*z4vpKaS@PiCVkD+tmo1KQimlg`~ZPsqE4d>NV;zQ!1t@`meDJ=PI- zAJgVzgqW+1We#>PWV2IEgp=n1`DP-c3E}D%3*nL$b zzR}7)`{+$17ZTGGizR;8>*2)4E%ofO1AgWy2Q9rqWGc;Hv!5b0M6&77hs$ zO=Zori%v)a(f-jG2H!Ncw5E>}-~G2{|DOQ15=rf#+_%JT*9a3!vIdt;uQH2}ti`Ov zO`8RH9+((DVxp}TGIIyQ`r(XOxys0AZ(HC-E#l{DH)%dZG-gH8pWFuQw}NjfC7*1b zgUre046Z7;(Y?$0_FKjGhI>-QvZt@KzXelU;1e-VzOWU{cjC*;0>+io2;AIpbLPlZeA_5-Sf}I;)A|UfO2S*PBY`%Vka+-ce}}};#|}y7Jq=mVzV-_n7>`S zX-%x+bPsp1_=zsTSeHY$;t*0Zh~!SoLdRLP7$q)ytGO1zmY6hsiDaR^BQ_QY!`GoK z`Z@NJTi6Z`#`?ebuJ#slZTq`6gFN$YM~Uky>X6OF+?N=G(zA|T@D`G>C#9P>N?JRL zZ|r1lyNTgW@*@TIf*7?Ee>kF8%Uf}81U^%oH_1v+3(FT-0;x%~%}Y9JiJEyEg=`KU8Bj)+uq!4TtAlMbsyjKf7pRSr20AC_mO`BQ5+k z)|gpSYFh&dl73p?t#u9AUhV~`he~Z95NBfGp}FUR;=$kknTTm94$8N$0T#gTtYFUU+2F02e2e0C( zr2XWe9b`P^WZD+#mjT+XL>`otbi(_3+>j&}ptQ5lXK<_yWW@y*F>@MH2uhNadzTI< z$F+_Eimds?wtzXfLB{A>fv?m1L~<|qVV1|*$*`2mX@!?N>mB$InZ@{JvFj4c`VL!X z-Enl)vfQCGX_s<!#h~<+;Jv8y~>WkWikO+!%QKeY?Iq}?{hg#g?R%#8H!pAj^EJg(h zb@U8M7!Tq1LD|3`Y$^P1wg}-@#vf`{uvd@}3aHJ@Sl=Wz7K*(zLli-aSU-Ds)BlgY zwj;TM_$K9Fc^Oiribc2fVV*QP0%DE0#5zf*rqKe2k{E1h?Uz|Sa0WZs(dZ(vaO-$l zs{w?P#LvVJfseH)CCvpm#ENWZYVmxmDI|&IX616zNyS+vPm0CWkD8}MTRs>j!^#MP0G^kLlFsGoqnOFXXJFI=*QnFqyUy$&(>jzKKM z>+i&xgM1=>N_^iqz_am(Q>qoq=DrFQVLb6z6~rgA#2N$HT4Fy!xsq8)t%>nNZ|+{E zsPP}(Zx$^xmI@U%R#OnLeNv^HTy7M4BUmsDO_F}#q#FCIY6Bqo zw2N%&Zf|#197k19D~>1HV#gtB`5gO*w+^<%PV#KgICf=ak5~{3q=uvlQ11Adz!(QA z1v`l!ltGZ9Wd)@}|4`-=sTNd~P-anRQ{;?b0lxy2Mkp4F@xu1@o1kYXv{WpxkKc{~lJLq;x%^9X1Z6^0{kPFmD>VI^@i1lmZ zMXYO>l}FC=i)tSZlUO{PbC$AKD?OU>g_W?eoD^zD?M^%0@VsZ^H^L4c z;J97L71k)B*RHsOlv!-%-D>!pSY=kU-?5_IN*BHo+E~Q3QpDR0Kbw#aHE0scORfPZ zmfSQAx1@6iZz6;5j?W!b9dB=6aR-igcjreg-M9-Q)F-IcJh~&18ikQlZFI8DJvgt6+@fT$qF6Z5_oxu7wSQ=c2XNkY zvw&5;2g_AKVJj3X$Lwii;W4p{t$SI%YSPa{doR(p00owz6oetWY~HP{Fj!)@f=}+l zoozD^7(D&)$yqq1X@g$|9v-V=E9C>RT1>@?gKA_hzAoxomZhG?mYfIrKyC2oaZ>GU zR88SK<%4!ZG4;Ccu^UL zji5rY_^NYN3u@(Th_W^nYv<$>OyvYih(j@>HQ?Mt0|oVw6ds!MQ0Q2}YH8(j5m8xC z3?-MEC8mLsS!jxETp(p&9*yQt!B!eY1#iu8QEjZk$QL=dg+oa3Lx5P)D!3BdVi9i%x^TE@O~v+j86l<86|1yl?#Nh#2l0M71(%kzx)Q`IEEpQX)5^OJZl`N# zfaVupdv%WBVZJ3W&V^sGU@F1Dh^^E%cX@#7BT>x?gvk=bxz+$*4&m{12aPhZCK$jY zJk}1@&4cMBPgvH

    B@9DvDS^RdU0$mGZ3Tb>(#K!(5K9wq_gCdK?@9wZzj_-ELct zquM92Y)$MR->CPAc-56Oh-v8Z^`o4^ zchLebceRx9b1mZU;o4aHP1l88=5yoQV}DoteP1a8M6tevf>P~2OwZmi>pxs+V}<7? z5;L{}x)Gfl;Swv%gBb8DRwFi+yuS4Y&$TEMYs`q_*_io&k60{LykQrjzp*YJA7`nI zoeYk1QK49PJT5mYk|{js%p&~Gc*yeU$kS<7fK=%eDlgU=XooPVWiSg5R;i23SxM2m zgW+rOtFnn2|7r^OKzJQXSLxnA0Jk{2Eaw_4&!2#7%6_R@|r`GX@T#eA2#5q#asEXbF(3{E2wOP^^}>@hQf3 zP0g1Lh0LIwJ8m406>1t`i8aCE(1mjJ#mZ6vNP(meagG0Q2~V}zwggtb#|q6&Bt}{S zB6AbC#0vEww%IA_63fEp8)@NFtjVL+A-OuP!p6cA9Hk6kOF3&Zs2e4vRTzAs>aYtp zj>rR>4eB;Ml4RIAh^jCGi3Ak^)g_6-&q->r7^2`qvA`d;yAS7wb7E{sLmqu?*;bg# zeIH6izgsyV_*=FkVuxyngxV4>DRBx;{r=08Dc5vE$~>xqC{*%r=RY^xl^9mKG{g<6 ziYTt>jKf}k{A^Ok!#0f&#X~+TEKhs@%}CbFMr|xfO;ZUWhLNG>EeDtX31;vhhcjVPmxcAe+m#thMdz(&MP2VuZP>x+~o{>P`*_3 zDHfizw!qnmOsi1gL+tY(_KHwdU%}|y9`fh_1m!01h=pwIk%;b9b#1IrG)An__oTPo zP~Pr0jB3Twh9?#`cJRZ`gP)QIP*HbQNv#6amo$wGVGGmqSH!NQM@p~@KPnpsaEvAa z55XuG#gcLl7UcQX3GAWe;MIfAS6Q?M+#9|QN9vL9px%A2Su*4U69fY?yN40-5t7au-l^HZe*6IuG1 zQWhSkpxAHFo`!g>4kN%Xkhej};a8=3l^4Ff;{B=8h+@gjN?Ke`jyd+mSIQ+3$2&nH z<&EBed;ssK;)OH#Mf6wHQvi=xkr@A7UtNeZ5Zh20jrJ8J#(v4COM$rwe8g%1jVe|x z8Y9*iD)!C_XVp5p-!Li_OP+B0aAdhcndFO9fTbdR#~j599z->Ps*)SdBs9&lbJcc9sark-u|LvVia>6hWMA>nk zR8f^GPLb>7MC`I-pG#!NBK>+sj_p8#!J=49D>nKJqtB={vcZJhACDCRE=Gw5FsmW0 zTn&h#dWV~GV8tOx>)OFdb+(k`q`D2ABO&?rk`1>7+#}^u72G5uxC4W!;?4HP7$^j; zCDs(5qpze6SU{{P&T0eCMXZ}K^H?%UE{oFOzz!JPbTQFuv z%qt#kVmhR_R(i9k z$Awu4ymD92tzu?INolcO=YSIKL zR~5dQo8mO$7Gj-4J&$z>Q;)^eU=qqq?D>Z$M97iBS-UY7vz4g_2M1tWfvW@?m_^*0 zq>Fi&-@LG6f*THsi&fqO!XUhtUc)2hcM5e-YUTwqgL*L2+)^QDG;tB9h&)y{&FxUT zm{GuuaV!vX-Q5Xc1t%azE922%<~M4*oIo$d?N*3}e`a8aWtZC~I?0{NVQIK{#8kkb ziNrDLKJU5SGsGOKxW8H~odmd|h__#Lg zHlxJ)Veh-YkHD7eo(Ez3kY07HrFRFkPZ>>uJHl#;hOplp#>s!ej99(}S|}9mh8dN_ z`u&{nWh{}s0bj?AbVuioOz@bxI*wg$vmBRfxBkLviUus}db4!$t57Jci6T~^&;doP oLZJhSScO6d6tN10)p0s~10YZm`I2G^k^lez07*qoM6N<$f;sq?p8x;= literal 0 HcmV?d00001 diff --git a/libraries/WebServer/examples/FSBrowser/extras/feathericons.png b/libraries/WebServer/examples/FSBrowser/extras/feathericons.png new file mode 100644 index 0000000000000000000000000000000000000000..5bb2cf63dcdc6f9c0a5309c5823652117e5bdd73 GIT binary patch literal 1558 zcmeAS@N?(olHy`uVBq!ia0vp^0zkZggBeH~J(p1fQY`6?zK#qG8~eHcB(gFvFf#=B zgt!95^-OK_&1{V<9W3l!tsOnAoje>I96UWey}iACeSQ7?{at;6JpDs`f+K>0g2KYW zf+FG~A|hg9V&mfC;^X5(qZ7ko5+mbMlQMFXGxD;5ASWj`H#Z*$N-7IVD{C5CYn$3y zT3XtGpsTO5cVhpP8PjIZn>lml+_`fXFI%}}`KomrH?7~WdBf&yo3?D-vUS^*ZQFP5 z+_?t`_U%7(o;%RxOwaD-Mjbi-+%Dn!PBSDo<4j2?AeQ#FJHcY z|Nhgb&)>d%`~Lm=j~_pN|Ni~&-@pI={{uZZ3PwW!R|qJ6jdWmOU}Pu>@(Tv0mXQn? zg1@t?0>g>3z$3Dlfr0NJ2s7@OnEe(gC{^MbQ4*Y=R#Ki=l*$m0n3-3i=jR%tP-d)W zs%L2E{@KYK7>re(E{-7{-fyqm3_4^W!j{l+X-B?C_Uj;rgIXHvc!NYkT%P{Dudb%< zJ^Narmh$7)KjqJ7tJt2Lli9c|Xu*5 z)J$8z=fSk=_)!O^{ZVhfKTu%ZcVB$9P;`aKfufcwskTKI6M14icxLK;@+r+&srtHb zHH*Q)>L)Y%`^$^%^iFxJAFFwDZ%?S)q|Y16ZEw~2oI9SH`ccHn^qrBFjKqhkhVAoA z@5t|cliYK9yU@C8ADLDg-kY$2N3@^8J4|Qi^TQ{2&YU@LhUd(m>;+$ht2DpedRzP6 Q4V2J5UHx3vIVCg!0JbYzga7~l literal 0 HcmV?d00001 diff --git a/libraries/WebServer/examples/FSBrowser/extras/index.htm.gz b/libraries/WebServer/examples/FSBrowser/extras/index.htm.gz new file mode 100644 index 0000000000000000000000000000000000000000..34797b0589617ca9bfd7e2dec3cabe824efe45c0 GIT binary patch literal 6261 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 fM1-xRarv_#hz^ctf_C~R#J!_`xuIwdI7 index_htm.h +echo '// This file is an embeddable version of the gzipped index.htm file.' >> index_htm.h +echo '// To update it, please rerun the `reduce_index.sh` script located in the `extras` subfolder' >> index_htm.h +echo '// then recompile the sketch after each change to the `index.html` file.' >> index_htm.h +xxd -i index.htm.gz >> index_htm.h +if [ $? -ne 0 ] +then + echo "Error creating include file from index.htm.gz" + exit -1 +fi + +echo Reduce complete. + diff --git a/libraries/WebServer/examples/FSBrowser/readme.md b/libraries/WebServer/examples/FSBrowser/readme.md new file mode 100644 index 0000000..2d14183 --- /dev/null +++ b/libraries/WebServer/examples/FSBrowser/readme.md @@ -0,0 +1,137 @@ +# FSBrowser readme + +## What is this sketch about ? + +This example is a FileSystem Browser for the Pico using http requests and a html/javascript frontend, +working for all of SPIFFS, LittleFS and SDFS. +This unified version is based on the previous examples named FSWebServer, FSBrowser and SDWebServer, Copyright (c) 2015 Hristo Gochkov. All rights reserved. + +## How to use it ? +1. Uncomment one of the `#define USE_xxx` directives in the sketch +2. Add the credentials of your WiFi network (search for `STASSID`) +3. Compile and upload the sketch to your Pico +4. For normal use, copy the contents of the `data` folder to the filesystem. To do so: +- for SDFS, copy that contents (not the data folder itself, just its contents) to the root of a FAT/FAT32-formated SD card connected to the SPI port of the Pico +- for LittleFS, please follow the instructions at https://arduino-pico.readthedocs.io/en/latest/fs.html#uploading-files-to-the-littlefs-file-system +5. Once the data and sketch have been uploaded, access the editor by pointing your browser to http://fsbrowser.local/edit + +## Options +If you need to free some space on the Pico filesystem, you can delete all the sample files at the root but also replace the `index.htm` file in the `data/edit` subfolder by the `index.htm.gz` file from the `extras` folder. That compressed version is not suited for learning or debugging, but will bring the total FS usage under 7KB. +If you want to use the browser on a an existing filesystem or don't want to perform step 4 above, you have two possibilities : +- either upload the `index.htm` file to the filesystem by opening a command shell in the `data` folder and running the following cURL command: +`curl -F file=@edit/index.htm;filename=/edit/index.htm fsbrowser.local/edit` +- or embed a version of the html page in the source code itself by uncommenting the following line in the sketch and rebuilding: +`#define INCLUDE_FALLBACK_INDEX_HTM` +That embedded version is functionally equivalent and will be returned if no `/edit/index.htm` or `/edit/index.htm.gz` file can be found on the filesystem, at the expense of a higher binary size. + +If you use the gzipped or `INCLUDE_FALLBACK_INDEX_HTM` options, please remember to rerun the `reduce_index.sh` script located in the `extras` subfolder and recompile the sketch after each change to the `index.html` file. + +## Dependency +The html page uses the [Ace.js](https://ace.c9.io/) (v1.4.9 at the time of writing) text editor which is loaded from a CDN. Consequently, internet access from your web browser is required for the FSBrowser editing feature to work as-is. + +If your browser has no web access (e.g. if you are connected to the Pico as an access-point), you can copy the `ace.js` file to the `edit` subfolder of the Pico filesystem, along with optional plugins etc. according to your needs. A typical set might be: +``` +ace.js +ext-keybinding_menu.js +ext-searchbox.js +mode-html.js +worker-html.js +worker-css.js +worker-javascript.js +mode-xml.js +worker-xml.js +mode-json.js +worker-json.js +``` +(see https://github.com/ajaxorg/ace-builds for a full list). + +If `ace.js` cannot be found on the Pico filesystem either, the page will default to a plain text viewer, with a warning message. + +## Notes +- See https://arduino-pico.readthedocs.io/en/latest/fs.html for more information on FileSystems supported by the Pico. +- For SDFS, if your card's CS pin is not connected to the default pin (4), uncomment the `fileSystemConfig.setCSPin(chipSelectPin);` line, specifying the GPIO the CS pin is connected to +- `index.htm` is the default index returned if your URL does not end with a filename (works on subfolders as well) +- Directories are supported on SDFS and LittleFS. +- The convention here is that the root of the filesystem is "/". On SPIFFS, paths not started with a slash are not supported +- For creation, the convention is that a path ending with a "/" means create a folder, while without a "/" we create a file. Having an extension or not does not matter. + +## Changelog since original FSBrowser + +### Fixes to work on LittleFS based on SDFS +- #define logic to select FS +- switched from SD to SDFS +- begin() does not support parameters > removed SS and added optional config +- LittleFS.open() second parametsr is mandatory > specified "r" where needed +- 'FILE_WRITE' was not declared in this scope > replaced by "w" + +### UI/usability improvements +- Never format filesystem, just return "FS INIT ERROR" when FS cannot be mounted +- Tree panel width is now proportional (20%) to see long names on big screens +- Added icons for files, and indented them to the same level as folders +- Changed file/folder icon set to use a lighter and more neutral one, and added specific "text" and "image" icons for formats recognized as such +- Items are now sorted (folders first, then plain files, each in alphabetic order) +- Added file size after each file name +- Added FS status information at the top right +- Made clear that an async operation is in progress by dimming screen and showing operation status +- Filled filename box in header with the name of the last clicked file +- Selecting a file for upload defaults to putting it in the same folder as the last clicked file +- Removed limitation to 8.3 lowercase filenames +- Support Filenames without extension, Dirnames with extension +- Improved recursive refresh of parts of the tree (e.g. refresh folder upon file delete, show last folder upon creating nested file) +- Added Save/Discard/Help buttons to ACE editor, discard confirmation on leave, and refresh tree and status upon save +- Removed "Upload" from context menu (which didn't work anyway) +- Added "Rename/Move" feature to context menu +- Sketch can be used on a preexisting filesystem by embedding the index.htm file in the program + +## TODO (maybe) +- ? How can we query the fatType of the SDFS (FAT16 or FAT32) to limit filenames to 8.3 on FAT16 ? +- ? Add a visible root node "/" (with no delete option) + add the FS type next to it, like LittleFS +- ? move "Mkdir" and "MkFile" to context menu, with prompt like for Rename/Move +- ? implement drag/drop for move + make "rename" only a local rename operation (no move) +- ? Optionally present SPIFFS as a hierarchical FS too +- ? Optionally mount several filesystems at the same time (SPIFFS + SDFS or LittleFS + SDFS) + +## Test suite +These tests are a checklist of operations to verify the FSBrowser behaviour. +### On SPIFFS +#### 8.3 filenames +- At root : MkFile '/1.txt' / List / Edit / Download / Delete / Upload '/1.png' / View image / Delete image +- In subdir : MkFile '/dir/2.txt' / List / Edit / Download / Delete / Upload '/dir/2.png' / View image +- Create nested file '/a/b.txt' and delete it +- Attempt creation of unsupported filenames +#### Long filenames +- At root : MkFile '/My text file 1.txt' / List / Edit / Download / Delete / Upload '/My image file 1.png' / View image / Delete image +- In subdir : MkFile '/My Directory/My text 2.txt' / List / Edit / Download / Delete / Upload '/My Directory/My image 2.png' / View image +- Create nested file '/My folder/My test file.txt' and delete it + +### On LittleFS +#### 8.3 filenames +- At root : MkFile '/1.txt' / List / Edit / Download / Delete / Upload '/1.png' / View image / Delete image / Mkdir '/dir' +- In subdir : MkFile '/dir/2.txt' / List / Edit / Download / Delete / Upload '/dir/2.png' / View image / Mkdir '/dir/sub' +- Delete root folder '/dir' +- Create nested file '/a/b.txt' and delete file 'b.txt' +#### Long filenames +- At root : MkFile '/My text file 1.txt' / List / Edit / Download / Delete / Upload '/My image file 1.png' / View image / Delete image / Mkdir '/My Directory' +- In subdir : MkFile '/My Directory/My text file 2.txt' / List / Edit / Download / Delete / Upload '/My Directory/My image file 2.png' / View image / Mkdir '/My Directory/My Subdirectory' +- Delete root folder '/My Directory' +- Create nested file '/My folder/My test file.txt' and delete file 'My test file.txt' + +### On SDFS +#### 8.3 filenames +- At root : MkFile '/1.txt' / List / Edit / Download / Delete / Upload '/1.png' / View image / Delete image / Mkdir '/dir' +- In subdir : MkFile '/dir/2.txt' / List / Edit / Download / Delete / Upload '/dir/2.png' / View image / Mkdir '/dir/sub' +- Delete root folder '/dir' +- Create nested file '/a/b.txt' and delete file 'b.txt', then delete '/a' +#### Long filenames +- At root : MkFile '/My text file 1.txt' / List / Edit / Download / Delete / Upload '/My image file 1.png' / View image / Delete image / Mkdir '/My Directory' +- In subdir : MkFile '/My Directory/My text file 2.txt' / List / Edit / Download / Delete / Upload '/My Directory/My image file 2.png' / View image / Mkdir '/My Directory/My Subdirectory' +- Delete root folder '/My Directory' +- Create nested file '/My folder/My test file.txt' and delete file 'My test file.txt' + +## Credits +- Original version of FSBrowser written by me-no-dev, contributions over time by various contributors +- Icons are from https://feathericons.com/ . The resulting PNG is passed first through https://compresspng.com/ before being converted to base64 using https://www.base64-image.de/ +- The spinner is based on https://github.com/jlong/css-spinners +- Minifiying of index.htm is done using the command line version of https://kangax.github.io/html-minifier/ +- Idea of embedding webpage in code borrowed from https://github.com/me-no-dev/ESPAsyncWebServer + diff --git a/libraries/WebServer/examples/HelloServerBearSSL/HelloServerBearSSL.ino b/libraries/WebServer/examples/HelloServerBearSSL/HelloServerBearSSL.ino new file mode 100644 index 0000000..6e4cf06 --- /dev/null +++ b/libraries/WebServer/examples/HelloServerBearSSL/HelloServerBearSSL.ino @@ -0,0 +1,148 @@ +/* + HelloServerBearSSL - Simple HTTPS server example + + This example demonstrates a basic WebServerSecure HTTPS server + that can serve "/" and "/inline" and generate detailed 404 (not found) + HTTP responses. Be sure to update the SSID and PASSWORD before running + to allow connection to your WiFi network. + + Adapted by Earle F. Philhower, III, from the HelloServer.ino example. + This example is released into the public domain. +*/ +#include +#include +#include +#include + +#ifndef STASSID +#define STASSID "your-ssid" +#define STAPSK "your-password" +#endif + +const char* ssid = STASSID; +const char* password = STAPSK; + +WebServerSecure server(443); +ServerSessions serverCache(5); + +static const char serverCert[] PROGMEM = R"EOF( +-----BEGIN CERTIFICATE----- +MIIDSzCCAjMCCQD2ahcfZAwXxDANBgkqhkiG9w0BAQsFADCBiTELMAkGA1UEBhMC +VVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU9yYW5nZSBDb3VudHkx +EDAOBgNVBAoMB1ByaXZhZG8xGjAYBgNVBAMMEXNlcnZlci56bGFiZWwuY29tMR8w +HQYJKoZIhvcNAQkBFhBlYXJsZUB6bGFiZWwuY29tMB4XDTE4MDMwNjA1NDg0NFoX +DTE5MDMwNjA1NDg0NFowRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3Rh +dGUxITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAPVKBwbZ+KDSl40YCDkP6y8Sv4iNGvEOZg8Y +X7sGvf/xZH7UiCBWPFIRpNmDSaZ3yjsmFqm6sLiYSGSdrBCFqdt9NTp2r7hga6Sj +oASSZY4B9pf+GblDy5m10KDx90BFKXdPMCLT+o76Nx9PpCvw13A848wHNG3bpBgI +t+w/vJCX3bkRn8yEYAU6GdMbYe7v446hX3kY5UmgeJFr9xz1kq6AzYrMt/UHhNzO +S+QckJaY0OGWvmTNspY3xCbbFtIDkCdBS8CZAw+itnofvnWWKQEXlt6otPh5njwy ++O1t/Q+Z7OMDYQaH02IQx3188/kW3FzOY32knER1uzjmRO+jhA8CAwEAATANBgkq +hkiG9w0BAQsFAAOCAQEAnDrROGRETB0woIcI1+acY1yRq4yAcH2/hdq2MoM+DCyM +E8CJaOznGR9ND0ImWpTZqomHOUkOBpvu7u315blQZcLbL1LfHJGRTCHVhvVrcyEb +fWTnRtAQdlirUm/obwXIitoz64VSbIVzcqqfg9C6ZREB9JbEX98/9Wp2gVY+31oC +JfUvYadSYxh3nblvA4OL+iEZiW8NE3hbW6WPXxvS7Euge0uWMPc4uEcnsE0ZVG3m ++TGimzSdeWDvGBRWZHXczC2zD4aoE5vrl+GD2i++c6yjL/otHfYyUpzUfbI2hMAA +5tAF1D5vAAwA8nfPysumlLsIjohJZo4lgnhB++AlOg== +-----END CERTIFICATE----- +)EOF"; + +static const char serverKey[] PROGMEM = R"EOF( +-----BEGIN RSA PRIVATE KEY----- +MIIEpQIBAAKCAQEA9UoHBtn4oNKXjRgIOQ/rLxK/iI0a8Q5mDxhfuwa9//FkftSI +IFY8UhGk2YNJpnfKOyYWqbqwuJhIZJ2sEIWp2301OnavuGBrpKOgBJJljgH2l/4Z +uUPLmbXQoPH3QEUpd08wItP6jvo3H0+kK/DXcDzjzAc0bdukGAi37D+8kJfduRGf +zIRgBToZ0xth7u/jjqFfeRjlSaB4kWv3HPWSroDNisy39QeE3M5L5ByQlpjQ4Za+ +ZM2yljfEJtsW0gOQJ0FLwJkDD6K2eh++dZYpAReW3qi0+HmePDL47W39D5ns4wNh +BofTYhDHfXzz+RbcXM5jfaScRHW7OOZE76OEDwIDAQABAoIBAQDKov5NFbNFQNR8 +djcM1O7Is6dRaqiwLeH4ZH1pZ3d9QnFwKanPdQ5eCj9yhfhJMrr5xEyCqT0nMn7T +yEIGYDXjontfsf8WxWkH2TjvrfWBrHOIOx4LJEvFzyLsYxiMmtZXvy6YByD+Dw2M +q2GH/24rRdI2klkozIOyazluTXU8yOsSGxHr/aOa9/sZISgLmaGOOuKI/3Zqjdhr +eHeSqoQFt3xXa8jw01YubQUDw/4cv9rk2ytTdAoQUimiKtgtjsggpP1LTq4xcuqN +d4jWhTcnorWpbD2cVLxrEbnSR3VuBCJEZv5axg5ZPxLEnlcId8vMtvTRb5nzzszn +geYUWDPhAoGBAPyKVNqqwQl44oIeiuRM2FYenMt4voVaz3ExJX2JysrG0jtCPv+Y +84R6Cv3nfITz3EZDWp5sW3OwoGr77lF7Tv9tD6BptEmgBeuca3SHIdhG2MR+tLyx +/tkIAarxQcTGsZaSqra3gXOJCMz9h2P5dxpdU+0yeMmOEnAqgQ8qtNBfAoGBAPim +RAtnrd0WSlCgqVGYFCvDh1kD5QTNbZc+1PcBHbVV45EmJ2fLXnlDeplIZJdYxmzu +DMOxZBYgfeLY9exje00eZJNSj/csjJQqiRftrbvYY7m5njX1kM5K8x4HlynQTDkg +rtKO0YZJxxmjRTbFGMegh1SLlFLRIMtehNhOgipRAoGBAPnEEpJGCS9GGLfaX0HW +YqwiEK8Il12q57mqgsq7ag7NPwWOymHesxHV5mMh/Dw+NyBi4xAGWRh9mtrUmeqK +iyICik773Gxo0RIqnPgd4jJWN3N3YWeynzulOIkJnSNx5BforOCTc3uCD2s2YB5X +jx1LKoNQxLeLRN8cmpIWicf/AoGBANjRSsZTKwV9WWIDJoHyxav/vPb+8WYFp8lZ +zaRxQbGM6nn4NiZI7OF62N3uhWB/1c7IqTK/bVHqFTuJCrCNcsgld3gLZ2QWYaMV +kCPgaj1BjHw4AmB0+EcajfKilcqtSroJ6MfMJ6IclVOizkjbByeTsE4lxDmPCDSt +/9MKanBxAoGAY9xo741Pn9WUxDyRplww606ccdNf/ksHWNc/Y2B5SPwxxSnIq8nO +j01SmsCUYVFAgZVOTiiycakjYLzxlc6p8BxSVqy6LlJqn95N8OXoQ+bkwUux/ekg +gz5JWYhbD6c38khSzJb0pNXCo3EuYAVa36kDM96k1BtWuhRS10Q1VXk= +-----END RSA PRIVATE KEY----- +)EOF"; + + +const int led = LED_BUILTIN; + +void handleRoot() { + digitalWrite(led, 1); + server.send(200, "text/plain", "Hello from the Pico W over HTTPS!"); + digitalWrite(led, 0); +} + +void handleNotFound() { + digitalWrite(led, 1); + String message = "File Not Found\n\n"; + message += "URI: "; + message += server.uri(); + message += "\nMethod: "; + message += (server.method() == HTTP_GET) ? "GET" : "POST"; + message += "\nArguments: "; + message += server.args(); + message += "\n"; + for (uint8_t i = 0; i < server.args(); i++) { message += " " + server.argName(i) + ": " + server.arg(i) + "\n"; } + server.send(404, "text/plain", message); + digitalWrite(led, 0); +} + +void setup(void) { + pinMode(led, OUTPUT); + digitalWrite(led, 0); + Serial.begin(115200); + WiFi.begin(ssid, password); + Serial.println(""); + + // Wait for connection + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + + configTime(3 * 3600, 0, "pool.ntp.org", "time.nist.gov"); + + Serial.println(""); + Serial.print("Connected to "); + Serial.println(ssid); + Serial.print("IP address: "); + Serial.println(WiFi.localIP()); + + if (MDNS.begin("picow")) { Serial.println("MDNS responder started"); } + + server.getServer().setRSACert(new BearSSL::X509List(serverCert), new BearSSL::PrivateKey(serverKey)); + + // Cache SSL sessions to accelerate the TLS handshake. + server.getServer().setCache(&serverCache); + + server.on("/", handleRoot); + + server.on("/inline", []() { + server.send(200, "text/plain", "this works as well"); + }); + + server.onNotFound(handleNotFound); + + server.begin(); + Serial.println("HTTPS server started"); +} + +void loop(void) { + server.handleClient(); + MDNS.update(); +} diff --git a/libraries/WebServer/examples/HttpAdvancedAuth/HttpAdvancedAuth.ino b/libraries/WebServer/examples/HttpAdvancedAuth/HttpAdvancedAuth.ino new file mode 100644 index 0000000..07c8b2c --- /dev/null +++ b/libraries/WebServer/examples/HttpAdvancedAuth/HttpAdvancedAuth.ino @@ -0,0 +1,64 @@ +/* + HTTP Advanced Authentication example + Created Mar 16, 2017 by Ahmed El-Sharnoby. + This example code is in the public domain. +*/ + +#include +#include +#include +#include + +#ifndef STASSID +#define STASSID "your-ssid" +#define STAPSK "your-password" +#endif + +const char* ssid = STASSID; +const char* password = STAPSK; + +WebServer server(80); + +const char* www_username = "admin"; +const char* www_password = "picow"; +// allows you to set the realm of authentication Default:"Login Required" +const char* www_realm = "Custom Auth Realm"; +// the Content of the HTML response in case of Unautherized Access Default:empty +String authFailResponse = "Authentication Failed"; + +void setup() { + Serial.begin(115200); + WiFi.mode(WIFI_STA); + WiFi.begin(ssid, password); + if (WiFi.waitForConnectResult() != WL_CONNECTED) { + Serial.println("WiFi Connect Failed! Rebooting..."); + delay(1000); + rp2040.restart(); + } + ArduinoOTA.begin(); + + server.on("/", []() { + if (!server.authenticate(www_username, www_password)) + // Basic Auth Method with Custom realm and Failure Response + // return server.requestAuthentication(BASIC_AUTH, www_realm, authFailResponse); + // Digest Auth Method with realm="Login Required" and empty Failure Response + // return server.requestAuthentication(DIGEST_AUTH); + // Digest Auth Method with Custom realm and empty Failure Response + // return server.requestAuthentication(DIGEST_AUTH, www_realm); + // Digest Auth Method with Custom realm and Failure Response + { + return server.requestAuthentication(DIGEST_AUTH, www_realm, authFailResponse); + } + server.send(200, "text/plain", "Login OK"); + }); + server.begin(); + + Serial.print("Open http://"); + Serial.print(WiFi.localIP()); + Serial.println("/ in your browser to see it working"); +} + +void loop() { + ArduinoOTA.handle(); + server.handleClient(); +} diff --git a/libraries/WebServer/examples/HttpBasicAuth/HttpBasicAuth.ino b/libraries/WebServer/examples/HttpBasicAuth/HttpBasicAuth.ino new file mode 100644 index 0000000..67c1bf8 --- /dev/null +++ b/libraries/WebServer/examples/HttpBasicAuth/HttpBasicAuth.ino @@ -0,0 +1,46 @@ +#include +#include +#include +#include + +#ifndef STASSID +#define STASSID "your-ssid" +#define STAPSK "your-password" +#endif + +const char* ssid = STASSID; +const char* password = STAPSK; + +WebServer server(80); + +const char* www_username = "admin"; +const char* www_password = "picow"; + +void setup() { + Serial.begin(115200); + WiFi.mode(WIFI_STA); + WiFi.begin(ssid, password); + if (WiFi.waitForConnectResult() != WL_CONNECTED) { + Serial.println("WiFi Connect Failed! Rebooting..."); + delay(1000); + rp2040.restart(); + } + ArduinoOTA.begin(); + + server.on("/", []() { + if (!server.authenticate(www_username, www_password)) { + return server.requestAuthentication(); + } + server.send(200, "text/plain", "Login OK"); + }); + server.begin(); + + Serial.print("Open http://"); + Serial.print(WiFi.localIP()); + Serial.println("/ in your browser to see it working"); +} + +void loop() { + ArduinoOTA.handle(); + server.handleClient(); +} diff --git a/libraries/WebServer/examples/PostServer/PostServer.ino b/libraries/WebServer/examples/PostServer/PostServer.ino new file mode 100644 index 0000000..7aff4a1 --- /dev/null +++ b/libraries/WebServer/examples/PostServer/PostServer.ino @@ -0,0 +1,126 @@ +#include +#include +#include +#include + +#ifndef STASSID +#define STASSID "your-ssid" +#define STAPSK "your-password" +#endif + +const char* ssid = STASSID; +const char* password = STAPSK; + +WebServer server(80); + +const int led = LED_BUILTIN; + +const String postForms = "\ + \ + Pico-W Web Server POST handling\ + \ + \ + \ +

    POST plain text to /postplain/


    \ +
    \ +
    \ + \ +
    \ +

    POST form data to /postform/


    \ +
    \ +
    \ + \ +
    \ + \ +"; + +void handleRoot() { + digitalWrite(led, 1); + server.send(200, "text/html", postForms); + digitalWrite(led, 0); +} + +void handlePlain() { + if (server.method() != HTTP_POST) { + digitalWrite(led, 1); + server.send(405, "text/plain", "Method Not Allowed"); + digitalWrite(led, 0); + } else { + digitalWrite(led, 1); + server.send(200, "text/plain", "POST body was:\n" + server.arg("plain")); + digitalWrite(led, 0); + } +} + +void handleForm() { + if (server.method() != HTTP_POST) { + digitalWrite(led, 1); + server.send(405, "text/plain", "Method Not Allowed"); + digitalWrite(led, 0); + } else { + digitalWrite(led, 1); + String message = "POST form was:\n"; + for (uint8_t i = 0; i < server.args(); i++) { + message += " " + server.argName(i) + ": " + server.arg(i) + "\n"; + } + server.send(200, "text/plain", message); + digitalWrite(led, 0); + } +} + +void handleNotFound() { + digitalWrite(led, 1); + String message = "File Not Found\n\n"; + message += "URI: "; + message += server.uri(); + message += "\nMethod: "; + message += (server.method() == HTTP_GET) ? "GET" : "POST"; + message += "\nArguments: "; + message += server.args(); + message += "\n"; + for (uint8_t i = 0; i < server.args(); i++) { + message += " " + server.argName(i) + ": " + server.arg(i) + "\n"; + } + server.send(404, "text/plain", message); + digitalWrite(led, 0); +} + +void setup(void) { + pinMode(led, OUTPUT); + digitalWrite(led, 0); + Serial.begin(115200); + WiFi.begin(ssid, password); + Serial.println(""); + + // Wait for connection + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + Serial.println(""); + Serial.print("Connected to "); + Serial.println(ssid); + Serial.print("IP address: "); + Serial.println(WiFi.localIP()); + + if (MDNS.begin("picow")) { + Serial.println("MDNS responder started"); + } + + server.on("/", handleRoot); + + server.on("/postplain/", handlePlain); + + server.on("/postform/", handleForm); + + server.onNotFound(handleNotFound); + + server.begin(); + Serial.println("HTTP server started"); +} + +void loop(void) { + server.handleClient(); +} diff --git a/libraries/WebServer/examples/SimpleAuthentication/SimpleAuthentication.ino b/libraries/WebServer/examples/SimpleAuthentication/SimpleAuthentication.ino new file mode 100644 index 0000000..cc7025e --- /dev/null +++ b/libraries/WebServer/examples/SimpleAuthentication/SimpleAuthentication.ino @@ -0,0 +1,134 @@ +#include +#include +#include + +#ifndef STASSID +#define STASSID "your-ssid" +#define STAPSK "your-password" +#endif + +const char* ssid = STASSID; +const char* password = STAPSK; + +WebServer server(80); + +// Check if header is present and correct +bool is_authenticated() { + Serial.println("Enter is_authenticated"); + if (server.hasHeader("Cookie")) { + Serial.print("Found cookie: "); + String cookie = server.header("Cookie"); + Serial.println(cookie); + if (cookie.indexOf("PICOSESSIONID=1") != -1) { + Serial.println("Authentication Successful"); + return true; + } + } + Serial.println("Authentication Failed"); + return false; +} + +// login page, also called for disconnect +void handleLogin() { + String msg; + if (server.hasHeader("Cookie")) { + Serial.print("Found cookie: "); + String cookie = server.header("Cookie"); + Serial.println(cookie); + } + if (server.hasArg("DISCONNECT")) { + Serial.println("Disconnection"); + server.sendHeader("Location", "/login"); + server.sendHeader("Cache-Control", "no-cache"); + server.sendHeader("Set-Cookie", "PICOSESSIONID=0"); + server.send(301); + return; + } + if (server.hasArg("USERNAME") && server.hasArg("PASSWORD")) { + if (server.arg("USERNAME") == "admin" && server.arg("PASSWORD") == "admin") { + server.sendHeader("Location", "/"); + server.sendHeader("Cache-Control", "no-cache"); + server.sendHeader("Set-Cookie", "PICOSESSIONID=1"); + server.send(301); + Serial.println("Log in Successful"); + return; + } + msg = "Wrong username/password! try again."; + Serial.println("Log in Failed"); + } + String content = "
    To log in, please use : admin/admin
    "; + content += "User:
    "; + content += "Password:
    "; + content += "
    " + msg + "
    "; + content += "You also can go here"; + server.send(200, "text/html", content); +} + +// root page can be accessed only if authentication is ok +void handleRoot() { + Serial.println("Enter handleRoot"); + String header; + if (!is_authenticated()) { + server.sendHeader("Location", "/login"); + server.sendHeader("Cache-Control", "no-cache"); + server.send(301); + return; + } + String content = "

    hello, you successfully connected to Pico W!


    "; + if (server.hasHeader("User-Agent")) { + content += "the user agent used is : " + server.header("User-Agent") + "

    "; + } + content += "You can access this page until you disconnect"; + server.send(200, "text/html", content); +} + +// no need authentication +void handleNotFound() { + String message = "File Not Found\n\n"; + message += "URI: "; + message += server.uri(); + message += "\nMethod: "; + message += (server.method() == HTTP_GET) ? "GET" : "POST"; + message += "\nArguments: "; + message += server.args(); + message += "\n"; + for (uint8_t i = 0; i < server.args(); i++) { + message += " " + server.argName(i) + ": " + server.arg(i) + "\n"; + } + server.send(404, "text/plain", message); +} + +void setup(void) { + Serial.begin(115200); + WiFi.mode(WIFI_STA); + WiFi.begin(ssid, password); + Serial.println(""); + + // Wait for connection + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + Serial.println(""); + Serial.print("Connected to "); + Serial.println(ssid); + Serial.print("IP address: "); + Serial.println(WiFi.localIP()); + + + server.on("/", handleRoot); + server.on("/login", handleLogin); + server.on("/inline", []() { + server.send(200, "text/plain", "this works without need of authentication"); + }); + + server.onNotFound(handleNotFound); + // ask server to track these headers + server.collectHeaders("User-Agent", "Cookie"); + server.begin(); + Serial.println("HTTP server started"); +} + +void loop(void) { + server.handleClient(); +} diff --git a/libraries/WebServer/examples/WebUpdate/WebUpdate.ino b/libraries/WebServer/examples/WebUpdate/WebUpdate.ino new file mode 100644 index 0000000..eec5cf0 --- /dev/null +++ b/libraries/WebServer/examples/WebUpdate/WebUpdate.ino @@ -0,0 +1,77 @@ +/* + To upload through terminal you can use: curl -F "image=@firmware.bin" picow-webupdate.local/update +*/ + +#include +#include +#include +#include +#include + +#ifndef STASSID +#define STASSID "your-ssid" +#define STAPSK "your-password" +#endif + +const char* host = "picow-webupdate"; +const char* ssid = STASSID; +const char* password = STAPSK; + +WebServer server(80); +const char* serverIndex = "
    "; + +void setup(void) { + Serial.begin(115200); + Serial.println(); + Serial.println("Booting Sketch..."); + WiFi.mode(WIFI_STA); + WiFi.begin(ssid, password); + if (WiFi.waitForConnectResult() == WL_CONNECTED) { + MDNS.begin(host); + server.on("/", HTTP_GET, []() { + server.sendHeader("Connection", "close"); + server.send(200, "text/html", serverIndex); + }); + server.on( + "/update", HTTP_POST, []() { + server.sendHeader("Connection", "close"); + server.send(200, "text/plain", (Update.hasError()) ? "FAIL" : "OK"); + rp2040.restart(); + }, + []() { + HTTPUpload& upload = server.upload(); + if (upload.status == UPLOAD_FILE_START) { + WiFiUDP::stopAll(); + Serial.printf("Update: %s\n", upload.filename.c_str()); + FSInfo64 i; + LittleFS.begin(); + LittleFS.info64(i); + uint32_t maxSketchSpace = i.totalBytes - i.usedBytes; + if (!Update.begin(maxSketchSpace)) { // start with max available size + Update.printError(Serial); + } + } else if (upload.status == UPLOAD_FILE_WRITE) { + if (Update.write(upload.buf, upload.currentSize) != upload.currentSize) { + Update.printError(Serial); + } + } else if (upload.status == UPLOAD_FILE_END) { + if (Update.end(true)) { // true to set the size to the current progress + Serial.printf("Update Success: %u\nRebooting...\n", upload.totalSize); + } else { + Update.printError(Serial); + } + } + }); + server.begin(); + MDNS.addService("http", "tcp", 80); + + Serial.printf("Ready! Open http://%s.local in your browser\n", host); + } else { + Serial.println("WiFi Failed"); + } +} + +void loop(void) { + server.handleClient(); + MDNS.update(); +} diff --git a/libraries/WebServer/keywords.txt b/libraries/WebServer/keywords.txt new file mode 100644 index 0000000..65082f7 --- /dev/null +++ b/libraries/WebServer/keywords.txt @@ -0,0 +1,39 @@ +####################################### +# Syntax Coloring Map For Ultrasound +####################################### + +####################################### +# Datatypes (KEYWORD1) +####################################### + +WebServer KEYWORD1 +WebServerSecure KEYWORD1 +HTTPServer KEYWORD1 +HTTPMethod KEYWORD1 + +####################################### +# Methods and Functions (KEYWORD2) +####################################### + +begin KEYWORD2 +handleClient KEYWORD2 +on KEYWORD2 +addHandler KEYWORD2 +uri KEYWORD2 +method KEYWORD2 +client KEYWORD2 +send KEYWORD2 +arg KEYWORD2 +argName KEYWORD2 +args KEYWORD2 +hasArg KEYWORD2 +onNotFound KEYWORD2 + +####################################### +# Constants (LITERAL1) +####################################### + +HTTP_GET LITERAL1 +HTTP_POST LITERAL1 +HTTP_ANY LITERAL1 +CONTENT_LENGTH_UNKNOWN LITERAL1 diff --git a/libraries/WebServer/library.properties b/libraries/WebServer/library.properties new file mode 100644 index 0000000..5724d79 --- /dev/null +++ b/libraries/WebServer/library.properties @@ -0,0 +1,10 @@ +name=WebServer +version=2.0.0 +author=Ivan Grokhotkov +maintainer=Earle F. Philhower, III +sentence=Simple web server library +paragraph=The library supports HTTP(S) GET and POST requests, provides argument parsing, handles one client at a time. +category=Communication +url=https://github.com/earlephilhower/arduino-pico +architectures=rp2040 +dot_a_linkage=true diff --git a/libraries/WebServer/src/HTTPServer.cpp b/libraries/WebServer/src/HTTPServer.cpp new file mode 100644 index 0000000..57b8d94 --- /dev/null +++ b/libraries/WebServer/src/HTTPServer.cpp @@ -0,0 +1,687 @@ +/* + HTTPServer.cpp - Dead simple web-server. + Supports only one simultaneous client, knows how to handle GET and POST. + + Copyright (c) 2014 Ivan Grokhotkov. All rights reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Modified 8 May 2015 by Hristo Gochkov (proper post and file upload handling) +*/ + +#include +#include +#include "WiFiServer.h" +#include "WiFiClient.h" +#include "HTTPServer.h" +#include "FS.h" +#include "detail/RequestHandlersImpl.h" +#include + +#ifndef log_e +#define log_e(...) +#define log_w(...) +#define log_v(...) +#endif + +static const char AUTHORIZATION_HEADER[] = "Authorization"; +static const char qop_auth[] PROGMEM = "qop=auth"; +static const char qop_auth_quoted[] PROGMEM = "qop=\"auth\""; +static const char WWW_Authenticate[] = "WWW-Authenticate"; +static const char Content_Length[] = "Content-Length"; + +HTTPServer::HTTPServer() + : _corsEnabled(false) + , _currentMethod(HTTP_ANY) + , _currentVersion(0) + , _currentStatus(HC_NONE) + , _statusChange(0) + , _nullDelay(true) + , _currentHandler(nullptr) + , _firstHandler(nullptr) + , _lastHandler(nullptr) + , _currentArgCount(0) + , _currentArgs(nullptr) + , _postArgsLen(0) + , _postArgs(nullptr) + , _headerKeysCount(0) + , _currentHeaders(nullptr) + , _contentLength(0) + , _clientContentLength(0) + , _chunked(false) { + log_v("HTTPServer::HTTPServer()"); +} + +HTTPServer::~HTTPServer() { + if (_currentHeaders) { + delete[]_currentHeaders; + } + RequestHandler* handler = _firstHandler; + while (handler) { + RequestHandler* next = handler->next(); + delete handler; + handler = next; + } +} + +String HTTPServer::_extractParam(String& authReq, const String& param, const char delimit) { + int _begin = authReq.indexOf(param); + if (_begin == -1) { + return ""; + } + return authReq.substring(_begin + param.length(), authReq.indexOf(delimit, _begin + param.length())); +} + +static String md5str(String &in) { + char out[33] = {0}; + MD5Builder _ctx; + uint8_t i; + uint8_t * _buf = (uint8_t*)malloc(16); + if (_buf == NULL) { + return String(out); + } + memset(_buf, 0x00, 16); + _ctx.begin(); + _ctx.add((const uint8_t *)in.c_str(), in.length()); + _ctx.calculate(); + _ctx.getBytes((uint8_t *)_buf); + for (i = 0; i < 16; i++) { + sprintf(out + (i * 2), "%02x", _buf[i]); + } + out[32] = 0; + free(_buf); + return String(out); +} + +bool HTTPServer::authenticate(const char * username, const char * password) { + if (hasHeader(FPSTR(AUTHORIZATION_HEADER))) { + String authReq = header(FPSTR(AUTHORIZATION_HEADER)); + if (authReq.startsWith(F("Basic"))) { + authReq = authReq.substring(6); + authReq.trim(); + char toencodeLen = strlen(username) + strlen(password) + 1; + char *toencode = new char[toencodeLen + 1]; + if (toencode == NULL) { + authReq = ""; + return false; + } + char *encoded = new char[base64_encode_expected_len(toencodeLen) + 1]; + if (encoded == NULL) { + authReq = ""; + delete[] toencode; + return false; + } + sprintf(toencode, "%s:%s", username, password); + if (base64_encode_chars(toencode, toencodeLen, encoded) > 0 && authReq == encoded) { + authReq = ""; + delete[] toencode; + delete[] encoded; + return true; + } + delete[] toencode; + delete[] encoded; + } else if (authReq.startsWith(F("Digest"))) { + authReq = authReq.substring(7); + log_v("%s", authReq.c_str()); + String _username = _extractParam(authReq, F("username=\""), '\"'); + if (!_username.length() || _username != String(username)) { + authReq = ""; + return false; + } + // extracting required parameters for RFC 2069 simpler Digest + String _realm = _extractParam(authReq, F("realm=\""), '\"'); + String _nonce = _extractParam(authReq, F("nonce=\""), '\"'); + String _uri = _extractParam(authReq, F("uri=\""), '\"'); + String _response = _extractParam(authReq, F("response=\""), '\"'); + String _opaque = _extractParam(authReq, F("opaque=\""), '\"'); + + if ((!_realm.length()) || (!_nonce.length()) || (!_uri.length()) || (!_response.length()) || (!_opaque.length())) { + authReq = ""; + return false; + } + if ((_opaque != _sopaque) || (_nonce != _snonce) || (_realm != _srealm)) { + authReq = ""; + return false; + } + // parameters for the RFC 2617 newer Digest + String _nc, _cnonce; + if (authReq.indexOf(FPSTR(qop_auth)) != -1 || authReq.indexOf(FPSTR(qop_auth_quoted)) != -1) { + _nc = _extractParam(authReq, F("nc="), ','); + _cnonce = _extractParam(authReq, F("cnonce=\""), '\"'); + } + String _H1 = md5str(String(username) + ':' + _realm + ':' + String(password)); + log_v("Hash of user:realm:pass=%s", _H1.c_str()); + String _H2 = ""; + if (_currentMethod == HTTP_GET) { + _H2 = md5str(String(F("GET:")) + _uri); + } else if (_currentMethod == HTTP_POST) { + _H2 = md5str(String(F("POST:")) + _uri); + } else if (_currentMethod == HTTP_PUT) { + _H2 = md5str(String(F("PUT:")) + _uri); + } else if (_currentMethod == HTTP_DELETE) { + _H2 = md5str(String(F("DELETE:")) + _uri); + } else { + _H2 = md5str(String(F("GET:")) + _uri); + } + log_v("Hash of GET:uri=%s", _H2.c_str()); + String _responsecheck = ""; + if (authReq.indexOf(FPSTR(qop_auth)) != -1 || authReq.indexOf(FPSTR(qop_auth_quoted)) != -1) { + _responsecheck = md5str(_H1 + ':' + _nonce + ':' + _nc + ':' + _cnonce + F(":auth:") + _H2); + } else { + _responsecheck = md5str(_H1 + ':' + _nonce + ':' + _H2); + } + log_v("The Proper response=%s", _responsecheck.c_str()); + if (_response == _responsecheck) { + authReq = ""; + return true; + } + } + authReq = ""; + } + return false; +} + +String HTTPServer::_getRandomHexString() { + char buffer[33]; // buffer to hold 32 Hex Digit + /0 + int i; + for (i = 0; i < 4; i++) { + sprintf(buffer + (i * 8), "%08lx", rp2040.hwrand32()); + } + return String(buffer); +} + +void HTTPServer::requestAuthentication(HTTPAuthMethod mode, const char* realm, const String& authFailMsg) { + if (realm == NULL) { + _srealm = String(F("Login Required")); + } else { + _srealm = String(realm); + } + if (mode == BASIC_AUTH) { + sendHeader(String(FPSTR(WWW_Authenticate)), String(F("Basic realm=\"")) + _srealm + String(F("\""))); + } else { + _snonce = _getRandomHexString(); + _sopaque = _getRandomHexString(); + sendHeader(String(FPSTR(WWW_Authenticate)), String(F("Digest realm=\"")) + _srealm + String(F("\", qop=\"auth\", nonce=\"")) + _snonce + String(F("\", opaque=\"")) + _sopaque + String(F("\""))); + } + using namespace mime; + send(401, String(FPSTR(mimeTable[html].mimeType)), authFailMsg); +} + +void HTTPServer::on(const Uri &uri, HTTPServer::THandlerFunction handler) { + on(uri, HTTP_ANY, handler); +} + +void HTTPServer::on(const Uri &uri, HTTPMethod method, HTTPServer::THandlerFunction fn) { + on(uri, method, fn, _fileUploadHandler); +} + +void HTTPServer::on(const Uri &uri, HTTPMethod method, HTTPServer::THandlerFunction fn, HTTPServer::THandlerFunction ufn) { + _addRequestHandler(new FunctionRequestHandler(fn, ufn, uri, method)); +} + +void HTTPServer::addHandler(RequestHandler* handler) { + _addRequestHandler(handler); +} + +void HTTPServer::_addRequestHandler(RequestHandler* handler) { + if (!_lastHandler) { + _firstHandler = handler; + _lastHandler = handler; + } else { + _lastHandler->next(handler); + _lastHandler = handler; + } +} + +void HTTPServer::serveStatic(const char* uri, FS& fs, const char* path, const char* cache_header) { + _addRequestHandler(new StaticRequestHandler(fs, path, uri, cache_header)); +} + +void HTTPServer::httpHandleClient() { + bool keepCurrentClient = false; + bool callYield = false; + + if (_currentClient->connected()) { + switch (_currentStatus) { + case HC_NONE: + // No-op to avoid C++ compiler warning + break; + case HC_WAIT_READ: + // Wait for data from client to become available + if (_currentClient->available()) { + if (_parseRequest(_currentClient)) { + // because HTTP_MAX_SEND_WAIT is expressed in milliseconds, + // it must be divided by 1000 + _currentClient->setTimeout(HTTP_MAX_SEND_WAIT / 1000); + _contentLength = CONTENT_LENGTH_NOT_SET; + _handleRequest(); + + // Fix for issue with Chrome based browsers: https://github.com/espressif/arduino-esp32/issues/3652 + // if (_currentClient->connected()) { + // _currentStatus = HC_WAIT_CLOSE; + // _statusChange = millis(); + // keepCurrentClient = true; + // } + } + } else { // !_currentClient->available() + if (millis() - _statusChange <= HTTP_MAX_DATA_WAIT) { + keepCurrentClient = true; + } + callYield = true; + } + break; + case HC_WAIT_CLOSE: + // Wait for client to close the connection + if (millis() - _statusChange <= HTTP_MAX_CLOSE_WAIT) { + keepCurrentClient = true; + callYield = true; + } + } + } + + if (!keepCurrentClient) { + _currentClient = nullptr; + _currentStatus = HC_NONE; + _currentUpload.reset(); + } + + if (callYield) { + yield(); + } +} + +void HTTPServer::httpClose() { + _currentStatus = HC_NONE; + if (!_headerKeysCount) { + collectHeaders(0, 0); + } +} + +void HTTPServer::sendHeader(const String& name, const String& value, bool first) { + String headerLine = name; + headerLine += F(": "); + headerLine += value; + headerLine += "\r\n"; + + if (first) { + _responseHeaders = headerLine + _responseHeaders; + } else { + _responseHeaders += headerLine; + } +} + +void HTTPServer::setContentLength(const size_t contentLength) { + _contentLength = contentLength; +} + +void HTTPServer::enableDelay(boolean value) { + _nullDelay = value; +} + +void HTTPServer::enableCORS(boolean value) { + _corsEnabled = value; +} + +void HTTPServer::enableCrossOrigin(boolean value) { + enableCORS(value); +} + +void HTTPServer::_prepareHeader(String& response, int code, const char* content_type, size_t contentLength) { + response = String(F("HTTP/1.")) + String(_currentVersion) + ' '; + response += String(code); + response += ' '; + response += _responseCodeToString(code); + response += "\r\n"; + + using namespace mime; + if (!content_type) { + content_type = mimeTable[html].mimeType; + } + + sendHeader(String(F("Content-Type")), String(FPSTR(content_type)), true); + if (_contentLength == CONTENT_LENGTH_NOT_SET) { + sendHeader(String(FPSTR(Content_Length)), String(contentLength)); + } else if (_contentLength != CONTENT_LENGTH_UNKNOWN) { + sendHeader(String(FPSTR(Content_Length)), String(_contentLength)); + } else if (_contentLength == CONTENT_LENGTH_UNKNOWN && _currentVersion) { //HTTP/1.1 or above client + //let's do chunked + _chunked = true; + sendHeader(String(F("Accept-Ranges")), String(F("none"))); + sendHeader(String(F("Transfer-Encoding")), String(F("chunked"))); + } + if (_corsEnabled) { + sendHeader(String(FPSTR("Access-Control-Allow-Origin")), String("*")); + sendHeader(String(FPSTR("Access-Control-Allow-Methods")), String("*")); + sendHeader(String(FPSTR("Access-Control-Allow-Headers")), String("*")); + } + sendHeader(String(F("Connection")), String(F("close"))); + + response += _responseHeaders; + response += "\r\n"; + _responseHeaders = ""; +} + +void HTTPServer::send(int code, const char* content_type, const String& content) { + String header; + // Can we assume the following? + //if(code == 200 && content.length() == 0 && _contentLength == CONTENT_LENGTH_NOT_SET) + // _contentLength = CONTENT_LENGTH_UNKNOWN; + if (content.length() == 0) { + log_w("content length is zero"); + } + _prepareHeader(header, code, content_type, content.length()); + _currentClientWrite(header.c_str(), header.length()); + if (content.length()) { + sendContent(content); + } +} + +void HTTPServer::send(int code, char* content_type, const String& content) { + send(code, (const char*)content_type, content); +} + +void HTTPServer::send(int code, const String& content_type, const String& content) { + send(code, (const char*)content_type.c_str(), content); +} + +void HTTPServer::send(int code, const char* content_type, const char* content) { + const String passStr = (String)content; + if (strlen(content) != passStr.length()) { + log_e("String cast failed. Use send_P for long arrays"); + } + send(code, content_type, passStr); +} + +void HTTPServer::send(int code, const char* content_type, const char* content, size_t contentLength) { + String header; + _prepareHeader(header, code, content_type, contentLength); + _currentClientWrite(header.c_str(), header.length()); + if (contentLength) { + sendContent(content, contentLength); + } +} + +void HTTPServer::send_P(int code, PGM_P content_type, PGM_P content) { + size_t contentLength = 0; + + if (content != NULL) { + contentLength = strlen_P(content); + } + + String header; + char type[64]; + memccpy_P((void*)type, (PGM_VOID_P)content_type, 0, sizeof(type)); + _prepareHeader(header, code, (const char*)type, contentLength); + _currentClientWrite(header.c_str(), header.length()); + sendContent_P(content); +} + +void HTTPServer::send_P(int code, PGM_P content_type, PGM_P content, size_t contentLength) { + String header; + char type[64]; + memccpy_P((void*)type, (PGM_VOID_P)content_type, 0, sizeof(type)); + _prepareHeader(header, code, (const char*)type, contentLength); + sendContent(header); + sendContent_P(content, contentLength); +} + +void HTTPServer::sendContent(const String& content) { + sendContent(content.c_str(), content.length()); +} + +void HTTPServer::sendContent(const char* content, size_t contentLength) { + const char * footer = "\r\n"; + if (_chunked) { + char * chunkSize = (char *)malloc(11); + if (chunkSize) { + sprintf(chunkSize, "%x%s", contentLength, footer); + _currentClientWrite(chunkSize, strlen(chunkSize)); + free(chunkSize); + } + } + _currentClientWrite(content, contentLength); + if (_chunked) { + _currentClient->write(footer, 2); + if (contentLength == 0) { + _chunked = false; + } + } +} + +void HTTPServer::sendContent_P(PGM_P content) { + sendContent_P(content, strlen_P(content)); +} + +void HTTPServer::sendContent_P(PGM_P content, size_t size) { + const char * footer = "\r\n"; + if (_chunked) { + char * chunkSize = (char *)malloc(11); + if (chunkSize) { + sprintf(chunkSize, "%x%s", size, footer); + _currentClientWrite(chunkSize, strlen(chunkSize)); + free(chunkSize); + } + } + _currentClientWrite_P(content, size); + if (_chunked) { + _currentClient->write(footer, 2); + if (size == 0) { + _chunked = false; + } + } +} + + +void HTTPServer::_streamFileCore(const size_t fileSize, const String & fileName, const String & contentType, const int code) { + using namespace mime; + setContentLength(fileSize); + if (fileName.endsWith(String(FPSTR(mimeTable[gz].endsWith))) && + contentType != String(FPSTR(mimeTable[gz].mimeType)) && + contentType != String(FPSTR(mimeTable[none].mimeType))) { + sendHeader(F("Content-Encoding"), F("gzip")); + } + send(code, contentType, ""); +} + +String HTTPServer::pathArg(unsigned int i) { + if (_currentHandler != nullptr) { + return _currentHandler->pathArg(i); + } + return ""; +} + +String HTTPServer::arg(String name) { + for (int j = 0; j < _postArgsLen; ++j) { + if (_postArgs[j].key == name) { + return _postArgs[j].value; + } + } + for (int i = 0; i < _currentArgCount; ++i) { + if (_currentArgs[i].key == name) { + return _currentArgs[i].value; + } + } + return ""; +} + +String HTTPServer::arg(int i) { + if (i < _currentArgCount) { + return _currentArgs[i].value; + } + return ""; +} + +String HTTPServer::argName(int i) { + if (i < _currentArgCount) { + return _currentArgs[i].key; + } + return ""; +} + +int HTTPServer::args() { + return _currentArgCount; +} + +bool HTTPServer::hasArg(String name) { + for (int j = 0; j < _postArgsLen; ++j) { + if (_postArgs[j].key == name) { + return true; + } + } + for (int i = 0; i < _currentArgCount; ++i) { + if (_currentArgs[i].key == name) { + return true; + } + } + return false; +} + + +String HTTPServer::header(String name) { + for (int i = 0; i < _headerKeysCount; ++i) { + if (_currentHeaders[i].key.equalsIgnoreCase(name)) { + return _currentHeaders[i].value; + } + } + return ""; +} + +void HTTPServer::collectHeaders(const char* headerKeys[], const size_t headerKeysCount) { + _headerKeysCount = headerKeysCount + 1; + if (_currentHeaders) { + delete[]_currentHeaders; + } + _currentHeaders = new RequestArgument[_headerKeysCount]; + _currentHeaders[0].key = FPSTR(AUTHORIZATION_HEADER); + for (int i = 1; i < _headerKeysCount; i++) { + _currentHeaders[i].key = headerKeys[i - 1]; + } +} + +String HTTPServer::header(int i) { + if (i < _headerKeysCount) { + return _currentHeaders[i].value; + } + return ""; +} + +String HTTPServer::headerName(int i) { + if (i < _headerKeysCount) { + return _currentHeaders[i].key; + } + return ""; +} + +int HTTPServer::headers() { + return _headerKeysCount; +} + +bool HTTPServer::hasHeader(String name) { + for (int i = 0; i < _headerKeysCount; ++i) { + if ((_currentHeaders[i].key.equalsIgnoreCase(name)) && (_currentHeaders[i].value.length() > 0)) { + return true; + } + } + return false; +} + +String HTTPServer::hostHeader() { + return _hostHeader; +} + +void HTTPServer::onFileUpload(THandlerFunction fn) { + _fileUploadHandler = fn; +} + +void HTTPServer::onNotFound(THandlerFunction fn) { + _notFoundHandler = fn; +} + +void HTTPServer::_handleRequest() { + bool handled = false; + if (!_currentHandler) { + log_e("request handler not found"); + } else { + handled = _currentHandler->handle(*this, _currentMethod, _currentUri); + if (!handled) { + log_e("request handler failed to handle request"); + } + } + if (!handled && _notFoundHandler) { + _notFoundHandler(); + handled = true; + } + if (!handled) { + using namespace mime; + send(404, String(FPSTR(mimeTable[html].mimeType)), String(F("Not found: ")) + _currentUri); + handled = true; + } + if (handled) { + _finalizeResponse(); + } + _currentUri = ""; +} + + +void HTTPServer::_finalizeResponse() { + if (_chunked) { + sendContent(""); + } +} + +String HTTPServer::_responseCodeToString(int code) { + switch (code) { + case 100: return F("Continue"); + case 101: return F("Switching Protocols"); + case 200: return F("OK"); + case 201: return F("Created"); + case 202: return F("Accepted"); + case 203: return F("Non-Authoritative Information"); + case 204: return F("No Content"); + case 205: return F("Reset Content"); + case 206: return F("Partial Content"); + case 300: return F("Multiple Choices"); + case 301: return F("Moved Permanently"); + case 302: return F("Found"); + case 303: return F("See Other"); + case 304: return F("Not Modified"); + case 305: return F("Use Proxy"); + case 307: return F("Temporary Redirect"); + case 400: return F("Bad Request"); + case 401: return F("Unauthorized"); + case 402: return F("Payment Required"); + case 403: return F("Forbidden"); + case 404: return F("Not Found"); + case 405: return F("Method Not Allowed"); + case 406: return F("Not Acceptable"); + case 407: return F("Proxy Authentication Required"); + case 408: return F("Request Time-out"); + case 409: return F("Conflict"); + case 410: return F("Gone"); + case 411: return F("Length Required"); + case 412: return F("Precondition Failed"); + case 413: return F("Request Entity Too Large"); + case 414: return F("Request-URI Too Large"); + case 415: return F("Unsupported Media Type"); + case 416: return F("Requested range not satisfiable"); + case 417: return F("Expectation Failed"); + case 500: return F("Internal Server Error"); + case 501: return F("Not Implemented"); + case 502: return F("Bad Gateway"); + case 503: return F("Service Unavailable"); + case 504: return F("Gateway Time-out"); + case 505: return F("HTTP Version not supported"); + default: return F(""); + } +} diff --git a/libraries/WebServer/src/HTTPServer.h b/libraries/WebServer/src/HTTPServer.h new file mode 100644 index 0000000..6d1de5a --- /dev/null +++ b/libraries/WebServer/src/HTTPServer.h @@ -0,0 +1,252 @@ +/* + HTTPServer.h - Dead simple web-server. + Supports only one simultaneous client, knows how to handle GET and POST. + + Copyright (c) 2014 Ivan Grokhotkov. All rights reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Modified 8 May 2015 by Hristo Gochkov (proper post and file upload handling) +*/ + +#pragma once + +#include +#include +#include +#include "HTTP_Method.h" +#include "Uri.h" + +enum HTTPUploadStatus { UPLOAD_FILE_START, UPLOAD_FILE_WRITE, UPLOAD_FILE_END, + UPLOAD_FILE_ABORTED + }; +enum HTTPClientStatus { HC_NONE, HC_WAIT_READ, HC_WAIT_CLOSE }; +enum HTTPAuthMethod { BASIC_AUTH, DIGEST_AUTH }; + +#define HTTP_DOWNLOAD_UNIT_SIZE 1436 + +#ifndef HTTP_UPLOAD_BUFLEN +#define HTTP_UPLOAD_BUFLEN 1436 +#endif + +#define HTTP_MAX_DATA_WAIT 5000 //ms to wait for the client to send the request +#define HTTP_MAX_POST_WAIT 5000 //ms to wait for POST data to arrive +#define HTTP_MAX_SEND_WAIT 5000 //ms to wait for data chunk to be ACKed +#define HTTP_MAX_CLOSE_WAIT 2000 //ms to wait for the client to close the connection + +#define CONTENT_LENGTH_UNKNOWN ((size_t) -1) +#define CONTENT_LENGTH_NOT_SET ((size_t) -2) + +class HTTPServer; + +typedef struct { + HTTPUploadStatus status; + String filename; + String name; + String type; + size_t totalSize; // file size + size_t currentSize; // size of data currently in buf + uint8_t buf[HTTP_UPLOAD_BUFLEN]; +} HTTPUpload; + +#include "detail/RequestHandler.h" + +namespace fs { +class FS; +} + +class HTTPServer { +public: + HTTPServer(); + virtual ~HTTPServer(); + + virtual void httpClose(); + virtual void httpHandleClient(); + + bool authenticate(const char * username, const char * password); + void requestAuthentication(HTTPAuthMethod mode = BASIC_AUTH, const char* realm = NULL, const String& authFailMsg = String("")); + + typedef std::function THandlerFunction; + void on(const Uri &uri, THandlerFunction fn); + void on(const Uri &uri, HTTPMethod method, THandlerFunction fn); + void on(const Uri &uri, HTTPMethod method, THandlerFunction fn, THandlerFunction ufn); //ufn handles file uploads + void addHandler(RequestHandler* handler); + void serveStatic(const char* uri, fs::FS& fs, const char* path, const char* cache_header = NULL); + void onNotFound(THandlerFunction fn); //called when handler is not assigned + void onFileUpload(THandlerFunction ufn); //handle file uploads + + String uri() { + return _currentUri; + } + HTTPMethod method() { + return _currentMethod; + } + HTTPUpload& upload() { + return *_currentUpload; + } + + String pathArg(unsigned int i); // get request path argument by number + String arg(String name); // get request argument value by name + String arg(int i); // get request argument value by number + String argName(int i); // get request argument name by number + int args(); // get arguments count + bool hasArg(String name); // check if argument exists + void collectHeaders(const char* headerKeys[], const size_t headerKeysCount); // set the request headers to collect + template + void collectHeaders(const Args&... args) { // set the request headers to collect (variadic template version) + if (_currentHeaders) { + delete[] _currentHeaders; + } + _headerKeysCount = sizeof...(args) + 1; + _currentHeaders = new RequestArgument[_headerKeysCount] { + { .key = "Authorization", .value = "" }, + { .key = String(args), .value = "" } ... + }; + } + + String header(String name); // get request header value by name + String header(int i); // get request header value by number + String headerName(int i); // get request header name by number + int headers(); // get header count + bool hasHeader(String name); // check if header exists + + int clientContentLength() { + return _clientContentLength; // return "content-length" of incoming HTTP header from "_currentClient" + } + + String hostHeader(); // get request host header if available or empty String if not + + // send response to the client + // code - HTTP response code, can be 200 or 404 + // content_type - HTTP content type, like "text/plain" or "image/png" + // content - actual content body + void send(int code, const char* content_type = NULL, const String& content = String("")); + void send(int code, char* content_type, const String& content); + void send(int code, const String& content_type, const String& content); + void send(int code, const char* content_type, const char* content); + void send(int code, const char* content_type, const char* content, size_t contentLength); + + void send_P(int code, PGM_P content_type, PGM_P content); + void send_P(int code, PGM_P content_type, PGM_P content, size_t contentLength); + template + void send(int code, PGM_P content_type, TypeName content, size_t contentLength) { + send(code, content_type, (const char *)content, contentLength); + } + + void enableDelay(boolean value); + void enableCORS(boolean value = true); + void enableCrossOrigin(boolean value = true); + + void setContentLength(const size_t contentLength); + void sendHeader(const String& name, const String& value, bool first = false); + void sendContent(const String& content); + void sendContent(const char* content, size_t contentLength); + void sendContent_P(PGM_P content); + void sendContent_P(PGM_P content, size_t size); + + bool chunkedResponseModeStart_P(int code, PGM_P content_type) { + if (_currentVersion == 0) + // no chunk mode in HTTP/1.0 + { + return false; + } + setContentLength(CONTENT_LENGTH_UNKNOWN); + send(code, content_type, ""); + return true; + } + bool chunkedResponseModeStart(int code, const char* content_type) { + return chunkedResponseModeStart_P(code, content_type); + } + bool chunkedResponseModeStart(int code, const String& content_type) { + return chunkedResponseModeStart_P(code, content_type.c_str()); + } + void chunkedResponseFinalize() { + sendContent(""); + } + + static String urlDecode(const String& text); + + template + size_t streamFile(T &file, const String& contentType, const int code = 200) { + _streamFileCore(file.size(), file.name(), contentType, code); + return _currentClient->write(file); + } + +protected: + virtual size_t _currentClientWrite(const char* b, size_t l) { + return _currentClient->write(b, l); + } + virtual size_t _currentClientWrite_P(PGM_P b, size_t l) { + return _currentClient->write(b, l); + } + void _addRequestHandler(RequestHandler* handler); + void _handleRequest(); + void _finalizeResponse(); + bool _parseRequest(WiFiClient* client); + void _parseArguments(String data); + static String _responseCodeToString(int code); + bool _parseForm(WiFiClient* client, String boundary, uint32_t len); + bool _parseFormUploadAborted(); + void _uploadWriteByte(uint8_t b); + int _uploadReadByte(WiFiClient* client); + void _prepareHeader(String& response, int code, const char* content_type, size_t contentLength); + bool _collectHeader(const char* headerName, const char* headerValue); + + void _streamFileCore(const size_t fileSize, const String & fileName, const String & contentType, const int code = 200); + + String _getRandomHexString(); + // for extracting Auth parameters + String _extractParam(String& authReq, const String& param, const char delimit = '"'); + + struct RequestArgument { + String key; + String value; + }; + + boolean _corsEnabled; + + WiFiClient *_currentClient; + HTTPMethod _currentMethod; + String _currentUri; + uint8_t _currentVersion; + HTTPClientStatus _currentStatus; + unsigned long _statusChange; + boolean _nullDelay; + + RequestHandler* _currentHandler; + RequestHandler* _firstHandler; + RequestHandler* _lastHandler; + THandlerFunction _notFoundHandler; + THandlerFunction _fileUploadHandler; + + int _currentArgCount; + RequestArgument* _currentArgs; + int _postArgsLen; + RequestArgument* _postArgs; + + std::unique_ptr _currentUpload; + + int _headerKeysCount; + RequestArgument* _currentHeaders; + size_t _contentLength; + int _clientContentLength; // "Content-Length" from header of incoming POST or GET request + String _responseHeaders; + + String _hostHeader; + bool _chunked; + + String _snonce; // Store noance and opaque for future comparison + String _sopaque; + String _srealm; // Store the Auth realm between Calls +}; diff --git a/libraries/WebServer/src/HTTP_Method.h b/libraries/WebServer/src/HTTP_Method.h new file mode 100644 index 0000000..d604060 --- /dev/null +++ b/libraries/WebServer/src/HTTP_Method.h @@ -0,0 +1,6 @@ +#pragma once + +#include "http_parser.h" + +typedef enum http_method HTTPMethod; +#define HTTP_ANY (HTTPMethod)(255) diff --git a/libraries/WebServer/src/Parsing.cpp b/libraries/WebServer/src/Parsing.cpp new file mode 100644 index 0000000..f66c2bc --- /dev/null +++ b/libraries/WebServer/src/Parsing.cpp @@ -0,0 +1,624 @@ +/* + Parsing.cpp - HTTP request parsing. + + Copyright (c) 2015 Ivan Grokhotkov. All rights reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Modified 8 May 2015 by Hristo Gochkov (proper post and file upload handling) +*/ + +#include +#include "WiFiServer.h" +#include "WiFiClient.h" +#include "HTTPServer.h" +#include "detail/mimetable.h" + +#ifndef log_e +#define log_e(...) +#define log_w(...) +#define log_v(...) +#endif + +#ifndef WEBSERVER_MAX_POST_ARGS +#define WEBSERVER_MAX_POST_ARGS 32 +#endif + +#define __STR(a) #a +#define _STR(a) __STR(a) +const char * _http_method_str[] = { +#define XX(num, name, string) _STR(name), + HTTP_METHOD_MAP(XX) +#undef XX +}; + +static const char Content_Type[] PROGMEM = "Content-Type"; +static const char filename[] PROGMEM = "filename"; + +static char* readBytesWithTimeout(WiFiClient* client, size_t maxLength, size_t& dataLength, int timeout_ms) { + char *buf = nullptr; + dataLength = 0; + while (dataLength < maxLength) { + int tries = timeout_ms; + size_t newLength; + while (!(newLength = client->available()) && tries--) { + delay(1); + } + if (!newLength) { + break; + } + if (!buf) { + buf = (char *) malloc(newLength + 1); + if (!buf) { + return nullptr; + } + } else { + char* newBuf = (char *) realloc(buf, dataLength + newLength + 1); + if (!newBuf) { + free(buf); + return nullptr; + } + buf = newBuf; + } + client->readBytes(buf + dataLength, newLength); + dataLength += newLength; + buf[dataLength] = '\0'; + } + return buf; +} + +bool HTTPServer::_parseRequest(WiFiClient* client) { + // Read the first line of HTTP request + String req = client->readStringUntil('\r'); + client->readStringUntil('\n'); + //reset header value + for (int i = 0; i < _headerKeysCount; ++i) { + _currentHeaders[i].value = String(); + } + + // First line of HTTP request looks like "GET /path HTTP/1.1" + // Retrieve the "/path" part by finding the spaces + int addr_start = req.indexOf(' '); + int addr_end = req.indexOf(' ', addr_start + 1); + if (addr_start == -1 || addr_end == -1) { + log_e("Invalid request: %s", req.c_str()); + return false; + } + + String methodStr = req.substring(0, addr_start); + String url = req.substring(addr_start + 1, addr_end); + String versionEnd = req.substring(addr_end + 8); + _currentVersion = atoi(versionEnd.c_str()); + String searchStr = ""; + int hasSearch = url.indexOf('?'); + if (hasSearch != -1) { + searchStr = url.substring(hasSearch + 1); + url = url.substring(0, hasSearch); + } + _currentUri = url; + _chunked = false; + _clientContentLength = 0; // not known yet, or invalid + + HTTPMethod method = HTTP_ANY; + size_t num_methods = sizeof(_http_method_str) / sizeof(const char *); + for (size_t i = 0; i < num_methods; i++) { + if (methodStr == _http_method_str[i]) { + method = (HTTPMethod)i; + break; + } + } + if (method == HTTP_ANY) { + log_e("Unknown HTTP Method: %s", methodStr.c_str()); + return false; + } + _currentMethod = method; + + log_v("method: %s url: %s search: %s", methodStr.c_str(), url.c_str(), searchStr.c_str()); + + //attach handler + RequestHandler* handler; + for (handler = _firstHandler; handler; handler = handler->next()) { + if (handler->canHandle(_currentMethod, _currentUri)) { + break; + } + } + _currentHandler = handler; + + String formData; + // below is needed only when POST type request + if (method == HTTP_POST || method == HTTP_PUT || method == HTTP_PATCH || method == HTTP_DELETE) { + String boundaryStr; + String headerName; + String headerValue; + bool isForm = false; + bool isEncoded = false; + //parse headers + while (1) { + req = client->readStringUntil('\r'); + client->readStringUntil('\n'); + if (req == "") { + break; //no moar headers + } + int headerDiv = req.indexOf(':'); + if (headerDiv == -1) { + break; + } + headerName = req.substring(0, headerDiv); + headerValue = req.substring(headerDiv + 1); + headerValue.trim(); + _collectHeader(headerName.c_str(), headerValue.c_str()); + + log_v("headerName: %s", headerName.c_str()); + log_v("headerValue: %s", headerValue.c_str()); + + if (headerName.equalsIgnoreCase(FPSTR(Content_Type))) { + using namespace mime; + if (headerValue.startsWith(FPSTR(mimeTable[txt].mimeType))) { + isForm = false; + } else if (headerValue.startsWith(F("application/x-www-form-urlencoded"))) { + isForm = false; + isEncoded = true; + } else if (headerValue.startsWith(F("multipart/"))) { + boundaryStr = headerValue.substring(headerValue.indexOf('=') + 1); + boundaryStr.replace("\"", ""); + isForm = true; + } + } else if (headerName.equalsIgnoreCase(F("Content-Length"))) { + _clientContentLength = headerValue.toInt(); + } else if (headerName.equalsIgnoreCase(F("Host"))) { + _hostHeader = headerValue; + } + } + + if (!isForm) { + size_t plainLength; + char* plainBuf = readBytesWithTimeout(client, _clientContentLength, plainLength, HTTP_MAX_POST_WAIT); + if ((int)plainLength < (int)_clientContentLength) { + free(plainBuf); + return false; + } + if (_clientContentLength > 0) { + if (isEncoded) { + //url encoded form + if (searchStr != "") { + searchStr += '&'; + } + searchStr += plainBuf; + } + _parseArguments(searchStr); + if (!isEncoded) { + //plain post json or other data + RequestArgument& arg = _currentArgs[_currentArgCount++]; + arg.key = F("plain"); + arg.value = String(plainBuf); + } + + log_v("Plain: %s", plainBuf); + free(plainBuf); + } else { + // No content - but we can still have arguments in the URL. + _parseArguments(searchStr); + } + } else { + // it IS a form + _parseArguments(searchStr); + if (!_parseForm(client, boundaryStr, _clientContentLength)) { + return false; + } + } + } else { + String headerName; + String headerValue; + //parse headers + while (1) { + req = client->readStringUntil('\r'); + client->readStringUntil('\n'); + if (req == "") { + break; //no moar headers + } + int headerDiv = req.indexOf(':'); + if (headerDiv == -1) { + break; + } + headerName = req.substring(0, headerDiv); + headerValue = req.substring(headerDiv + 2); + _collectHeader(headerName.c_str(), headerValue.c_str()); + + log_v("headerName: %s", headerName.c_str()); + log_v("headerValue: %s", headerValue.c_str()); + + if (headerName.equalsIgnoreCase("Host")) { + _hostHeader = headerValue; + } + } + _parseArguments(searchStr); + } + client->flush(); + + log_v("Request: %s", url.c_str()); + log_v(" Arguments: %s", searchStr.c_str()); + + return true; +} + +bool HTTPServer::_collectHeader(const char* headerName, const char* headerValue) { + for (int i = 0; i < _headerKeysCount; i++) { + if (_currentHeaders[i].key.equalsIgnoreCase(headerName)) { + _currentHeaders[i].value = headerValue; + return true; + } + } + return false; +} + +void HTTPServer::_parseArguments(String data) { + log_v("args: %s", data.c_str()); + if (_currentArgs) { + delete[] _currentArgs; + } + _currentArgs = 0; + if (data.length() == 0) { + _currentArgCount = 0; + _currentArgs = new RequestArgument[1]; + return; + } + _currentArgCount = 1; + + for (int i = 0; i < (int)data.length();) { + i = data.indexOf('&', i); + if (i == -1) { + break; + } + ++i; + ++_currentArgCount; + } + log_v("args count: %d", _currentArgCount); + + _currentArgs = new RequestArgument[_currentArgCount + 1]; + int pos = 0; + int iarg; + for (iarg = 0; iarg < _currentArgCount;) { + int equal_sign_index = data.indexOf('=', pos); + int next_arg_index = data.indexOf('&', pos); + log_v("pos %d =@%d &@%d", pos, equal_sign_index, next_arg_index); + if ((equal_sign_index == -1) || ((equal_sign_index > next_arg_index) && (next_arg_index != -1))) { + log_e("arg missing value: %d", iarg); + if (next_arg_index == -1) { + break; + } + pos = next_arg_index + 1; + continue; + } + RequestArgument& arg = _currentArgs[iarg]; + arg.key = urlDecode(data.substring(pos, equal_sign_index)); + arg.value = urlDecode(data.substring(equal_sign_index + 1, next_arg_index)); + log_v("arg %d key: %s value: %s", iarg, arg.key.c_str(), arg.value.c_str()); + ++iarg; + if (next_arg_index == -1) { + break; + } + pos = next_arg_index + 1; + } + _currentArgCount = iarg; + log_v("args count: %d", _currentArgCount); + +} + +void HTTPServer::_uploadWriteByte(uint8_t b) { + if (_currentUpload->currentSize == HTTP_UPLOAD_BUFLEN) { + if (_currentHandler && _currentHandler->canUpload(_currentUri)) { + _currentHandler->upload(*this, _currentUri, *_currentUpload); + } + _currentUpload->totalSize += _currentUpload->currentSize; + _currentUpload->currentSize = 0; + } + _currentUpload->buf[_currentUpload->currentSize++] = b; +} + +int HTTPServer::_uploadReadByte(WiFiClient* client) { + int res = client->read(); + if (res < 0) { + // keep trying until you either read a valid byte or timeout + unsigned long startMillis = millis(); + unsigned long timeoutIntervalMillis = client->getTimeout(); + boolean timedOut = false; + for (;;) { + if (!client->connected()) { + return -1; + } + // loosely modeled after blinkWithoutDelay pattern + while (!timedOut && !client->available() && client->connected()) { + delay(2); + timedOut = millis() - startMillis >= timeoutIntervalMillis; + } + + res = client->read(); + if (res >= 0) { + return res; // exit on a valid read + } + // NOTE: it is possible to get here and have all of the following + // assertions hold true + // + // -- client->available() > 0 + // -- client->connected == true + // -- res == -1 + // + // a simple retry strategy overcomes this which is to say the + // assertion is not permanent, but the reason that this works + // is elusive, and possibly indicative of a more subtle underlying + // issue + + timedOut = millis() - startMillis >= timeoutIntervalMillis; + if (timedOut) { + return res; // exit on a timeout + } + } + } + + return res; +} + +bool HTTPServer::_parseForm(WiFiClient* client, String boundary, uint32_t len) { + (void) len; + log_v("Parse Form: Boundary: %s Length: %d", boundary.c_str(), len); + String line; + int retry = 0; + do { + line = client->readStringUntil('\r'); + ++retry; + } while (line.length() == 0 && retry < 3); + + client->readStringUntil('\n'); + //start reading the form + if (line == ("--" + boundary)) { + if (_postArgs) { + delete[] _postArgs; + } + _postArgs = new RequestArgument[WEBSERVER_MAX_POST_ARGS]; + _postArgsLen = 0; + while (1) { + String argName; + String argValue; + String argType; + String argFilename; + bool argIsFile = false; + + line = client->readStringUntil('\r'); + client->readStringUntil('\n'); + if (line.length() > 19 && line.substring(0, 19).equalsIgnoreCase(F("Content-Disposition"))) { + int nameStart = line.indexOf('='); + if (nameStart != -1) { + argName = line.substring(nameStart + 2); + nameStart = argName.indexOf('='); + if (nameStart == -1) { + argName = argName.substring(0, argName.length() - 1); + } else { + argFilename = argName.substring(nameStart + 2, argName.length() - 1); + argName = argName.substring(0, argName.indexOf('"')); + argIsFile = true; + log_v("PostArg FileName: %s", argFilename.c_str()); + //use GET to set the filename if uploading using blob + if (argFilename == F("blob") && hasArg(FPSTR(filename))) { + argFilename = arg(FPSTR(filename)); + } + } + log_v("PostArg Name: %s", argName.c_str()); + using namespace mime; + argType = FPSTR(mimeTable[txt].mimeType); + line = client->readStringUntil('\r'); + client->readStringUntil('\n'); + if (line.length() > 12 && line.substring(0, 12).equalsIgnoreCase(FPSTR(Content_Type))) { + argType = line.substring(line.indexOf(':') + 2); + //skip next line + client->readStringUntil('\r'); + client->readStringUntil('\n'); + } + log_v("PostArg Type: %s", argType.c_str()); + if (!argIsFile) { + while (1) { + line = client->readStringUntil('\r'); + client->readStringUntil('\n'); + if (line.startsWith("--" + boundary)) { + break; + } + if (argValue.length() > 0) { + argValue += "\n"; + } + argValue += line; + } + log_v("PostArg Value: %s", argValue.c_str()); + + RequestArgument& arg = _postArgs[_postArgsLen++]; + arg.key = argName; + arg.value = argValue; + + if (line == ("--" + boundary + "--")) { + log_v("Done Parsing POST"); + break; + } else if (_postArgsLen >= WEBSERVER_MAX_POST_ARGS) { + log_e("Too many PostArgs (max: %d) in request.", WEBSERVER_MAX_POST_ARGS); + return false; + } + } else { + _currentUpload.reset(new HTTPUpload()); + _currentUpload->status = UPLOAD_FILE_START; + _currentUpload->name = argName; + _currentUpload->filename = argFilename; + _currentUpload->type = argType; + _currentUpload->totalSize = 0; + _currentUpload->currentSize = 0; + log_v("Start File: %s Type: %s", _currentUpload->filename.c_str(), _currentUpload->type.c_str()); + if (_currentHandler && _currentHandler->canUpload(_currentUri)) { + _currentHandler->upload(*this, _currentUri, *_currentUpload); + } + _currentUpload->status = UPLOAD_FILE_WRITE; + int argByte = _uploadReadByte(client); +readfile: + + while (argByte != 0x0D) { + if (argByte < 0) { + return _parseFormUploadAborted(); + } + _uploadWriteByte(argByte); + argByte = _uploadReadByte(client); + } + + argByte = _uploadReadByte(client); + if (argByte < 0) { + return _parseFormUploadAborted(); + } + if (argByte == 0x0A) { + argByte = _uploadReadByte(client); + if (argByte < 0) { + return _parseFormUploadAborted(); + } + if ((char)argByte != '-') { + //continue reading the file + _uploadWriteByte(0x0D); + _uploadWriteByte(0x0A); + goto readfile; + } else { + argByte = _uploadReadByte(client); + if (argByte < 0) { + return _parseFormUploadAborted(); + } + if ((char)argByte != '-') { + //continue reading the file + _uploadWriteByte(0x0D); + _uploadWriteByte(0x0A); + _uploadWriteByte((uint8_t)('-')); + goto readfile; + } + } + + uint8_t endBuf[boundary.length()]; + uint32_t i = 0; + while (i < boundary.length()) { + argByte = _uploadReadByte(client); + if (argByte < 0) { + return _parseFormUploadAborted(); + } + if ((char)argByte == 0x0D) { + _uploadWriteByte(0x0D); + _uploadWriteByte(0x0A); + _uploadWriteByte((uint8_t)('-')); + _uploadWriteByte((uint8_t)('-')); + uint32_t j = 0; + while (j < i) { + _uploadWriteByte(endBuf[j++]); + } + goto readfile; + } + endBuf[i++] = (uint8_t)argByte; + } + + if (strstr((const char*)endBuf, boundary.c_str()) != NULL) { + if (_currentHandler && _currentHandler->canUpload(_currentUri)) { + _currentHandler->upload(*this, _currentUri, *_currentUpload); + } + _currentUpload->totalSize += _currentUpload->currentSize; + _currentUpload->status = UPLOAD_FILE_END; + if (_currentHandler && _currentHandler->canUpload(_currentUri)) { + _currentHandler->upload(*this, _currentUri, *_currentUpload); + } + log_v("End File: %s Type: %s Size: %d", _currentUpload->filename.c_str(), _currentUpload->type.c_str(), _currentUpload->totalSize); + line = client->readStringUntil(0x0D); + client->readStringUntil(0x0A); + if (line == "--") { + log_v("Done Parsing POST"); + break; + } + continue; + } else { + _uploadWriteByte(0x0D); + _uploadWriteByte(0x0A); + _uploadWriteByte((uint8_t)('-')); + _uploadWriteByte((uint8_t)('-')); + uint32_t i = 0; + while (i < boundary.length()) { + _uploadWriteByte(endBuf[i++]); + } + argByte = _uploadReadByte(client); + goto readfile; + } + } else { + _uploadWriteByte(0x0D); + goto readfile; + } + break; + } + } + } + } + + int iarg; + int totalArgs = ((WEBSERVER_MAX_POST_ARGS - _postArgsLen) < _currentArgCount) ? (WEBSERVER_MAX_POST_ARGS - _postArgsLen) : _currentArgCount; + for (iarg = 0; iarg < totalArgs; iarg++) { + RequestArgument& arg = _postArgs[_postArgsLen++]; + arg.key = _currentArgs[iarg].key; + arg.value = _currentArgs[iarg].value; + } + if (_currentArgs) { + delete[] _currentArgs; + } + _currentArgs = new RequestArgument[_postArgsLen]; + for (iarg = 0; iarg < _postArgsLen; iarg++) { + RequestArgument& arg = _currentArgs[iarg]; + arg.key = _postArgs[iarg].key; + arg.value = _postArgs[iarg].value; + } + _currentArgCount = iarg; + if (_postArgs) { + delete[] _postArgs; + _postArgs = nullptr; + _postArgsLen = 0; + } + return true; + } + log_e("Error: line: %s", line.c_str()); + return false; +} + +String HTTPServer::urlDecode(const String& text) { + String decoded = ""; + char temp[] = "0x00"; + unsigned int len = text.length(); + unsigned int i = 0; + while (i < len) { + char decodedChar; + char encodedChar = text.charAt(i++); + if ((encodedChar == '%') && (i + 1 < len)) { + temp[2] = text.charAt(i++); + temp[3] = text.charAt(i++); + + decodedChar = strtol(temp, NULL, 16); + } else { + if (encodedChar == '+') { + decodedChar = ' '; + } else { + decodedChar = encodedChar; // normal ascii char + } + } + decoded += decodedChar; + } + return decoded; +} + +bool HTTPServer::_parseFormUploadAborted() { + _currentUpload->status = UPLOAD_FILE_ABORTED; + if (_currentHandler && _currentHandler->canUpload(_currentUri)) { + _currentHandler->upload(*this, _currentUri, *_currentUpload); + } + return false; +} diff --git a/libraries/WebServer/src/Uri.h b/libraries/WebServer/src/Uri.h new file mode 100644 index 0000000..9190745 --- /dev/null +++ b/libraries/WebServer/src/Uri.h @@ -0,0 +1,26 @@ +#pragma once + +#include +#include + +class Uri { + +protected: + const String _uri; + +public: + Uri(const char *uri) : _uri(uri) {} + Uri(const String &uri) : _uri(uri) {} + Uri(const __FlashStringHelper *uri) : _uri(String(uri)) {} + virtual ~Uri() {} + + virtual Uri* clone() const { + return new Uri(_uri); + }; + + virtual void initPathArgs(__attribute__((unused)) std::vector &pathArgs) {} + + virtual bool canHandle(const String &requestUri, __attribute__((unused)) std::vector &pathArgs) { + return _uri == requestUri; + } +}; diff --git a/libraries/WebServer/src/WebServer.h b/libraries/WebServer/src/WebServer.h new file mode 100644 index 0000000..e1843f6 --- /dev/null +++ b/libraries/WebServer/src/WebServer.h @@ -0,0 +1,26 @@ +/* + WebServer.h - Create a WebServer class + Copyright (c) 2022 Earle F. Philhower, III All rights reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Modified 8 May 2015 by Hristo Gochkov (proper post and file upload handling) +*/ + +#pragma once + +#include "WebServerTemplate.h" +#include "detail/mimetable.h" + +using WebServer = WebServerTemplate; diff --git a/libraries/WebServer/src/WebServerSecure.h b/libraries/WebServer/src/WebServerSecure.h new file mode 100644 index 0000000..1db8540 --- /dev/null +++ b/libraries/WebServer/src/WebServerSecure.h @@ -0,0 +1,25 @@ +/* + WebServerSecure - Create a WebServerSecure class + Copyright (c) 2022 Earle F. Philhower, III All rights reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Modified 8 May 2015 by Hristo Gochkov (proper post and file upload handling) +*/ + +#pragma once + +#include "WebServerTemplate.h" + +using WebServerSecure = WebServerTemplate; diff --git a/libraries/WebServer/src/WebServerTemplate.h b/libraries/WebServer/src/WebServerTemplate.h new file mode 100644 index 0000000..abea312 --- /dev/null +++ b/libraries/WebServer/src/WebServerTemplate.h @@ -0,0 +1,117 @@ +/* + WebServerTemplate - Makes an actual Server class from a HTTPServer + Copyright (c) 2022 Earle F. Philhower, III All rights reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Modified 8 May 2015 by Hristo Gochkov (proper post and file upload handling) +*/ + +#pragma once + +#include "HTTPServer.h" + +template +class WebServerTemplate; + +template +class WebServerTemplate : public HTTPServer { +public: + using WebServerType = WebServerTemplate; + using ClientType = typename ServerType::ClientType; + + WebServerTemplate(IPAddress addr, int port = DefaultPort); + WebServerTemplate(int port = DefaultPort); + virtual ~WebServerTemplate(); + + virtual void begin(); + virtual void begin(uint16_t port); + virtual void handleClient(); + + virtual void close(); + virtual void stop(); + + ServerType &getServer() { + return _server; + } + + ClientType& client() { + // _currentClient is always a WiFiClient*, so we need to coerce to the proper type for SSL + return *(ClientType*)_currentClient; + } + +private: + ServerType _server; +}; + +template +WebServerTemplate::WebServerTemplate(IPAddress addr, int port) : HTTPServer(), _server(addr, port) { +} + +template +WebServerTemplate::WebServerTemplate(int port) : HTTPServer(), _server(port) { +} + +template +WebServerTemplate::~WebServerTemplate() { + _server.close(); +} + +template +void WebServerTemplate::begin() { + close(); + _server.begin(); + _server.setNoDelay(true); +} + +template +void WebServerTemplate::begin(uint16_t port) { + close(); + _server.begin(port); + _server.setNoDelay(true); +} + +template +void WebServerTemplate::handleClient() { + if (_currentStatus == HC_NONE) { + if (_currentClient) { + delete _currentClient; + _currentClient = nullptr; + } + + ClientType client = _server.available(); + if (!client) { + if (_nullDelay) { + delay(1); + } + return; + } + + _currentClient = new ClientType(client); + _currentStatus = HC_WAIT_READ; + _statusChange = millis(); + } + httpHandleClient(); +} + +template +void WebServerTemplate::close() { + _server.close(); + httpClose(); +} + +template +void WebServerTemplate::stop() { + close(); +} diff --git a/libraries/WebServer/src/detail/RequestHandler.h b/libraries/WebServer/src/detail/RequestHandler.h new file mode 100644 index 0000000..f816cf1 --- /dev/null +++ b/libraries/WebServer/src/detail/RequestHandler.h @@ -0,0 +1,48 @@ +#pragma once + +#include +#include + +class RequestHandler { +public: + virtual ~RequestHandler() { } + virtual bool canHandle(HTTPMethod method, String uri) { + (void) method; + (void) uri; + return false; + } + virtual bool canUpload(String uri) { + (void) uri; + return false; + } + virtual bool handle(HTTPServer& server, HTTPMethod requestMethod, String requestUri) { + (void) server; + (void) requestMethod; + (void) requestUri; + return false; + } + virtual void upload(HTTPServer& server, String requestUri, HTTPUpload& upload) { + (void) server; + (void) requestUri; + (void) upload; + } + + RequestHandler* next() { + return _next; + } + void next(RequestHandler* r) { + _next = r; + } + +private: + RequestHandler* _next = nullptr; + +protected: + std::vector pathArgs; + +public: + const String& pathArg(unsigned int i) { + assert(i < pathArgs.size()); + return pathArgs[i]; + } +}; diff --git a/libraries/WebServer/src/detail/RequestHandlersImpl.h b/libraries/WebServer/src/detail/RequestHandlersImpl.h new file mode 100644 index 0000000..4321173 --- /dev/null +++ b/libraries/WebServer/src/detail/RequestHandlersImpl.h @@ -0,0 +1,163 @@ +#pragma once + +#include "RequestHandler.h" +#include "mimetable.h" +#include +#include "Uri.h" + +#ifndef log_e +#define log_e(...) +#define log_w(...) +#define log_v(...) +#endif + +using namespace mime; + +class FunctionRequestHandler : public RequestHandler { +public: + FunctionRequestHandler(HTTPServer::THandlerFunction fn, HTTPServer::THandlerFunction ufn, const Uri &uri, HTTPMethod method) + : _fn(fn) + , _ufn(ufn) + , _uri(uri.clone()) + , _method(method) { + _uri->initPathArgs(pathArgs); + } + + ~FunctionRequestHandler() { + delete _uri; + } + + bool canHandle(HTTPMethod requestMethod, String requestUri) override { + if (_method != HTTP_ANY && _method != requestMethod) { + return false; + } + + return _uri->canHandle(requestUri, pathArgs); + } + + bool canUpload(String requestUri) override { + if (!_ufn || !canHandle(HTTP_POST, requestUri)) { + return false; + } + + return true; + } + + bool handle(HTTPServer& server, HTTPMethod requestMethod, String requestUri) override { + (void) server; + if (!canHandle(requestMethod, requestUri)) { + return false; + } + + _fn(); + return true; + } + + void upload(HTTPServer& server, String requestUri, HTTPUpload& upload) override { + (void) server; + (void) upload; + if (canUpload(requestUri)) { + _ufn(); + } + } + +protected: + HTTPServer::THandlerFunction _fn; + HTTPServer::THandlerFunction _ufn; + Uri *_uri; + HTTPMethod _method; +}; + +class StaticRequestHandler : public RequestHandler { +public: + StaticRequestHandler(FS& fs, const char* path, const char* uri, const char* cache_header) + : _fs(fs) + , _uri(uri) + , _path(path) + , _cache_header(cache_header) { + File f = fs.open(path, "r"); + _isFile = (f && (! f.isDirectory())); + log_v("StaticRequestHandler: path=%s uri=%s isFile=%d, cache_header=%s\r\n", path, uri, _isFile, cache_header ? cache_header : ""); // issue 5506 - cache_header can be nullptr + _baseUriLength = _uri.length(); + } + + bool canHandle(HTTPMethod requestMethod, String requestUri) override { + if (requestMethod != HTTP_GET) { + return false; + } + + if ((_isFile && requestUri != _uri) || !requestUri.startsWith(_uri)) { + return false; + } + + return true; + } + + bool handle(HTTPServer& server, HTTPMethod requestMethod, String requestUri) override { + if (!canHandle(requestMethod, requestUri)) { + return false; + } + + log_v("StaticRequestHandler::handle: request=%s _uri=%s\r\n", requestUri.c_str(), _uri.c_str()); + + String path(_path); + + if (!_isFile) { + // Base URI doesn't point to a file. + // If a directory is requested, look for index file. + if (requestUri.endsWith("/")) { + requestUri += "index.htm"; + } + + // Append whatever follows this URI in request to get the file path. + path += requestUri.substring(_baseUriLength); + } + log_v("StaticRequestHandler::handle: path=%s, isFile=%d\r\n", path.c_str(), _isFile); + + String contentType = getContentType(path); + + // look for gz file, only if the original specified path is not a gz. So part only works to send gzip via content encoding when a non compressed is asked for + // if you point the the path to gzip you will serve the gzip as content type "application/x-gzip", not text or javascript etc... + if (!path.endsWith(FPSTR(mimeTable[gz].endsWith)) && !_fs.exists(path)) { + String pathWithGz = path + FPSTR(mimeTable[gz].endsWith); + if (_fs.exists(pathWithGz)) { + path += FPSTR(mimeTable[gz].endsWith); + } + } + + File f = _fs.open(path, "r"); + if (!f || !f.available()) { + return false; + } + + if (_cache_header.length() != 0) { + server.sendHeader("Cache-Control", _cache_header); + } + + server.streamFile(f, contentType); + return true; + } + + static String getContentType(const String& path) { + char buff[sizeof(mimeTable[0].mimeType)]; + // Check all entries but last one for match, return if found + for (size_t i = 0; i < sizeof(mimeTable) / sizeof(mimeTable[0]) - 1; i++) { + strcpy_P(buff, mimeTable[i].endsWith); + if (path.endsWith(buff)) { + strcpy_P(buff, mimeTable[i].mimeType); + return String(buff); + } + } + // Fall-through and just return default type + strcpy_P(buff, mimeTable[sizeof(mimeTable) / sizeof(mimeTable[0]) - 1].mimeType); + return String(buff); + } + +protected: + FS _fs; + String _uri; + String _path; + String _cache_header; + bool _isFile; + size_t _baseUriLength; +}; diff --git a/libraries/WebServer/src/detail/mimetable.cpp b/libraries/WebServer/src/detail/mimetable.cpp new file mode 100644 index 0000000..c9d7ab4 --- /dev/null +++ b/libraries/WebServer/src/detail/mimetable.cpp @@ -0,0 +1,44 @@ +#include +#include "mimetable.h" +#include "pgmspace.h" + +namespace mime { + +// Table of extension->MIME strings stored in PROGMEM, needs to be global due to GCC section typing rules +const Entry mimeTable[maxType] = { + { ".html", "text/html" }, + { ".htm", "text/html" }, + { ".css", "text/css" }, + { ".txt", "text/plain" }, + { ".js", "application/javascript" }, + { ".json", "application/json" }, + { ".png", "image/png" }, + { ".gif", "image/gif" }, + { ".jpg", "image/jpeg" }, + { ".ico", "image/x-icon" }, + { ".svg", "image/svg+xml" }, + { ".ttf", "application/x-font-ttf" }, + { ".otf", "application/x-font-opentype" }, + { ".woff", "application/font-woff" }, + { ".woff2", "application/font-woff2" }, + { ".eot", "application/vnd.ms-fontobject" }, + { ".sfnt", "application/font-sfnt" }, + { ".xml", "text/xml" }, + { ".pdf", "application/pdf" }, + { ".zip", "application/zip" }, + { ".gz", "application/x-gzip" }, + { ".appcache", "text/cache-manifest" }, + { "", "application/octet-stream" } +}; + + +arduino::String getContentType(const arduino::String& path) { + for (size_t i = 0; i < maxType; i++) { + if (path.endsWith(FPSTR(mimeTable[i].endsWith))) { + return arduino::String(FPSTR(mimeTable[i].mimeType)); + } + } + // Fall-through and just return default type + return arduino::String(FPSTR(mimeTable[none].mimeType)); +} +} diff --git a/libraries/WebServer/src/detail/mimetable.h b/libraries/WebServer/src/detail/mimetable.h new file mode 100644 index 0000000..8f4f290 --- /dev/null +++ b/libraries/WebServer/src/detail/mimetable.h @@ -0,0 +1,43 @@ +#pragma once + +#include + +namespace mime { + +enum type { + html, + htm, + css, + txt, + js, + json, + png, + gif, + jpg, + ico, + svg, + ttf, + otf, + woff, + woff2, + eot, + sfnt, + xml, + pdf, + zip, + gz, + appcache, + none, + maxType +}; + +struct Entry { + const char endsWith[16]; + const char mimeType[32]; +}; + +extern const Entry mimeTable[maxType]; + +arduino::String getContentType(const arduino::String& path); + +} diff --git a/libraries/WebServer/src/uri/UriBraces.h b/libraries/WebServer/src/uri/UriBraces.h new file mode 100644 index 0000000..f1dce66 --- /dev/null +++ b/libraries/WebServer/src/uri/UriBraces.h @@ -0,0 +1,65 @@ +#pragma once + +#include "Uri.h" + +class UriBraces : public Uri { + +public: + explicit UriBraces(const char *uri) : Uri(uri) {}; + explicit UriBraces(const String &uri) : Uri(uri) {}; + + Uri* clone() const override final { + return new UriBraces(_uri); + }; + + void initPathArgs(std::vector &pathArgs) override final { + int numParams = 0, start = 0; + do { + start = _uri.indexOf("{}", start); + if (start > 0) { + numParams++; + start += 2; + } + } while (start > 0); + pathArgs.resize(numParams); + } + + bool canHandle(const String &requestUri, std::vector &pathArgs) override final { + if (Uri::canHandle(requestUri, pathArgs)) { + return true; + } + + size_t uriLength = _uri.length(); + unsigned int pathArgIndex = 0; + unsigned int requestUriIndex = 0; + for (unsigned int i = 0; i < uriLength; i++, requestUriIndex++) { + char uriChar = _uri[i]; + char requestUriChar = requestUri[requestUriIndex]; + + if (uriChar == requestUriChar) { + continue; + } + if (uriChar != '{') { + return false; + } + + i += 2; // index of char after '}' + if (i >= uriLength) { + // there is no char after '}' + pathArgs[pathArgIndex] = requestUri.substring(requestUriIndex); + return pathArgs[pathArgIndex].indexOf("/") == -1; // path argument may not contain a '/' + } else { + char charEnd = _uri[i]; + int uriIndex = requestUri.indexOf(charEnd, requestUriIndex); + if (uriIndex < 0) { + return false; + } + pathArgs[pathArgIndex] = requestUri.substring(requestUriIndex, uriIndex); + requestUriIndex = (unsigned int) uriIndex; + } + pathArgIndex++; + } + + return requestUriIndex >= requestUri.length(); + } +}; diff --git a/libraries/WebServer/src/uri/UriGlob.h b/libraries/WebServer/src/uri/UriGlob.h new file mode 100644 index 0000000..d3c3f42 --- /dev/null +++ b/libraries/WebServer/src/uri/UriGlob.h @@ -0,0 +1,19 @@ +#pragma once + +#include "Uri.h" +#include + +class UriGlob : public Uri { + +public: + explicit UriGlob(const char *uri) : Uri(uri) {}; + explicit UriGlob(const String &uri) : Uri(uri) {}; + + Uri* clone() const override final { + return new UriGlob(_uri); + }; + + bool canHandle(const String &requestUri, __attribute__((unused)) std::vector &pathArgs) override final { + return fnmatch(_uri.c_str(), requestUri.c_str(), 0) == 0; + } +}; diff --git a/libraries/WebServer/src/uri/UriRegex.h b/libraries/WebServer/src/uri/UriRegex.h new file mode 100644 index 0000000..fa1bc27 --- /dev/null +++ b/libraries/WebServer/src/uri/UriRegex.h @@ -0,0 +1,42 @@ +#pragma once + +#include "Uri.h" +#include + +class UriRegex : public Uri { + +public: + explicit UriRegex(const char *uri) : Uri(uri) {}; + explicit UriRegex(const String &uri) : Uri(uri) {}; + + Uri* clone() const override final { + return new UriRegex(_uri); + }; + + void initPathArgs(std::vector &pathArgs) override final { + std::regex rgx((_uri + "|").c_str()); + std::smatch matches; + std::string s{""}; + std::regex_search(s, matches, rgx); + pathArgs.resize(matches.size() - 1); + } + + bool canHandle(const String &requestUri, std::vector &pathArgs) override final { + if (Uri::canHandle(requestUri, pathArgs)) { + return true; + } + + unsigned int pathArgIndex = 0; + std::regex rgx(_uri.c_str()); + std::smatch matches; + std::string s(requestUri.c_str()); + if (std::regex_search(s, matches, rgx)) { + for (size_t i = 1; i < matches.size(); ++i) { // skip first + pathArgs[pathArgIndex] = String(matches[i].str().c_str()); + pathArgIndex++; + } + return true; + } + return false; + } +}; diff --git a/libraries/WiFi/src/WiFiClass.cpp b/libraries/WiFi/src/WiFiClass.cpp index cc244b2..092da0b 100644 --- a/libraries/WiFi/src/WiFiClass.cpp +++ b/libraries/WiFi/src/WiFiClass.cpp @@ -235,16 +235,16 @@ const char *WiFiClass::getHostname() { return: one value of wl_status_t enum */ int WiFiClass::disconnect(void) { - if (_wifiHWInitted) { - cyw43_wifi_leave(&cyw43_state, _apMode ? 1 : 0); - } - _wifiHWInitted = false; if (_dhcpServer) { dhcp_server_deinit(_dhcpServer); free(_dhcpServer); _dhcpServer = nullptr; } - _wifi.end(); + if (_wifiHWInitted) { + _wifiHWInitted = false; + cyw43_wifi_leave(&cyw43_state, _apMode ? 1 : 0); + _wifi.end(); + } return WL_DISCONNECTED; } diff --git a/libraries/WiFi/src/WiFiClass.h b/libraries/WiFi/src/WiFiClass.h index 46f5014..0d86338 100644 --- a/libraries/WiFi/src/WiFiClass.h +++ b/libraries/WiFi/src/WiFiClass.h @@ -115,7 +115,7 @@ public: bool softAPdisconnect(bool wifioff = false) { (void) wifioff; - end(); + disconnect(); return true; } diff --git a/libraries/WiFi/src/WiFiClient.cpp b/libraries/WiFi/src/WiFiClient.cpp index cf6112e..19e7fab 100644 --- a/libraries/WiFi/src/WiFiClient.cpp +++ b/libraries/WiFi/src/WiFiClient.cpp @@ -201,18 +201,13 @@ size_t WiFiClient::write(const uint8_t *buf, size_t size) { return _client->write((const char*)buf, size); } -//TODO - implement! -//size_t WiFiClient::write(Stream& stream) -//{ -// // (this method is deprecated) -// -// if (!_client || !stream.available()) -// { -// return 0; -// } -// // core up to 2.7.4 was equivalent to this -// return _client->write(stream); -//} +size_t WiFiClient::write(Stream& stream) { + if (!_client || !stream.available()) { + return 0; + } + _client->setTimeout(_timeout); + return _client->write(stream); +} int WiFiClient::available() { if (!_client) { diff --git a/libraries/WiFi/src/WiFiClient.h b/libraries/WiFi/src/WiFiClient.h index 7046d60..71b71e9 100644 --- a/libraries/WiFi/src/WiFiClient.h +++ b/libraries/WiFi/src/WiFiClient.h @@ -70,7 +70,7 @@ public: virtual int connect(const String& host, uint16_t port); virtual size_t write(uint8_t) override; virtual size_t write(const uint8_t *buf, size_t size) override; - //size_t write(Stream& stream); + size_t write(Stream& stream); virtual int available() override; virtual int read() override; diff --git a/libraries/WiFi/src/WiFiServer.h b/libraries/WiFi/src/WiFiServer.h index 669e3e9..bb80400 100644 --- a/libraries/WiFi/src/WiFiServer.h +++ b/libraries/WiFi/src/WiFiServer.h @@ -80,6 +80,7 @@ public: virtual ~WiFiServer() {} WiFiClient accept(); // https://www.arduino.cc/en/Reference/EthernetServerAccept WiFiClient available(uint8_t* status = NULL); + bool hasClient(); // hasClientData(): // returns the amount of data available from the first client diff --git a/libraries/WiFi/src/WiFiServerSecureBearSSL.h b/libraries/WiFi/src/WiFiServerSecureBearSSL.h index c3c6e87..518d8f6 100644 --- a/libraries/WiFi/src/WiFiServerSecureBearSSL.h +++ b/libraries/WiFi/src/WiFiServerSecureBearSSL.h @@ -65,7 +65,7 @@ public: // If awaiting connection available and authenticated (i.e. client cert), return it. WiFiClientSecure accept(); // https://www.arduino.cc/en/Reference/EthernetServerAccept - WiFiClientSecure available(uint8_t* status = NULL) __attribute__((deprecated("Renamed to accept()."))); + WiFiClientSecure available(uint8_t* status = NULL); WiFiServerSecure& operator=(const WiFiServerSecure&) = default; diff --git a/libraries/WiFi/src/include/ClientContext.h b/libraries/WiFi/src/include/ClientContext.h index d7e6ce0..6972af7 100644 --- a/libraries/WiFi/src/include/ClientContext.h +++ b/libraries/WiFi/src/include/ClientContext.h @@ -374,6 +374,23 @@ public: return _write_from_source(ds, dl); } + size_t write(Stream& stream) { + if (!_pcb) { + return 0; + } + size_t sent = 0; + while (stream.available()) { + char b; + b = stream.read(); + if (write(&b, 1)) { + sent ++; + } else { + break; + } + } + return sent; + } + void keepAlive(uint16_t idle_sec = TCP_DEFAULT_KEEPALIVE_IDLE_SEC, uint16_t intv_sec = TCP_DEFAULT_KEEPALIVE_INTERVAL_SEC, uint8_t count = TCP_DEFAULT_KEEPALIVE_COUNT) { if (idle_sec && intv_sec && count) { _pcb->so_options |= SOF_KEEPALIVE; diff --git a/libraries/http-parser/LICENSE-MIT b/libraries/http-parser/LICENSE-MIT new file mode 100644 index 0000000..1ec0ab4 --- /dev/null +++ b/libraries/http-parser/LICENSE-MIT @@ -0,0 +1,19 @@ +Copyright Joyent, Inc. and other Node contributors. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. diff --git a/libraries/http-parser/README.md b/libraries/http-parser/README.md new file mode 100644 index 0000000..e38d3a5 --- /dev/null +++ b/libraries/http-parser/README.md @@ -0,0 +1,249 @@ +HTTP Parser +=========== + +http-parser is [**not** actively maintained](https://github.com/nodejs/http-parser/issues/522). +New projects and projects looking to migrate should consider [llhttp](https://github.com/nodejs/llhttp). + +[![Build Status](https://api.travis-ci.org/nodejs/http-parser.svg?branch=master)](https://travis-ci.org/nodejs/http-parser) + +This is a parser for HTTP messages written in C. It parses both requests and +responses. The parser is designed to be used in performance HTTP +applications. It does not make any syscalls nor allocations, it does not +buffer data, it can be interrupted at anytime. Depending on your +architecture, it only requires about 40 bytes of data per message +stream (in a web server that is per connection). + +Features: + + * No dependencies + * Handles persistent streams (keep-alive). + * Decodes chunked encoding. + * Upgrade support + * Defends against buffer overflow attacks. + +The parser extracts the following information from HTTP messages: + + * Header fields and values + * Content-Length + * Request method + * Response status code + * Transfer-Encoding + * HTTP version + * Request URL + * Message body + + +Usage +----- + +One `http_parser` object is used per TCP connection. Initialize the struct +using `http_parser_init()` and set the callbacks. That might look something +like this for a request parser: +```c +http_parser_settings settings; +settings.on_url = my_url_callback; +settings.on_header_field = my_header_field_callback; +/* ... */ + +http_parser *parser = malloc(sizeof(http_parser)); +http_parser_init(parser, HTTP_REQUEST); +parser->data = my_socket; +``` + +When data is received on the socket execute the parser and check for errors. + +```c +size_t len = 80*1024, nparsed; +char buf[len]; +ssize_t recved; + +recved = recv(fd, buf, len, 0); + +if (recved < 0) { + /* Handle error. */ +} + +/* Start up / continue the parser. + * Note we pass recved==0 to signal that EOF has been received. + */ +nparsed = http_parser_execute(parser, &settings, buf, recved); + +if (parser->upgrade) { + /* handle new protocol */ +} else if (nparsed != recved) { + /* Handle error. Usually just close the connection. */ +} +``` + +`http_parser` needs to know where the end of the stream is. For example, sometimes +servers send responses without Content-Length and expect the client to +consume input (for the body) until EOF. To tell `http_parser` about EOF, give +`0` as the fourth parameter to `http_parser_execute()`. Callbacks and errors +can still be encountered during an EOF, so one must still be prepared +to receive them. + +Scalar valued message information such as `status_code`, `method`, and the +HTTP version are stored in the parser structure. This data is only +temporally stored in `http_parser` and gets reset on each new message. If +this information is needed later, copy it out of the structure during the +`headers_complete` callback. + +The parser decodes the transfer-encoding for both requests and responses +transparently. That is, a chunked encoding is decoded before being sent to +the on_body callback. + + +The Special Problem of Upgrade +------------------------------ + +`http_parser` supports upgrading the connection to a different protocol. An +increasingly common example of this is the WebSocket protocol which sends +a request like + + GET /demo HTTP/1.1 + Upgrade: WebSocket + Connection: Upgrade + Host: example.com + Origin: http://example.com + WebSocket-Protocol: sample + +followed by non-HTTP data. + +(See [RFC6455](https://tools.ietf.org/html/rfc6455) for more information the +WebSocket protocol.) + +To support this, the parser will treat this as a normal HTTP message without a +body, issuing both on_headers_complete and on_message_complete callbacks. However +http_parser_execute() will stop parsing at the end of the headers and return. + +The user is expected to check if `parser->upgrade` has been set to 1 after +`http_parser_execute()` returns. Non-HTTP data begins at the buffer supplied +offset by the return value of `http_parser_execute()`. + + +Callbacks +--------- + +During the `http_parser_execute()` call, the callbacks set in +`http_parser_settings` will be executed. The parser maintains state and +never looks behind, so buffering the data is not necessary. If you need to +save certain data for later usage, you can do that from the callbacks. + +There are two types of callbacks: + +* notification `typedef int (*http_cb) (http_parser*);` + Callbacks: on_message_begin, on_headers_complete, on_message_complete. +* data `typedef int (*http_data_cb) (http_parser*, const char *at, size_t length);` + Callbacks: (requests only) on_url, + (common) on_header_field, on_header_value, on_body; + +Callbacks must return 0 on success. Returning a non-zero value indicates +error to the parser, making it exit immediately. + +For cases where it is necessary to pass local information to/from a callback, +the `http_parser` object's `data` field can be used. +An example of such a case is when using threads to handle a socket connection, +parse a request, and then give a response over that socket. By instantiation +of a thread-local struct containing relevant data (e.g. accepted socket, +allocated memory for callbacks to write into, etc), a parser's callbacks are +able to communicate data between the scope of the thread and the scope of the +callback in a threadsafe manner. This allows `http_parser` to be used in +multi-threaded contexts. + +Example: +```c + typedef struct { + socket_t sock; + void* buffer; + int buf_len; + } custom_data_t; + + +int my_url_callback(http_parser* parser, const char *at, size_t length) { + /* access to thread local custom_data_t struct. + Use this access save parsed data for later use into thread local + buffer, or communicate over socket + */ + parser->data; + ... + return 0; +} + +... + +void http_parser_thread(socket_t sock) { + int nparsed = 0; + /* allocate memory for user data */ + custom_data_t *my_data = malloc(sizeof(custom_data_t)); + + /* some information for use by callbacks. + * achieves thread -> callback information flow */ + my_data->sock = sock; + + /* instantiate a thread-local parser */ + http_parser *parser = malloc(sizeof(http_parser)); + http_parser_init(parser, HTTP_REQUEST); /* initialise parser */ + /* this custom data reference is accessible through the reference to the + parser supplied to callback functions */ + parser->data = my_data; + + http_parser_settings settings; /* set up callbacks */ + settings.on_url = my_url_callback; + + /* execute parser */ + nparsed = http_parser_execute(parser, &settings, buf, recved); + + ... + /* parsed information copied from callback. + can now perform action on data copied into thread-local memory from callbacks. + achieves callback -> thread information flow */ + my_data->buffer; + ... +} + +``` + +In case you parse HTTP message in chunks (i.e. `read()` request line +from socket, parse, read half headers, parse, etc) your data callbacks +may be called more than once. `http_parser` guarantees that data pointer is only +valid for the lifetime of callback. You can also `read()` into a heap allocated +buffer to avoid copying memory around if this fits your application. + +Reading headers may be a tricky task if you read/parse headers partially. +Basically, you need to remember whether last header callback was field or value +and apply the following logic: + + (on_header_field and on_header_value shortened to on_h_*) + ------------------------ ------------ -------------------------------------------- + | State (prev. callback) | Callback | Description/action | + ------------------------ ------------ -------------------------------------------- + | nothing (first call) | on_h_field | Allocate new buffer and copy callback data | + | | | into it | + ------------------------ ------------ -------------------------------------------- + | value | on_h_field | New header started. | + | | | Copy current name,value buffers to headers | + | | | list and allocate new buffer for new name | + ------------------------ ------------ -------------------------------------------- + | field | on_h_field | Previous name continues. Reallocate name | + | | | buffer and append callback data to it | + ------------------------ ------------ -------------------------------------------- + | field | on_h_value | Value for current header started. Allocate | + | | | new buffer and copy callback data to it | + ------------------------ ------------ -------------------------------------------- + | value | on_h_value | Value continues. Reallocate value buffer | + | | | and append callback data to it | + ------------------------ ------------ -------------------------------------------- + + +Parsing URLs +------------ + +A simplistic zero-copy URL parser is provided as `http_parser_parse_url()`. +Users of this library may wish to use it to parse URLs constructed from +consecutive `on_url` callbacks. + +See examples of reading in headers: + +* [partial example](http://gist.github.com/155877) in C +* [from http-parser tests](http://github.com/joyent/http-parser/blob/37a0ff8/test.c#L403) in C +* [from Node library](http://github.com/joyent/node/blob/842eaf4/src/http.js#L284) in Javascript diff --git a/libraries/http-parser/lib/http-parser b/libraries/http-parser/lib/http-parser new file mode 160000 index 0000000..ec8b5ee --- /dev/null +++ b/libraries/http-parser/lib/http-parser @@ -0,0 +1 @@ +Subproject commit ec8b5ee63f0e51191ea43bb0c6eac7bfbff3141d diff --git a/libraries/http-parser/library.properties b/libraries/http-parser/library.properties new file mode 100644 index 0000000..91912ac --- /dev/null +++ b/libraries/http-parser/library.properties @@ -0,0 +1,11 @@ +name=http-parser +version=2.9.4 +author=Node.JS team +maintainer=Earle F. Philhower, III +sentence=HTTP parser from Node.js team, MIT license +paragraph=HTTP parser from Node.js team, MIT license +category=communications +url=https://github.com/earlephilhower/arduino-pico +architectures=rp2040 +dot_a_linkage=true +includes=http_parser.h diff --git a/libraries/http-parser/src/http_parser.c b/libraries/http-parser/src/http_parser.c new file mode 100644 index 0000000..beffe92 --- /dev/null +++ b/libraries/http-parser/src/http_parser.c @@ -0,0 +1 @@ +#include "../lib/http-parser/http_parser.c" diff --git a/libraries/http-parser/src/http_parser.h b/libraries/http-parser/src/http_parser.h new file mode 100644 index 0000000..00b2d49 --- /dev/null +++ b/libraries/http-parser/src/http_parser.h @@ -0,0 +1 @@ +#include "../lib/http-parser/http_parser.h" diff --git a/tests/restyle.sh b/tests/restyle.sh index 4c02efa..7a1dc66 100755 --- a/tests/restyle.sh +++ b/tests/restyle.sh @@ -7,7 +7,8 @@ for dir in ./cores/rp2040 ./libraries/EEPROM ./libraries/I2S \ ./libraries/WiFi ./libraries/lwIP_Ethernet ./libraries/lwIP_CYW43 \ ./libraries/FreeRTOS/src ./libraries/LEAmDNS ./libraries/MD5Builder \ ./libraries/PicoOTA ./libraries/SDFS ./libraries/ArduinoOTA \ - ./libraries/Updater ./libraries/HTTPClient ./libraries/HTTPUpdate; do + ./libraries/Updater ./libraries/HTTPClient ./libraries/HTTPUpdate \ + ./libraries/WebServer ./libraries/HTTPUpdateServer ; do find $dir -type f \( -name "*.c" -o -name "*.h" -o -name "*.cpp" \) -a \! -path '*api*' -exec astyle --suffix=none --options=./tests/astyle_core.conf \{\} \; find $dir -type f -name "*.ino" -exec astyle --suffix=none --options=./tests/astyle_examples.conf \{\} \; done diff --git a/tools/build.py b/tools/build.py index 718ec56..2f1160d 100755 --- a/tools/build.py +++ b/tools/build.py @@ -65,7 +65,7 @@ def compile(tmp_dir, sketch, cache, tools_dir, hardware_dir, ide_path, f, args): 'dbgport={dbgport},' \ 'dbglvl={dbglvl},' \ 'usbstack={usbstack}'.format(**vars(args)) - if ("/WiFi" in sketch) or ("/ArduinoOTA" in sketch) or ("/HTTPClient" in sketch) or ('/HTTPUpdate' in sketch): + if ("/WiFi" in sketch) or ("/ArduinoOTA" in sketch) or ("/HTTPClient" in sketch) or ('/HTTPUpdate' in sketch) or ('/WebServer' in sketch) or ('/DNSServer' in sketch): fqbn = fqbn.replace("rpipico", "rpipicow") cmd += [fqbn] cmd += ['-built-in-libraries', ide_path + '/libraries']