Endpoint enrolment throws ziti controller login failure error

Hi, I have created an endpoint and I am trying to enroll using the jwt as below:
    zitiContext = Ziti.enroll(ks,tokenStream.readAllBytes(),name);

The endpoint appears as registered in the console, however I get the following ziti controller login failure error:
    18:23:18.664 [main] INFO ZitiImpl - ZitiSDK version 0.18.5 @ddfeffc()
    18:23:20.208 [DefaultDispatcher-worker-1 @coroutine#1] DEBUG ziti-enroller - enrolling ctrl[https://<IP_ADDRESS>:443] name[3zIUuFGBC] method[ott]
    18:23:21.366 [DefaultDispatcher-worker-1 @coroutine#1] DEBUG ziti-enroller - received 4 certificates
    WARNING: An illegal reflective access operation has occurred
    WARNING: Illegal reflective access by org.openziti.net.nio.AsyncTLSSocketFactory (file:/Users/dineshs/.m2/repository/org/openziti/ziti/0.18.5/ziti-0.18.5.jar) to method java.net.Socket.getImpl()
    WARNING: Please consider reporting this to the maintainers of org.openziti.net.nio.AsyncTLSSocketFactory
    WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
    WARNING: All illegal access operations will be denied in a future release
    18:23:23.014 [DefaultDispatcher-worker-1 @coroutine#2] DEBUG ZitiContextImpl - 3zIUuFGBC[null]@https://<IP_ADDRESS>:443 transitioned to Loading
    18:23:23.072 [OkHttp https://<IP_ADDRESS>/...] DEBUG Controller - POST https://<IP_ADDRESS>/authenticate?method=cert session=null t[OkHttp https://<IP_ADDRESS>/...]
    18:23:23.419 [OkHttp https://<IP_ADDRESS>/...] DEBUG async-tls/1 - transitioning [initial -> connecting]
    18:23:23.421 [DefaultDispatcher-worker-3 @coroutine#4] DEBUG async-tls/1 - transitioning [connecting -> handshaking]
    18:23:23.537 [DefaultDispatcher-worker-3 @coroutine#4] DEBUG async-tls/1 - engine status = NEED_WRAP
    18:23:23.537 [DefaultDispatcher-worker-1 @coroutine#6] TRACE async-tls/1 - start reading loop()
    18:23:23.539 [DefaultDispatcher-worker-3 @coroutine#4] TRACE async-tls/1 - engine.handshakeStatus = NEED_WRAP
    18:23:23.541 [DefaultDispatcher-worker-3 @coroutine#4] TRACE async-tls/1 - engine.handshakeStatus = NEED_UNWRAP
    18:23:23.759 [DefaultDispatcher-worker-3 @coroutine#6] TRACE async-tls/1 - engine.handshakeStatus = NEED_TASK
    18:23:23.765 [DefaultDispatcher-worker-3 @coroutine#6] TRACE async-tls/1 - engine.handshakeStatus = NEED_UNWRAP
    18:23:23.766 [DefaultDispatcher-worker-3 @coroutine#6] TRACE async-tls/1 - engine.handshakeStatus = NEED_TASK
    18:23:23.771 [DefaultDispatcher-worker-3 @coroutine#6] TRACE async-tls/1 - engine.handshakeStatus = NEED_UNWRAP
    18:23:23.771 [DefaultDispatcher-worker-3 @coroutine#6] TRACE async-tls/1 - engine.handshakeStatus = NEED_TASK
    18:23:23.772 [DefaultDispatcher-worker-3 @coroutine#6] TRACE async-tls/1 - engine.handshakeStatus = NEED_UNWRAP
    18:23:23.772 [DefaultDispatcher-worker-3 @coroutine#6] TRACE async-tls/1 - engine.handshakeStatus = NEED_TASK
    18:23:23.773 [DefaultDispatcher-worker-3 @coroutine#6] TRACE async-tls/1 - engine.handshakeStatus = NEED_UNWRAP
    18:23:23.774 [DefaultDispatcher-worker-3 @coroutine#6] TRACE async-tls/1 - engine.handshakeStatus = NEED_TASK
    18:23:23.779 [DefaultDispatcher-worker-3 @coroutine#6] TRACE async-tls/1 - engine.handshakeStatus = NEED_WRAP
    18:23:23.780 [DefaultDispatcher-worker-3 @coroutine#6] TRACE async-tls/1 - engine.handshakeStatus = NEED_UNWRAP
    18:23:23.997 [DefaultDispatcher-worker-3 @coroutine#6] TRACE async-tls/1 - engine.handshakeStatus = NEED_UNWRAP
    18:23:23.998 [DefaultDispatcher-worker-3 @coroutine#6] TRACE async-tls/1 - engine.handshakeStatus = NOT_HANDSHAKING
    18:23:23.998 [DefaultDispatcher-worker-3 @coroutine#6] DEBUG async-tls/1 - handshake completed
    18:23:23.998 [DefaultDispatcher-worker-3 @coroutine#6] DEBUG async-tls/1 - transitioning [handshaking -> connected]
    18:23:24.017 [DefaultDispatcher-worker-3 @coroutine#7] TRACE async-tls/1 - ssl state Status = OK HandshakeStatus = NOT_HANDSHAKING
    bytesConsumed = 24 bytesProduced = 53 sequenceNumber = 1
    18:23:24.019 [DefaultDispatcher-worker-3 @coroutine#8] TRACE async-tls/1 - ssl state Status = OK HandshakeStatus = NOT_HANDSHAKING
    bytesConsumed = 15 bytesProduced = 44 sequenceNumber = 2
    18:23:24.019 [DefaultDispatcher-worker-3 @coroutine#9] TRACE async-tls/1 - ssl state Status = OK HandshakeStatus = NOT_HANDSHAKING
    bytesConsumed = 13 bytesProduced = 42 sequenceNumber = 3
    18:23:24.030 [DefaultDispatcher-worker-1 @coroutine#11] TRACE async-tls/1 - ssl state Status = OK HandshakeStatus = NOT_HANDSHAKING
    bytesConsumed = 357 bytesProduced = 386 sequenceNumber = 4
    18:23:24.040 [DefaultDispatcher-worker-1 @coroutine#13] TRACE async-tls/1 - ssl state Status = OK HandshakeStatus = NOT_HANDSHAKING
    bytesConsumed = 9 bytesProduced = 38 sequenceNumber = 5
    18:23:24.539 [DefaultDispatcher-worker-1 @coroutine#3] ERROR Controller - error: HTTP 401
    18:23:24.541 [DefaultDispatcher-worker-1 @coroutine#3] WARN Controller - request failed with Error(code=INVALID_AUTH, message=The authentication request failed, cause=null, field=null)
    18:23:24.543 [DefaultDispatcher-worker-1 @coroutine#3] ERROR ZitiContextImpl - failed to login, cannot continue
    18:23:24.544 [DefaultDispatcher-worker-2 @coroutine#2] DEBUG ZitiContextImpl - 3zIUuFGBC[null]@https://<IP_ADDRESS>:443 transitioned to NotAuthorized
    Exception in thread "DefaultDispatcher-worker-1 @coroutine#3" org.openziti.ZitiException: NotAuthorized: HTTP 401
        at org.openziti.api.Controller.convertError(Controller.kt:255)
        at org.openziti.api.Controller.login$ziti(Controller.kt:157)
        at org.openziti.api.Controller$login$1.invokeSuspend(Controller.kt)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:104)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
    Caused by: retrofit2.HttpException: HTTP 401
        at com.jakewharton.retrofit2.adapter.kotlin.coroutines.CoroutineCallAdapterFactory$BodyCallAdapter$adapt$2.onResponse(CoroutineCallAdapterFactory.kt:104)
        at retrofit2.OkHttpCall$1.onResponse(OkHttpCall.java:161)
        at okhttp3.RealCall$AsyncCall.execute(RealCall.java:174)
        at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        at java.base/java.lang.Thread.run(Thread.java:834)
    18:23:28.018 [main] DEBUG ZitiContextImpl - stopping networking
    18:23:28.020 [main] DEBUG ZitiContextImpl - stopping controller
    18:23:28.021 [main] DEBUG ZitiContextImpl - shutting down
    18:23:28.029 [main] DEBUG ZitiContextImpl - ziti context is finished

if endpoint already registered you can not enroll again

works as it should


flanneld stopped because of expired certificate after a year

I'm running a cluster using the 1.18/stable channel (v1.18.18), that has been running for more than a year now (hence the problem)
flanneld exited with
microk8s.daemon-flanneld[30911]: E0528 14:27:35.940567   30911 main.go:416] Error renewing lease (trying again in 1 min): client: etcd cluster is unavailable or misconfigured; error #0: remote error: tls: bad certificate
microk8s.daemon-flanneld[30911]: E0528 14:28:33.641454   30911 main.go:432] Lease has been revoked. Shutting down daemon.

and would not start up again until i used microk8s leave and microk8s join to rejoin the cluster
From a quick search through the source it seems the certificate used to authenticate with etcd ("server.remote.crt") is only generated when joining a cluster and it has a hard-coded duration of 365 days. Is there any method to regenerate this certificate manually, or is the only solution to leave and rejoin on each node?
Thanks for any help!

Hi @andersrye, please have a look at this comment https://github.com/ubuntu/microk8s/issues/2297 on how you can refresh the used certificates.

Hi, thanks for the response, but I think you linked the wrong message?


remove vhost request system?

Just throwing this up for discussion: I'd kind of like to remove the vhost request queue system. It adds a lot of complexity and doesn't seem to be very useful, especially given that IP cloaking is the default now.

Yes that would be good, besides that anyone can just request a vhost by asking network staff surely, it doesnt need its own services-based request system

@DanielOaks thoughts on this?

Eh I don't mind removing this too much. It's useful for a very specific type of large network, to more easily let a vhost group approve vhost requests whenever instead of directly chatting with users. But I don't mind just recommending setting up a #help channel or something users can join and just ask, like how freenode does it. Make sure you remove the user-requests section in the config files as well~


InterruptedException in connect method signature

In the NatsStreaming class the connect method throws an InterruptedException:
    public static StreamingConnection connect(
            String clusterId, String clientId, Options opts)
            throws IOException, InterruptedException {
        try {
            StreamingConnectionImpl conn = new StreamingConnectionImpl(clusterId, clientId, opts);
            conn.connect();
            return conn;
        } catch (InterruptedException e) {
            Thread.currentThread().interrupt();
            return null;
        }
    }

But does can it actually throw the InterruptedException? Because it is already catched in the method it self.

Probably overkill, I don't think it get the exception again.


Please tell me whether you plan to provide your training images (Laion-high-resolution containing 300k images) ?

Hi, I just randomly sampled 300k images from the original Laion-high-resolution dataset

Hi, I just randomly sampled 300k images from the original Laion-high-resolution dataset

I found that there are four laion datasets, including Laion COCO, Laion-400M, Laion-5B, LAION-AESTHETICS V2 6.5+.
Can you tell me from which dataset you selected 300Kimages?

Hi, I just randomly sampled 300k images from the original Laion-high-resolution dataset

I found that there are four laion datasets, including Laion COCO, Laion-400M, Laion-5B, LAION-AESTHETICS V2 6.5+. Can you tell me from which dataset you selected 300Kimages?

https://github.com/rom1504/img2dataset/blob/main/dataset_examples/laion-high-resolution.md this one


Certificate issuing troubles

On running sudo docker compose up xsshunterexpress I hit the following issue:
[...]
xsshunter-express-xsshunterexpress-1  | changing `configDir` from '/app/greenlock.d' to './greenlock.d'
xsshunter-express-xsshunterexpress-1  | Listening on <IP_ADDRESS>:80 for ACME challenges, and redirecting to HTTPS
xsshunter-express-xsshunterexpress-1  | Listening on <IP_ADDRESS>:443 for secure traffic
xsshunter-express-xsshunterexpress-1  | Ready to Serve:
xsshunter-express-xsshunterexpress-1  |          <domain_name>
xsshunter-express-xsshunterexpress-1  | ACME Directory URL: https://acme-v02.api.letsencrypt.org/directory
xsshunter-express-xsshunterexpress-1  |
xsshunter-express-xsshunterexpress-1  | By using this software you (<private_email>) are agreeing to the following:
xsshunter-express-xsshunterexpress-1  | ACME Subscriber Agreement: https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf
xsshunter-express-xsshunterexpress-1  | Greenlock/ACME.js Terms of Use: https://rootprojects.org/legal/#terms
xsshunter-express-xsshunterexpress-1  |
xsshunter-express-xsshunterexpress-1  | set greenlockOptions.notify to override the default logger
xsshunter-express-xsshunterexpress-1  | Error cert_issue:
xsshunter-express-xsshunterexpress-1  | connect ETIMEDOUT <public_ip>:80
xsshunter-express-xsshunterexpress-1  | code: ETIMEDOUT
xsshunter-express-xsshunterexpress-1  | Error: connect ETIMEDOUT <public_ip>:80
xsshunter-express-xsshunterexpress-1  |     at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1144:16)
xsshunter-express-xsshunterexpress-1  | Error cert_issue:
xsshunter-express-xsshunterexpress-1  | connect ETIMEDOUT <public_ip>:80
xsshunter-express-xsshunterexpress-1  | code: ETIMEDOUT
xsshunter-express-xsshunterexpress-1  | Error: connect ETIMEDOUT <public_ip>:80
xsshunter-express-xsshunterexpress-1  |     at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1144:16)
xsshunter-express-xsshunterexpress-1  | Error cert_issue:
xsshunter-express-xsshunterexpress-1  | connect ETIMEDOUT <public_ip>:80
xsshunter-express-xsshunterexpress-1  | code: ETIMEDOUT
xsshunter-express-xsshunterexpress-1  | Error: connect ETIMEDOUT <public_ip>:80
xsshunter-express-xsshunterexpress-1  |     at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1144:16)

It appears the server is created and is listening on ports 80 and 443, but the certificate issuing process fails. Is there a way to manually generate the lets encrypt certificate in order to bypass this issue.

I managed to solve the issue. In the process of generating a certificate greenlock has a sanity check which attempts to access http://<public_ip> from the machine on which we are setting up xsshunter. Depending on the network setup, it is possible that the machine from the internal network cannot access itself via the public IP.
I solved this by adding an entry on /etc/hosts with '<IP_ADDRESS> my.public.domain' and the certificate was issued with no further problems.


terminate client ??

Hello...  I am new one.
It is not a issues.. Just only want to know.
I want to terminate client when client has wrong id or password.
how can i do? on broker

Hello, look advance example, function onEvent. New client send login and password, you check it and if it bad return false. Broker drop client automatically.

I see.. thanks a lot..

Client must have unique name. If one connect and other have same name it will drop


Github Actions

@jondot 🤝 🍻
Example of CI output: https://github.com/pedrofurtado/sneakers/actions/runs/1376170508

Thank you!


Japan: Mountain Day (8/11) from 2016

8/11 becomes public holiday in Japan from 2016.
Public holidays in Japan - Wikipedia
https://en.wikipedia.org/wiki/Public_holidays_in_Japan
>>> from workalendar.asia import Japan
>>> cal = Japan()
>>> cal.holidays(2016)
[(datetime.date(2016, 1, 1), 'New year'),
 (datetime.date(2016, 1, 11), 'Coming of Age Day'),
 (datetime.date(2016, 2, 11), 'Foundation Day'),
 (datetime.date(2016, 3, 20), 'Vernal Equinox Day'),
 (datetime.date(2016, 4, 29), 'Showa Day'),
 (datetime.date(2016, 5, 3), 'Constitution Memorial Day'),
 (datetime.date(2016, 5, 4), 'Greenery Day'),
 (datetime.date(2016, 5, 5), "Children's Day"),
 (datetime.date(2016, 7, 18), 'Marine Day'),
 (datetime.date(2016, 9, 19), 'Respect-for-the-Aged Day'),
 (datetime.date(2016, 9, 22), 'Autumnal Equinox Day'),
 (datetime.date(2016, 10, 10), 'Health and Sports Day'),
 (datetime.date(2016, 11, 3), 'Culture Day'),
 (datetime.date(2016, 11, 23), 'Labour Thanksgiving Day'),
 (datetime.date(2016, 12, 23), "The Emperor's Birthday")]

thank you for the report. will try to add this day as soon as possible.

patch committed and released on the version 0.5.0.

Great! Thank you!


Decide on a GLS style for members and packages

Casing converters are currently able to parse various case styles to others, but there should be a standard way preferred (required?) in GLS code.
@faulda ?

camelCase and PascaleCase seem to be the most common nowadays. GLS commands use spaces to separate commands where a lot of languages use commas.
lambda : dividend int divisor int { operation: dividend (divided by) divisor }
Because of that, using snake_case could make things a lot harder to read; if you're not looking too closely the spacing caused by the underscore almost looks like a space that separates 2 parameters.
lambda : theDividend int theDivisor int { operation: theDividend (divided by) theDivisor }
lambda : the_dividend int the_divisor int { operation: the_dividend (divided by) the_divisor }
My vote would be for camel or Pascale, don't have a strong preference between them.

It feels weird having either capital letters or underscores.
What if something radical like the-divided were used instead?


Add your Github Profile / Readme (Open for everyone)

Prerequisites ⚠⚠⚠
You must have completed Issue #259
Description
This is the second challenge. You will add a markdown file in directory readme-profiles named:
<github_username>.md

Add something about you and your showcases or projects. The information will be seen when you click on your stats on the home page.
Here is a reference for markdown https://github.com/subeshb1/developer-community-stats/blob/main/readme-profiles/subeshb1.md
You can also copy the content and simply replace the user's information with yours.
Steps

Fork the repository
Clone the repository you have forked (Appears in the repository section of your profile)
Checkout to a new branch. (Optional if you don't have a concept of branching)
Create a new file named <github_username>.md in readme-profiles directory.
Add some markdown with your information and show cases.
Commit the changes
Create a PR to the original repository
Here's how to do it:
Step 1: Go to Code section of forked repo an click on Pull request below the Code Button besides Compare Button
 Step 2: Make sure the following is branches are selected:

Here is a guide/lab if you haven't created any commits or  PRs:
https://subeshbhandari.com/blog/git-and-github-practical-for-beginners
If you get stuck in any step feel free to tag me and request help
PS: Feel free to star the repository and follow me :)
Outcome of this issue

Collaboration and contribution to open source
Experience continuous integration of code changes in a repository
Learn about markdown
Get more experience in creating Pull requests and reviews.

Output
Once your PR is merged you will see your profile by clicking on your card as below:

I would like to tackle this

It's open for everyone @Kodekin

Instead of creating a profile readme for each one. Can we not use the existing one by linking the Profile README.md directly. That way it will always be updated?

I am a beginner can I tackle this?

I am a beginner can I tackle this?

sure @alokprince


Feature request - remove Wikilinks [[ ]] markup

Small feature request, a new command to remove WikiLinks formatting, i.e. [[this is a link]] becomes: this is a link.

support in v1.7.5

Thx!


mockGoferScript should take any

I'll probably patch it to accept any but later may change it to require object|array|string|number|null to match filemaker's valid types. I'll change the signature of FMGofer.PerformScript's param as well if i do that.


feat(app): improve image loading experience

:pencil: Description

Display loading state for individual images prior to being loaded by the browser.

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


Set protocol (and perhaps others) is silently ignored

Version
2.9.1
Platform
Darwin kong-222.local 23.6.0 Darwin Kernel Version 23.6.0: Mon Jul 29 21:14:30 PDT 2024; root:xnu-10063.141.2~1/RELEASE_ARM64_T6000 arm64 arm Darwin
What steps will reproduce the bug?
ada_set_href(?, "unknown:", 8) -- returns true
ada_set_protocol(?, "https:", 6) -- returns true
ada_get_protocol(?) -- -- returns "unknown:"
ada_get_href(?) -- returns "unknown:"

How often does it reproduce? Is there a required condition?
Always.
What is the expected behavior?
This is a bit more complicated. I think especially the setters behave a bit undetermistic (or hard to follow) depending on what was set before or when the url was parsed. I feel that the state is not correctly updated. Perhaps the validations run in wrong place, aka in setters (e.g. if you were to change file:///blaa to<EMAIL_ADDRESS>what is the sequence of setters you need to call, pseudo:
u = ada_parse("file:///blaa")
set_protocol(u, "https:")
set_username(u, "user")
set_password(u, "pass")
set_hostname(u, "example.com")
set_pathname(u, "/")

Or vise-versa? You cannot set username or password to file:, but you can to https:. If validating during the sets then you need to know which order is right, and which parameters are required, e.g. is protocol a pre-requisite to validate set_username, and thus set_protocol should be called before set_username but then again setting protocol to file: may require clearing username and password before setting protocol. But as following shows, there is more to it, as set_protocol seems to return true but not set the protocol.
I am asking this as I try to compose urls from parameters like:
{
  protocol = "https:",
  username = "user",
  password = "pass",
  host = "example.com:1234",
  hostname = "example.com",
  port = 1234,
  pathname = "/foo/bar",
  search = "?baz",
  hash = "#quux",
}

Perhaps additional parse_structured could help on this, but it does not solve above issues fully.
What do you see instead?
Please see the "discussion" in expected behavior.
Additional information
No response

I think you have some assumptions that does not conform to the WHATWG specification. Let me explain, through for example code:

u = ada_parse("file:///blaa")

Now the valid url is file:///blaa

set_protocol(u, "https:")

This would fail because https:///blaa is not a valid URL.

set_username(u, "user")

Remember our URL is still file:///blaa. File URL's can not have usernames, since file URL's does not have hostname, but pathname. For example file://username@/blaa is not a valid URL

set_password(u, "pass")

Similar to set_username. File URLs can not have passwords.

set_hostname(u, "example.com")

Setting hostname would make the URL: file://example.com/blaa

set_pathname(u, "/")

Setting pathname would make the result file://example.com/

This would fail because https:///blaa is not a valid URL.

But it does not as explained above. The set_protocol returns true like it succeed.

Ah I see. This is clearly a bug on the set_protocol() function. The specification does not mention anything about setters returning boolean, that's our personal touch, and clearly there is a lack of test coverage there. Thanks for reporting!

Ah I see. This is clearly a bug on the set_protocol() function. The specification does not mention anything about setters returning boolean, that's our personal touch, and clearly there is a lack of test coverage there. Thanks for reporting!

I didn't test further, but I have a feeling that this may not be the only one. I was even thinking that does the validation make sense at all on setters. Perhaps just set and then people should call is_valid to check if url is really valid.

fyi: setters would never make an URL invalid by setting it as is_valid = false that is against the specification. I think we are just not returning the correct succeed value correctly.

fyi: setters would never make an URL invalid by setting it as is_valid = false that is against the specification. I think we are just not returning the correct succeed value correctly.

Yes, but then you endup with this problem that how to set structured input. You cannot create empty url and then call setters. You need to create something.

Yes, this was also mentioned in https://github.com/ada-url/ada/issues/573. URL specification does not allow us to construct URLs from scratch.

@anonrig didn't check but does the #573 mean that this does not work:
ada::url url;
url.set_protocol("https");
url.set_host("google.com");
return url.get_href();

but this may work?
ada::url url;
url.set_host("google.com");
url.set_protocol("https");
return url.get_href();

I tried this with my Lua bindings:
local ada = require "resty.ada"

local url = ada.parse("file:")
print(url:set_host("google.com"))
print(url:set_protocol("https"))
print(url:get_href()) -- outputs: https://google.com/

local url = ada.parse("file:")
print(url:set_protocol("https"))
print(url:set_host("google.com"))
print(url:get_href()) -- outputs: file://google.com/

All sets return true but results are:

@bungle Thanks for the detailed reports.


Added role Texlive

Added role Texlive which installs Texlive as per https://docs.google.com/document/d/1rYt3QbR2P9x5-Ye2Okrh1F78fPeV_uMXwAXrfsWXfu4/edit#
Probably need to change the Readme / license a little - took https://github.com/shirou/menes/tree/master/ansible/roles/texlive as a basis, but it's diverged significantly from there. It'd be nice to acknowledge that properly.

If you want to give full credit you could do some git filter-branch magic to copy the commits from https://github.com/shirou/menes/tree/master/ansible/roles/texlive

@manics - thanks - that sounds good. Are you willing to teach such magic? :)

@kennethgillen You mean git filter-branch?

From http://blogs.atlassian.com/2014/04/tear-apart-repository-git-way/ (or similar):

fork
clone
git filter-branch --subdirectory-filter ansible/roles/texlive/ -- master
push: see https://github.com/joshmoore/ansible-texlive

Happy to migrate that to an org or similar if it will help.

IRL discussion with @rleigh-dundee suggests that the Jenkins jobs will require access to the texlive /bin tools, as such we should also add these to the system's path. (Which is done perhaps via Jenkins' environment.properties file atm)

Apart from the above the role appears to successfully install texlive.

And one mroe thing,.. can you modify README to list the vars as in https://github.com/openmicroscopy/infrastructure/blob/master/ansible/roles/jenkinsslave/README.md ?

Running which tex after a logout/login:
[khgillen@infra-testpr ~]$ which tex
/opt/texlive/2015/bin/x86_64-linux/tex

One thing I've been doing in the other roles with templates is adding a .j2suffix file under template/ (tp indicate it's a jinja2 termplate file)

Waiting for a few commits from @kennethgillen. Then this can be merged to fix conflicts with #20.

AFAIK just needs a commit from @kennethgillen to fix the PATH issue

Looks good to me, thanks.

Thanks. Will merge once Travis is green.


csolution convert crashes when using attr=config files for generated component and the files is missing in the gpdsc file

Describe the bug
When using a .pdsc with a file definition for a name that does not exist in the resulting .gpdsc file, the csolution convert call crashes as it's unable to identify the version of the file.
To Reproduce

Have a .pdsc file with the following statement:
<file category="sourceC" name="foo-config.c" version="1.0.0" attr="config"/>
Have a .gpdsc that does not have any file definition for foo-config.c.
Both .pdsc and .gpdsc have a component with the same name.

Run csolution convert on a project that includes the component defining the above file.
Expected behavior
The csolution convert should not crash the application and the foo-config.c from the .pdsc should not be created in RTE since it's not defined in .gpdsc?
What is expected behavior here?
Environment (please complete the following information):

csolution
Version 2.3.0 or later
OS: windows and linux, darwin?

Additional context
None.

@Torbjorn-Svensson  thanks a lot for adding a reproducer for the crash. At the moment everyone is busy on other topics but it is understood that you do not plan to work on this issue any further.

The crash, however, should be fixed

It looks like the crash is still not fully fixed. See https://github.com/Open-CMSIS-Pack/devtools/pull/1461#issuecomment-2151923329


[Partner] Do something cool w/ Bytewax

(@awmatheson)

repo here -> https://github.com/bytewax/os-pixel-data


docs: Add webhook server implementation guide / tutorial

Fixes https://github.com/stackabletech/issues/issues/540
Preview: https://deploy-preview-561--stackable-docs.netlify.app/home/nightly/contributor/guidelines/webhook-server

This currently adds a very rough implementation guide for both conversion and mutating/validating webhooks.
At the time of writing, advanced operator-rs features (for example for CRD versioning) still need to be implemented. Relevant sections in the guideline can then be filled with more details in the future.


[BUG] Cannot get .isGM if game.users is nullish

Setup

OS: Linux Mint
Browser: Chrome
Module version: 1.0.2
Foundry version: 0.8.9
Any other modules enabled: yes

Describe the bug
Cannot get property .isGM if game.users is nullish
Screenshots

Console Log
Uncaught (in promise) TypeError: Cannot read property 'isGM' of null
    at soundscape.js:14

Hey, this is a strange bug, since it tries to get game.user.isGM, so this means that game.user was null.
Would you mind disabling all other modules to see if it's a module incompatibility?

I can't reproduce this issue anymore. Sorry and thanks :)


create approle secret ID with wrap-ttl

Looks like there is no way to create approle secret ID with wrap-ttl (create_role_secret_id)?
If yes, could you point out how it can be done?
Thanks!

It looks like you can just pass the wrap_ttl parameter to the create_role_secret_id() method at this point: https://github.com/ianunruh/hvac/blob/master/hvac/v1/init.py#L951.


Upgrade to Node 20

Same as: https://github.com/depot/build-push-action/issues/27

Thanks for flagging this @philipp-eisen! #12 should address this and has been merged.


copy: mkdir empty source directories to destination - fixes #1837

This PR simply creates empty src directories on the destination.

I'm sorry, I had to revert this in 74cbdea0ef860e8a9c77d049343d8d1fd14e36d4
Unfortunately the s.srcEmptyDirs contains all directories not just empty ones so this attempts to recreate all the directories in the sync.
This isn't incorrect, but it is inefficient and the debug message that it has created so many directories confuses the users.
So I think we need to work on making sure empty directories only get in to that variable only.  This isn't completely straight forward though!
My best idea was to turn the []string into a map[string]struct{} then add the directories the places they are added at the moment, but remove them if we ever find anything within them.


Wrong vpiTypespec of port of type struct array

When the following file is parsed:
package flash_ctrl_pkg;
   typedef struct packed {
      logic phase;
   } data_region_attr_t;

   parameter data_region_attr_t HwDataAttr[1] = '{
      '{
         phase: 1'b1
      }
   };
endpackage : flash_ctrl_pkg

module flash_mp_data_region_sel import flash_ctrl_pkg::*; (
   input data_region_attr_t region_attrs_i [1],
   output logic x
);
   assign x = region_attrs_i[0].phase;
endmodule

module top(output logic o);
   import flash_ctrl_pkg::*;
   flash_mp_data_region_sel u_hw_sel (
      .region_attrs_i(HwDataAttr),
      .x(o)
   );
endmodule

The vpiTypespec of region_attrs_i is struct_typespec, but should be the array of struct.
Part of uhdm:
    |vpiPort:
    \_port: (region_attrs_i), line:14:29, endln:14:43<EMAIL_ADDRESS>      |vpiName:region_attrs_i
      |vpiDirection:1
      |vpiHighConn:
      \_operation: , line:23:23, endln:23:33
        |vpiTypespec:
        \_struct_typespec: (flash_ctrl_pkg::data_region_attr_t), line:2:12, endln:2:18
          |vpiName:flash_ctrl_pkg::data_region_attr_t
          |vpiInstance:
          \_package: flash_ctrl_pkg (flash_ctrl_pkg::) tests/StructArrayParameterInitializedByPatternPassedAsPort/top.sv:1:1: , endln:11:28, parent:work@top
          |vpiPacked:1
          |vpiTypespecMember:
          \_typespec_member: (phase), line:3:13, endln:3:18, parent:flash_ctrl_pkg::data_region_attr_t
            |vpiName:phase
            |vpiTypespec:
            \_logic_typespec: , line:3:7, endln:3:12, parent:phase
              |vpiInstance:
              \_package: flash_ctrl_pkg (flash_ctrl_pkg::) tests/StructArrayParameterInitializedByPatternPassedAsPort/top.sv:1:1: , endln:11:28, parent:work@top
        |vpiOpType:75
        |vpiOperand:
        \_operation: , line:7:7, endln:9:8
          |vpiOpType:75
          |vpiOperand:
          \_tagged_pattern:
            |vpiPattern:
            \_constant: , line:8:17, endln:8:21
              |vpiDecompile:1'b1
              |vpiSize:1
              |BIN:1
              |vpiConstType:3
            |vpiTypespec:
            \_string_typespec: (phase), line:8:10, endln:8:15
              |vpiName:phase

It is not:
    \_logic_net: (x), id:240
      |vpiName:x
      |vpiNetType:1
    |vpiArrayNet:                   <<<< It is an array_net with a sub type struct_net
    \_array_net: (work@top.u_hw_sel.region_attrs_i), id:192<EMAIL_ADDRESS>parID:224

The piece of the tree you are showing is not relevant to the type of the net.
It is showing the parameter assigned to the port. The parameter RHS operation typespec is of type struct_typespec, that could be argued it should be of type array_typespec

Ok, it is my mistake. I meant the typespec of the operation.
The port, as well as the parameter, has the type of the array.

Fixed by #2430


Add afi safi change

Test should look for active leaf instead of only looking at the afi-safi-name

Pull Request Functional Test Report for #2368 / bda73beb5c21aac3346d5f3cedf8c21bc96c00ec
Virtual Devices

Device
Test
Test Documentation
Job
Raw Log

Arista cEOS

RT-1.23: BGP AFI SAFI OC DEFAULTS
147a354b
Log

Cisco 8000E

RT-1.23: BGP AFI SAFI OC DEFAULTS
bab17e92
Log

Cisco XRd

RT-1.23: BGP AFI SAFI OC DEFAULTS
4641caea
Log

Juniper cPTX

RT-1.23: BGP AFI SAFI OC DEFAULTS
6bb4f128
Log

Juniper ncPTX

RT-1.23: BGP AFI SAFI OC DEFAULTS
9f38d981
Log

Nokia SR Linux

RT-1.23: BGP AFI SAFI OC DEFAULTS
e816692b
Log

Openconfig Lemming

RT-1.23: BGP AFI SAFI OC DEFAULTS
ee79cb48
Log

Hardware Devices

Device
Test
Test Documentation
Raw Log

Arista 7808

RT-1.23: BGP AFI SAFI OC DEFAULTS

Cisco 8808

RT-1.23: BGP AFI SAFI OC DEFAULTS

Juniper PTX10008

RT-1.23: BGP AFI SAFI OC DEFAULTS

Nokia 7250 IXR-10e

RT-1.23: BGP AFI SAFI OC DEFAULTS

Help

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 48.7%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
1536

Relevant Lines:
3154

💛  - Coveralls


Rotating mob members results in console error after latest update

After the latest update (Jan 2022), rotating through mob members results in a console error.

Interestingly, my team members and I got this same error in Chromium Edge, Brave, and Chrome on Windows. Other team members using MacOS with Brave and Chrome did not get the console error when rotating through mob members. I'm not sure if the OS difference is actually important or just coincidental.

Oh, sorry about that, I will fix and deploy that in the next couple of minutes!

@theparticleman give your timer a refresh, everything should be working as expected

Thanks so much! The console error appears to be resolved.
One of my teammates started looking into the issue to see if he could submit a PR, but you fixed it before he finished looking into it.


delay causes site to fail to load in Edge 13

If I use any sort of delay with velocity on window.load() the whole site will not load in Edge 13.
Real-world example here: http://splash.resa.nickdimatteo.com

Needs a JSFiddle rather than a real world example so we can look into it

Closing as no fiddle.


Allowance usage per month report.

We need to create new page with report that would allowance usage for employees.
The idea is inspired by PR https://github.com/timeoff-management/application/pull/192 done by @petrvecera as part of #184.
The new page would look like Team view, but instead of calendar grid there will be a table where

rows are employees
columns are
** days deducted from allowance in current time period
** one columns per leave type with number of days used from this leave type

It is possible to filter users by departments the same way Team View page does.
It is possible to change time frame of report

change step is month
default report - current month
period of report mast start and end within single year

Report is accessible only by admin users.
Report is under new section "/reports/"
Optional:

allow exporting report into CSV file

@vpp I have the export implemented. Unfortunately my fork is no longer in sync with master. Because I have used the function for calculating each user absence summary which I made for my team view summary.
But I guess you can inspire yourself https://github.com/timeoff-management/application/compare/master...petrvecera:exporter
I guess the most important things is the excel file generator https://github.com/timeoff-management/application/compare/master...petrvecera:exporter#diff-2089c57c88d8ba290e94e218cd4b0e93R770
Some screenshots of the feature:

Multiple sheets are also supported

@petrvecera thank you! Your help is great. I will definitely bring this into master


Some time connection is lost

I use traccar on my server. I use it for tracking my dog on hunting.
On hunting we have poor signal. And some time I or dog going out from signal cover.
And when I use android app(webview) Manager Traccar some time, when I not use, a lot of time, this program on my phone and than back to this program I have old points on map.
And helping just full restart programm. On hunting that very not good.
Thanks!

So, what do you expect to see when there is no connection?

Sorry about that issue. Looks like in newest version that problem is solved.
(I am use docker image with oldest version)


Lets not require save changes twice when adding extended metadata

If I add extended metadata to a resource I need to enter content into a modal form then click "save changes", and then again click "save changes" on the list below the extended metadata entries.  Please remove the second save changes check.

@dtarb and  @Maurier I think the extended metadata editing interface should be similar to what I have implemented for file type extended metadata in composite resource. No need for the second save.


Enable link checker for organization website URLs

Motivation

When the website links of organizations are no longer working, we don't notice it
Proposed Solution

Include the website fields of urls in the link checker
Alternatives

Don't do it
User Story

As a region manager, I want to know when the URL of one of my organizations is no longer working
Additional Context

Do not forget adding it to replace_link too. See #2982

@timobrembeck @osmers
I tested this and have some feedback:

Inconsistency across user roles: As far as I know only the manager role should be able to edit organizations. With this feature other roles with access to the Broken Links can change the organization URL from the Broken Links overview, e.g. the editor role.
In the Broken Link overview you can click on the source of an URL to get redirected to the page its used in. For an organization URL I would expect it to do the same and redirect to the Organization, at least for the manager role as only they can access organizations. Currently nothing happens and there is no visual indication why it doesn't work, e.g. tooltip when hovering over it.

There is no clear indication in the UI that an URL belongs to an organization

I'm not 100% sure about this, but the URLs from the imprint behave similar, also regarding the user role that should be able to edit the imprint.
Otherwise the organization URLs do show up in the right categories (valid, invalid, etc.) and can be changed in the Broken Links page directly. Ignoring, Unignoring and Rechecking do work with bulk execution.

Inconsistency across user roles: As far as I know only the manager role should be able to edit organizations. With this feature other roles with access to the Broken Links can change the organization URL from the Broken Links overview, e.g. the editor role.

That's a very good catch. Needs to be changed for the imprint as well.


Dashboard error: 'project' operator: Failed to resolve table or column expression named 'process_create_whitelist'...

Maybe something has changed in Azure, but the guide in https://github.com/BlueTeamLabs/sentinel-attack/wiki/Sysmon-Threat-Hunting-workbook---post-deployment-configuration can no longer be followed.
Azure does not allow me to use the exact workspace name as the underlying log analytics workspace of my Sentinel instance.
My Sentinel workspace name is over 24 characters, so when I was using my workspace name it gave me an error the name must be between 3 and 24 characters.
Then I tried creating using a shorter name and it gave me an error that the name is already taken, which it actually wasn't.
Only when I used a short name and also a number in the workspace name, the custom deployment worked.
Now inside that storage account container, I'm getting errors when I try to upload the whitelist csv files. And randomly after trying a few days, it worked. I got the files uploaded, but the ATT&CK trigger overview tab still gives me the same error.
Not sure where to go from here.

Got the issue fixed.
Needed to create a new Sentinel workspace that had a shorter name.


JAX Profiling in Colab

Hi 👋 What do you think about having a JAX Profiling in Colab notebook as an add-on to the current JAX Profiling guide (https://jax.readthedocs.io/en/latest/profiling.html)?
Also, do you know how and where the data get captured in the temp Colab Compute Engine instance's Linux folder hierarchy, so that we can point TB's --logdir flag to it for reading? For example, with TF, you set such dir when instantiating a callback.

To give you an idea of what a Colab guide would look like:

Upgrade TensorFlow and the TensorBoard plugin to the latest versions:

!pip install --upgrade tensorflow tensorboard_plugin_profile

Launch TensorBoard:

%load_ext tensorboard

Import JAX and supporting APIs, including jax.profiler:

import jax
import jax.profiler
import jax.numpy as jnp
import jax.random

Launch a profiling server with a port 1234 that the TensorBoard instance can connect to:

server = jax.profiler.start_server(port=1234)

(In the non-Colab JAX profiling instructions, this step is similar to step 2: import jax.profiler and jax.profiler.start_server(9999))

Run some JAX code. Your intent is to grab its trace.

# Your JAX code
...

Start a TensorBoard server:

tensorboard --logdir=/tmp/{FOLDER}/

(In the non-Colab JAX profiling instructions, this step is step 1)
[Note: currently, it's not possible to perform the next steps, as the log files cannot be found - the web UI says INACTIVE - see my question at the top of this "Issue".]

Load TensorBoard at localhost:1234:

In the web UI, select Profile from the drop down menu in the top right
Click on the Capture Profile button.
Enter localhost:1234 in the Profile Service URL field

Capture:

Rerun the cell with the awesome JAX code
While the cell is running, press Capture and wait for the capture to complete
On the left-hand side, under Tools, click trace_viewer
(Note: the overview doesn't show anything meaningful at the moment for JAX)

Hi - thanks for the suggestion! I think that sort of documentation would be very useful. Feel free to submit a pull request!

Cheers @jakevdp. Do you know what the default temporary output folder is during JAX runs, so that we can link TB to it? PyTorch has SummaryWriter that saves logs in ./runs/, for example.

I'm not sure whether JAX has any built-in mechanism for saving intermediate outputs.

Hi ,
@8bitmp3 , thanks for the instructions. It works for me when I profiled my JAX program run on GPU. However, for profiling the programs run on TPU, it seems that some steps are required to modify. It would be awesome if Colab JAX profiling instructions specifically for TPU are provided in the future.

@akshay-jaggi
This will install it
`!add-apt-repository ppa:longsleep/golang-backports -y
!apt update
!apt install golang-go
%env GOPATH=/root/go
!apt-get install graphviz gv
!go install github.com/google/pprof@latest`
This will save the output to a png
!go tool pprof -png memory.prof

Hi,
Is there a method to export the results of the memory profiler (https://jax.readthedocs.io/en/latest/device_memory_profiling.html) to a file, e.g. csv?
Thank you!

@8bitmp3
@jakevdp @skye if it's worth revisiting, feel free to assign to @8bitmp3

Just a +1 that this would be very useful. I was also unable to profile on Colab with TPU


use erl_tar instead of system (g)tar

So here it is. Tests still run and the package still installs. With erl_tar it's not possible to set the owner so I've removed that.

@tverlaan cool! Have you tested installing using your PR? Without the ability to set the owner I worry that there will be permissions errors when actually running the release on a server?

I've tested it on 1 machine and that worked. Not sure if that is sufficient so I'll test some more.

Thanks @tverlaan - lets sit on it for a while and if we don't hear anything more, then LGTM :rocket:

Hi @johnhamelink, I got a hint from the author of debbie to use swab to set fakeroot :-)
I had to make some other changes to make the tar file more correct according to swab. It complained about the file header as long as I included directories 'usr', 'opt' and 'etc' and listed all files in erl_tar.
Anyway, it works now and I think it's pretty cool.

@tverlaan interesting! I'll give this a go :smile: If it works for me I'll merge. Thanks for your work so far by the way!

Hi @johnhamelink,
After some digging I found out that erl_tar produces slightly different tar files then the system tar. It doesn't create the directories in the tar file which causes installation errors. I think you didn't ran into this so I'm wondering if you could test that by installing the deb on a 'fresh' system? If so we need to look at fixing erl_tar or see if there is another library that has solved this already.
system tar:
./
./etc/
./etc/init/
./etc/init/exrmdeb.conf
./etc/systemd/
./etc/systemd/system/
./etc/systemd/system/multi-user.target.wants/
./etc/systemd/system/multi-user.target.wants/exrmdeb.service
./opt/
./opt/exrm_deb/

erl_tar:
etc/init/exrmdeb.conf
opt/exrm_deb/erts-7.3/bin/erl
opt/exrm_deb/erts-7.3/bin/erlc
opt/exrm_deb/erts-7.3/bin/epmd
opt/exrm_deb/erts-7.3/bin/start
opt/exrm_deb/erts-7.3/bin/heart
opt/exrm_deb/erts-7.3/bin/ct_run
opt/exrm_deb/erts-7.3/bin/run_erl
opt/exrm_deb/erts-7.3/bin/escript
opt/exrm_deb/erts-7.3/bin/erlexec

It doesn't matter if I add a directory or all files by recursively finding them because that is what erl_tar does when it sees a directory.
If I add an empty directory then swab doesn't treat it as a valid tar file so I'm unable to set fakeroot. swab is however capable of setting fakeroot on a normal tar file.
Anyway, if you're not having issues we can leave this for the time be. Otherwise we should maybe revert and create a better patch.


Fusion basic integration

Adding basic launching methods and updating fusion integration from latest Colorbleed config repository
https://github.com/Colorbleed/colorbleed-config
Basic functionality:

launchers in pype
integrating pype menu into fusion scripts
merging Colorbleed-config's fusion development
rendering locally or deadline
creating, loading, inventory

Tested on Fusion 16 (licence) and Fusion 9 (free)
Testing this PR
A. Installing Fusion's own python 3.6 interpreter into path defined in pype-config/environments/fusion.json:PYTHON36 . We are using Python 3.6.2
B. Installing PySide2 into python 3.6 for correct gui work:
As Pype is using PySide2 inside installation python 3.6 as it is explained above. Follow this step-by-step:
C:\Python\Python36\python.exe -m pip install PySide2
dependencies:
https://github.com/pypeclub/pype-config/pull/76

Hi @BigRoy could you share with me what are the basic environment variables you are using in studio. Also I am not sure if you are actually using Fusionless any more as I don't see any imports of the code in colorbleed-config. Thank you.

We did indeed drop the use for Fusionless in core itself. I might still have it scattered throughout code of our config, not sure. :)
Regarding environment, I'd have to look that up but unfortunately I am out of office for a few weeks.

Also make sure the acre branch on colorbleed repo isn't more ahead with Fusion things. That's what we are using.

Good point, thank you. No worries about environment vars. We will be copying scripts into appropriate folder with pre-launch hook.

Works. However and important point needs to be documented.
It requires python 3.6.x installation and environment variable PYTHON36 pointed to it's location. And every user must have PySide2 installed in that python36 for this to work. Same problem as with Blender and Resolve.

Are you sure the Python install needs to be local + that PySide2 needs to be local? At the very least I'm sure we are running PySide2 on the server for Fusion - and I believe Python too (but not sure...)
It does have the side-effect that it triggers the Qt UIs relatively slow as it loads Python+PySide2 over the network.

@BigRoy you are right, they don't have to be local necessarily, however the speed penalty is quite substantial in certain scenarios we encountered. Also, we are generally getting ready with pype 3.0 to run fully locally for each user....Remote workflows rule the world nowadays :)


Moved PROJECTION_*** constants from /scene to /core/shape

.. as the Frustum references them there

I believe this is not the right approach here. IMHO, Frustum.getPoints should never have been added to this class. I think it's arguably better suited to being part of the Camera class. Possibly a getter called Camera.frustumCorners.

I believe this is not the right approach here. IMHO, Frustum.getPoints should never have been added to this class. I think it's arguably better suited to being part of the Camera class. Possibly a non-API (@ignore) getter called Camera#frustumCorners.

You're totally right, I missed the frustum internally in the mentioned function even uses an instance of the camera. I'll have it done.

Thanks @mvaligursky! U rock! 🙏


fix: utilize read only provider

Summary

do not require a signer when using the vault read functions

:tada: This PR is included in version 1.17.6 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

:tada: This PR is included in version 1.17.6 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Can't generate AWS token on self hosted version deployed in AWS EC2

Describe the bug
I suppose I have some similar issues with generating AWS tokens on the self-hosted version of CanaryToken as in this issue #61.
My configuration
CanaryToken was deployed on an AWS EC2 instance in the eu-west-1 region with a public IP enabled.
As a DNS service, I use AWS Route53.
My .env files
frontend.env
# Required Settings
CANARY_PUBLIC_IP=<IP_ADDRESS>
CANARY_DOMAINS=canary.my-domain.com
CANARY_NXDOMAINS=pdf.canary.my-domain.com
LOG_FILE=frontend.log

switchboard.env
# Required Settings
CANARY_PUBLIC_DOMAIN=canary.my-domain.com
CANARY_WG_PRIVATE_KEY_SEED=<Some_random_seed>
LOG_FILE=switchboard.log

# Email Alert Settings
<EMAIL_ADDRESS>CANARY_ALERT_EMAIL_FROM_DISPLAY="Security"
CANARY_ALERT_EMAIL_SUBJECT="Alert Canary Token used"

# SMTP Required Settings
CANARY_SMTP_USERNAME=<aws_access_key_id>
CANARY_SMTP_PASSWORD=<aws_secret_access_key>
CANARY_SMTP_SERVER=email-smtp.eu-west-1.amazonaws.com
CANARY_SMTP_PORT=587

My records in Route53

Name
Type
Value

canary.my-domain.com
A
<IP_ADDRESS>

ns1.canary.my-domain.com
A
<IP_ADDRESS>

canary.my-domain.com
NS
ns1.canary.my-domain.com

pdf.canary.my-domain.com
A
<IP_ADDRESS>

pdf.canary.my-domain.com
NS
ns1.canary.my-domain.com

Tests
When I try to generate an AWS token decoy I get the next issue:

switchboard  | 2024-10-18T08:59:22+0000 [twisted.python.log#info] "<IP_ADDRESS>" - - [18/Oct/2024:08:59:22 +0000] "GET /phpinfo.php HTTP/1.0" 200 55 "-" ""
nginx        | <IP_ADDRESS> - - [18/Oct/2024:08:59:22 +0000] "GET /phpinfo.php HTTP/1.1" 200 66 "-" ""
switchboard  | 2024-10-18T09:01:21+0000 [canarytokens.channel_dns#info] Query: <IP_ADDRESS> sent <Query version.bind TXT IN>
switchboard  | 2024-10-18T09:05:41+0000 [canarytokens.channel_dns#info] Query: <IP_ADDRESS> sent <Query github.com A IN>
switchboard  | 2024-10-18T09:05:41+0000 [canarytokens.channel_dns#info] Query: <IP_ADDRESS> sent <Query github.com AAAA IN>
switchboard  | 2024-10-18T09:05:41+0000 [canarytokens.channel_dns#info] Query: <IP_ADDRESS> sent <Query github.com A IN>
switchboard  | 2024-10-18T09:05:41+0000 [canarytokens.channel_dns#info] Query: <IP_ADDRESS> sent <Query github.com AAAA IN>
switchboard  | 2024-10-18T09:09:16+0000 [canarytokens.channel_dns#info] Query: <IP_ADDRESS> sent <Query github.com A IN>
switchboard  | 2024-10-18T09:09:16+0000 [canarytokens.channel_dns#info] Query: <IP_ADDRESS> sent <Query github.com AAAA IN>
switchboard  | 2024-10-18T09:09:16+0000 [canarytokens.channel_dns#info] Query: <IP_ADDRESS> sent <Query github.com A IN>
switchboard  | 2024-10-18T09:09:16+0000 [canarytokens.channel_dns#info] Query: <IP_ADDRESS> sent <Query github.com AAAA IN>
frontend     | INFO:     <IP_ADDRESS>:60233 - "POST /d3aece8093b71007b5ccfedad91ebb11/generate HTTP/1.1" 500 Internal Server Error
redis        | 1:M 18 Oct 2024 09:10:23.546 * 1 changes in 60 seconds. Saving...
redis        | 1:M 18 Oct 2024 09:10:23.547 * Background saving started by pid 23
redis        | 23:C 18 Oct 2024 09:10:23.559 * DB saved on disk
redis        | 23:C 18 Oct 2024 09:10:23.561 * Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB
redis        | 1:M 18 Oct 2024 09:10:23.648 * Background saving terminated with success

I don't think that it is a DNS issue because can create CanaryToken for DNS:

switchboard  | 2024-10-18T09:16:53+0000 [canarytokens.channel_dns#info] Query: <IP_ADDRESS> sent <Query ns1.canary.my-domain.com AAAA IN>
switchboard  | 2024-10-18T09:16:53+0000 [canarytokens.channel_dns#info] Query: <IP_ADDRESS> sent <Query 6zr0dhc6qb3ui2fcurbstohg1.canary.my-domain.com AAAA IN>
switchboard  | 2024-10-18T09:16:53+0000 [canarytokens.channel_dns#info] Query: <IP_ADDRESS> sent <Query 6zr0dhc6qb3ui2fcurbstohg1.canary.my-domain.com MX IN>

Additional context
Add any other context about the problem here. Suggested additional information

Installed via pip or installed via github. - github
Running in virtualenv?
Running in docker? docker version? - Docker version 24.0.7
Services enabled or running?
Relevant pieces of configuration?

@OlesYudin I guess we have discussed this in another thread
You need to deploy the AWS infra for that
You can deploy this Terraform https://github.com/thinkst/canarytokens/tree/master/aws-token-infra

Yes, this issue was already discussed in #184.
You need to manually deploy infrastructure using Terraform in your AWS account and then the AWS token will work (I hope).
Thanks @Errahulaws for advice!


Use DaprChannel instead of closeable ActorProxyBuilder.

Description
This change creates a class called DaprChannel for actor communication in Dapr. It will avoid making ActorProxyBuilder a closeable class - it was odd to have a builder class that could not be disposed. Now, DaprChannel is the class where users must keep a reference and close in the end. If we decide to use HTTP instead of gRPC, the DaprChannel still holds the Client reference, making it an effective singleton.
Summary:

An instance of ActorProxyBuilder is now disposable and does not need to exist while DaprClient is being used.
DaprChannel holds the "channel" to Dapr and must be referenced while app is using Dapr Actor APIs.
DaprChannel is closeable, so users must close it after done with using Dapr Actor APIs.
DaprChannel is encourage to be a singleton in the app, creating many instances can trash the application.
DaprChannel is specific to Actor APIs because DaprClient in the regular SDKs is already closeable and must be reused.

Issue reference
We strive to have all PR being opened based on an issue, where the problem or feature have been discussed prior to implementation.
Please reference the issue this PR will close: None
Checklist
Please make sure you've completed the relevant tasks for this PR, out of the following list:

[X] Code compiles correctly
[X] Created/updated tests
[X] Extended the documentation

RELEASE NOTE: REFACTOR Created DaprChannel for actor APIs, making ActorProxyBuilder not closeable anymore.

I made ActorClient not implement the DaprClient interface anymore since we don't want to expose that method to applications but made it implement a method with same signature and delegate to DaprClient instead. Now, apps only see the close() method for ActorClient which is a more desirable surface area.

I made ActorClient not implement the DaprClient interface anymore since we don't want to expose that method to applications but made it implement a method with same signature and delegate to DaprClient instead. Now, apps only see the close() method for ActorClient which is a more desirable surface area.


Mistake

I found an error when the player has full inventory and gets the keys, then 64 and the specified number of keys will fall to the ground.

Fixed issue as of v5.0 will be available on SpigotMC and GitHub soon.


Unicode support for filenames

Currently interfaces of ImageFileReader/ImageFileWriter receive filenames in locale-specific encoding if I understand correctly. So if I have a filename in UTF-8/UTF-16 that can't be represented in this locale, I won't be able to use this file. This is a problem on Windows which doesn't use UTF-8 by default for fopen/fstream. Suggestions for IO objects that are part of ITK and use fopen/fstream:

allow users to provide filename in UTF-8 or UTF-16 and do conversion internally. On Windows ITK can convert filename to UTF-16 and use std::wstring for fopen/fstream. This won't change anything for platforms where UTF-8 is already the default encoding.
allow users to open a file on their side and pass std::istream to ITK. This might also give users the ability to use memory instead of files.

As each image IO handles files differently, getting them all to accept std::istream in addition to filename is going to be very hard, and might not even be possible for some of them.
When somebody needs special characters, they can enable UTF8 as the default code page since a few years ago. So the cost of this big refactoring is not really justified. If you are writing an application and you want it to support Unicode, then you can set the utf8 code page for the application via an API in order to not be at the mercy of the end-user.

And what about users who still use older versions of Windows (that are still supported)?

Only around 20% use older versions of Windows. That will only reduce in the future. And when you further subdivide it into regions which have need for characters outside of US-ASCII, that is an increasingly small number. However they dealt with it until, they can still do that (mostly naming files Dzenan Zukic.png instead of Dženan Zukić.png).
Don't get me wrong - I would like this fixed properly, but the cost of doing so is high and we have limited resources.


Added a method that explicitly initializes statics

Disabling Domain Reload is an experimental feature since Unity 2019.3 which helps you speed up playtesting. This feature causes static members to keep their values between runs without code changes in between, which can be problematic sometimes.
Before this commit, SteamManager would get confused when such runs occurred because s_EverInitialized did not reset to false at the start of each play mode, as described here.
https://github.com/rlabrecque/Steamworks.NET/issues/362
This PR adds a method that automatically resets the value of the static members in SteamManager to their default. They are disabled for Unity versions before 2019.x, since it uses values not documented in such releases.

Thanks again! This should end up in the new release this weekend


Fix links in readme file

This PR would also fix https://github.com/doomemacs/themes/issues/740

[] I searched the issue tracker and this hasn't been PRed before.
[ ] My changes are not on the do-not-PR list for this project.
[x] My commits conform to the git conventions.
[x] Any relevant issues or PRs have been linked to.

Thanks for the PR, but this is in our do-not-PR, and will be resolved soon.

Derp, my bad! I misread this as a PR to doomemacs/doomemacs, not doomemacs/themes. Thanks for the help!


Add Goroutine stack inspector to admin/monitor

Continues on from #19202.
Following the addition of pprof labels we can now more easily understand the relationship between a goroutine and the requests that spawn them.
This PR takes advantage of the labels and adds a few others, then provides a mechanism for the monitoring page to query the pprof goroutine profile.
The binary profile that results from this profile is immediately piped in to the google library for parsing this and then stack traces are formed for the goroutines.
If the goroutine is within a context or has been created from a goroutine within a process context it will acquire the process description labels for that process.
The goroutines are mapped with there associate pids and any that do not have an associated pid are placed in a group at the bottom as unbound.
In this way we should be able to more easily examine goroutines that have been stuck.
A manager command gitea manager processes is also provided that can export the processes (with or without stacktraces) to the command line.
Screenshots

Now it would be probably helpful to add a vuejs component around this that would allow easy filtering but I think this might represent a good starting point.

I've made substantial changes to this to hopefully make the stack trace more friendly

Now it would be probably helpful to add a vuejs component around this that would allow easy filtering but I think this might represent a good starting point.

Are you working on (or waiting for) the Vue UI? Or just merge this one?

Most of the code is gorutine and context wrapping labelling outside of modules/process. The merging and handling of the profile.Sample is unfortunate but at least means that the object tree makes some sense.
We have to do that if we want to merge in the process state in to the goroutine stacks, and we need to do that merging with the process manager locked otherwise the results are racey and you'll end up not knowing if you're seeing a goroutine leak or not.

@zeripath :point_up: one of the latest changes did confict with modules/process/manager.go - I think the last atempt to resolve did go wrong ...

one of the latest changes did confict with modules/process/manager.go - I think the last atempt to resolve did go wrong ...

I did the merge again and resolved the conflicts.

:rocket:


Updating from .NET Core 2.1 to .NET Core 3.1:  AmazonIoTDataClient Publish no longer works

Description

After an upgrade from .NET Core 2.1 to .NET Core 3.1, my C# Lambda for publishing mqtt messages no longer works and fails on the Publish Request.
Here is the code
private IAmazonIotData CreateAmazonIotDataClient()
{
            var mqttBrokerEndpoint = Environment.GetEnvironmentVariable("MQTTBroker");
            var clientConfig = new AmazonIotDataConfig { ServiceURL = mqttBrokerEndpoint };
            return new AmazonIotDataClient(clientConfig);
}

using (var iotDataClient = CreateAmazonIotDataClient())
 {
          var mqttBrokerEndpoint = Environment.GetEnvironmentVariable("MQTTBroker");
          context.Logger.LogLine($"Created an AmazonIotDataClient: MQTT Env Variable {mqttBrokerEndpoint}");
          var serviceURL = iotDataClient.Config.ServiceURL;
          context.Logger.LogLine($"AmazonIotDataClient: ServiceURL {serviceURL}");
          context.Logger.LogLine($"iotDataClient Config: ProxyHost {iotDataClient.Config.ProxyHost}");
          context.Logger.LogLine($"iotDataClient Config: ProxyPort {iotDataClient.Config.ProxyPort}");
          context.Logger.LogLine($"iotDataClient Config: AllowAutoRedirect {iotDataClient.Config.AllowAutoRedirect}");
          context.Logger.LogLine($"iotDataClient Config: AuthenticationServiceName {iotDataClient.Config.AuthenticationServiceName}");
          context.Logger.LogLine($"iotDataClient Config: Url {iotDataClient.Config.DetermineServiceURL()}");

          // Tried validating the configuration
           iotDataClient.Config.Validate();
           try
           {
                  await iotDataClient.PublishAsync(new PublishRequest
                   {
                                Topic = $"{latestMessageFromMTT.ClientID}/JobDiscussion",
                                Qos = 1,
                                Payload = new MemoryStream(
                                    Encoding.UTF8.GetBytes(JsonSerializer.Serialize(jobDiscussion)))
                            }, cancellationTokenSource.Token);
                   }
                   return new APIGatewayHttpApiV2ProxyResponse
                    {
                        StatusCode = 201,
                        Headers = CorsHeaders
                    };
               }
              catch(Exception e)
               {
                            context.Logger.LogLine($"ERROR: PublishAsync throws Exception: Type: {e.GetType()} Message: {e.ToString()}");
                            return new APIGatewayHttpApiV2ProxyResponse { StatusCode = 500, Headers = CorsHeaders };
                }

Certificates and AWS environment checked
Once I experienced this error I thoroughly checked

IoT Certificates
Route53 records
Domain Names for the apigateway
Cloudfront distribution setup

To Prove that this error was not my certs or AWS environment, I rewrote my PostJobDiscussion lambda in nodejs and it works perfectly in the same environment.
The goal is to see the MQTT messages come thru.  With the .NET 3.1 version I do not get the messages come thru but with the nodejs lambda I see the MQTT messages come thru.
Reproduction Steps

Logs
The Publish fails with the following error
ERROR: PublishAsync throws Exception: Type: System.Net.Http.HttpRequestException Message: System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner exception.
---> System.Security.Authentication.AuthenticationException: The remote certificate is invalid according to the validation procedure.
at System.Net.Security.SslStream.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, ExceptionDispatchInfo exception)
at System.Net.Security.SslStream.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslStream.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslStream.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslStream.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslStream.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslStream.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslStream.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslStream.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslStream.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslStream.PartialFrameCallback(AsyncProtocolRequest asyncRequest)
--- End of stack trace from previous location where exception was thrown ---
at System.Net.Security.SslStream.ThrowIfExceptional()
at System.Net.Security.SslStream.InternalEndProcessAuthentication(LazyAsyncResult lazyResult)
at System.Net.Security.SslStream.EndProcessAuthentication(IAsyncResult result)
at System.Net.Security.SslStream.EndAuthenticateAsClient(IAsyncResult asyncResult)
at System.Net.Security.SslStream.<>c.b__65_1(IAsyncResult iar)
at System.Threading.Tasks.TaskFactory1.FromAsyncCoreLogic(IAsyncResult iar, Func2 endFunction, Action1 endAction, Task1 promise, Boolean requiresSynchronization)
--- End of stack trace from previous location where exception was thrown ---
at System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore(Stream stream, SslClientAuthenticationOptions sslOptions, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore(Stream stream, SslClientAuthenticationOptions sslOptions, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean allowHttp2, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.GetHttpConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)
at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
at System.Net.Http.HttpClient.FinishSendAsyncUnbuffered(Task1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)    at Amazon.Runtime.HttpWebRequestMessage.GetResponseAsync(CancellationToken cancellationToken)    at Amazon.Runtime.Internal.HttpHandler1.InvokeAsync[T](IExecutionContext executionContext)
at Amazon.Runtime.Internal.Unmarshaller.InvokeAsync[T](IExecutionContext executionContext)
at Amazon.Runtime.Internal.ErrorHandler.InvokeAsync[T](IExecutionContext executionContext)
at Amazon.Runtime.Internal.ErrorHandler.InvokeAsync[T](IExecutionContext executionContext)
at Amazon.Runtime.Internal.CallbackHandler.InvokeAsync[T](IExecutionContext executionContext)
at Amazon.Runtime.Internal.EndpointDiscoveryHandler.InvokeAsync[T](IExecutionContext executionContext)
at Amazon.Runtime.Internal.EndpointDiscoveryHandler.InvokeAsync[T](IExecutionContext executionContext)
at Amazon.Runtime.Internal.CredentialsRetriever.InvokeAsync[T](IExecutionContext executionContext)
at Amazon.Runtime.Internal.RetryHandler.InvokeAsync[T](IExecutionContext executionContext)
at Amazon.Runtime.Internal.RetryHandler.InvokeAsync[T](IExecutionContext executionContext)
at Amazon.Runtime.Internal.CallbackHandler.InvokeAsync[T](IExecutionContext executionContext)
at Amazon.Runtime.Internal.CallbackHandler.InvokeAsync[T](IExecutionContext executionContext)
at Amazon.Runtime.Internal.ErrorCallbackHandler.InvokeAsync[T](IExecutionContext executionContext)
at Amazon.Runtime.Internal.MetricsHandler.InvokeAsync[T](IExecutionContext executionContext)
at Jobs.Function.PostJobDiscussion(APIGatewayProxyRequest apiGatewayProxyRequest, ILambdaContext context) in /codebuild/output/src879162451/src/api/Jobs/src/Jobs/PostJobDiscussion.cs:line 125
Environment

SDK Version: Version 3.7.5
Package Version: AWSSDK.IoTData Version <IP_ADDRESS>
OS Info:  AmazonLinux : Ubuntu:  https://github.com/aws/aws-codebuild-docker-images/tree/master/ubuntu/standard/4.0
Build Environment:  Build/Deployment workflows are run thru Codebuild using aws/codebuild/standard:4.0 which has the .net core 3.1
Targeted .NET Platform:  .NET Core 3.1

Resolution

[ ] :wave: I can/would-like-to implement a fix for this problem myself

I have gone thru the .NET Core 2.1 to 3.1 Upgrade guides.
I would like to continue to use .NET Core 3.1 for my server side lambdas but until I resolve this issue I will have to rewrite them in nodejs.
I have not been able to find anything on stackoverflow and aws forums concerning this issue.  There are several issues I troubleshooted but the certificates I am relying on are valid, active and have not expired.
I did see the open issue from Nov 2020 https://github.com/aws/aws-sdk-net/issues/1739 but I can't imagine that no one else is using .NET Core 3.1 with AWSSDK.IoTData.  In Visual Studio I clearly see the Publish method of the dataclient.

This is a :bug: bug-report

Hi @JustineAlires,
Good morning.
Thanks for opening the issue. Upon investigating at high level, looks like the code for AmazonIotDataClient is auto-generated, refer IotData. The logs shared by you clearly mentions that the remote certificate is invalid. I'm unsure if the below articles/references might help:

https://quizdeveloper.com/faq/aspdotnet-core-the-remote-certificate-is-invalid-according-to-the-validation-proc-aid1192
https://stackoverflow.com/questions/65961176/ssl-broken-with-ld-library-path-and-matlab
https://docs.aws.amazon.com/iot/latest/developerguide/server-authentication.html

Thanks,
Ashish

Visit us - aws with bigdata training to know more about AWS training

@JustineAlires Good afternoon. Just wanted to check if this is still an issue at your end.
Thanks,
Ashish


Change format_snippet to return None when it has failed to format macro call

rustfmt manually adds/removes indentation when trying to format macro def's body. This does not work when the macro body contains a macro call that rustfmt cannot format, and causes an issue like #2607 or #2770. This PR fixes it by changing the format_snippet to return None when it has failed to format the macro call in the snippet.
Closes #2607.
Closes #2770.

There's a few test failures, but r+ with those fixed

Thank you for you review! I have fixed the test failures.
N.B. rustfmt is now unable to format code block with invalid syntax macro calls, like the one in tests/target/issue-2523.rs.


go get deprecated & go install doesn't work

When I try installing ultralist on Ubuntu, I get

So I try the new install method

But while it says it's installed, it doesn't work when I type ultralist.
Please fix. Ubuntu is the most used desktop linux OS in the world. It would be great if Ultralist could be easily installed to Ubuntu.
Thanks.

📌Update: Just noticed that the repo is abandoned. So if you want this on Ubuntu here's how to do it.

Download it using wget https://github.com/gammons/ultralist/releases/download/1.7.0/ultralistlinux_amd64.tar.gz.

Extract it, cd into the directory where you extracted it, make the file executable by typing chmod +x ultralist.

Copy it into your binaries directory so that you can run from anywhere sudo cp ultralist /usr/local/bin.

You're done!


feature/redshift serverless support

Add redshift serverless support to resolve svv_schema_quota_state and svl_user_info access restrictions.

Would love to get this feature merged. Is there any way I can help out/push for it to get a review @svdimchenko?

Hello @pawelaugustyn
Would you be able to support with review?

@winglot fyi

Hi @winglot do you know the status on this review? If it's not planned in the near future I'll think alternative solutions for the issue

Hi @robertomczak, sorry for tagging you directly but I just saw you merged some PRs recently. Are you able to help merge this one too? Would be super helpful to everyone using Redshift Serverless. Thanks :)

Hi @olivermeyer no worries. Looking briefly into this PR, I wonder if identifying if Redshift is in serverless mode can be dynamic to avoid provider user wondering what switch to use? 🧐 If only difference is what data sources has to be used, I think we can try to make it transparent.
Other than that I think we are missing tests here in order to make sure that new and old functionalities are working as expected.

Thanks @robertomczak. AFAIK there's no way to determine which type of Redshift instance is being used in-session. I was hoping the version() function would show something but it doesn't.
@svdimchenko are you still willing to help with this? I'd be happy to look into it in the new year but my knowledge of Go is almost zero so I won't be very efficient.

Thank you for your contribution.

Thanks @robertomczak. AFAIK there's no way to determine which type of Redshift instance is being used in-session. I was hoping the version() function would show something but it doesn't.

I was thinking about simplifying the setup by getting rid of the is_serverless switch. After contacting AWS they suggested checking for the SYS_SERVERLESS_USAGE view (https://docs.aws.amazon.com/redshift/latest/dg/SYS_SERVERLESS_USAGE.html) which is only available on Serverless instances. The provider could do something like SELECT 1 FROM SYS_SERVERLESS_USAGE LIMIT 1, if the query goes without problems we know we run on serverless, if we get permission denied - we run on classic Redshift. The view has read permission for public so it should be available to all users on serverless.
WDYT?
Let me know if you will have time for this, otherwise, I can jump in and do the changes.

Hello
Any update about this feature ? 🙏
Thanks

Hi there. Sorry for long delay. I don't use Redshift anymore, so that will close the PR as I don't have possibility even to test it. Feel free to improve it if necessary.


Move to ESM. Replace Node-specific code.

Overview
This is a proposed fix to issue #79, with all the necessary changes made. Based on https://github.com/Hexagon/webauthn but ported back to fido2-lib directory structure and code conventions.
Changes

Ported all code to ESM.
Made all code portable between node/deno/browser. For example Buffer -> ArrayBuffer/Uint8Array
Upgraded all code to more recent standards (replaced var with letor const etc.)
Moved external (platform dependent) dependencies and utilities to a toolbox lib/toolbox.js
Deleted old commonjs entrypoint index.js - as the package is converted to module, .js files is not usable for commonjs, so it's not possible to keep it for commonjs imports.
Added build step to package.json which uses rollup to generate new commonjs entrypoint dist/main.cjs, this need to be run before publishing. This build step runs esm test before building, and cjs tests after building.
Moved fixtures/ to test/fixtures
Moved all fixture-likes in test/ to test/fixtures
100% ready for Deno, but the deno-specific files is not included now, to keep the PR as clean as possible.
Added new module keyUtils.js, which take care of conversion between different key formats (cose, jwk, pem) using jose and webcrypto.
Converted signing and hashing functions from Node Crypto to webcrypto.

New manual steps before release

Run npm run build, which test source, then build the commonjs distributable and tests, then runs the commonjs tests.

Comments

The basic interface has not changed much (if any) but this should really be released as a new major if accepted.

Added npm scripts

build
test:dist

Dependency changes
Removed npm deps

@babel/eslint-parser (not needed anymode)
eslint-plugin-vue (not needed anymore)
pvutils (not needed anymore)
bytestreamjs (not needed anymore)
cose-to-jwk (not needed anymore)
jwk-to-pem (not needed anymore)
fido2-helpers (bundled and modified, to reduce duplication)
mockery (not used?)
node-jose (not esm-compilant, replace with jose)
psl (not esm-compilant, replaced by tldts + punycode + new utility functions - validEtldPlusOne and validDomainName)
cbor (not esm-compilant, replaced by cbor-x)

Updated npm deps

sinon ^7 -> ^13
eslint ^8.7 -> ^8.13
@peculiar/webcrypto ^1.2 -> ^1.3

Added npm deps

tldts (replacement for psl)
punycode (for domain name checking, previously part of psl)
cbor-x (replacement for cbor)
jose (replacement for node-jose)
rollup (dev-dependency for building commonjs module)
@hexagon/base64 (for cross platform (node/deno) base64 operations)

Really great changes, thanks! I did a quick review and all looks good.
A few points open:

You changed the algName from "SHA256" to "SHA-256". Will this break something? I don't see this being changed elsewhere.
I would like this to be a major version bump - can you increment the major version in package.json?
Code scanning raised line 220 in lib/utils.js - this would only replace the first \r - I assume that you actually want this to be a global replace?

Glad to hear it looks ok!

It's changed where it's needed in the code, the background is that node crypto uses algorithm names without dash (https://nodejs.org/api/crypto.html#class-hash) while webcrypto includes the dash (https://nodejs.org/api/webcrypto.html#rsahashedimportparamshash)

Fixed in next commit

Readme is updated

Separate examples for require and import
Changed CI -> Node CI on badge, to prepare for Deno CI
Added --save on npm install command
Changed var to const in example implementations

Fixed in next commit. Also added CRLF-line endings to one of the pem fixtures, to make sure it works as intended.

Thanks for the awesome work - looking forward to the Deno PR 👍


[otbn] handle data sections of multiple assembly inputs

So far we supplied constants and input data only in the self-contained test assembly (e.g. here) or some wrapper assembly containing the entry point that is called by SW (e.g. here).
With EC crypto we have now the issue that we want to include constants (domain parameters) in the .data section of the lib assembly (e.g. in p384.s). This collides with having test data in the test assembly, since we directly referencing physical addresses in li and lw instructions.
Let's discuss the clean way to resolve this, e.g.:

Use a dedicated section for test data
Enable symbol references with the lw instructions
anything else

For the symbol references, If I am understanding correctly how our tooling currently works, I think it should be straight forward to enable this. I think this is currently only caught by otbn-as as invalid syntax. I think we just need to unblock this and forward the label to the gnu assembler here to make this work. On the other hand, we might want the constants to always and up at the same physical address location in dmem, regardless of whether the lib is used in the test assembly or called by Ibex SW.

@imphil
@rswarbrick

Should be handled by #6185.

This should hopefully be sorted by #6192, but I'm not going to link the issue and PR. When it's merged, @felixmiller, could you check that this works the way you expect?

@felixmiller: Is this fixed now? (I hope so, but don't want to close it without checking with you)


⚠ Jenkins Plugins Artifactory has degraded performance

In 2eb41d4, Jenkins Plugins Artifactory (https://get.jenkins.io/plugins/artifactory/) experienced degraded performance:

HTTP code: 200
Response time: 1211 ms

Resolved: Jenkins Plugins Artifactory performance has improved in 552aa7e after 12 minutes.


ppo code running error

Hello, can you take a look at the following error? Thanks.
run code experiment.py

https://github.com/labmlai/annotated_deep_learning_paper_implementations/blob/a0679ecd90b41b8e012995a6bdf095edae590b17/labml_nn/rl/game.py#L130

cv2.error: OpenCV(4.9.0) :-1: error: (-5:Bad argument) in function 'cvtColor'
Overload resolution failed:

src is not a numerical tuple
Expected Ptrcv::UMat for argument 'src'

Looks like it's not compatible with some newer version of opencv.


[Bug]: "Get Started" Button Redirects to Old Sign-Up Page on Home Page

Is there an existing issue for this?

[X] I have searched the existing issues

What happened?
On the home page, when clicking the "Get Started" button, the user is redirected to the outdated sign-up page instead of the new one. This creates confusion for users who expect the latest version. I can resolve this issue by updating the link to direct users to the new sign-up page, ensuring smooth navigation.
Additionally, I noticed that the size of the social media links can be improved. I can fix the size and enhance the overall design of the social links for a more cohesive and user-friendly appearance.
Kindly assign this issue to me under the GSSoC'24-Extd and hacktoberfest.
Add Screenshots
https://github.com/user-attachments/assets/50a1dce7-b77b-441b-96b3-a4f54b7818a6
What browsers are you seeing the problem on?
No response
Record

[X] I agree to follow this project's Code of Conduct
[X] I'm a GSSOC contributor
[X] I want to work on this issue
[X] I'm willing to provide further clarification or assistance if needed.

Hi, @mansiruhil13
https://github.com/user-attachments/assets/6928b646-23c2-4dd7-be92-8aebe59fb912
I have successfully resolved the issue where the "Get Started" button on the home page was redirecting to the old sign-up page. Now, it correctly links to the new sign-up page. Additionally, I made several improvements:

Changed the color of the home button and added hover effects for better interactivity.
Redesigned and resized the social media icons for a more polished look.
Added a "locker" button in the password section to toggle visibility, and it is now functioning perfectly.

Please review these changes and allow me to submit a pull request. Given the number of features I’ve implemented, I would also like to request an increase in the issue’s difficulty level to reflect the effort involved.

yes

yes

I request you to kindly  increase the level.

Hi, @mansiruhil13
I apologize for the delay with my pull request. As this is my first open-source project, I’m currently working through some conflicts.
I kindly request that you don’t assign this issue to anyone else or merge any related issues until I’ve resolved these conflicts.
Thank you for your understanding and support!


build: Run pytest in CI

Why tox? I was using that initially for the SDK but GHA can already run the tests against multiple python versions.

Yeah, the action isn't using tox - I was just using that to run tests locally. I can remove the file it if you think we shouldn't be doing that at all.

I think it's beneficial to have local tests work as closely as possible to CI. That's why I removed tox, since then my makefile was running the same command as GHA. It also simplifies the repo a bit. However if running tests against multiple Python versions locally is super important, then I would leave tox.


Arangod should respond with timeout if no workers become available in a grace period

Testing performance of saving docs and having the following error thrown every few thousand writes:
{ [Error: connect EADDRNOTAVAIL]
  code: 'EADDRNOTAVAIL',
  errno: 'EADDRNOTAVAIL',
  syscall: 'connect',
  request:
   { domain: null,
     _events: { response: [Object], error: [Function] },
     _maxListeners: 10,
     output: [],
     outputEncodings: [],
     writable: true,
     _last: false,
     chunkedEncoding: false,
     shouldKeepAlive: true,
     useChunkedEncodingByDefault: true,
     sendDate: false,
     _headerSent: true,
     _header: 'POST /_db/loadtest/_api/document/?collection=load HTTP/1.1\r\ncontent-type: application/json\r\ncontent-length: 169\r\nx-arango-version: 20300\r\nHost: localhost:8000\r\nConnection: keep-alive\r\n\r\n',
     _hasBody: true,
     _trailer: '',
     finished: true,
     _hangupClose: false,
     socket:
      { _connecting: false,
        _handle: null,
        _readableState: [Object],
        readable: false,
        domain: null,
        _events: [Object],
        _maxListeners: 10,
        _writableState: [Object],
        writable: false,
        allowHalfOpen: false,
        onend: [Function: socketOnEnd],
        destroyed: true,
        bytesRead: 0,
        _bytesDispatched: 0,
        _pendingData: 'POST /_db/loadtest/_api/document/?collection=load HTTP/1.1\r\ncontent-type: application/json\r\ncontent-length: 169\r\nx-arango-version: 20300\r\nHost: localhost:8000\r\nConnection: keep-alive\r\n\r\n{"id":16313,"type":9,"connections":[100,59,26,58],"positions":[{"time":"2015-06-20T10:49:32.749Z","type":9,"position":{"lat":-122.423246,"lng":37.779388,"radius":250}}]}',
        _pendingEncoding: 'utf8',
        parser: [Object],
        _httpMessage: [Circular],
        ondata: [Function: socketOnData],
        _idleNext: null,
        _idlePrev: null,
        _idleTimeout: -1 },
     connection:
      { _connecting: false,
        _handle: null,
        _readableState: [Object],
        readable: false,
        domain: null,
        _events: [Object],
        _maxListeners: 10,
        _writableState: [Object],
        writable: false,
        allowHalfOpen: false,
        onend: [Function: socketOnEnd],
        destroyed: true,
        bytesRead: 0,
        _bytesDispatched: 0,
        _pendingData: 'POST /_db/loadtest/_api/document/?collection=load HTTP/1.1\r\ncontent-type: application/json\r\ncontent-length: 169\r\nx-arango-version: 20300\r\nHost: localhost:8000\r\nConnection: keep-alive\r\n\r\n{"id":16313,"type":9,"connections":[100,59,26,58],"positions":[{"time":"2015-06-20T10:49:32.749Z","type":9,"position":{"lat":-122.423246,"lng":37.779388,"radius":250}}]}',
        _pendingEncoding: 'utf8',
        parser: [Object],
        _httpMessage: [Circular],
        ondata: [Function: socketOnData],
        _idleNext: null,
        _idlePrev: null,
        _idleTimeout: -1 },
     agent:
      { domain: null,
        _events: [Object],
        _maxListeners: 10,
        options: [Object],
        requests: {},
        sockets: [Object],
        maxSockets: 5,
        createConnection: [Function] },
     socketPath: undefined,
     method: 'POST',
     path: '/_db/loadtest/_api/document/?collection=load',
     _headers:
      { 'content-type': 'application/json',
        'content-length': 169,
        'x-arango-version': 20300,
        host: 'localhost:8000' },
     _headerNames:
      { 'content-type': 'content-type',
        'content-length': 'content-length',
        'x-arango-version': 'x-arango-version',
        host: 'Host' },
     parser:
      { _headers: [],
        _url: '',
        onHeaders: [Function: parserOnHeaders],
        onHeadersComplete: [Function: parserOnHeadersComplete],
        onBody: [Function: parserOnBody],
        onMessageComplete: [Function: parserOnMessageComplete],
        socket: [Object],
        incoming: null,
        maxHeaderPairs: 2000,
        onIncoming: [Function: parserOnIncomingClient] } } }

I believe it has something to do with no more available sockets on my machine - but thought that  {maxSockets: 5} would control that? I have changed maxSockets from 1 to 25 and keep having the same result. I see keepalive is enabled by default so assume new connections are not being fired up?
Below is the script I am using to test with:
var moment = require('moment'),
    opts = {maxSockets: 5},
    Agent = require('http').Agent;

var db = require('arangojs')({
    url: 'http://localhost:8000',
    databaseName: 'loadtest',
    agent: new Agent(opts)
});

var recs = 1000000,
    currentDoc = 0,
    type,
    start = new Date(),
    collection;

function save() {
    type = Math.round(Math.random() * 10) + 1;
    collection
        .save({
            'id': currentDoc,
            'type': type,
            'connections': [
                Math.round(Math.random() * 100) + 1,
                Math.round(Math.random() * 100) + 1,
                Math.round(Math.random() * 100) + 1,
                Math.round(Math.random() * 100) + 1
            ],
            'positions': [
                {
                    'time': new Date(),
                    'type': type,
                    'position': {'lat': -122.423246, 'lng': 37.779388, 'radius': 250}
                }
            ]
        },
        function (err, result) {
            if (err || result.error) {
                return console.error(err);
            }
            console.log('inserted ' + currentDoc + ' of ' + recs);
            if (currentDoc === recs) {
                return console.log('inserted ' + currentDoc + ' in ' + moment.utc(moment(new Date(), "DD/MM/YYYY HH:mm:ss").diff(moment(start, "DD/MM/YYYY HH:mm:ss"))).format("HH:mm:ss"));
            }
            currentDoc++;
            save();
        });
}

db.collection('load', function (err, result) {
    if (err) {
        console.error(err);
        return;
    }
    collection = result;
    save();
});

UPDATE:
Only seems to happen when durability is set to soft and the waitForSync is set to false on the collection - I assume then this is an Arangodb issue and not a driver issue? or possibly both?

This issue is also tracked in arangojs: https://github.com/arangodb/arangojs/issues/44
At this time I'm convinced the error is caused by the client, not the server.

Okay, the EADDRNOTAVAIL is definitely on the client-side as it goes away when using keep-alive (and thus enforcing the maxSockets). But the root cause seems to be that enough of the requests are getting stuck that the client runs out of sockets when using node's default behaviour of opening new sockets when all sockets are busy.
In other words: some of the requests time out (hence the ETIMEDOUT that appears when using keep-alive -- see the arangojs issue) before receiving a response from the server.
@fceller Could you look into this? Is there any reason the server might (sometimes?) forget to send a response (and thus forget to end the HTTP request) when durability is set to soft and waitForSync is false?

Just to confirm: have been using v2.5.5, busy installing 2.6 and will test again

@samuelgoldenbaum does this problem still exist in 2.7.0?

Whenever a request was received, and no worker becomes availailable in a configurable timout the request should be replied with a static answer noting that the server is busy and can't reply on time.

Appropriate HTTP error codes:
503 Service Unavailable
The server is currently unavailable (because it is overloaded or down for maintenance). Generally, this is a temporary state.
504 Gateway Timeout
The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.

@CoDEmanX probably 503 is the most appropriate one. It's not really serving as a gateway when the API or Foxx times out (except maybe in some cluster setups but that's an implementation detail).

We're pleased to anounce that ArangoDB 3.2 containing lots of improvements. One of these is a better handling when server resources are unavailable, thus closing this ticket.


Create comparison/reference for ROS users in the doc

ROS is a very common robotics system and it would be good for users to understand how XVIZ compares with it's log formats rosbag and the visualization system rviz and it's marker types.

Handled in https://github.com/uber/xviz/pull/327


Code based on Pytorch

Thanks for your contribution to unsupervised semantic segmentation. Will you provide a Pytorch version for your method?

Thanks for your reply.