micrOSDevToolKit 3.2.4__tar.gz → 3.3.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {microsdevtoolkit-3.2.4/micrOSDevToolKit.egg-info → microsdevtoolkit-3.3.0}/PKG-INFO +1 -1
- microsdevtoolkit-3.2.4/micrOS/micropython/micrOS-esp32-1.28.0-3.1.1-0.bin → microsdevtoolkit-3.3.0/micrOS/micropython/micrOS-esp32-1.28.0-3.3.0-0.bin +0 -0
- microsdevtoolkit-3.2.4/micrOS/micropython/micrOS-esp32c3-1.28.0-3.1.1-0.bin → microsdevtoolkit-3.3.0/micrOS/micropython/micrOS-esp32c3-1.28.0-3.3.0-0.bin +0 -0
- microsdevtoolkit-3.2.4/micrOS/micropython/micrOS-esp32c6-1.28.0-3.1.1-0.bin → microsdevtoolkit-3.3.0/micrOS/micropython/micrOS-esp32c6-1.28.0-3.3.0-0.bin +0 -0
- microsdevtoolkit-3.2.4/micrOS/micropython/micrOS-esp32s3-1.28.0-3.1.1-0.bin → microsdevtoolkit-3.3.0/micrOS/micropython/micrOS-esp32s3-1.28.0-3.3.0-0.bin +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/release_info/micrOS_ReleaseInfo/system_analysis_sum.json +10 -10
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/Auth.py +21 -4
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/Shell.py +1 -1
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/Web.py +97 -44
- microsdevtoolkit-3.3.0/micrOS/source/__pycache__/Auth.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/__pycache__/Common.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/__pycache__/Config.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/__pycache__/Scheduler.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/__pycache__/Shell.cpython-312.pyc +0 -0
- microsdevtoolkit-3.3.0/micrOS/source/__pycache__/Web.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_web.py +36 -11
- microsdevtoolkit-3.3.0/micrOS/source/modules/__pycache__/LM_pacman.cpython-312.pyc +0 -0
- microsdevtoolkit-3.3.0/micrOS/source/modules/__pycache__/LM_system.cpython-312.pyc +0 -0
- microsdevtoolkit-3.3.0/micrOS/source/modules/__pycache__/LM_web.cpython-312.pyc +0 -0
- microsdevtoolkit-3.3.0/micrOS/source/web/auth.js +142 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/web/config.css +49 -3
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/web/config.html +2 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/web/config.js +460 -57
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/utests/test_web_engine.py +217 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0/micrOSDevToolKit.egg-info}/PKG-INFO +1 -1
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOSDevToolKit.egg-info/SOURCES.txt +9 -4
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/setup.py +1 -1
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/DevEnvUSB.py +5 -5
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/node_config.json +1 -1
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/socketClient.py +105 -27
- microsdevtoolkit-3.3.0/toolkit/workspace/precompiled/Auth.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/Shell.mpy +0 -0
- microsdevtoolkit-3.3.0/toolkit/workspace/precompiled/Web.mpy +0 -0
- microsdevtoolkit-3.3.0/toolkit/workspace/precompiled/modules/LM_web.mpy +0 -0
- microsdevtoolkit-3.3.0/toolkit/workspace/precompiled/web/auth.js +21 -0
- microsdevtoolkit-3.3.0/toolkit/workspace/precompiled/web/config.css +1 -0
- microsdevtoolkit-3.3.0/toolkit/workspace/precompiled/web/config.html +1 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/web/config.js +47 -18
- microsdevtoolkit-3.2.4/micrOS/source/__pycache__/Web.cpython-312.pyc +0 -0
- microsdevtoolkit-3.2.4/micrOS/source/modules/__pycache__/LM_web.cpython-312.pyc +0 -0
- microsdevtoolkit-3.2.4/toolkit/workspace/precompiled/Auth.mpy +0 -0
- microsdevtoolkit-3.2.4/toolkit/workspace/precompiled/Web.mpy +0 -0
- microsdevtoolkit-3.2.4/toolkit/workspace/precompiled/modules/LM_web.mpy +0 -0
- microsdevtoolkit-3.2.4/toolkit/workspace/precompiled/web/config.css +0 -1
- microsdevtoolkit-3.2.4/toolkit/workspace/precompiled/web/config.html +0 -1
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/LICENSE +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/MANIFEST.in +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/README.md +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/devToolKit.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/env/__init__.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/env/driver_cp210x/.DS_Store +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/CP210xVCPInstaller_x64.exe +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/CP210xVCPInstaller_x86.exe +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/CP210x_Universal_Windows_Driver_ReleaseNotes.txt +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/SLAB_License_Agreement_VCP_Windows.txt +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/arm/silabser.sys +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/arm64/silabser.sys +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/dpinst.xml +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/silabser.cat +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/silabser.inf +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/x64/silabser.sys +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/x86/silabser.sys +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/env/driver_cp210x/macOS_VCP_Driver/SiLabsUSBDriverDisk.dmg +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/env/driver_cp210x/macOS_VCP_Driver/macOS_VCP_Driver_Release_Notes.txt +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/media/__init__.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/media/dnd.png +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/media/logo.png +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/media/logo_mini.png +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/media/usb_port_icon.png +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/media/wifi_icon.png +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/__init__.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/micropython/board_commands.json +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/micropython/esp32-20251209-v1.27.0.bin +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/micropython/esp32c3-20251209-v1.27.0.bin +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/micropython/esp32c5-20251209-v1.27.0.bin +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/micropython/esp32c6-20251209-v1.27.0.bin +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/micropython/esp32cam-v1.21.0_camera.bin +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/micropython/esp32s2-20251209-v1.27.0.bin +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/micropython/esp32s2-LOLIN_MINI-20251209-v1.27.0.bin +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/micropython/esp32s3-4MBflash-20241129-v1.24.1.bin +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/micropython/esp32s3-8MBflash-20251209-v1.27.0.bin +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/micropython/esp32s3_spiram_oct-20251209-v1.27.0.bin +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/micropython/rpi-pico-w-20251209-v1.27.0.uf2 +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/micropython/tinypico-20251209-v1.27.0.bin +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/.DS_Store +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/Buffer.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/Common.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/Config.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/Debug.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/Files.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/Hooks.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/InterConnect.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/Interrupts.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/Logger.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/Network.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/Notify.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/Pacman.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/Scheduler.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/Server.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/Tasks.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/Time.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/Types.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/__pycache__/Buffer.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/__pycache__/Debug.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/__pycache__/Files.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/__pycache__/Hooks.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/__pycache__/InterConnect.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/__pycache__/Interrupts.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/__pycache__/Logger.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/__pycache__/Pacman.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/__pycache__/Power.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/__pycache__/Server.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/__pycache__/Tasks.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/__pycache__/Time.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/__pycache__/Types.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/__pycache__/micrOS.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/__pycache__/microIO.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/__pycache__/replhelper.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/__pycache__/urequests.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/config/_git.keep +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/helpers.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/main.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/mespnow.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/micrOS.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/micrOSloader.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/microIO.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/IO_esp32.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/IO_esp32c3.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/IO_esp32c5.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/IO_esp32c6.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/IO_esp32s2.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/IO_esp32s3.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/IO_m5stamp.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/IO_qtpy.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/IO_rp2.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/IO_tinypico.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_L298N.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_L9110_DCmotor.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_OV2640.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_aht10.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_bme280.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_buzzer.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_cct.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_cluster.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_dht11.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_dht22.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_dimmer.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_distance.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_ds18.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_esp32.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_espnow.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_fileserver.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_gameOfLife.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_genIO.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_haptic.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_i2c.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_i2s_mic.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_ld2410.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_light_sensor.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_neoeffects.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_neopixel.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_oled.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_oled_sh1106.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_oled_ui.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_pacman.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_presence.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_qmi8658.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_rencoder.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_rest.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_rgb.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_rgbcct.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_roboarm.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_robustness.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_rp2w.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_sdcard.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_servo.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_stepper.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_switch.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_system.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_telegram.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_tinyrgb.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_trackball.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/modules/LM_veml7700.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/urequests.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/web/dashboard.html +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/web/editor.js +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/web/editor_plugins.js +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/web/filesui.html +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/web/filesui.js +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/web/index.html +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/web/uapi.js +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/web/uapi_widgets.js +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/web/udashboard.js +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/web/ustyle.css +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/web/uwidgets.js +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/web/uwidgets_pro.js +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/utests/__init__.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/utests/test_buffer.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/utests/test_config.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/utests/test_pacman.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/utests/test_scheduler.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/utests/test_time.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/utests/test_urequests.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/utests/test_urequests_real_api.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOSDevToolKit.egg-info/dependency_links.txt +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOSDevToolKit.egg-info/requires.txt +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOSDevToolKit.egg-info/top_level.txt +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/setup.cfg +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/DevEnvCompile.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/DevEnvOTA.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/Gateway.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/LM_to_compile.dat +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/MicrOSDevEnv.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/WebRepl.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/__init__.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/dashboard_apps/BackupRestore.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/dashboard_apps/CCTDemo.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/dashboard_apps/CCTTest.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/dashboard_apps/CamStream.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/dashboard_apps/CatGame.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/dashboard_apps/Dimmer.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/dashboard_apps/GetVersion.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/dashboard_apps/MicrophoneTest.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/dashboard_apps/NeoEffectsDemo.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/dashboard_apps/NeopixelTest.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/dashboard_apps/PresenceTest.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/dashboard_apps/QMI8685_GYRO.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/dashboard_apps/RGBTest.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/dashboard_apps/RoboArm.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/dashboard_apps/SED_test.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/dashboard_apps/SensorsTest.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/dashboard_apps/SystemTest.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/dashboard_apps/Template_app.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/dashboard_apps/__init__.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/dashboard_apps/_app_base.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/dashboard_apps/_capture.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/dashboard_apps/_gyro_visualizer.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/dashboard_apps/_micPlotting.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/dashboard_apps/_presencePlotting.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/dashboard_apps/uLightDemo.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/gateway/gateway.css +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/gateway/img_stream.html +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/gateway/index.html +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/lib/LocalMachine.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/lib/MicrosFiles.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/lib/Repository.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/lib/SafeInput.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/lib/SearchDevices.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/lib/SerialDriverHandler.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/lib/TerminalColors.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/lib/__init__.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/lib/macroScript.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/lib/micrOSClient.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/lib/micrOSClientHistory.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/lib/pip_package_installer.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/micrOSImageBuilder.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/micrOSImageConfig.json +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/micrOSdashboard.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/micrOSlint.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/.DS_Store +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/IO_darwin.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/IO_darwin.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/Metrics.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/aioespnow.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/camera.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/dht.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/dht.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/dotstar.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/dotstar.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/dotstar.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/ds18x20.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/ds18x20.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/ds18x20.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/esp32.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/esp32.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/esp32.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/framebuf.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/framebuf.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/framebuf.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/machine.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/machine.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/machine.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/micropython.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/micropython.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/micropython.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/mip.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/neopixel.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/neopixel.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/neopixel.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/network.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/network.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/network.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/ntptime.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/onewire.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/onewire.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/onewire.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/sim_common.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/simgc.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/simgc.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/simgc.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/simulator.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/simulator.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/simulator.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/tinypico.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/tinypico.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/tinypico.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/uasyncio.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/uasyncio.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/uasyncio.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/uos.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/urandom.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/usocket.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/ussl.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/ustruct.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/ustruct.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/utime.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/utime.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/utime.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/webrepl.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/webrepl.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/__pycache__/webrepl.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/aioespnow.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/camera.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/dht.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/dotstar.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/ds18x20.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/esp32.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/framebuf.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/machine.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/micropython.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/mip.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/neopixel.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/network.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/ntptime.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/onewire.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/sim_common.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/simgc.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/simulator.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/tinypico.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/uasyncio.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/uos.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/urandom.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/usocket.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/ussl.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/ustruct.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/utime.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/view01.jpg +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/view02.jpg +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/simulator_lib/webrepl.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/user_data/.include +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/user_data/webhooks/generic.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/user_data/webhooks/macro.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/user_data/webhooks/template.macro +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/user_data/webhooks/template.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/__init__.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/Buffer.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/Common.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/Config.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/Debug.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/Files.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/Hooks.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/InterConnect.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/Interrupts.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/Logger.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/Network.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/Notify.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/Pacman.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/Scheduler.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/Server.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/Tasks.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/Time.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/Types.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/_mpy.version +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/config/_git.keep +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/helpers.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/main.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/mespnow.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/micrOS.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/micrOSloader.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/microIO.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/IO_esp32.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/IO_esp32c3.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/IO_esp32c5.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/IO_esp32c6.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/IO_esp32s2.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/IO_esp32s3.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/IO_m5stamp.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/IO_qtpy.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/IO_rp2.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/IO_tinypico.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_L298N.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_L9110_DCmotor.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_OV2640.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_aht10.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_bme280.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_buzzer.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_cct.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_cluster.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_dht11.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_dht22.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_dimmer.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_distance.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_ds18.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_esp32.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_espnow.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_fileserver.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_gameOfLife.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_genIO.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_haptic.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_i2c.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_i2s_mic.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_ld2410.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_light_sensor.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_neoeffects.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_neopixel.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_oled.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_oled_sh1106.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_oled_ui.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_pacman.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_presence.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_qmi8658.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_rencoder.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_rest.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_rgb.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_rgbcct.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_roboarm.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_robustness.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_rp2w.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_sdcard.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_servo.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_stepper.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_switch.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_system.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_telegram.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_tinyrgb.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_trackball.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/modules/LM_veml7700.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/urequests.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/web/dashboard.html +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/web/editor.js +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/web/editor_plugins.js +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/web/filesui.html +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/web/filesui.js +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/web/index.html +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/web/uapi.js +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/web/uapi_widgets.js +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/web/udashboard.js +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/web/ustyle.css +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/web/uwidgets.js +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/toolkit/workspace/precompiled/web/uwidgets_pro.js +0 -0
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"files": {
|
|
3
3
|
"Auth.py": [
|
|
4
|
-
9.
|
|
5
|
-
|
|
4
|
+
9.68,
|
|
5
|
+
6
|
|
6
6
|
],
|
|
7
7
|
"Time.py": [
|
|
8
8
|
9.38,
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
3
|
|
30
30
|
],
|
|
31
31
|
"Web.py": [
|
|
32
|
-
9.
|
|
32
|
+
9.36,
|
|
33
33
|
2
|
|
34
34
|
],
|
|
35
35
|
"Tasks.py": [
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
],
|
|
63
63
|
"Common.py": [
|
|
64
64
|
9.86,
|
|
65
|
-
|
|
65
|
+
32
|
|
66
66
|
],
|
|
67
67
|
"InterConnect.py": [
|
|
68
68
|
9.7,
|
|
@@ -125,7 +125,7 @@
|
|
|
125
125
|
0
|
|
126
126
|
],
|
|
127
127
|
"modules/LM_web.py": [
|
|
128
|
-
|
|
128
|
+
8.14,
|
|
129
129
|
0
|
|
130
130
|
],
|
|
131
131
|
"modules/LM_genIO.py": [
|
|
@@ -303,11 +303,11 @@
|
|
|
303
303
|
},
|
|
304
304
|
"summary": {
|
|
305
305
|
"core": [
|
|
306
|
-
|
|
306
|
+
5477,
|
|
307
307
|
27
|
|
308
308
|
],
|
|
309
309
|
"load": [
|
|
310
|
-
|
|
310
|
+
7589,
|
|
311
311
|
48
|
|
312
312
|
],
|
|
313
313
|
"core_dep": [
|
|
@@ -318,8 +318,8 @@
|
|
|
318
318
|
true,
|
|
319
319
|
5
|
|
320
320
|
],
|
|
321
|
-
"core_score": 9.
|
|
322
|
-
"load_score": 8.
|
|
323
|
-
"version": "3.
|
|
321
|
+
"core_score": 9.29,
|
|
322
|
+
"load_score": 8.41,
|
|
323
|
+
"version": "3.3.0-0"
|
|
324
324
|
}
|
|
325
325
|
}
|
|
@@ -5,6 +5,22 @@ micrOS Load Module Authentication/Access feature
|
|
|
5
5
|
from Config import cfgget as __cfgget
|
|
6
6
|
PWD_KEY = "pwd"
|
|
7
7
|
|
|
8
|
+
|
|
9
|
+
class AuthRequired(Exception):
|
|
10
|
+
"""
|
|
11
|
+
Raised by @sudo when the caller did not provide a valid app password.
|
|
12
|
+
Shell and WebEngine translate this into their own response style.
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def check_password(password):
|
|
17
|
+
"""
|
|
18
|
+
Shared app password check.
|
|
19
|
+
Username is intentionally not enforced yet: micrOS has only appwd.
|
|
20
|
+
"""
|
|
21
|
+
return password == __cfgget("appwd")
|
|
22
|
+
|
|
23
|
+
|
|
8
24
|
def sudo(_f=None, *, _when_true=None):
|
|
9
25
|
"""
|
|
10
26
|
Decorator for password-protected functions.
|
|
@@ -42,9 +58,10 @@ def sudo(_f=None, *, _when_true=None):
|
|
|
42
58
|
if a[wt_idx]:
|
|
43
59
|
require = True
|
|
44
60
|
|
|
45
|
-
# Password check
|
|
46
|
-
|
|
47
|
-
|
|
61
|
+
# Password check: callers use pwd=.
|
|
62
|
+
password = k.get(PWD_KEY)
|
|
63
|
+
if require and not check_password(password):
|
|
64
|
+
raise AuthRequired(f"Access denied, wrong password ({PWD_KEY})")
|
|
48
65
|
# Remove password before calling function
|
|
49
66
|
k.pop(PWD_KEY, None)
|
|
50
67
|
return f(*a, **k)
|
|
@@ -58,5 +75,5 @@ def resolve_secret(commands:str):
|
|
|
58
75
|
"""
|
|
59
76
|
placeholder = f"${PWD_KEY}"
|
|
60
77
|
if placeholder in commands:
|
|
61
|
-
commands = commands.replace(placeholder, f"'{__cfgget(
|
|
78
|
+
commands = commands.replace(placeholder, f"'{__cfgget('appwd')}'")
|
|
62
79
|
return commands
|
|
@@ -21,6 +21,7 @@ from Config import cfgget
|
|
|
21
21
|
from Files import OSPath, path_join
|
|
22
22
|
from Buffer import SlidingBuffer, BufferFullError, MemoryPool
|
|
23
23
|
from Debug import console_write, syslog
|
|
24
|
+
from Auth import AuthRequired, PWD_KEY
|
|
24
25
|
|
|
25
26
|
try:
|
|
26
27
|
from gc import mem_free
|
|
@@ -89,7 +90,7 @@ def _parse_rest_cmd(cmd:str) -> list[str]:
|
|
|
89
90
|
index += 1
|
|
90
91
|
segment = decoded[start:index]
|
|
91
92
|
if segment:
|
|
92
|
-
segment = segment.replace('/', ' ').strip()
|
|
93
|
+
segment = segment.replace('/', ' ').replace('-', ' ').strip()
|
|
93
94
|
if segment:
|
|
94
95
|
tokens.extend(token for token in segment.split() if token)
|
|
95
96
|
return tokens
|
|
@@ -98,6 +99,7 @@ def _parse_rest_cmd(cmd:str) -> list[str]:
|
|
|
98
99
|
class HeaderParsingError(ValueError):
|
|
99
100
|
"""Exception for errors occurring while parsing HTTP/MIME headers"""
|
|
100
101
|
|
|
102
|
+
|
|
101
103
|
#################################################################
|
|
102
104
|
# Pre-allocated Memory Buffer #
|
|
103
105
|
#################################################################
|
|
@@ -300,6 +302,7 @@ class WebEngine(Buffer):
|
|
|
300
302
|
VERSION = "n/a"
|
|
301
303
|
RESP_HEADERS = (
|
|
302
304
|
200, b"HTTP/1.1 200 OK",
|
|
305
|
+
401, b"HTTP/1.1 401 Unauthorized",
|
|
303
306
|
400, b"HTTP/1.1 400 Bad Request",
|
|
304
307
|
404, b"HTTP/1.1 404 Not Found",
|
|
305
308
|
405, b"HTTP/1.1 405 Method Not Allowed",
|
|
@@ -353,6 +356,42 @@ class WebEngine(Buffer):
|
|
|
353
356
|
self.mp_delimiter = None
|
|
354
357
|
self.mp_closing_delimiter = None
|
|
355
358
|
|
|
359
|
+
def _auth_execute(self, callback, *args, **kwargs):
|
|
360
|
+
"""Run endpoint callback, retrying @sudo callbacks with custom web auth."""
|
|
361
|
+
try:
|
|
362
|
+
return callback(*args, **kwargs)
|
|
363
|
+
except AuthRequired:
|
|
364
|
+
auth_header = "x-micros-auth"
|
|
365
|
+
password = self.headers.get(auth_header)
|
|
366
|
+
if password is None:
|
|
367
|
+
raise
|
|
368
|
+
kwargs[PWD_KEY] = password
|
|
369
|
+
return callback(*args, **kwargs)
|
|
370
|
+
|
|
371
|
+
def _auth_response(self, tx):
|
|
372
|
+
"""Write the custom auth-required HTTP response."""
|
|
373
|
+
accept = self.headers.get("accept", "")
|
|
374
|
+
self.response_headers[b"cache-control"] = b"no-store"
|
|
375
|
+
self.response_headers[b"x-content-type-options"] = b"nosniff"
|
|
376
|
+
self.response_headers[b"referrer-policy"] = b"no-referrer"
|
|
377
|
+
wants_html = "text/html" in accept or "application/xhtml+xml" in accept
|
|
378
|
+
if self.method != self.GET or not wants_html:
|
|
379
|
+
self.terminate(401, b"application/json")
|
|
380
|
+
return self._generate_response(tx, {"state": False, "result": "Auth required"})
|
|
381
|
+
self.response_headers[b"content-security-policy"] = (
|
|
382
|
+
b"default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; "
|
|
383
|
+
b"object-src 'none'; base-uri 'self'; frame-ancestors 'none'"
|
|
384
|
+
)
|
|
385
|
+
self.terminate(401, b"text/html")
|
|
386
|
+
auth_boot_script = '<script src="/auth.js" data-micros-auth="1"></script>'
|
|
387
|
+
body = (
|
|
388
|
+
'<!doctype html><html><head><meta charset="utf-8">'
|
|
389
|
+
'<meta name="viewport" content="width=device-width,initial-scale=1">'
|
|
390
|
+
'<title>micrOS Auth</title></head><body>'
|
|
391
|
+
f'{auth_boot_script}</body></html>'
|
|
392
|
+
)
|
|
393
|
+
return self._generate_response(tx, body)
|
|
394
|
+
|
|
356
395
|
# =========================================
|
|
357
396
|
# Public methods for load modules
|
|
358
397
|
# =========================================
|
|
@@ -373,7 +412,6 @@ class WebEngine(Buffer):
|
|
|
373
412
|
raise ValueError(f"method must be one of {WebEngine.METHODS}")
|
|
374
413
|
WebEngine.ENDPOINTS[endpoint][method] = callback
|
|
375
414
|
|
|
376
|
-
|
|
377
415
|
@staticmethod
|
|
378
416
|
def web_mounts(modules:bool=None, data:bool=None, logs:bool=None) -> dict:
|
|
379
417
|
"""
|
|
@@ -652,38 +690,42 @@ class WebEngine(Buffer):
|
|
|
652
690
|
resp_schema['result'] = {"micrOS": WebEngine.VERSION,
|
|
653
691
|
'node': cfgget('devfid'),
|
|
654
692
|
'auth': WebEngine.AUTH}
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
693
|
+
get_endpoints = tuple(
|
|
694
|
+
endpoint.decode("ascii") if isinstance(endpoint, (bytes, bytearray)) else endpoint
|
|
695
|
+
for endpoint, methods in WebEngine.ENDPOINTS.items()
|
|
696
|
+
if WebEngine.GET in methods
|
|
697
|
+
)
|
|
698
|
+
resp_schema['result']['usr_endpoints'] = get_endpoints
|
|
660
699
|
resp_schema['state'] = True
|
|
661
700
|
self.terminate(200, b"text/html")
|
|
662
701
|
return self._generate_response(tx, resp_schema)
|
|
663
702
|
|
|
664
703
|
def _lm_endpoint_st(self, rx, tx):
|
|
665
704
|
"""Process a request by registered load module callbacks"""
|
|
666
|
-
callback =
|
|
667
|
-
|
|
668
|
-
if
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
self.
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
705
|
+
callback = WebEngine.ENDPOINTS[self.url][self.method]
|
|
706
|
+
try:
|
|
707
|
+
if "content-length" in self.headers and self.headers["content-length"] > 0:
|
|
708
|
+
if mp_boundary := WebEngine._is_multipart(self.headers):
|
|
709
|
+
self.mp_boundary = mp_boundary.encode("ascii")
|
|
710
|
+
self.engine_state = self._start_multipart_parser_st
|
|
711
|
+
return
|
|
712
|
+
if self.headers["content-length"] > rx.size():
|
|
713
|
+
return
|
|
714
|
+
if self.headers["content-length"] < rx.size():
|
|
715
|
+
self.on_client_error(tx, self.CONTENT_LENGTH_ERROR)
|
|
716
|
+
return
|
|
717
|
+
self.engine_state = None
|
|
718
|
+
dtype, data = self._auth_execute(callback, self.headers, bytes(rx.peek()))
|
|
719
|
+
dtype = dtype.encode("ascii")
|
|
720
|
+
else:
|
|
721
|
+
if not callable(callback):
|
|
722
|
+
# Handle endpoint callback as a static resource
|
|
723
|
+
self.engine_state = lambda _rx, _tx: self._send_file_st(_rx, _tx, callback)
|
|
724
|
+
return
|
|
725
|
+
dtype, data = self._auth_execute(callback, self.headers, b"")
|
|
726
|
+
dtype = dtype.encode("ascii")
|
|
727
|
+
except AuthRequired:
|
|
728
|
+
return self._auth_response(tx)
|
|
687
729
|
# dtype:
|
|
688
730
|
# one-shot (simple MIME types): image/jpeg | text/html | text/plain
|
|
689
731
|
# - data contains the response to include in the body
|
|
@@ -760,8 +802,10 @@ class WebEngine(Buffer):
|
|
|
760
802
|
self.on_missing_resource(tx, b"Mount not found")
|
|
761
803
|
return
|
|
762
804
|
try:
|
|
763
|
-
|
|
764
|
-
|
|
805
|
+
file_size = stat(web_resource)[6]
|
|
806
|
+
content_type = WebEngine._file_type(web_resource)
|
|
807
|
+
self.response_headers[b"content-length"] = str(file_size).encode()
|
|
808
|
+
self.terminate(200, content_type)
|
|
765
809
|
self._write_response_head(tx)
|
|
766
810
|
return open(web_resource, "rb")
|
|
767
811
|
except OSError:
|
|
@@ -811,16 +855,21 @@ class WebEngine(Buffer):
|
|
|
811
855
|
return
|
|
812
856
|
callback = WebEngine.ENDPOINTS[self.url][self.method]
|
|
813
857
|
# Process complete part
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
858
|
+
try:
|
|
859
|
+
if not is_final:
|
|
860
|
+
self._auth_execute(
|
|
861
|
+
callback, part_headers, part_body,
|
|
862
|
+
first=self.mp_first_part, last=False)
|
|
863
|
+
if rx.peek(len(self.mp_delimiter)) != self.mp_delimiter:
|
|
864
|
+
self.on_client_error(tx, self.MULTIPART_BOUNDARY_ERROR)
|
|
865
|
+
return
|
|
866
|
+
rx.consume(len(self.mp_delimiter))
|
|
867
|
+
self.content_length_cnt += len(self.mp_delimiter)
|
|
868
|
+
self.mp_first_part = False
|
|
869
|
+
self.engine_state = self._parse_boundary_st
|
|
818
870
|
return
|
|
819
|
-
|
|
820
|
-
self.
|
|
821
|
-
self.mp_first_part = False
|
|
822
|
-
self.engine_state = self._parse_boundary_st
|
|
823
|
-
return
|
|
871
|
+
except AuthRequired:
|
|
872
|
+
return self._auth_response(tx)
|
|
824
873
|
# Process last part
|
|
825
874
|
rx.consume(len(self.mp_closing_delimiter))
|
|
826
875
|
self.content_length_cnt += len(self.mp_closing_delimiter)
|
|
@@ -828,10 +877,14 @@ class WebEngine(Buffer):
|
|
|
828
877
|
self.content_length_cnt + rx.size() != self.headers["content-length"]:
|
|
829
878
|
self.on_client_error(tx, self.CONTENT_LENGTH_ERROR)
|
|
830
879
|
return
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
880
|
+
try:
|
|
881
|
+
dtype, data = self._auth_execute(
|
|
882
|
+
callback,
|
|
883
|
+
part_headers,
|
|
884
|
+
part_body,
|
|
885
|
+
first=self.mp_first_part,
|
|
886
|
+
last=True)
|
|
887
|
+
except AuthRequired:
|
|
888
|
+
return self._auth_response(tx)
|
|
836
889
|
self.terminate(200, dtype.encode("ascii"))
|
|
837
890
|
return self._generate_response(tx, data)
|
|
Binary file
|
{microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/__pycache__/Common.cpython-312.pyc
RENAMED
|
Binary file
|
{microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/__pycache__/Config.cpython-312.pyc
RENAMED
|
Binary file
|
|
Binary file
|
{microsdevtoolkit-3.2.4 → microsdevtoolkit-3.3.0}/micrOS/source/__pycache__/Shell.cpython-312.pyc
RENAMED
|
Binary file
|
|
Binary file
|
|
@@ -10,17 +10,15 @@ from Common import web_endpoint, web_mounts
|
|
|
10
10
|
from Config import cfgget, cfgput
|
|
11
11
|
from Auth import sudo
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
def load(dashboard=True, fileserver:bool=False, fs_explore:bool=False):
|
|
13
|
+
def load(dashboard=True, fileserver:bool=False, fs_explore:bool=False, config=True):
|
|
17
14
|
"""
|
|
18
15
|
Centralized Web Backend Services Loader
|
|
19
16
|
- Dynamic application dashboard
|
|
20
17
|
- Fileserver
|
|
21
18
|
:param dashboard: bool - enable*/disable application dashboard
|
|
22
19
|
:param fileserver: bool - enable/disable* fileserver
|
|
23
|
-
:param fs_explore: bool - enable all shared web mounts: modules, data
|
|
20
|
+
:param fs_explore: bool - enable/disable* all shared web mounts: modules, data
|
|
21
|
+
:param config: bool - enable*/disable micrOS web config with auth
|
|
24
22
|
"""
|
|
25
23
|
endpoints = []
|
|
26
24
|
if dashboard:
|
|
@@ -30,10 +28,13 @@ def load(dashboard=True, fileserver:bool=False, fs_explore:bool=False):
|
|
|
30
28
|
import LM_fileserver
|
|
31
29
|
endpoints.append(LM_fileserver.load())
|
|
32
30
|
endpoints.append(web_mounts(fs_explore, fs_explore, fs_explore))
|
|
31
|
+
if config:
|
|
32
|
+
endpoints.append(enable_config())
|
|
33
33
|
return endpoints
|
|
34
34
|
|
|
35
|
+
######################## System Config ######################
|
|
36
|
+
_CFG_HIDE = ("hwuid", "guimeta", "socport", "version", "auth", "soctout")
|
|
35
37
|
|
|
36
|
-
@sudo
|
|
37
38
|
def enable_config():
|
|
38
39
|
"""
|
|
39
40
|
Enable web configuration option
|
|
@@ -41,13 +42,15 @@ def enable_config():
|
|
|
41
42
|
web_endpoint("config", _cfg_get_clb)
|
|
42
43
|
web_endpoint("config", _cfg_set_clb, "POST")
|
|
43
44
|
web_endpoint("config/ui", 'config.html')
|
|
44
|
-
|
|
45
|
+
web_endpoint("config/reboot", _reboot_clb, "POST")
|
|
46
|
+
return "Config endpoints: config/ui GET, /config GET|POST (protected), /config/reboot POST (protected)"
|
|
45
47
|
|
|
46
48
|
|
|
47
49
|
def _cfg_json(data):
|
|
48
50
|
return "application/json", dumps(data)
|
|
49
51
|
|
|
50
52
|
|
|
53
|
+
@sudo
|
|
51
54
|
def _cfg_get_clb(*_):
|
|
52
55
|
"""
|
|
53
56
|
Get system config
|
|
@@ -55,6 +58,7 @@ def _cfg_get_clb(*_):
|
|
|
55
58
|
return _cfg_json({k: v for k, v in cfgget().items() if k not in _CFG_HIDE})
|
|
56
59
|
|
|
57
60
|
|
|
61
|
+
@sudo
|
|
58
62
|
def _cfg_set_clb(_, body):
|
|
59
63
|
"""
|
|
60
64
|
Set system config delta
|
|
@@ -65,9 +69,11 @@ def _cfg_set_clb(_, body):
|
|
|
65
69
|
failed_keys = []
|
|
66
70
|
for k, v in incoming_data.items():
|
|
67
71
|
try:
|
|
68
|
-
if
|
|
69
|
-
|
|
70
|
-
|
|
72
|
+
if isinstance(v, str) and not v.strip():
|
|
73
|
+
if k == 'devfid':
|
|
74
|
+
raise Exception("Device name cannot be empty")
|
|
75
|
+
v = 'n/a'
|
|
76
|
+
state = cfgput(k, v, type_check=True)
|
|
71
77
|
except Exception as e:
|
|
72
78
|
state = False
|
|
73
79
|
k = f"{k}: {e}"
|
|
@@ -84,6 +90,25 @@ def _cfg_set_clb(_, body):
|
|
|
84
90
|
return _cfg_json({"state": False, "result": str(e)})
|
|
85
91
|
|
|
86
92
|
|
|
93
|
+
@sudo
|
|
94
|
+
def _reboot_clb(*_):
|
|
95
|
+
"""
|
|
96
|
+
Hard reboot system from web endpoint
|
|
97
|
+
"""
|
|
98
|
+
from Common import micro_task
|
|
99
|
+
from machine import reset
|
|
100
|
+
|
|
101
|
+
@micro_task("web.reboot", _wrap=True)
|
|
102
|
+
async def _hard_reboot(tag):
|
|
103
|
+
with micro_task(tag) as my_task:
|
|
104
|
+
await my_task.feed(1000)
|
|
105
|
+
reset()
|
|
106
|
+
|
|
107
|
+
return _cfg_json({"state": bool(_hard_reboot()), "result": "Hard reboot scheduled"})
|
|
108
|
+
|
|
109
|
+
#############################################################
|
|
110
|
+
|
|
111
|
+
|
|
87
112
|
def help(widgets=False):
|
|
88
113
|
"""
|
|
89
114
|
[i] micrOS LM naming convention - built-in help message
|
|
@@ -91,6 +116,6 @@ def help(widgets=False):
|
|
|
91
116
|
(widgets=False) list of functions implemented by this application
|
|
92
117
|
(widgets=True) list of widget json for UI generation
|
|
93
118
|
"""
|
|
94
|
-
return ('load dashboard=True fileserver=False fs_explore=False',
|
|
119
|
+
return ('load dashboard=True fileserver=False fs_explore=False config=True',
|
|
95
120
|
'enable_config',
|
|
96
121
|
'help')
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
(function () {
|
|
2
|
+
var ID = 'micrOSAuth', rf = window.fetch && window.fetch.bind(window);
|
|
3
|
+
var user = 'admin', pass = '';
|
|
4
|
+
try {
|
|
5
|
+
sessionStorage.removeItem(ID);
|
|
6
|
+
sessionStorage.removeItem('micros.config.auth');
|
|
7
|
+
} catch (_) {}
|
|
8
|
+
|
|
9
|
+
function rm(e) { if (e && e.parentNode) e.parentNode.removeChild(e); }
|
|
10
|
+
function load() { return {user: user, pass: pass}; }
|
|
11
|
+
function save(d) {
|
|
12
|
+
user = d.user || 'admin';
|
|
13
|
+
pass = d.pass || '';
|
|
14
|
+
return load();
|
|
15
|
+
}
|
|
16
|
+
function clear() { pass = ''; }
|
|
17
|
+
function url(i) {
|
|
18
|
+
return typeof i === 'string' ? i :
|
|
19
|
+
i && typeof i.href === 'string' ? i.href :
|
|
20
|
+
i && typeof i.url === 'string' ? i.url : '';
|
|
21
|
+
}
|
|
22
|
+
function same(i) {
|
|
23
|
+
try {
|
|
24
|
+
var a = document.createElement('a'), u = url(i);
|
|
25
|
+
if (!u) return false;
|
|
26
|
+
a.href = u;
|
|
27
|
+
return a.protocol === location.protocol && a.host === location.host;
|
|
28
|
+
} catch (_) { return false; }
|
|
29
|
+
}
|
|
30
|
+
function hdr(d) {
|
|
31
|
+
d = d || load();
|
|
32
|
+
return d.pass ? {'x-micros-auth': d.pass} : {};
|
|
33
|
+
}
|
|
34
|
+
function ext(a, b) {
|
|
35
|
+
var o = {}, k;
|
|
36
|
+
a = a || {};
|
|
37
|
+
for (k in a) o[k] = a[k];
|
|
38
|
+
for (k in b) o[k] = b[k];
|
|
39
|
+
return o;
|
|
40
|
+
}
|
|
41
|
+
function mh(a, b) {
|
|
42
|
+
var k, o = {};
|
|
43
|
+
if (window.Headers) {
|
|
44
|
+
try {
|
|
45
|
+
o = new Headers(a || {});
|
|
46
|
+
for (k in b) o.set(k, b[k]);
|
|
47
|
+
return o;
|
|
48
|
+
} catch (_) {}
|
|
49
|
+
}
|
|
50
|
+
a = a || {};
|
|
51
|
+
for (k in a) o[k] = a[k];
|
|
52
|
+
for (k in b) o[k] = b[k];
|
|
53
|
+
return o;
|
|
54
|
+
}
|
|
55
|
+
function af(u, o, d) {
|
|
56
|
+
o = o || {};
|
|
57
|
+
if (!rf) return Promise.reject(Error('Fetch unsupported'));
|
|
58
|
+
return rf(u, ext(o, {headers: mh(o.headers || (u && u.headers), same(u) && d ? hdr(d) : {})}));
|
|
59
|
+
}
|
|
60
|
+
function gf(u, o) {
|
|
61
|
+
o = o || {};
|
|
62
|
+
return af(u, o).then(function (r) {
|
|
63
|
+
if (r.status !== 401 || o.micrOSAuth === false || !same(u)) return r;
|
|
64
|
+
var d = load();
|
|
65
|
+
if (d.pass) {
|
|
66
|
+
return af(u, o, d).then(function (rr) {
|
|
67
|
+
if (rr.status !== 401) return rr;
|
|
68
|
+
clear();
|
|
69
|
+
return prompt({target: u, request: o, message: 'Auth required', ok: function (pr) { return pr; }});
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
return prompt({target: u, request: o, message: 'Auth required', ok: function (rr) { return rr; }});
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
function css() {
|
|
76
|
+
if (document.getElementById(ID + 'Style')) return;
|
|
77
|
+
var s = document.createElement('style');
|
|
78
|
+
s.id = ID + 'Style';
|
|
79
|
+
s.textContent = '#' + ID + '{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;display:flex;align-items:center;justify-content:center;background:#0009;font:14px sans-serif;color:#fff}#' + ID + ' form{display:flex;flex-direction:column;width:240px;max-width:90%;padding:14px;border:1px solid #555;border-radius:6px;background:#161022}#' + ID + ' input,#' + ID + ' button{display:block;width:100%;min-width:0;max-width:none;flex:none;height:32px;min-height:32px;margin:8px 0 0;border-radius:4px;border:1px solid #555;padding:0 9px;box-sizing:border-box;font:14px sans-serif}#' + ID + ' input{background:#241a36;color:#fff}#' + ID + ' button{background:#17823a;color:#fff;font-weight:bold}#' + ID + ' span{min-height:18px;margin-top:6px;color:#ff9a9a}#' + ID + ' pre{white-space:pre-wrap;word-break:break-word}';
|
|
80
|
+
(document.head || document.getElementsByTagName('head')[0]).appendChild(s);
|
|
81
|
+
}
|
|
82
|
+
function prompt(o) {
|
|
83
|
+
o = o || {};
|
|
84
|
+
css();
|
|
85
|
+
rm(document.getElementById(ID));
|
|
86
|
+
var d = load(), p = document.createElement('div'), f, e, m, t;
|
|
87
|
+
p.id = ID;
|
|
88
|
+
p.innerHTML = '<form><strong>micrOS Auth</strong><input name="user" autocomplete="username" placeholder="Username"><input name="pass" type="password" autocomplete="current-password" placeholder="Password"><button>Unlock</button><span></span></form>';
|
|
89
|
+
f = p.getElementsByTagName('form')[0];
|
|
90
|
+
e = f.elements;
|
|
91
|
+
m = p.getElementsByTagName('span')[0];
|
|
92
|
+
t = o.target || location.pathname;
|
|
93
|
+
e.user.value = d.user || 'admin';
|
|
94
|
+
m.textContent = o.message || '';
|
|
95
|
+
return new Promise(function (resolve, reject) {
|
|
96
|
+
f.onsubmit = function (ev) {
|
|
97
|
+
ev.preventDefault();
|
|
98
|
+
var n = {user: e.user.value || 'admin', pass: e.pass.value || ''};
|
|
99
|
+
af(t, o.request || {}, n).then(function (r) {
|
|
100
|
+
if (r.status === 401) {
|
|
101
|
+
m.textContent = 'Access denied';
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
save(n);
|
|
105
|
+
if (o.ok) {
|
|
106
|
+
rm(p);
|
|
107
|
+
resolve(o.ok(r, n));
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
r.text().then(function (body) {
|
|
111
|
+
if ((r.headers.get('content-type') || '').indexOf('text/html') >= 0) {
|
|
112
|
+
document.open();
|
|
113
|
+
document.write(body);
|
|
114
|
+
document.close();
|
|
115
|
+
} else {
|
|
116
|
+
p.removeAttribute('id');
|
|
117
|
+
p.innerHTML = '<pre></pre>';
|
|
118
|
+
p.getElementsByTagName('pre')[0].textContent = body;
|
|
119
|
+
}
|
|
120
|
+
resolve(r);
|
|
121
|
+
});
|
|
122
|
+
}).catch(function (err) {
|
|
123
|
+
m.textContent = 'Request failed';
|
|
124
|
+
reject(err);
|
|
125
|
+
});
|
|
126
|
+
};
|
|
127
|
+
document.body.appendChild(p);
|
|
128
|
+
e.pass.focus();
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
function ready(fn) {
|
|
132
|
+
if (document.body) fn();
|
|
133
|
+
else document.addEventListener('DOMContentLoaded', fn);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
var ss = document.getElementsByTagName('script');
|
|
137
|
+
var me = document.currentScript || ss[ss.length - 1];
|
|
138
|
+
var boot = me && me.getAttribute('data-micros-auth');
|
|
139
|
+
window.micrOSAuth = {load: load, save: save, clear: clear, headers: hdr, fetch: gf, prompt: prompt};
|
|
140
|
+
if (rf) window.fetch = gf;
|
|
141
|
+
if (boot) ready(function () { prompt({target: boot === '1' ? location.pathname : boot}); });
|
|
142
|
+
})();
|