Wrap SW reg in onload & minor cleanup

This commit wraps the service worker registration in
the window.onload event, as is recommended for optimal
perf.
This commit also

corrects tab indention - the buildSW function in gulpfile.js was using 4 spaces but project is using 2 spaces
replaces double quotes instance with single quotes (also to match project style)
removes a double semi-colon
removes workbox-sw dependency from package.json, as it's no longer used (Workbox v3 uses a CDN for workbox-sw library, which is automatically imported in generated service worker file)

Let me know if you guys have any more concerns @morsssss @demianrenzulli
Also, I would recommend removing the historyfallback api module from gulpfile.js & package.json, as well as potentially the clean function in the gulpfile, since these are currently going unused?
I could make a separate PR for that but it is also a small change so whatever works.

Just cloned the PR and tested David's changes and everything looks good.

I haven't tested, but it LGTM.  Since you've both tried this out, I'll merge it!

Great!  I merged this today, and I was about to put it out in prod... but
my first Shadow Reader blog post went live today, and I found a weird bug
on amp.cards that no one can reproduce with me.  So I figured it might be
safer to wait to put this in prod til tomorrow, when presumably less people
will be looking at the site :)
On Sat, Jun 16, 2018 at 5:48 PM demianrenzulli<EMAIL_ADDRESS>wrote:

Just cloned the PR and tested David's changes and everything looks good.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/ampproject/amp-publisher-sample/pull/116#issuecomment-397840614,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AcDn6myUz0VUFNKyUHI6Bi6ia-z7J1j4ks5t9X0sgaJpZM4Uo-Zm
.


Attempt to apply timestamp expr override in V2

This is a draft

Codecov Report
Attention: 24 lines in your changes are missing coverage. Please review.

Comparison is base (a5ae4d7) 61.75% compared to head (ac48f4b) 61.76%.

Files
Patch %
Lines

...pache/pinot/common/utils/request/RequestUtils.java
0.00%
17 Missing :warning:

.../runtime/plan/server/ServerPlanRequestVisitor.java
40.00%
5 Missing and 1 partial :warning:

...roker/requesthandler/BaseBrokerRequestHandler.java
0.00%
1 Missing :warning:

Additional details and impacted files
@@             Coverage Diff              @@
##             master   #12421      +/-   ##
============================================
+ Coverage     61.75%   61.76%   +0.01%
- Complexity      207     1156     +949
============================================
  Files          2436     2437       +1
  Lines        133100   133127      +27
  Branches      20617    20621       +4
============================================
+ Hits          82191    82224      +33
+ Misses        44868    44866       -2
+ Partials       6041     6037       -4

Flag
Coverage Δ

custom-integration1
<0.01% <0.00%> (ø)

integration
<0.01% <0.00%> (ø)

integration1
<0.01% <0.00%> (ø)

integration2
?

java-11
61.71% <38.46%> (-0.01%)
:arrow_down:

java-21
61.63% <38.46%> (+0.01%)
:arrow_up:

skip-bytebuffers-false
61.73% <38.46%> (-0.01%)
:arrow_down:

skip-bytebuffers-true
61.61% <38.46%> (+0.01%)
:arrow_up:

temurin
61.76% <38.46%> (+0.01%)
:arrow_up:

unittests
61.75% <38.46%> (+0.01%)
:arrow_up:

unittests1
46.89% <39.47%> (+<0.01%)
:arrow_up:

unittests2
27.73% <0.00%> (+<0.01%)
:arrow_up:

Flags with carried forward coverage won't be shown. Click here to find out more.

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


[BUG] Only crowdSecMode: none seems to work

Describe the bug 🐛
I'm running Traefik with this plugin & CrowdSec + AppSec in my docker environment.
Whenever I use crowdSecMode: none the system seems to work as intended. If i trigger AppSec i'm getting a 403, if i manually block myself i get a 403. If i unblock myself I get a 200 OK with response.
Whenever I use anything else than crowdSecMode: none (for example stream or live), I always get a 403. I'm not sure what is going wrong here.
The logs dont indicate anything that points even in the remote direction of this plugin.
Expected behavior 👀
I'd expect stream or live modes to give the same result as none.
Context 🔎
Config:
    crowdsec-bouncer:
      plugin:
        crowdsec-bouncer-traefik-plugin:
          enabled: true
          crowdsecLapiKey: <redacted>
          crowdsecMode: none
          crowdsecAppsecEnabled: true
          crowdsecAppsecHost: crowdsec:7422
          crowdsecAppsecFailureBlock: true
          redisCacheEnabled: true
          redisCacheHost: "crowdsec-redis:6379"
          banHTMLFilePath: /pages/ban.html
          clientTrustedIPs:
            - <IP_ADDRESS>/19
          forwardedHeadersTrustedIPs:
            - <IP_ADDRESS>/20
            - <IP_ADDRESS>/22
            - <IP_ADDRESS>/22
            - <IP_ADDRESS>/22
            - <IP_ADDRESS>/18
            - <IP_ADDRESS>/18
            - <IP_ADDRESS>/20
            - <IP_ADDRESS>/20
            - <IP_ADDRESS>/22
            - <IP_ADDRESS>/17
            - <IP_ADDRESS>/15
            - <IP_ADDRESS>/13
            - <IP_ADDRESS>/14
            - <IP_ADDRESS>/13
            - <IP_ADDRESS>/22
            - 2400:cb00::/32
            - 2606:4700::/32
            - 2803:f800::/32
            - 2405:b500::/32
            - 2405:8100::/32
            - 2a06:98c0::/29
            - 2c0f:f248::/32

Version (please complete the following information):

OS: Ubuntu
Traefik version: 3.0.0
Plugin version: 1.3.0
Redis ? : 7.2.4-alpine

To Reproduce
Steps to reproduce the behavior:

Set mode to none; see that you get a 200 OK
Set mode to live; see that you always get 403.

Hi @RobHofmann,
Could you please provide DEBUG logs generated from the plugins.
This will help us throubleshoot quickly this issue.
You need to add: logLevel: Debug and restart Traefik for the configuration to be reloaded.
Logs since startup are the most interesting, please try to make a couple of requests, wait a few minutes and copy the log files.  You should remove any personal info/IP from the log file before printing it here.
I understand you are using a bare-metal/VM Traefik installation, (OS Ubuntu) but you are using docker-like hostname to address crowdsec/redis.
The first things that comes to my mind is something is not reacheable and the plugin is blocking requests (403).
Please verify that:

the LAPI is accessible at crowdsec:8080 (default)
Crowdsec Appsec is accessible at crowdsec:7422 (configured)
Redis is accessible at crowdsec-redis:6379 (configured)

However, usually it is Crowdsec LAPI which is not reachable and since it is working fine for you in none mode it must be something else.
Main difference I see between the  none  and stream + live mode is the use of cache, so it could be linked somehow to redis.
I'll try to reproduce in a docker environment with you configuration.

I just noticed thanks to this issue during my reproduction that something changed in crowdsec @LaurenceJJones
Crowdsec seems to not load some collection as is used to in the same version 1.6.0.
I wonder if this is linked to this post in the Crowdsec discord:
Significant Upcoming Modifications to Container Operations :alpacas:

We've encountered issues with our container startup process recently, which has adversely affected both us and the user experience. To address this, version 1.6.1 will introduce critical changes to the startup process that need to be clearly understood.

Key changes going forward include:
All container images will now come with all parsers and scenarios pre-downloaded, though they won't be activated automatically.
Containers will NOT automatically download updates from the hub on startup unless a specific environment variable (DO_HUB_UPGRADE) is enabled. This setting should only be used if you have a limited number of containers behind your NAT/WAN, as exceeding this can trigger rate limits.
Should you encounter rate limits, the system will default to the pre-downloaded versions, preventing the container from being trapped in a continuous startup cycle.

If these modifications cause any concern, please don't hesitate to contact me directly. It's important to note that a lack of monitoring of their containers by users over the past month has led to significant AWS costs for us.

These adjustments are designed to enhance your overall experience, as most parsers/scenarios don't require frequent updates that necessitate downloading from the hub at every startup by default.

Crowdsec was restarting because it could not find some appsec collection:
crowdsec  | time="2024-05-01T06:07:12Z" level=fatal msg="crowdsec init: while loading acquisition config: while configuring datasource of type appsec from /etc/crowdsec/acquis.yaml (position: 1): failed to configure datasource appsec: unable to load appsec_config : no appsec-config found for crowdsecurity/virtual-patching"

I had to change the crowdsec env var adding collections:
 environment:
      COLLECTIONS: crowdsecurity/traefik crowdsecurity/appsec-virtual-patching crowdsecurity/appsec-generic-rules

I don't know if this is linked @RobHofmann but can you look at the health of you crowdsec container and his logs ?

Here is a "working" docker-compose that is similar to the configuration you introduced:
services:
  traefik:
    image: "traefik:v3.0.0"
    container_name: "traefik"
    restart: unless-stopped
    command:
      - "--accesslog"
      - "--accesslog.filepath=/var/log/traefik/access.log"
      - "--api.insecure=true"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80"

      - "--experimental.plugins.bouncer.modulename=github.com/maxlerebourg/crowdsec-bouncer-traefik-plugin"
      - "--experimental.plugins.bouncer.version=v1.3.0"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock:ro"
      - './ban.html:/ban.html:ro'
      - "logs:/var/log/traefik"
    ports:
      - 8000:80
      - 8080:8080
    depends_on:
      - crowdsec
      - crowdsec-redis

  crowdsec-redis:
    image: "redis:7.2.4-alpine"
    container_name: "crowdsec-redis"
    hostname: crowdsec-redis
    restart: unless-stopped
    command: "redis-server --save 60 1 --loglevel debug"
    volumes:
      - redis-data:/data

  whoami2:
    image: traefik/whoami
    container_name: "simple-service-bar"
    restart: unless-stopped
    labels:
      - "traefik.enable=true"
      # Definition of the router
      - "traefik.http.routers.router-bar.rule=Path(`/bar`)"
      - "traefik.http.routers.router-bar.entrypoints=web"
      - "traefik.http.routers.router-bar.middlewares=crowdsec@docker"
      # Definition of the service
      - "traefik.http.services.service-bar.loadbalancer.server.port=80"
      # Definitin of the middleware
      - "traefik.http.middlewares.crowdsec.plugin.bouncer.enabled=true"
      - "traefik.http.middlewares.crowdsec.plugin.bouncer.loglevel=DEBUG"
      - "traefik.http.middlewares.crowdsec.plugin.bouncer.crowdsecmode=live"

      # crowdseclapikey is the key to authenticate to crowdsec
      - "traefik.http.middlewares.crowdsec.plugin.bouncer.crowdseclapikey=FIXME-LAPI-KEY-1="
      # enable AppSec real time check
      - "traefik.http.middlewares.crowdsec.plugin.bouncer.crowdsecappsecenabled=true"
      # Block (403) when appsec return 500
      - "traefik.http.middlewares.crowdsec.plugin.bouncer.crowdsecappsecfailureblock=true"
      # Define AppSec host and port informations
      - "traefik.http.middlewares.crowdsec.plugin.bouncer.crowdsecappsechost=crowdsec:7422"
      # forwardedheaderstrustedips should be the IP of the proxy that is in front of traefik (if any)
      - "traefik.http.middlewares.crowdsec.plugin.bouncer.forwardedheaderstrustedips=<IP_ADDRESS>"
      - "traefik.http.middlewares.crowdsec.plugin.bouncer.rediscacheenabled=true"
      # Contact crowdsec-redis without a password
      - "traefik.http.middlewares.crowdsec.plugin.bouncer.rediscachehost=crowdsec-redis:6379"
      # Define ban HTML file path
      - "traefik.http.middlewares.crowdsec.plugin.bouncer.banHtmlFilePath=/ban.html"

  crowdsec:
    image: crowdsecurity/crowdsec:v1.6.1-2
    container_name: "crowdsec"
    restart: unless-stopped
    environment:
      COLLECTIONS: crowdsecurity/traefik crowdsecurity/appsec-virtual-patching crowdsecurity/appsec-generic-rules
      CUSTOM_HOSTNAME: crowdsec
      # We need to register one api key per service we will use
      BOUNCER_KEY_TRAEFIK: FIXME-LAPI-KEY-1=
    volumes:
      - ./acquis.yaml:/etc/crowdsec/acquis.yaml:ro
      - logs:/var/log/traefik:ro
      - crowdsec-db:/var/lib/crowdsec/data/
      - crowdsec-config:/etc/crowdsec/
    labels:
      - "traefik.enable=false"

volumes:
  logs:
  crowdsec-db:
  crowdsec-config:
  redis-data:

File aquis.yaml
filenames:
 - /var/log/traefik/access.log
labels:
  type: traefik

---
listen_addr: <IP_ADDRESS>:7422
appsec_config: crowdsecurity/virtual-patching
name: myAppSecComponent
source: appsec
labels:
  type: appsec

Traefik logs in live mode
traefik  | DEBUG: CrowdsecBouncerTraefikPlugin: 2024/05/01 06:20:06 IP <IP_ADDRESS> is trusted
traefik  | DEBUG: CrowdsecBouncerTraefikPlugin: 2024/05/01 06:20:06 getTLSConfigCrowdsec:CrowdsecLapiScheme https:no
traefik  | DEBUG: CrowdsecBouncerTraefikPlugin: 2024/05/01 06:20:06 cache:New initialized isRedis:true
traefik  | DEBUG: CrowdsecBouncerTraefikPlugin: 2024/05/01 06:20:06 New initialized mode:live
traefik  | DEBUG: CrowdsecBouncerTraefikPlugin: 2024/05/01 06:20:11 ServeHTTP ip:<IP_ADDRESS> isTrusted:false
traefik  | DEBUG: CrowdsecBouncerTraefikPlugin: 2024/05/01 06:20:11 cache:Get key:<IP_ADDRESS>
traefik  | DEBUG: CrowdsecBouncerTraefikPlugin: 2024/05/01 06:20:11 ServeHTTP ip:<IP_ADDRESS> cache:hit isBanned:f
traefik  | DEBUG: CrowdsecBouncerTraefikPlugin: 2024/05/01 06:20:13 ServeHTTP ip:<IP_ADDRESS> isTrusted:false
traefik  | DEBUG: CrowdsecBouncerTraefikPlugin: 2024/05/01 06:20:13 cache:Get key:<IP_ADDRESS>
traefik  | DEBUG: CrowdsecBouncerTraefikPlugin: 2024/05/01 06:20:13 ServeHTTP ip:<IP_ADDRESS> cache:hit isBanned:f
traefik  | DEBUG: CrowdsecBouncerTraefikPlugin: 2024/05/01 06:20:15 ServeHTTP ip:<IP_ADDRESS> isTrusted:false
traefik  | DEBUG: CrowdsecBouncerTraefikPlugin: 2024/05/01 06:20:15 cache:Get key:<IP_ADDRESS>
traefik  | DEBUG: CrowdsecBouncerTraefikPlugin: 2024/05/01 06:20:15 ServeHTTP ip:<IP_ADDRESS> cache:hit isBanned:f
traefik  | DEBUG: CrowdsecBouncerTraefikPlugin: 2024/05/01 06:20:25 ServeHTTP ip:<IP_ADDRESS> isTrusted:false
traefik  | DEBUG: CrowdsecBouncerTraefikPlugin: 2024/05/01 06:20:25 cache:Get key:<IP_ADDRESS>
traefik  | DEBUG: CrowdsecBouncerTraefikPlugin: 2024/05/01 06:20:25 ServeHTTP:Get ip:<IP_ADDRESS> isBanned:false cache:miss
traefik  | DEBUG: CrowdsecBouncerTraefikPlugin: 2024/05/01 06:20:25 cache:Set key:<IP_ADDRESS> value:f duration:60s

Traefik logs in stream mode
traefik  | DEBUG: CrowdsecBouncerTraefikPlugin: 2024/05/01 06:31:07 IP <IP_ADDRESS> is trusted
traefik  | DEBUG: CrowdsecBouncerTraefikPlugin: 2024/05/01 06:31:07 getTLSConfigCrowdsec:CrowdsecLapiScheme https:no
traefik  | DEBUG: CrowdsecBouncerTraefikPlugin: 2024/05/01 06:31:07 cache:New initialized isRedis:true
traefik  | DEBUG: CrowdsecBouncerTraefikPlugin: 2024/05/01 06:31:07 cache:Get key:updated
traefik  | DEBUG: CrowdsecBouncerTraefikPlugin: 2024/05/01 06:31:07 handleStreamCache:alreadyUpdated
traefik  | DEBUG: CrowdsecBouncerTraefikPlugin: 2024/05/01 06:31:07 New initialized mode:stream
traefik  | DEBUG: CrowdsecBouncerTraefikPlugin: 2024/05/01 06:31:15 ServeHTTP ip:<IP_ADDRESS> isTrusted:false
traefik  | DEBUG: CrowdsecBouncerTraefikPlugin: 2024/05/01 06:31:15 cache:Get key:<IP_ADDRESS>
traefik  | DEBUG: CrowdsecBouncerTraefikPlugin: 2024/05/01 06:31:15 ServeHTTP:Get ip:<IP_ADDRESS> isBanned:false cache:miss
traefik  | DEBUG: CrowdsecBouncerTraefikPlugin: 2024/05/01 06:31:16 ServeHTTP ip:<IP_ADDRESS> isTrusted:false
traefik  | DEBUG: CrowdsecBouncerTraefikPlugin: 2024/05/01 06:31:16 cache:Get key:<IP_ADDRESS>
traefik  | DEBUG: CrowdsecBouncerTraefikPlugin: 2024/05/01 06:31:16 ServeHTTP:Get ip:<IP_ADDRESS> isBanned:false cache:miss
traefik  | DEBUG: CrowdsecBouncerTraefikPlugin: 2024/05/01 06:31:17 ServeHTTP ip:<IP_ADDRESS> isTrusted:false
traefik  | DEBUG: CrowdsecBouncerTraefikPlugin: 2024/05/01 06:31:17 cache:Get key:<IP_ADDRESS>
traefik  | DEBUG: CrowdsecBouncerTraefikPlugin: 2024/05/01 06:31:17 ServeHTTP:Get ip:<IP_ADDRESS> isBanned:false cache:miss
traefik  | DEBUG: CrowdsecBouncerTraefikPlugin: 2024/05/01 06:31:17 ServeHTTP ip:<IP_ADDRESS> isTrusted:false
traefik  | DEBUG: CrowdsecBouncerTraefikPlugin: 2024/05/01 06:31:17 cache:Get key:<IP_ADDRESS>
traefik  | DEBUG: CrowdsecBouncerTraefikPlugin: 2024/05/01 06:31:17 ServeHTTP:Get ip:<IP_ADDRESS> isBanned:false cache:miss
traefik  | DEBUG: CrowdsecBouncerTraefikPlugin: 2024/05/01 06:32:07 cache:Get key:updated
traefik  | DEBUG: CrowdsecBouncerTraefikPlugin: 2024/05/01 06:32:07 cache:Set key:updated value:f duration:59s
traefik  | DEBUG: CrowdsecBouncerTraefikPlugin: 2024/05/01 06:32:07 handleStreamCache:updated
traefik  | DEBUG: CrowdsecBouncerTraefikPlugin: 2024/05/01 06:32:14 ServeHTTP ip:<IP_ADDRESS> isTrusted:false
traefik  | DEBUG: CrowdsecBouncerTraefikPlugin: 2024/05/01 06:32:14 cache:Get key:<IP_ADDRESS>
traefik  | DEBUG: CrowdsecBouncerTraefikPlugin: 2024/05/01 06:32:14 ServeHTTP:Get ip:<IP_ADDRESS> isBanned:false cache:miss

Redis logs
crowdsec-redis  | 1:M 01 May 2024 06:19:10.105 . 0 clients connected (0 replicas), 915464 bytes in use
crowdsec-redis  | 1:M 01 May 2024 06:19:15.121 . 0 clients connected (0 replicas), 915464 bytes in use
crowdsec-redis  | 1:M 01 May 2024 06:19:20.143 . 0 clients connected (0 replicas), 915464 bytes in use
crowdsec-redis  | 1:M 01 May 2024 06:19:22.807 - Accepted <IP_ADDRESS>:52386
crowdsec-redis  | 1:M 01 May 2024 06:19:22.807 - Client closed connection id=6 addr=<IP_ADDRESS>:52386 laddr=<IP_ADDRESS>:6379 fd=8 name= age=0 idle=0 flags=N db=0 sub=0 psub=0 ssub=0 multi=-1 qbuf=0 qbuf-free=20474 argv-mem=0 multi-mem=0 rbs=16384 rbp=16384 obl=0 oll=0 omem=0 tot-mem=37760 events=r cmd=get user=default redir=-1 resp=2 lib-name= lib-ver=
crowdsec-redis  | 1:M 01 May 2024 06:19:22.820 - Accepted <IP_ADDRESS>:52396
crowdsec-redis  | 1:M 01 May 2024 06:19:22.821 - Client closed connection id=7 addr= laddr=<IP_ADDRESS>:6379 fd=8 name= age=0 idle=0 flags=N db=0 sub=0 psub=0 ssub=0 multi=-1 qbuf=0 qbuf-free=20474 argv-mem=0 multi-mem=0 rbs=16384 rbp=16384 obl=0 oll=0 omem=0 tot-mem=37760 events=r cmd=set user=default redir=-1 resp=2 lib-name= lib-ver=
crowdsec-redis  | 1:M 01 May 2024 06:19:22.852 * 1 changes in 60 seconds. Saving...
crowdsec-redis  | 1:M 01 May 2024 06:19:22.852 * Background saving started by pid 22
crowdsec-redis  | 22:C 01 May 2024 06:19:22.854 - Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB
crowdsec-redis  | 22:C 01 May 2024 06:19:22.856 * DB saved on disk
crowdsec-redis  | 22:C 01 May 2024 06:19:22.857 * Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB
crowdsec-redis  | 1:M 01 May 2024 06:19:22.953 * Background saving terminated with success
crowdsec-redis  | 1:M 01 May 2024 06:19:25.161 - DB 0: 1 keys (1 volatile) in 4 slots HT.
crowdsec-redis  | 1:M 01 May 2024 06:19:25.161 . 0 clients connected (0 replicas), 915552 bytes in use
crowdsec-redis  | 1:M 01 May 2024 06:19:30.179 - DB 0: 1 keys (1 volatile) in 4 slots HT.
crowdsec-redis  | 1:M 01 May 2024 06:19:30.179 . 0 clients connected (0 replicas), 915552 bytes in use
crowdsec-redis  | 1:M 01 May 2024 06:19:31.821 - Accepted <IP_ADDRESS>:34998

Crowdsec logs
crowdsec  | time="2024-05-01T06:09:27Z" level=info msg="/etc/crowdsec/collections/http-cve.yaml already exists."
crowdsec  | time="2024-05-01T06:09:27Z" level=info msg="Enabled collections: crowdsecurity/http-cve"
crowdsec  | time="2024-05-01T06:09:27Z" level=info msg="/etc/crowdsec/collections/base-http-scenarios.yaml already exists."
crowdsec  | time="2024-05-01T06:09:27Z" level=info msg="Enabled collections: crowdsecurity/base-http-scenarios"
crowdsec  | time="2024-05-01T06:09:27Z" level=info msg="/etc/crowdsec/collections/traefik.yaml already exists."
crowdsec  | time="2024-05-01T06:09:27Z" level=info msg="Enabled collections: crowdsecurity/traefik"
crowdsec  | time="2024-05-01T06:09:27Z" level=info msg="Enabled crowdsecurity/traefik"
crowdsec  | time="2024-05-01T06:09:27Z" level=info msg="Run 'sudo systemctl reload crowdsec' for the new configuration to be effective."
crowdsec  | Running: cscli  collections install "crowdsecurity/appsec-virtual-patching"
crowdsec  | time="2024-05-01T06:09:27Z" level=info msg="crowdsecurity/appsec-logs: OK"
crowdsec  | time="2024-05-01T06:09:27Z" level=info msg="Enabled parsers: crowdsecurity/appsec-logs"
crowdsec  | time="2024-05-01T06:09:27Z" level=info msg="crowdsecurity/appsec-vpatch: OK"
crowdsec  | time="2024-05-01T06:09:27Z" level=info msg="Enabled scenarios: crowdsecurity/appsec-vpatch"
crowdsec  | time="2024-05-01T06:09:27Z" level=info msg="crowdsecurity/virtual-patching: OK"
crowdsec  | time="2024-05-01T06:09:27Z" level=info msg="Enabled appsec-configs: crowdsecurity/virtual-patching"
crowdsec  | time="2024-05-01T06:09:27Z" level=info msg="crowdsecurity/appsec-default: OK"
crowdsec  | time="2024-05-01T06:09:27Z" level=info msg="Enabled appsec-configs: crowdsecurity/appsec-default"
crowdsec  | time="2024-05-01T06:09:27Z" level=info msg="crowdsecurity/base-config: OK"
crowdsec  | time="2024-05-01T06:09:27Z" level=info msg="Enabled appsec-rules: crowdsecurity/base-config"
crowdsec  | time="2024-05-01T06:09:27Z" level=info msg="crowdsecurity/vpatch-env-access: OK"
crowdsec  | time="2024-05-01T06:09:27Z" level=info msg="Enabled appsec-rules: crowdsecurity/vpatch-env-access"
crowdsec  | time="2024-05-01T06:09:27Z" level=info msg="crowdsecurity/vpatch-CVE-2023-40044: OK"
crowdsec  | time="2024-05-01T06:09:27Z" level=info msg="Enabled appsec-rules: crowdsecurity/vpatch-CVE-2023-40044"
crowdsec  | time="2024-05-01T06:09:27Z" level=info msg="crowdsecurity/vpatch-CVE-2017-9841: OK"
crowdsec  | time="2024-05-01T06:09:27Z" level=info msg="Enabled appsec-rules: crowdsecurity/vpatch-CVE-2017-9841"
crowdsec  | time="2024-05-01T06:09:27Z" level=info msg="crowdsecurity/vpatch-CVE-2020-11738: OK"
crowdsec  | time="2024-05-01T06:09:27Z" level=info msg="Enabled appsec-rules: crowdsecurity/vpatch-CVE-2020-11738"
crowdsec  | time="2024-05-01T06:09:27Z" level=info msg="crowdsecurity/vpatch-CVE-2022-27926: OK"
crowdsec  | time="2024-05-01T06:09:27Z" level=info msg="Enabled appsec-rules: crowdsecurity/vpatch-CVE-2022-27926"
crowdsec  | time="2024-05-01T06:09:27Z" level=info msg="crowdsecurity/vpatch-CVE-2022-35914: OK"
crowdsec  | time="2024-05-01T06:09:27Z" level=info msg="Enabled appsec-rules: crowdsecurity/vpatch-CVE-2022-35914"
crowdsec  | time="2024-05-01T06:09:28Z" level=info msg="crowdsecurity/vpatch-CVE-2022-46169: OK"
crowdsec  | time="2024-05-01T06:09:28Z" level=info msg="Enabled appsec-rules: crowdsecurity/vpatch-CVE-2022-46169"
crowdsec  | time="2024-05-01T06:09:28Z" level=info msg="crowdsecurity/vpatch-CVE-2023-20198: OK"
crowdsec  | time="2024-05-01T06:09:28Z" level=info msg="Enabled appsec-rules: crowdsecurity/vpatch-CVE-2023-20198"
crowdsec  | time="2024-05-01T06:09:28Z" level=info msg="crowdsecurity/vpatch-CVE-2023-22515: OK"
crowdsec  | time="2024-05-01T06:09:28Z" level=info msg="Enabled appsec-rules: crowdsecurity/vpatch-CVE-2023-22515"
crowdsec  | time="2024-05-01T06:09:28Z" level=info msg="crowdsecurity/vpatch-CVE-2023-33617: OK"
crowdsec  | time="2024-05-01T06:09:28Z" level=info msg="Enabled appsec-rules: crowdsecurity/vpatch-CVE-2023-33617"
crowdsec  | time="2024-05-01T06:09:28Z" level=info msg="crowdsecurity/vpatch-CVE-2023-34362: OK"
crowdsec  | time="2024-05-01T06:09:28Z" level=info msg="Enabled appsec-rules: crowdsecurity/vpatch-CVE-2023-34362"
crowdsec  | time="2024-05-01T06:09:28Z" level=info msg="crowdsecurity/vpatch-CVE-2023-3519: OK"
crowdsec  | time="2024-05-01T06:09:28Z" level=info msg="Enabled appsec-rules: crowdsecurity/vpatch-CVE-2023-3519"
crowdsec  | time="2024-05-01T06:09:29Z" level=info msg="crowdsecurity/vpatch-CVE-2023-42793: OK"
crowdsec  | time="2024-05-01T06:09:29Z" level=info msg="Enabled appsec-rules: crowdsecurity/vpatch-CVE-2023-42793"
crowdsec  | time="2024-05-01T06:09:29Z" level=info msg="crowdsecurity/vpatch-CVE-2023-50164: OK"
crowdsec  | time="2024-05-01T06:09:29Z" level=info msg="Enabled appsec-rules: crowdsecurity/vpatch-CVE-2023-50164"
crowdsec  | time="2024-05-01T06:09:29Z" level=info msg="crowdsecurity/vpatch-CVE-2023-38205: OK"
crowdsec  | time="2024-05-01T06:09:29Z" level=info msg="Enabled appsec-rules: crowdsecurity/vpatch-CVE-2023-38205"
crowdsec  | time="2024-05-01T06:09:29Z" level=info msg="crowdsecurity/vpatch-CVE-2023-24489: OK"
crowdsec  | time="2024-05-01T06:09:29Z" level=info msg="Enabled appsec-rules: crowdsecurity/vpatch-CVE-2023-24489"
crowdsec  | time="2024-05-01T06:09:29Z" level=info msg="crowdsecurity/vpatch-CVE-2021-3129: OK"
crowdsec  | time="2024-05-01T06:09:29Z" level=info msg="Enabled appsec-rules: crowdsecurity/vpatch-CVE-2021-3129"
crowdsec  | time="2024-05-01T06:09:29Z" level=info msg="crowdsecurity/vpatch-CVE-2021-22941: OK"
crowdsec  | time="2024-05-01T06:09:29Z" level=info msg="Enabled appsec-rules: crowdsecurity/vpatch-CVE-2021-22941"
crowdsec  | time="2024-05-01T06:09:29Z" level=info msg="crowdsecurity/vpatch-CVE-2019-12989: OK"
crowdsec  | time="2024-05-01T06:09:29Z" level=info msg="Enabled appsec-rules: crowdsecurity/vpatch-CVE-2019-12989"
crowdsec  | time="2024-05-01T06:09:29Z" level=info msg="crowdsecurity/vpatch-CVE-2022-44877: OK"
crowdsec  | time="2024-05-01T06:09:29Z" level=info msg="Enabled appsec-rules: crowdsecurity/vpatch-CVE-2022-44877"
crowdsec  | time="2024-05-01T06:09:29Z" level=info msg="crowdsecurity/vpatch-CVE-2018-10562: OK"
crowdsec  | time="2024-05-01T06:09:29Z" level=info msg="Enabled appsec-rules: crowdsecurity/vpatch-CVE-2018-10562"
crowdsec  | time="2024-05-01T06:09:29Z" level=info msg="crowdsecurity/vpatch-CVE-2023-6553: OK"
crowdsec  | time="2024-05-01T06:09:29Z" level=info msg="Enabled appsec-rules: crowdsecurity/vpatch-CVE-2023-6553"
crowdsec  | time="2024-05-01T06:09:29Z" level=info msg="crowdsecurity/vpatch-CVE-2018-1000861: OK"
crowdsec  | time="2024-05-01T06:09:29Z" level=info msg="Enabled appsec-rules: crowdsecurity/vpatch-CVE-2018-1000861"
crowdsec  | time="2024-05-01T06:09:29Z" level=info msg="crowdsecurity/vpatch-CVE-2019-1003030: OK"
crowdsec  | time="2024-05-01T06:09:29Z" level=info msg="Enabled appsec-rules: crowdsecurity/vpatch-CVE-2019-1003030"
crowdsec  | time="2024-05-01T06:09:29Z" level=info msg="crowdsecurity/vpatch-CVE-2022-22965: OK"
crowdsec  | time="2024-05-01T06:09:29Z" level=info msg="Enabled appsec-rules: crowdsecurity/vpatch-CVE-2022-22965"
crowdsec  | time="2024-05-01T06:09:29Z" level=info msg="crowdsecurity/vpatch-CVE-2023-23752: OK"
crowdsec  | time="2024-05-01T06:09:29Z" level=info msg="Enabled appsec-rules: crowdsecurity/vpatch-CVE-2023-23752"
crowdsec  | time="2024-05-01T06:09:29Z" level=info msg="crowdsecurity/vpatch-CVE-2023-49070: OK"
crowdsec  | time="2024-05-01T06:09:29Z" level=info msg="Enabled appsec-rules: crowdsecurity/vpatch-CVE-2023-49070"
crowdsec  | time="2024-05-01T06:09:30Z" level=info msg="crowdsecurity/vpatch-laravel-debug-mode: OK"
crowdsec  | time="2024-05-01T06:09:30Z" level=info msg="Enabled appsec-rules: crowdsecurity/vpatch-laravel-debug-mode"
crowdsec  | time="2024-05-01T06:09:30Z" level=info msg="crowdsecurity/vpatch-CVE-2023-28121: OK"
crowdsec  | time="2024-05-01T06:09:30Z" level=info msg="Enabled appsec-rules: crowdsecurity/vpatch-CVE-2023-28121"
crowdsec  | time="2024-05-01T06:09:30Z" level=info msg="crowdsecurity/vpatch-CVE-2020-17496: OK"
crowdsec  | time="2024-05-01T06:09:30Z" level=info msg="Enabled appsec-rules: crowdsecurity/vpatch-CVE-2020-17496"
crowdsec  | time="2024-05-01T06:09:30Z" level=info msg="crowdsecurity/vpatch-CVE-2023-1389: OK"
crowdsec  | time="2024-05-01T06:09:30Z" level=info msg="Enabled appsec-rules: crowdsecurity/vpatch-CVE-2023-1389"
crowdsec  | time="2024-05-01T06:09:30Z" level=info msg="crowdsecurity/vpatch-CVE-2023-7028: OK"
crowdsec  | time="2024-05-01T06:09:30Z" level=info msg="Enabled appsec-rules: crowdsecurity/vpatch-CVE-2023-7028"
crowdsec  | time="2024-05-01T06:09:30Z" level=info msg="crowdsecurity/vpatch-CVE-2023-46805: OK"
crowdsec  | time="2024-05-01T06:09:30Z" level=info msg="Enabled appsec-rules: crowdsecurity/vpatch-CVE-2023-46805"
crowdsec  | time="2024-05-01T06:09:30Z" level=info msg="crowdsecurity/vpatch-CVE-2024-23897: OK"
crowdsec  | time="2024-05-01T06:09:30Z" level=info msg="Enabled appsec-rules: crowdsecurity/vpatch-CVE-2024-23897"
crowdsec  | time="2024-05-01T06:09:30Z" level=info msg="crowdsecurity/vpatch-CVE-2023-22527: OK"
crowdsec  | time="2024-05-01T06:09:30Z" level=info msg="Enabled appsec-rules: crowdsecurity/vpatch-CVE-2023-22527"
crowdsec  | time="2024-05-01T06:09:30Z" level=info msg="crowdsecurity/vpatch-CVE-2023-35078: OK"
crowdsec  | time="2024-05-01T06:09:30Z" level=info msg="Enabled appsec-rules: crowdsecurity/vpatch-CVE-2023-35078"
crowdsec  | time="2024-05-01T06:09:30Z" level=info msg="crowdsecurity/vpatch-CVE-2023-35082: OK"
crowdsec  | time="2024-05-01T06:09:30Z" level=info msg="Enabled appsec-rules: crowdsecurity/vpatch-CVE-2023-35082"
crowdsec  | time="2024-05-01T06:09:30Z" level=info msg="crowdsecurity/vpatch-CVE-2022-22954: OK"
crowdsec  | time="2024-05-01T06:09:30Z" level=info msg="Enabled appsec-rules: crowdsecurity/vpatch-CVE-2022-22954"
crowdsec  | time="2024-05-01T06:09:30Z" level=info msg="crowdsecurity/vpatch-CVE-2024-1212: OK"
crowdsec  | time="2024-05-01T06:09:30Z" level=info msg="Enabled appsec-rules: crowdsecurity/vpatch-CVE-2024-1212"
crowdsec  | time="2024-05-01T06:09:30Z" level=info msg="crowdsecurity/vpatch-symfony-profiler: OK"
crowdsec  | time="2024-05-01T06:09:30Z" level=info msg="Enabled appsec-rules: crowdsecurity/vpatch-symfony-profiler"
crowdsec  | time="2024-05-01T06:09:30Z" level=info msg="crowdsecurity/vpatch-connectwise-auth-bypass: OK"
crowdsec  | time="2024-05-01T06:09:30Z" level=info msg="Enabled appsec-rules: crowdsecurity/vpatch-connectwise-auth-bypass"
crowdsec  | time="2024-05-01T06:09:30Z" level=info msg="crowdsecurity/vpatch-CVE-2024-22024: OK"
crowdsec  | time="2024-05-01T06:09:30Z" level=info msg="Enabled appsec-rules: crowdsecurity/vpatch-CVE-2024-22024"
crowdsec  | time="2024-05-01T06:09:30Z" level=info msg="crowdsecurity/vpatch-CVE-2024-27198: OK"
crowdsec  | time="2024-05-01T06:09:30Z" level=info msg="Enabled appsec-rules: crowdsecurity/vpatch-CVE-2024-27198"
crowdsec  | time="2024-05-01T06:09:30Z" level=info msg="crowdsecurity/appsec-virtual-patching: OK"
crowdsec  | time="2024-05-01T06:09:30Z" level=info msg="Enabled collections: crowdsecurity/appsec-virtual-patching"
crowdsec  | time="2024-05-01T06:09:30Z" level=info msg="Enabled crowdsecurity/appsec-virtual-patching"
crowdsec  | time="2024-05-01T06:09:30Z" level=info msg="Run 'sudo systemctl reload crowdsec' for the new configuration to be effective."
crowdsec  | Running: cscli  collections install "crowdsecurity/appsec-generic-rules"
crowdsec  | time="2024-05-01T06:09:31Z" level=warning msg="crowdsecurity/appsec-logs: overwrite"
crowdsec  | time="2024-05-01T06:09:31Z" level=warning msg="crowdsecurity/appsec-vpatch: overwrite"
crowdsec  | time="2024-05-01T06:09:31Z" level=info msg="crowdsecurity/generic-rules: OK"
crowdsec  | time="2024-05-01T06:09:31Z" level=info msg="Enabled appsec-configs: crowdsecurity/generic-rules"
crowdsec  | time="2024-05-01T06:09:31Z" level=warning msg="crowdsecurity/appsec-default: overwrite"
crowdsec  | time="2024-05-01T06:09:31Z" level=warning msg="crowdsecurity/base-config: overwrite"
crowdsec  | time="2024-05-01T06:09:31Z" level=info msg="crowdsecurity/generic-freemarker-ssti: OK"
crowdsec  | time="2024-05-01T06:09:31Z" level=info msg="Enabled appsec-rules: crowdsecurity/generic-freemarker-ssti"
crowdsec  | time="2024-05-01T06:09:31Z" level=info msg="crowdsecurity/appsec-generic-rules: OK"
crowdsec  | time="2024-05-01T06:09:31Z" level=info msg="Enabled collections: crowdsecurity/appsec-generic-rules"
crowdsec  | time="2024-05-01T06:09:31Z" level=info msg="Enabled crowdsecurity/appsec-generic-rules"
crowdsec  | time="2024-05-01T06:09:31Z" level=info msg="Run 'sudo systemctl reload crowdsec' for the new configuration to be effective."
crowdsec  | time="2024-05-01T06:09:31Z" level=info msg="Enabled feature flags: <none>"
crowdsec  | time="2024-05-01T06:09:31Z" level=info msg="Crowdsec v1.6.1-c6e40191"
crowdsec  | time="2024-05-01T06:09:31Z" level=info msg="Loading prometheus collectors"
crowdsec  | time="2024-05-01T06:09:31Z" level=info msg="Loading CAPI manager"
crowdsec  | time="2024-05-01T06:09:32Z" level=info msg="CAPI manager configured successfully"
crowdsec  | time="2024-05-01T06:09:32Z" level=info msg="Start push to CrowdSec Central API (interval: 17s once, then 10s)"
crowdsec  | time="2024-05-01T06:09:32Z" level=info msg="Start sending metrics to CrowdSec Central API (interval: 26m9s once, then 30m0s)"
crowdsec  | time="2024-05-01T06:09:32Z" level=info msg="CrowdSec Local API listening on <IP_ADDRESS>:8080"
crowdsec  | time="2024-05-01T06:09:32Z" level=warning msg="scenario list is empty, will not pull yet"
crowdsec  | time="2024-05-01T06:09:32Z" level=info msg="capi metrics: sending"
crowdsec  | time="2024-05-01T06:09:32Z" level=info msg="Loading grok library /etc/crowdsec/patterns"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Loading enrich plugins"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Successfully registered enricher 'GeoIpCity'"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Successfully registered enricher 'GeoIpASN'"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Successfully registered enricher 'IpToRange'"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Successfully registered enricher 'reverse_dns'"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Successfully registered enricher 'ParseDate'"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Successfully registered enricher 'UnmarshalJSON'"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Loading parsers from 10 files"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Loaded 1 parser nodes" file=/etc/crowdsec/parsers/s00-raw/cri-logs.yaml stage=s00-raw
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Loaded 1 parser nodes" file=/etc/crowdsec/parsers/s00-raw/docker-logs.yaml stage=s00-raw
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Loaded 2 parser nodes" file=/etc/crowdsec/parsers/s00-raw/syslog-logs.yaml stage=s00-raw
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Loaded 1 parser nodes" file=/etc/crowdsec/parsers/s01-parse/appsec-logs.yaml stage=s01-parse
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Loaded 1 parser nodes" file=/etc/crowdsec/parsers/s01-parse/sshd-logs.yaml stage=s01-parse
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Loaded 1 parser nodes" file=/etc/crowdsec/parsers/s01-parse/traefik-logs.yaml stage=s01-parse
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Loaded 1 parser nodes" file=/etc/crowdsec/parsers/s02-enrich/dateparse-enrich.yaml stage=s02-enrich
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Loaded 1 parser nodes" file=/etc/crowdsec/parsers/s02-enrich/geoip-enrich.yaml stage=s02-enrich
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Loaded 1 parser nodes" file=/etc/crowdsec/parsers/s02-enrich/http-logs.yaml stage=s02-enrich
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Loaded 1 parser nodes" file=/etc/crowdsec/parsers/s02-enrich/whitelists.yaml stage=s02-enrich
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Loaded 11 nodes from 3 stages"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="No postoverflow parsers to load"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Loading 43 scenario files"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding trigger bucket" cfg=aged-dew name=crowdsecurity/vmware-vcenter-vmsa-2021-0027
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding trigger bucket" cfg=muddy-wave name=crowdsecurity/CVE-2023-49103
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding trigger bucket" cfg=twilight-wind name=crowdsecurity/http-cve-2021-41773
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding leaky bucket" cfg=misty-frost name=crowdsecurity/http-sqli-probbing-detection
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding leaky bucket" cfg=misty-forest name=crowdsecurity/http-generic-bf
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding leaky bucket" cfg=purple-sound name=LePresidente/http-generic-401-bf
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding leaky bucket" cfg=fragrant-brook name=LePresidente/http-generic-403-bf
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding leaky bucket" cfg=wispy-snow name=crowdsecurity/appsec-vpatch
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding leaky bucket" cfg=weathered-wood name=crowdsecurity/http-xss-probbing
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding trigger bucket" cfg=summer-night name=crowdsecurity/CVE-2017-9841
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding leaky bucket" cfg=hidden-pine name=crowdsecurity/http-crawl-non_statics
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding trigger bucket" cfg=small-waterfall name=crowdsecurity/vmware-cve-2022-22954
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding leaky bucket" cfg=empty-breeze name=crowdsecurity/http-probing
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding trigger bucket" cfg=twilight-fire name=crowdsecurity/CVE-2022-26134
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding trigger bucket" cfg=restless-sky name=crowdsecurity/thinkphp-cve-2018-20062
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding leaky bucket" cfg=summer-sunset name=crowdsecurity/CVE-2022-41697
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding trigger bucket" cfg=purple-moon name=crowdsecurity/CVE-2022-35914
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding trigger bucket" cfg=young-frog name=crowdsecurity/CVE-2022-41082
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding trigger bucket" cfg=billowing-sound name=ltsich/http-w00tw00t
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding trigger bucket" cfg=sparkling-snow name=crowdsecurity/CVE-2022-44877
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding trigger bucket" cfg=old-water name=crowdsecurity/CVE-2019-18935
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding leaky bucket" cfg=dawn-silence name=crowdsecurity/http-admin-interface-probing
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding leaky bucket" cfg=hidden-tree name=crowdsecurity/http-bad-user-agent
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding leaky bucket" cfg=delicate-moon name=crowdsecurity/http-wordpress-scan
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding trigger bucket" cfg=young-sky name=crowdsecurity/CVE-2023-22518
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding trigger bucket" cfg=shy-sky name=crowdsecurity/http-cve-2021-42013
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding trigger bucket" cfg=autumn-forest name=crowdsecurity/netgear_rce
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding leaky bucket" cfg=snowy-flower name=crowdsecurity/http-backdoors-attempts
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding trigger bucket" cfg=delicate-bird name=crowdsecurity/f5-big-ip-cve-2020-5902
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding trigger bucket" cfg=bold-mountain name=crowdsecurity/apache_log4j2_cve-2021-44228
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding trigger bucket" cfg=summer-paper name=crowdsecurity/CVE-2022-42889
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding leaky bucket" cfg=holy-smoke name=crowdsecurity/CVE-2022-46169-bf
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding trigger bucket" cfg=red-cherry name=crowdsecurity/CVE-2022-46169-cmd
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding trigger bucket" cfg=sparkling-water name=crowdsecurity/pulse-secure-sslvpn-cve-2019-11510
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding trigger bucket" cfg=autumn-paper name=crowdsecurity/grafana-cve-2021-43798
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding trigger bucket" cfg=twilight-sky name=crowdsecurity/jira_cve-2021-26086
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding trigger bucket" cfg=spring-wind name=crowdsecurity/CVE-2022-37042
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding trigger bucket" cfg=dawn-sun name=crowdsecurity/CVE-2023-22515
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding trigger bucket" cfg=nameless-frog name=crowdsecurity/http-open-proxy
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding trigger bucket" cfg=dawn-flower name=crowdsecurity/fortinet-cve-2022-40684
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding leaky bucket" cfg=fragrant-meadow name=crowdsecurity/ssh-slow-bf
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding leaky bucket" cfg=silent-brook name=crowdsecurity/ssh-slow-bf_user-enum
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding trigger bucket" cfg=damp-waterfall name=crowdsecurity/fortinet-cve-2018-13379
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding trigger bucket" cfg=wandering-water name=crowdsecurity/spring4shell_cve-2022-22965
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding leaky bucket" cfg=hidden-feather name=crowdsecurity/http-path-traversal-probing
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding leaky bucket" cfg=black-shape name=crowdsecurity/http-sensitive-files
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding leaky bucket" cfg=delicate-rain name=crowdsecurity/ssh-bf
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding leaky bucket" cfg=blue-dew name=crowdsecurity/ssh-bf_user-enum
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Loaded 48 scenarios"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding crowdsecurity/vpatch-CVE-2019-12989 to appsec rules"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding crowdsecurity/vpatch-CVE-2023-33617 to appsec rules"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding crowdsecurity/vpatch-symfony-profiler to appsec rules"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding crowdsecurity/base-config to appsec rules"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding crowdsecurity/generic-freemarker-ssti to appsec rules"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding crowdsecurity/vpatch-CVE-2023-35078 to appsec rules"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding crowdsecurity/vpatch-CVE-2023-40044 to appsec rules"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding crowdsecurity/vpatch-CVE-2023-49070 to appsec rules"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding crowdsecurity/vpatch-CVE-2024-22024 to appsec rules"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding crowdsecurity/vpatch-CVE-2024-27198 to appsec rules"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding crowdsecurity/vpatch-CVE-2021-3129 to appsec rules"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding crowdsecurity/vpatch-CVE-2022-44877 to appsec rules"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding crowdsecurity/vpatch-CVE-2023-24489 to appsec rules"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding crowdsecurity/vpatch-CVE-2023-42793 to appsec rules"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding crowdsecurity/vpatch-CVE-2023-7028 to appsec rules"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding crowdsecurity/vpatch-env-access to appsec rules"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding crowdsecurity/vpatch-laravel-debug-mode to appsec rules"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding crowdsecurity/vpatch-CVE-2023-1389 to appsec rules"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding crowdsecurity/vpatch-CVE-2023-22527 to appsec rules"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding crowdsecurity/vpatch-CVE-2021-22941 to appsec rules"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding crowdsecurity/vpatch-CVE-2022-35914 to appsec rules"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding crowdsecurity/vpatch-CVE-2023-22515 to appsec rules"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding crowdsecurity/vpatch-CVE-2023-46805 to appsec rules"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding crowdsecurity/vpatch-CVE-2024-1212 to appsec rules"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding crowdsecurity/vpatch-CVE-2018-1000861 to appsec rules"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding crowdsecurity/vpatch-CVE-2023-28121 to appsec rules"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding crowdsecurity/vpatch-CVE-2023-35082 to appsec rules"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding crowdsecurity/vpatch-CVE-2023-3519 to appsec rules"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding crowdsecurity/vpatch-CVE-2020-17496 to appsec rules"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding crowdsecurity/vpatch-CVE-2022-22954 to appsec rules"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding crowdsecurity/vpatch-CVE-2022-46169 to appsec rules"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding crowdsecurity/vpatch-CVE-2023-23752 to appsec rules"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding crowdsecurity/vpatch-CVE-2023-34362 to appsec rules"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding crowdsecurity/vpatch-CVE-2023-50164 to appsec rules"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding crowdsecurity/vpatch-CVE-2024-23897 to appsec rules"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding crowdsecurity/vpatch-connectwise-auth-bypass to appsec rules"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding crowdsecurity/vpatch-CVE-2017-9841 to appsec rules"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding crowdsecurity/vpatch-CVE-2020-11738 to appsec rules"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding crowdsecurity/vpatch-CVE-2022-22965 to appsec rules"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding crowdsecurity/vpatch-CVE-2022-27926 to appsec rules"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding crowdsecurity/vpatch-CVE-2018-10562 to appsec rules"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding crowdsecurity/vpatch-CVE-2019-1003030 to appsec rules"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding crowdsecurity/vpatch-CVE-2023-6553 to appsec rules"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding crowdsecurity/vpatch-CVE-2023-20198 to appsec rules"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding crowdsecurity/vpatch-CVE-2023-38205 to appsec rules"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="loading acquisition file : /etc/crowdsec/acquis.yaml"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Adding file /var/log/traefik/access.log to datasources" type=file
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Cache duration for auth not set, using default: 1m0s" name=myAppSecComponent type=appsec
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="loading /etc/crowdsec/appsec-configs/virtual-patching.yaml" component=appsec_config name=myAppSecComponent type=appsec
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Loaded 0 outofband rules" component=appsec_config name=crowdsecurity/virtual-patching type=appsec
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="loading inband rule crowdsecurity/base-config" component=appsec_config name=crowdsecurity/virtual-patching type=appsec
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="loading inband rule crowdsecurity/vpatch-*" component=appsec_config name=crowdsecurity/virtual-patching type=appsec
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Loaded 44 inband rules" component=appsec_config name=crowdsecurity/virtual-patching type=appsec
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Created 1 appsec runners" name=myAppSecComponent type=appsec
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="<IP_ADDRESS> - [Wed, 01 May 2024 06:09:33 UTC] \"POST /v1/watchers/login HTTP/1.1<PHONE_NUMBER>45ms \"crowdsec/v1.6.1-c6e40191\" \""
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Starting processing data"
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="1 appsec runner to start" name=myAppSecComponent type=appsec
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="creating TCP server on <IP_ADDRESS>:7422" name=myAppSecComponent type=appsec
crowdsec  | time="2024-05-01T06:09:33Z" level=info msg="Appsec Runner ready to process event" name=myAppSecComponent runner_uuid=1c114093-af68-43a6-bad8-cf23b1629a3d type=appsec
crowdsec  | time="2024-05-01T06:09:34Z" level=info msg="Starting community-blocklist update"
crowdsec  | time="2024-05-01T06:09:34Z" level=info msg="capi/community-blocklist : 0 explicit deletions"
crowdsec  | time="2024-05-01T06:09:34Z" level=info msg="capi/community-blocklist : received 0 new entries (expected if you just installed crowdsec)"
crowdsec  | time="2024-05-01T06:09:34Z" level=info msg="Start pull from CrowdSec Central API (interval: 1h55m59s once, then 2h0m0s)"
crowdsec  | time="2024-05-01T06:10:33Z" level=info msg="<IP_ADDRESS> - [Wed, 01 May 2024 06:10:33 UTC] \"GET /v1/heartbeat HTTP/1.1 200 5.227563ms \"crowdsec/v1.6.1-c6e40191\" \""
crowdsec  | time="2024-05-01T06:11:33Z" level=info msg="<IP_ADDRESS> - [Wed, 01 May 2024 06:11:33 UTC] \"GET /v1/heartbeat HTTP/1.1 200 4.897486ms \"crowdsec/v1.6.1-c6e40191\" \""
crowdsec  | time="2024-05-01T06:12:33Z" level=info msg="<IP_ADDRESS> - [Wed, 01 May 2024 06:12:33 UTC] \"GET /v1/heartbeat HTTP/1.1 200 5.054671ms \"crowdsec/v1.6.1-c6e40191\" \""
crowdsec  | time="2024-05-01T06:13:33Z" level=info msg="<IP_ADDRESS> - [Wed, 01 May 2024 06:13:33 UTC] \"GET /v1/heartbeat HTTP/1.1 200 5.272179ms \"crowdsec/v1.6.1-c6e40191\" \""
crowdsec  | time="2024-05-01T06:14:33Z" level=info msg="<IP_ADDRESS> - [Wed, 01 May 2024 06:14:33 UTC] \"GET /v1/heartbeat HTTP/1.1 200 5.155555ms \"crowdsec/v1.6.1-c6e40191\" \""
crowdsec  | time="2024-05-01T06:15:33Z" level=info msg="<IP_ADDRESS> - [Wed, 01 May 2024 06:15:33 UTC] \"GET /v1/heartbeat HTTP/1.1 200 4.879705ms \"crowdsec/v1.6.1-c6e40191\" \""
crowdsec  | time="2024-05-01T06:16:33Z" level=info msg="<IP_ADDRESS> - [Wed, 01 May 2024 06:16:33 UTC] \"GET /v1/heartbeat HTTP/1.1 200 5.356323ms \"crowdsec/v1.6.1-c6e40191\" \""
crowdsec  | time="2024-05-01T06:17:33Z" level=info msg="<IP_ADDRESS> - [Wed, 01 May 2024 06:17:33 UTC] \"GET /v1/heartbeat HTTP/1.1 200 7.069006ms \"crowdsec/v1.6.1-c6e40191\" \""
crowdsec  | time="2024-05-01T06:17:47Z" level=info msg="<IP_ADDRESS> - [Wed, 01 May 2024 06:17:47 UTC] \"GET /v1/decisions?ip=<IP_ADDRESS>&banned=true HTTP/1.1 200 10.575045ms \"Go-http-client/1.1\" \""
crowdsec  | time="2024-05-01T06:17:47Z" level=info msg="<IP_ADDRESS> - [Wed, 01 May 2024 06:17:47 UTC] \"HEAD /v1/decisions/stream HTTP/1.1 200 501.488µs \"Go-http-client/1.1\" \""
crowdsec  | time="2024-05-01T06:18:33Z" level=info msg="<IP_ADDRESS> - [Wed, 01 May 2024 06:18:33 UTC] \"GET /v1/heartbeat HTTP/1.1 200 4.963918ms \"crowdsec/v1.6.1-c6e40191\" \""
crowdsec  | time="2024-05-01T06:19:22Z" level=info msg="<IP_ADDRESS> - [Wed, 01 May 2024 06:19:22 UTC] \"GET /v1/decisions?ip=<IP_ADDRESS>&banned=true HTTP/1.1 200 9.236965ms \"Go-http-client/1.1\" \""
crowdsec  | time="2024-05-01T06:19:22Z" level=info msg="<IP_ADDRESS> - [Wed, 01 May 2024 06:19:22 UTC] \"HEAD /v1/decisions/stream HTTP/1.1 200 477.802µs \"Go-http-client/1.1\" \""
crowdsec  | time="2024-05-01T06:19:33Z" level=info msg="<IP_ADDRESS> - [Wed, 01 May 2024 06:19:33 UTC] \"GET /v1/heartbeat HTTP/1.1 200 8.913281ms \"crowdsec/v1.6.1-c6e40191\" \""
crowdsec  | time="2024-05-01T06:20:25Z" level=info msg="<IP_ADDRESS> - [Wed, 01 May 2024 06:20:25 UTC] \"GET /v1/decisions?ip=<IP_ADDRESS>&banned=true HTTP/1.1 200 9.483845ms \"Go-http-client/1.1\" \""
crowdsec  | time="2024-05-01T06:20:25Z" level=info msg="<IP_ADDRESS> - [Wed, 01 May 2024 06:20:25 UTC] \"HEAD /v1/decisions/stream HTTP/1.1 200 639.221µs \"Go-http-client/1.1\" \""
crowdsec  | time="2024-05-01T06:20:33Z" level=info msg="<IP_ADDRESS> - [Wed, 01 May 2024 06:20:33 UTC] \"GET /v1/heartbeat HTTP/1.1 200 5.739924ms \"crowdsec/v1.6.1-c6e40191\" \""
crowdsec  | time="2024-05-01T06:21:33Z" level=info msg="<IP_ADDRESS> - [Wed, 01 May 2024 06:21:33 UTC] \"GET /v1/heartbeat HTTP/1.1 200 27.193133ms \"crowdsec/v1.6.1-c6e40191\" \""
crowdsec  | time="2024-05-01T06:22:33Z" level=info msg="<IP_ADDRESS> - [Wed, 01 May 2024 06:22:33 UTC] \"GET /v1/heartbeat HTTP/1.1 200 6.620711ms \"crowdsec/v1.6.1-c6e40191\" \""
crowdsec  | time="2024-05-01T06:23:33Z" level=info msg="<IP_ADDRESS> - [Wed, 01 May 2024 06:23:33 UTC] \"GET /v1/heartbeat HTTP/1.1 200 5.540851ms \"crowdsec/v1.6.1-c6e40191\" \""
crowdsec  | time="2024-05-01T06:24:33Z" level=info msg="<IP_ADDRESS> - [Wed, 01 May 2024 06:24:33 UTC] \"GET /v1/heartbeat HTTP/1.1 200 5.426612ms \"crowdsec/v1.6.1-c6e40191\" \""

Ah! I found out the issue. Apparently traefik will connect directly to the redis. I expected crowdsec to connect to redis and therefore i've put crowdsec & redis into the same docker network. However when I added traefik into the redis network, things started to work.
PS. I figured this out with the debug logging, so thanks for that :)!
I do have, based on your config, another question:
My config in appsec.yaml is as following:
listen_addr: <IP_ADDRESS>:7422
appsec_config: crowdsecurity/appsec-default
name: myAppSecComponent
source: appsec
labels:
  type: appsec

However I see that you've added this part:
filenames:
 - /traefik-external-logs/accessLogs.log.json
labels:
  type: traefik

and also are using a different appsec_config (crowdsecurity/virtual-patching vs crowdsecurity/appsec-default). I'm new to CrowdSec so I have no idea what the difference is here.
So 2 questions:

What is the difference between the two appsec_config's?
Why do you include the logs into the crowdsec container? Doesnt traefik simply do an API call to CrowdSec to see if the client is allowed? What does this log "sharing" add?

Allright, so let me try to get this straight. I should be using the crowdsecurity/appsec-default preferably because this is the most "complete" package for protection.
docker-compose.yml:
If the above statement is true, i should modify my config as follows:
  crowdsec:
    image: crowdsecurity/crowdsec:v1.6.1-2
    container_name: "crowdsec"
    restart: unless-stopped
    environment:
      COLLECTIONS: **crowdsecurity/appsec-default** crowdsecurity/traefik crowdsecurity/appsec-virtual-patching crowdsecurity/appsec-generic-rules
      CUSTOM_HOSTNAME: crowdsec
      # We need to register one api key per service we will use
      BOUNCER_KEY_TRAEFIK: FIXME-LAPI-KEY-1=
    volumes:
      - ./acquis.yaml:/etc/crowdsec/acquis.yaml:ro
      - logs:/var/log/traefik:ro
      - crowdsec-db:/var/lib/crowdsec/data/
      - crowdsec-config:/etc/crowdsec/
    labels:
      - "traefik.enable=false"

filenames:
 - /var/log/traefik/access.log
labels:
  type: traefik

---
listen_addr: <IP_ADDRESS>:7422
appsec_config: crowdsecurity/appsec-default
name: myAppSecComponent
source: appsec
labels:
  type: appsec

And the second question: My format for the traefik logs are json. Does this also work? or should i use the normal log style?

Allright, so let me try to get this straight. I should be using the crowdsecurity/appsec-default preferably because this is the most "complete" package for protection.
docker-compose.yml: (add crowdsecurity/appsec-default to the COLLECTIONS env var) If the above statement is true, i should modify my config as follows:

From my understanding, (thanks @LaurenceJJones for the information about collections) both configuration fetch/activate the same collections="crowdsecurity/appsec-default crowdsecurity/appsec-virtual-patching crowdsecurity/appsec-generic-rules"
So you can do either:

COLLECTIONS: crowdsecurity/appsec-default crowdsecurity/traefik
COLLECTIONS: crowdsecurity/appsec-virtual-patching crowdsecurity/appsec-generic-rules crowdsecurity/traefik

You can look at what theses collections do in the Crowdsec HUB.
For the most "complete" protection using this plugin and crowdsec, I suggest adding also the logs like in the exemples because it allows crowdsec to detect attacks/bruteforces based on some log pattern using multiples requests.
To simplify I would say that Crowdsec logs detection works similarly to fail2ban and appsec to modsecurity.
For the log format, yes JSON and CLF are supported.
I personaly believe that Traefik JSON format is more complete than the traditional common log format.

Thanks for the feedback, mybad I mixed up collections and appsec_config.

Thanks for clearing this up! I'm closing this one! Thanks again for all the great help :).


Mark unstable features as Beta

What does this PR do?

Fixes #1238
Before submitting

[x] Was this discussed/approved via a Github issue? (no need for typos and docs improvements)
[x] Did you read the contributor guideline, Pull Request section?
[x] Did you make sure your PR does only one thing, instead of bundling different changes together?
[x] Did you make sure to update the documentation with your changes?
[ ] Did you write any new necessary tests? [not needed for typos/docs]
[ ] Did you verify new and existing tests pass locally with your changes?
[ ] If you made a notable change (that affects users), did you update the CHANGELOG?

PR review

[x] Is this pull request ready for review? (if not, please submit in draft mode)

Anyone in the community is free to review the PR once the tests have passed.
If we didn't discuss your PR in Github issues there's a high chance it will not be merged.
Did you have fun?
Make sure you had fun coding 🙃

Hello @ethanwharris ,
I would like to understand how it is decided that a task/integration is under beta.

@karthikrangasai Sure! The exact definition is up for debate but the current criteria is here; https://lightning-flash.readthedocs.io/en/latest/stability.html#stability

Thank you for sharing.


All capture result values are zero.

I'm testing with AWR2243 with DCA1000, in the order shown on README.md .
It said successful without error, but when I tried testDecode_AWR2243, all 0s were output.
I found out about it was
"Interpreting a Single Frame - Range" shows the following error.
/tmp/ipykernel_6855/3350058675.py:13: RuntimeWarning: divide by zero encountered in log
plt.imshow(np.log(np.abs(range_plot[:,0,:,:].sum(1)).T))T))
I want to solve it. What should I do? Help me

Make sure you have a valid configuration profile, and placed a reflector in front of the antenna array. You can try mmwaveStudio first, then mmWave-DFP-2G,  to verify your parameters. btw, the reason why "RuntimeWarning: divide by zero encountered in log" occurred is that your input is all zeros.

Make sure you have a valid configuration profile, and placed a reflector in front of the antenna array. You can try mmwaveStudio first, then mmWave-DFP-2G,  to verify your parameters. btw, the reason why "RuntimeWarning: divide by zero encountered in log" occurred is that your input is all zeros.


feat: use closure instead of class

I removed the default export, since there can be problems when mixing default and named exports on legacy module systems. So now it's import { createPopper, popperGenerator } from '@popperjs/core';

I like the capitalized version. Seems fien to me, although I kind of do like having a default export a bit more.

I'm avoiding the mixed export because in some systems you will end up with stuff like this:
const createPopper = require('@popperjs/core').default;

and:
const { default: createPopper, popperGenerator } = require('@popperjs/core');

Yeah tippy has that :, I don't really care about the CJS version because tree-shaking doesn't work anyway (in webpack).  I'm not even sure it can support mixed exports.

What I did was attach it to the function namespace, it's far cleaner to use for UMD:
createPopper.popperGenerator = popperGenerator;

Isn't a named export clearer? 🤨

I do think Popper.createPopper is pretty clean.
In Tippy it would've been Tippy.tippy which is weird since it's a generic constructor instead of one that creates a single instance. In this case it works better 👍

Ok cool, then let's stick with named exports 🤘


Add client.list_models() method

client.list_models() method returns the available models in the h2oGPT server

PR tested with https://gpt.h2o.ai, https://llama.h2o.ai


Implement keyboards support

Keyboards are one of the best parts of the Telegram bots API, but they are nasty to implement in a generic and reliable way, because botogram needs to call the right hook when someone replies, filter all the incoming requests for actual replies and maintain an internal registry of which keboards are active at the moment.
@bot.command("ask")
def ask_command(chat, message, args):
    keyboard = botogram.keyboard(["Yes", "No"])
    keyboard.only_mentioned = True

    @keyboard.on_reply
    def on_reply(chat, message, user, answer):
        chat.send("You replied with %s" % answer)

    chat.send("Hey @pietroalbini, are you OK today?", extra=keyboard)

[ ] Add support for shared memory (issue #4)
[ ] Add support for timers (issue #5)
[ ] Implement ForceReply
[ ] Implement keyboards on top of ForceReply
[ ] Document the whole thing

This issue tracks the progress on this feature.

If you have ideas for a better API please share it!

Nice. I was hoping there would be an API around the keyboards, and here it is! It sounds like the shared memory will keep a kind of session for commands that us keyboards.
Also, perhaps integrate easy inclusion of emoji into reply keyboards?
Awesome. Brad

Yes, shared memory was firstly implemented because it's the only way to store which keyboards are active in a worker-indipended way. And timers are needed to clean up old keyboards.
What do you mean with emoji support? Something like botogram.SMILE? You can already paste any emoji from telegram in a Python string.

You can already paste any emoji from telegram in a Python string.

Right, scratch that request. Hah!

This is the latest idea I have about the API, but I'm not fully sold to it yet. Any input is welcomed!
@bot.keyboard(permanent=True)
def my_keyboard(chat, message, user, answer):
    chat.send("You replied with %s" % answer)

@bot.command("ask")
def ask_command(chat, message, args):
    kb = my_keyboard.prepare()
    kb.row("Yes", "Not")
    chat.send("Hey @pietroalbini, are you OK today?", extra=kb)

Hi Pietro,
I (formerly tsculpt) am glad to see keyboards will make it into the initial release.
Looking at your API idea above, I am not seeing how the my_keyboard hook is tied to the ask_command. Also what is the permanent keyword argument referring to in the decorator?
Here are some quick thoughts I had on how keyboards might work:

Preferably, keyboards and the hooks which process their replies are defined separately for re-usability.

A hook could define a session with a user that always either:

Sends a new prompt with a keyboard (multi-keyboard interactions), prompting for the next step in the decision tree
Ends the session without error performing some final result or work
Exits the session in error gracefully (perhaps by timing out)

With this, there would also be a need for somehow tracking all replies of the session to execute the correct step in the hook quickly and correctly.

Perhaps these session hooks could be implemented with the help of python generators and/or coroutines

The system could allow for going 'back' to the previous keyboard, like many UIs allow. I suppose this would simply be a keyboard option that simply popped off the 2 most recent choices made in the session (back, and the choice made proir), thus again sending the the correct prompt and keyboard based on the resulting session choices.

Nevertheless, I'll continue to think about this. Let me know what you think.
Cheers, Brad

Ok, let me explain what I meant with that API.
First of all, I don't want to put navigation menus in the same API as keyboards, because keyboards can also be used for other reasons, and I don't want to limit the things you can build with them. I plan to design a separated API for navigation, but after the initial release.
That code snippets defines a keyboard and a command to send it. Keyboards are defined with an hook, which is called when a button of the keyboard is pressed (botogram will automatically detect if the user sends a generic reply or presses a button, and it will handle timeouts). Then, the command prepares the keyboard, adds all the wanted rows and sends it.
The arguments of the @bot.keyboard decorator are the one Telegram supports, partially renamed because I don't like their naming scheme so much: permanent is the inverse of one_time_keyboard, resize is resize_keyboard and everyone is the inverse of selective.
Maybe I'll put the rows definition as decorators, but I don't want that to be the only way to define rows, because you might need dynamic rows (an example is @botfather). Hypothetical API:
@bot.keyboard(permanent=True)
@botogram.row("1", "2", "3", "4", "5")
def my_keyboard(chat, message, answer):
    pass

    kb = my_keyboard.prepare()

Err, well it was in front of me all along. Got it.
I agree with the renamed args, as well.
I like the idea of using a decorator for rows so the keyboard's args, rows, and callback are all in one place. It could serve to define the default row layout which can then be altered in commands from kb.rows when a dynamic option is required.

Yeah, that's the plan. I'm only worried it can be annoying to use everytime @botogram.row, as I removed @botogram.pass_* for that reason.

Perhaps extend @bot.keyboard with an optional kwarg instead of using another decorator? It could accept various row representations, or strings naming common presets.
custom_kb = ['Yes', 'No', 'Maybe']
@bot.keyboard(permanent=True, layout=custom_kb)
#  or...
@bot.keyboard(permanent=True, layout='yes_no')

I love keyboards :)
Please add keyboards fast :smiley:

This issue is replaced by issue #66.


Make gopass sync optional

Summary
I want to be able to stop gopass from syncing when running gopass show.
For example: gopass --nosync show mysecret
Steps To Reproduce
When I run gopass for the first time (for example in a new docker container) then gopass will sync automatically. This can take a long time as network connections are involved. Afterwards, a file ~/.cache/gopass/gopass/reminder/autosync is created. The next run does not autosync unless a certain time has elapsed. But when an ephemeral user runs gopass then it will always autosync as these files do not exist. I'd like to switch off this behaviour with a command line switch.
I need this for the ansible passwordstore lookup plugin to work properly.

OS: Debian
OS version: bullseye
gopass Version: gopass 1.15.4 go1.19.5 linux arm64
Installation method: debian repo  https://packages.gopass.pw/repos/gopass

I think it would be reasonable to provide a flag to override whatever is set in the config per invocation.


🐞 Bug: put no of notification over the bell-icon

Is there an existing issue for this?

[X] I have searched the existing issues

Describe the bug
in mobile view, the number of notifications should be over the bell-icon same as the desktop view

Steps To Reproduce

Go to Circuitverse
check the bello icon in nav-bar
check this in mobile view or smaller width

Expected Behavior

Screenshots
No response
Device Information [optional]
- OS:
- Browser:
- version:

Additional context
No response
Are you working on this issue?
Yes

i am working on this issue

Will be fixed by #4705


Provide example in the docs of lazy config for jacoco applicationCodeCoverageReport task

https://docs.gradle.org/current/userguide/jacoco_plugin.html#sec:jacoco_specific_task_configuration
from the docs:
jacoco {
    applyTo(tasks.run.get())
}

tasks.register<JacocoReport>("applicationCodeCoverageReport") {
    executionData(tasks.run.get())
    sourceSets(sourceSets.main.get())
}

Expected Behavior
Use lazy config and Taskprovider API for jacoco configuration.
Current Behavior
the run.get() in the example in the doc eager creates the run task at config time.

We expect to upgrade the API in 9.0.


Add weight-loss holes around pegs in 2,3,4,5 and in panel in 2 and 5

Browser caching duplicated this ticket.


ci: updated CRA config to scan the DA directories

/run pipeline

/run pipeline

/run pipeline

:tada: This PR is included in version 2.4.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


can i search anything b/w a words

just wanted to know is it possible to search any matching char b/w any word ?? if yes please guide me
Egg: in INDIA i want to match with ia or di ..

@Manjukb you can implement any search function, please see the docs linked to readme page


add: mip-x09

Simulated calldata using your same command:


Fix bug when calling material_select() on a class selector multiple times

Encountered a bug when calling material_select() on a class selector when the said function has already been previously called.
Example:
$('.mselect').material_select();
I observed that the generated div container also gets the original classes of the element, so when the function is called again, generated elements are cloned.
This change just checks if the element is a select element and if it has a class initialized.

All plugins should now properly destroy itself when called multiple times, in v1.


Hydration failed because the server rendered HTML didn't match the client.

When rendering my Next app, I'm getting an SSR error from SpeedInsights. How do I know it's from Speed Insights? I can comment it out and the error goes away.
Here's the error:
react-dom-client.development.js:4100 Uncaught Error: Hydration failed because the server rendered HTML didn't match the client. As a result this tree will be regenerated on the client. This can happen if a SSR-ed Client Component used:

- A server/client branch `if (typeof window !== 'undefined')`.
- Variable input such as `Date.now()` or `Math.random()` which changes each time it's called.
- Date formatting in a user's locale which doesn't match the server.
- External changing data without sending a snapshot of it along with the HTML.
- Invalid HTML tag nesting.

It can also happen if the client has a browser extension installed which messes with the HTML before React loaded.

https://react.dev/link/hydration-mismatch

  ...
    <HotReload assetPrefix="">
      <ReactDevOverlay onReactError={function} state={{nextId:1, ...}} dispatcher={{...}}>
        <DevRootNotFoundBoundary>
          <NotFoundBoundary notFound={<NotAllowedRootNotFoundError>}>
            <NotFoundErrorBoundary pathname="/" notFound={<NotAllowedRootNotFoundError>} notFoundStyles={undefined} ...>
              <RedirectBoundary>
                <RedirectErrorBoundary router={{...}}>
                  <Head>
                  <link>
                  <script>
                  <script>
                  <RootLayout>
                    <html lang="en">
                      <head>
                      <body>
                      <SpeedInsights2>
+                       <Suspense fallback={null}>
                      ...
                  ...
        ...

    at throwOnHydrationMismatch (react-dom-client.development.js:4100:11)
    at updateSuspenseComponent (react-dom-client.development.js:8728:15)
    at beginWork (react-dom-client.development.js:9972:18)
    at runWithFiberInDEV (react-dom-client.development.js:543:16)
    at performUnitOfWork (react-dom-client.development.js:14996:22)
    at workLoopConcurrent (react-dom-client.development.js:14990:9)
    at renderRootConcurrent (react-dom-client.development.js:14965:15)
    at performWorkOnRoot (react-dom-client.development.js:14300:13)
    at performWorkOnRootViaSchedulerTask (react-dom-client.development.js:15852:7)
    at MessagePort.performWorkUntilDeadline (scheduler.development.js:44:48)

I'm seeing some Stack Overflows referencing issues where you might have HTML elements inside one another, like p els inside other p els, etc.
You can silence this error by doing this.

Did you add the  component in body (after children)?

Did you add the component in body (after children)?

yes!

Did you add the component in body (after children)?

yes!

were you able to fix it? ain't getting a fix

@ishaanrathodd no, I didn’t pursue it further.
@dimitridumont it doesn’t seem this is functional, what can I do to help here?

@ishaanrathodd no, I didn’t pursue it further.
@dimitridumont it doesn’t seem this is functional, what can I do to help here?

I got my error fixed by making the file a client component by adding "use client" where the error was found. Try to comment out lines which you think might be the culprit and then find a workaround.

I realized that in my case the blame was on the extensions I used in my browser, they added style in the wrong places,  inside  ...
Anyway, I'm using the browser's incognito tab to program with next...


v8.4.0

Version 8.4.0 (2021-02-08)
Changes

Fixed an issue where API Updates were pushed, with no changes.
Fixed Issue with config.schema.json displaying issue.
Added API Errror Handling to update Characteristics in HomeKit.

My Lyric Round Thermostat appears to be operating in read-only mode. I can read the temperature but not update it from HomeKit.
So I was excited to see that commit cc94d0f removed the following warning that I was getting for my Lyric Round Thermostat: 'A TCC Device has been discovered, Currently writing to Honeywell API does not work.'
But it still appears that I can't update the temperature. I've restarted Homebridge. Anything else I should try?
Thanks for all your work on this!

My Lyric Round Thermostat appears to be operating in read-only mode. I can read the temperature but not update it from HomeKit.
So I was excited to see that commit cc94d0f removed the following warning that I was getting for my Lyric Round Thermostat: 'A TCC Device has been discovered, Currently writing to Honeywell API does not work.'
But it still appears that I can't update the temperature. I've restarted Homebridge. Anything else I should try?
Thanks for all your work on this!

Could you open an issue and provide logs?


Make clear-pr-merge-commit-message manual to avoid conflicts with user settings

Part of https://github.com/refined-github/refined-github/issues/5155
Part of https://github.com/refined-github/refined-github/issues/5992

Why
GitHub implemented a per-repo option to decide this, meaning we’re effectively overriding it, regardless of what the user picks or leaves as default.
Given that this feature has been a little controversial and troublesome, I think making it manual would avoid these gripes.
Test URLs

This PR, if you have merging permissions

Screenshot

cc @JelteF @sindresorhus @yakov116

The gif and code look good to me. I'm not in a situation where I can test this locally, but making this setting manual would fix the issue that I'm having where it overrides the repo settings.

I have VERY mixed feelings about this. I also think that the button should be a bit more description.
@refined-github/maintainers?

We can alternatively reuse the “copy code block” button style to make it feel more native, but it would appear more in the middle.
I think the “Clear” button is pretty self-explanatory, even if “it doesn’t work well” (i.e. the co-authors are left behind, if any). We could use a more common “x in a circle” as seen in <input type=search> but that would probably make it worse.

I think we can merge this before the next release and see how it feels. If this is too cumbersome, we can try to rework a logic to automate this again, with an easy way to revert it. For example:

Some bugfix (#174)

Description shortened by Refined GitHub: CustomizeReset

Co-authored-by: Too Gigio<EMAIL_ADDRESS>

Notice:

the textarea isn't shown/touched until the user merges the PR

This allows us to default to a new message without overriding the native one, which is available on "Reset"

I "manually" tested with some defaults be enabling and disabling the feature.
From my perspective the current solution with manually applying the clearing when wanted (like in a renovate PR), makes more sense.

My main concern with this PR is that an action that used to be automatic now requires a click. For people who like a clean description, this is a step back; for others who don't like it, they can already disable the feature.
The only concern I have with the previous behavior is that the feature is completely silent and "lossy", meaning RGH users who try to use the new GitHub option will be frustrated. My solution to that issue specifically would be to make the feature louder, yet show that RGH is altering the field.

My main concern with this PR is that an action that used to be automatic now requires a click. For people who like a clean description, this is a step back; for others who don't like it, they can already disable the feature.

I don't think it's as big a step back as you suggest. People that like a clean description can already configure the same default on the repo where they want this (assuming they have those permissions).

can already configure the same default on the repo where they want this

I'm not going to change the setting in 100 repos and every fork I create. Also I can't change the settings in some of the repos I can push to because I'm just a collaborator. This is also why pr-branch-auto-delete still exists.

I'm still not convinced, I feel this is undoing the feature.

Right. Alternatives? What about the other 2 options I proposed? We can't leave it as is

I'm not going to change the setting in 100 repos and every fork I create.

That workflow makes sense too. I think my main problem is that it does the "wrong" (imho) default everywhere,and it does it without the user enabling it.
Imho the "correct" default would be to take the PR description as the commit message.
Another option would be to disable the current option by default, like is done for two others.

 But now it actively disables the most useful option on repos that take the effort to enable it.
And probably the worst part is, if you work together with others on a repo and use this setting as a way to make sure that everyone gets useful commit messages, then you have to ask everyone on your team that uses RGH to disable this setting.

What if we put the button next to the squash and merge?

It doesn't feel like the right place. Also there's already a "merge as administrator" checkbox there and our own "wait for checks"


Update experimental/README.md and hack/release.sh

Now dockerd is split from docker
dockerd needs PATH to be set for running containerd and runc

Signed-off-by: Akihiro Suda<EMAIL_ADDRESS>

Also see https://github.com/docker/docker/pull/23491, I used a different approach there.
Perhaps we should update the experimental instructions to mention the apt/yum repos as well?

Sorry, I overlooked your PR.
Closing this

@thaJeztah  I amended and reopened my PR for experimental/README.md, because it doesn't conflict with #23491. Please review this?

thanks! I'm about to take off for SFO ✈, but perhaps @vdemeester can have a peek?

LGTM, but can check the urls from my phone :-)

LGTM 🐯


Table Formatting

Hi - Thanks for making this library. It's great! I have a question. I am trying to format a table where the conversion to docx format occurs on the server (node). I am using remark-gfm to create the table, but it has no style.  Is it possible to pass docx table styles into remark-docx?
So far, I think docx doesn't provide the ability to edit, outside of the patcher which only lets you add things.  However, I have a table in the middle of the markdown.  Also, it doesn't look like docx style options like paragraphStyles, default , or document styles accept options formatting tables. As far as I can tell, it seems like table styles must be passed into docx when the table is created new Table, new Row, and new Cell.   So, if I understand everything correctly, if there were to be table styles, they'd have to be applied when the table is created within remark-docx.
Any ideas on how that might work? Thanks!
  const processor = unified()
    .use(remarkParse)
    .use(markdown)
    .use(remarkBreaks)
    .use(remarkGfm)
    .use(docx, { output: 'buffer', styles });

Hello,
I'm not familiar to table options of docx however it looks like that some options are not existed in global as you mentioned.
https://docx.js.org/#/usage/tables
I have no time to implement them as an option of remark-docx but any contributions are welcome!

Thanks for responding so quickly. I'm going to put a little time into seeing if there is a workable solution.  Thanks again!!

Okay, I got something working that will suit my needs in the short term. It's not amazing, but it works! Thankfully your code is easy to read and understand!  I wanted to leave the changes here in case this is helpful to anyone else.
I added a tableStyles object to the options.  It is structured so that it provides for table options, a header row, and body rows. This is really all I need for now. For example:
That object looks like this and I added it to the DocxOptions interface:
export type TableStyle = {
  options: Omit<ITableOptions, 'rows'>,
  header: {
    row: ITableRowPropertiesOptions
    cell: ITableCellPropertiesOptions,
    paragraph: IParagraphPropertiesOptions
  },
  body: {
    row: ITableRowPropertiesOptions
    cell: ITableCellPropertiesOptions,
    paragraph: IParagraphPropertiesOptions
  },
}

It is passed in like so:
  const processor = unified()
    .use(remarkParse)
    .use(remarkGfm)
    .use(docx, { output: 'buffer', tableStyle });

That object is then passed into the context.
const mdastToDocx = async (node, { output = 'buffer', title, subject, creator, keywords, description, lastModifiedBy, revision, styles, background, tableStyle }, images) => {

  const { nodes, footnotes } = convertNodes(node.children, {
    deco: {},
    images,
    indent: 0,
    tableStyle
  },);

...

The Table, Row, Cell, and Paragraph constructors then apply the options and styles.
const buildTable = ({ children, align }, ctx) => {
  const cellAligns = align === null || align === void 0 ? void 0 : align.map((a) => {
    switch (a) {
      case 'left':
        return docx.AlignmentType.LEFT;
      case 'right':
        return docx.AlignmentType.RIGHT;
      case 'center':
        return docx.AlignmentType.CENTER;
      default:
        return docx.AlignmentType.LEFT;
    }
  });
  return new docx.Table({
    ...ctx.tableStyle.options,
    rows: children.map((r, i) => {
      const style = i === 0 ? ctx.tableStyle.header : ctx.tableStyle.body;
      return buildTableRow(r, ctx, cellAligns, style);
    }),
  });
};
const buildTableRow = ({ children }, ctx, cellAligns, style) => {
  return new docx.TableRow({
    ...style.row,
    children: children.map((c, i) => {
      return buildTableCell(c, ctx, cellAligns === null || cellAligns === void 0 ? void 0 : cellAligns[i], style);
    }),
  });
};
const buildTableCell = ({ children }, ctx, align, style) => {
  const { nodes } = convertNodes(children, ctx);
  return new docx.TableCell({
    ...style.cell,
    children: [
      new docx.Paragraph({
        ...style.paragraph,
        alignment: align,
        children: nodes,
      }),
    ],
  });
};

Hi all, I need @generalleger 's code as well. Don't you think we should open a PR? I think it's actually an important addition to the package.
Thank you

Hi all, I need @generalleger 's code as well. Don't you think a PR is needed? I think it's actually an important addition to the package. Without it the table becomes pretty much unusable.
Thank you

Paulo - my code is pretty hacky - and I've since modified again to add a title page based on other data internal to my application. So, the code quality is not good enough for a PR. The code mods I described above should work though. If you can't get it to work, let me know and I'll try to post it to my public GH.


Added Tested in Title of Swags to let others know it's working.

Hey, @Joonsang1994! I've created a Branch named Tested which consists of a modified readme which shows the term Tested on Swags which have been tested by me. If you've tested any other swags I haven't tested then you can modify the readme and merge this PR.

You can view the changes in https://github.com/Joonsang1994/free-tshirts-stickers-and-swag-for-developers/blob/Tested/README.md


sdk: add resetDisks_vm()

Hey folks. Here's another one.
Not sure how you would want this to be named ... I suspect you won't like the capital D but I wasn't sure what else to do. (/applications/:appId/vms/:vmId/resetDisks)

maybe to just call reset_disks ???

maybe to just call reset_disks ???

All the other vm calls are <SOMETHING>_vm but yeah that's up to you guys. Say the word and I'll rename it.

Please name it reset_disks_vm and I'll merge the change.

Done.

thanks @ryran , merged.


HHH-17154 Fix NullPointerException is thrown when constructing EntityManagerFactoryBuilderImpl

https://hibernate.atlassian.net/browse/HHH-17154

Hi @quaff , can you please also provide a test case to avoid future regressions? Thanks

Hi @quaff , thanks for the PR, can you please also provide a test case to avoid future regressions? Thanks

I will try.

thanks!

@dreab8 Done.

@dreab8 Please take a look at https://github.com/spring-projects/spring-framework/issues/31151, I'm not sure it's a regression that hibernate should fix or change that spring should adapt.

There is an ongoing discussion about how to solve this best and I am working on this. I'll close this for now and open a new PR soon.


llvmPackages: 7 -> 10

Motivation for this change
Testing the effect of this change
Things done

[ ] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[ ] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[ ] Fits CONTRIBUTING.md.

@ofborg eval

Thanks. My machine probably isn't strong enough to run that! This was entirely a test to see how many packages would be affected by this, since at a glance, most that use llvmPackages seem to pin a particular version anyway - I never intended for this to be merged :)


Publication2arc

#285

As discussed today.
Feel free to check out, add, edit. Thanks
@SabrinaZander @eik-dahms, @andreaschrader, @AngelaKranz
https://nfdi4plants.org/nfdi4plants.knowledgebase/docs/guides/publicationToARC.html


Copy&Paste of units doesn't assign a new id

When you c&p a unit the new unit has the same id as the copied one. This breaks as soon as you try to use sends to the new unit - they all arrive at the previous one (the UI also reflects that).
Please assign a new id to units when pasting.

This is probably a result of the complete refactoring / rewrite of the model of the GUI, sorry! Investigating.

Actually, probably vice versa: this was fixed by the big refactoring / rewrite, and you are probably still on 0.3.0, correct?

Seems fixed in the latest version, thanks!


[Enhancement] The markdown template should include the content of the description field

Description
The template markdown.j2 miss the description field of the target role. It only include the short_description field content.
Below is a example of the code that could be added to add the content of the description field:

  {% for line in argument_specs[entrypoint].description %}
  {{ line }}
  {% endfor %}

Additional information
No response

See #79.
BTW: you guys should use your own templates. :)

See #79.
BTW: you guys should use your own templates. :)

I understand, however, as far as I know, there is not a lengthy description of what to expect from the markdown command. So it is easy to find ways for "improvements". ;)


Unable to change thermostat parameters

Hi,
hysteresis on start: 0.6
thermo = await ecomax.get_value("thermostats");
print(await thermo[0].get_value('hysteresis'))
await thermo[0].set_value("hysteresis", 8)
print(await thermo[0].get_value('hysteresis'))
6
Timed out while trying to set 'hysteresis' parameter
8

every parameter on thermostats, when i try change i got "Timed out"
i try change day_target_temp 22.1 >> 21.5
i got Timeout, but  day_target_temp changed to 47 (max 35)
i try one more time and still got Timeout but temp was 21.5
Originally posted by @entmor in https://github.com/denpamusic/PyPlumIO/issues/8#issuecomment-1369302477

Hi,
yes, set_value give always feedback Timed out while trying to set 'hysteresis' parameter
but value will be changed, sometimes is incorrect but most case change value to correct

This issue was occurring due to Parameter.set() method was incorrectly subscribing to a parameter change on ecoMAX device instead of thermostat sub-device, when changing parameter. Since ecoMAX device data doesn't have a key for thermostat parameters, Parameter.set() method eventually failed with aforementioned error.
This should now be fixed and sub-devices such as Mixers and Thermostats are correctly associated with their respective parameters.
ecoMAX device itself still available inside Parameter class via Parameter.device.parent property.


Add feature for provider to parse error response before throwing IDPException

Facebook error responses are returned like so:
{"error":{"message":"Some auth error","type":"OAuthException","code":191}}

So when there is an error and it gets to the IDPException constructor, it will try to send an array to the $exception argument of parent::__construct() which throws the following error:
Fatal error: Wrong parameters for Exception([string $exception [, long $code [, Exception $previous = NULL]]]) in %s on line %d

This PR adds a new throwIDPException() method to the AbstractProvider so that a provider can parse the error response before the IDPException is thrown.
In the Facebook provider case it would look like this:
class FacebookProvider extends AbstractProvider
{
    public function throwIDPException(array $result)
    {
        $result = $result['error'];

        throw new IDPException($result);
    }
}

Looks good. I think this may help to solve some other issues that people have been reporting. Thanks!

Hmm. It looks like you made the branch on this repo; I didn't realize you had access. :-)
Is it okay if I delete the branch?

Yeah, sorry about that. I didn't realize that until I pushed it up. Lol. Yeah go ahead and delete the branch. And feel free to remove me from direct access to this repo. I don't want to git push origin master -f on accident. lol. :)

@SammyK Looks like you're in the oauth2-client team, which has access to all the oauth2-* repos. I don't have access to manage that team, and it's not a big deal. Just please don't --force on anything. :-)

Ha! No worries. From now I'm I'm just going to send PR's from my repo and remove any origin remotes to this one. :)


Add a WriteTextAsync extension method for writing plain text to the response

To correctly write text to the response you really need to set the content type header, like this:
app.Run(context =>
{
    context.Response.Headers.Add("Content-Type", "text/plain");
    return context.Response.WriteAsync("Hello world!");
});

If you don't set the content type header then browsers have to guess what the response type is. Chrome guesses plain text, but Edge guesses HTML.
Could we add a WriteTextAsync extension method that makes writing plain text to the response a one-liner?

Do you want it to set the content length too? Is it really that hard to set the content type? There's a first class property for it so you don't need to write it like you have the in issue:
app.Run(context =>
{
    context.Response.ContentType = "text/plain";
    return context.Response.WriteAsync("Hello world!");
});

I don't think we should add it.

@davidfowl It's not "hard", but currently all of the hello world samples we have write to the response with one line, because the whole point of these samples is to show how simple it is to get started with ASP.NET Core. Unfortunately none of these samples render correctly in Edge.
You wouldn't set the content length because you might choose to write some more.

I'm still anti this, one down vote from me 😄

@danroth27 Closing this as "won't fix".


docs: Update docs related to container repository

Update the outdated documentation.
Related #871 #955

Thanks for the review!


Add upgrade and downgrade pass for GroupConvolutionBackpropData ops

Add up/downgrade passes for GroupConvolutionBackpropData operators
Improve decompose operatorion of v0::GroupConvolutionBackpropData to support N-dimensional data
Add UT for up/downgrade passes.

Since this change only deals with v0 ops, @tsocha removed some reviewers.