update links in jsonschema to current v1.0.0 docs

we have a lot of wrong links in the jsonschema linking to old v0.15.0 paths

it would also be nice if the 'current' version also has a prefix, this will make links not break that easily
now

v0.15 -> https://woodpecker-ci.org/docs/0.15/...
v1.0 -> https://woodpecker-ci.org/docs/...
next -> https://woodpecker-ci.org/docs/next/...

desired

v0.15 -> https://woodpecker-ci.org/docs/0.15/...
v1.0 -> https://woodpecker-ci.org/docs/1.0/...
next -> https://woodpecker-ci.org/docs/next/...

https://github.com/woodpecker-ci/woodpecker/blob/e01c478066adb0d289cee5d79fb3a9260b48b9b5/docs/docusaurus.config.js#L215-L227

cc @anbraten :point_up: ?

Mhh gen json Schema of golang types ?
Saw a package for it last week if there is any interest

@gedw99 if you know the link again just comment it here :)


Incorrect profile information

Seems like the statistics for each user in the profile page are the same for every user. Not sure if this is just a mock-up?
JongMaiHUB account

My own account

Now it just a mock-up. Work in progress. Thank you for reporting.

I implement it already


Does not work well with SVG

It seems that draggabilly does not work well with svg elements.

Thanks for reporting this. I'm closing this issue as a duplicate of #59


Cant run program

Looks like you don't have yarn installed. " npm install --global yarn " in terminal first.


[oikos] Delete Hereditas from _journals.tab

The journal is now published by Springer und BioMedCentral: http://hereditasjournal.biomedcentral.com/
For the publication history see http://dispatch.opac.d-nb.de/DB=1.1/SRT=YOP/CMD?ACT=SRCHA&IKT=8506&TRM=2092962-6

Thanks!


Okio is 'DDOS' my server

Hi.
I'm using the last version of the OkHttp. My team have warned me that was being made more than 1,500 requests per seconds from Okio. I've revised the code but I can't find anything wrong. I've one request when the app starts.
I think it's a problem of the Okio. I've added the Crashlytics to warn errors, well, I've found this:
java.lang.RuntimeException: An error occured while executing doInBackground()
   at android.os.AsyncTask$3.done(AsyncTask.java:299)
   at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
   at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
   at java.util.concurrent.FutureTask.run(FutureTask.java:239)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
   at java.lang.Thread.run(Thread.java:841)
Caused by: java.lang.ArrayIndexOutOfBoundsException: size=0 offset=0 byteCount=1
   at okio.Util.checkOffsetAndCount(Util.java:29)
   at okio.Buffer.getByte(Buffer.java:294)
   at okio.RealBufferedSource.readHexadecimalUnsignedLong(RealBufferedSource.java:269)
   at com.squareup.okhttp.internal.http.HttpConnection$ChunkedSource.readChunkSize(HttpConnection.java:451)
   at com.squareup.okhttp.internal.http.HttpConnection$ChunkedSource.read(HttpConnection.java:432)
   at okio.RealBufferedSource.read(RealBufferedSource.java:50)
   at okio.RealBufferedSource.exhausted(RealBufferedSource.java:60)
   at okio.InflaterSource.refill(InflaterSource.java:101)
   at okio.InflaterSource.read(InflaterSource.java:62)
   at okio.GzipSource.read(GzipSource.java:80)
   at okio.Buffer.writeAll(Buffer.java:819)
   at okio.RealBufferedSource.readByteArray(RealBufferedSource.java:92)
   at com.squareup.okhttp.ResponseBody.bytes(ResponseBody.java:57)
   at com.squareup.okhttp.ResponseBody.string(ResponseBody.java:83)
   at ...
   at android.os.AsyncTask$2.call(AsyncTask.java:287)
   at java.util.concurrent.FutureTask.run(FutureTask.java:234)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
   at java.lang.Thread.run(Thread.java:841)

Does your code automatically retry HTTP requests that fail with a RuntimeException? That's likely to be what's causing the amplification attack.
The ArrayIndexOutOfBoundsException bug is fixed. I'll cut an Okio release very soon. In the interim, you could use a snapshot build.

My code doesn't retry when the request fail.

Could it be related with request retrying on connection failure? You can test if setting OkHtttpClient.setRetryOnConnectionFailure(false).

Unlikely that this is being classified as a connection failure.

If you can provide a test case, that would be helpful. We already have a fix for the underlying exception, so I don't think there's further action to take here.

Well, the server notify that return 200 (OK) on every request. I removed the OKHttp for this request because this is applied on a production app. I'll return with OkHttp when this issue is gone.

@Daniel setRetryOnConnectionFailure not working :/


Use local storage for user configuration

Is your feature request related to a problem? Please describe.
All user configuration of the UI is lost on reload or after closing the window (e.g. which submissions to show in grading view).
Describe the solution you'd like
Specific options should be saved in local storage and initialized when the window is displayed after reloading.

Basic features have been implemented. More advanced features (e.g. storing data grid config) should be addressed in a separate issue.


Pass connection_id in http trigger

closes: https://github.com/astronomer/astronomer-providers/issues/895

We may need to address the mypy issue on a separate PR. It seems to be coming from Microsoft wasb hook


Missing support for detect 7 in a new matching version

Hello,
BlackDuck Detect version 7.0.0 was released, but we cannot use it with the extension.
(Unless I'm mistaken and there is a way?)
Release notes:
https://synopsys.atlassian.net/wiki/spaces/INTDOCS/pages/642351242/Releases+Notes
Thanks

7.1.0 is now out and with it .NET 5 support.
Add me to the list of people who hopes they are mistaken that 7.x can't be used in this ADO task.

With the task version as 'SynopsysDetectTask@6' and the DetectVersion as 7.1.0, I see the scan is being performed using the version specified. This should have been achievable using "latest' as detect version but unfortunately that does not work.

Detect is now at version 7.3.0 and yet still no version 7 of the Azure Devops task for version 7..

The version of task support v7 of detect scanner.

Yes, apparently the task has been updated and now supports 7.* but it looks like Synopsys is not checking these issues or engaging here. Still, thanks for updating.


html-tidy: 5.2.0 -> 5.4.0

Motivation for this change
new upstream release
Things done
Please check what applies. Note that these are not hard requirements but mereley serve as information for reviewers.

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

[ ] NixOS
[x] macOS
[ ] Linux

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[ ] Fits CONTRIBUTING.md.

Thanks!


Set Up Continuous Integration

Probably use Github Actions, see https://docs.github.com/en/actions/learn-github-actions/introduction-to-github-actions. Also probably want to set up an action to build documentation automatically.

Set up action, but Docker building and running isn't quite working yet.

Resolved by 007a13ed4216385884c738d5efed7f8f62fa669a


Working sample of Authorization code grant flow?

Can amazaon provide an sample of Authorization code grant flow?
I tried to use google to login Cognito User Pool but token endpoint returns 'invalid_client'
When I returned client id and client secret of google in header and encrypted with base64, the endpoint returned "internal error" error message.
I am stumped here. Thanks

@railsstudent  Hi, I think you probably gave incorrect cognito app client id which causes 'invalid_client'.
I just reproduced your steps and get the tokens successfully using Postman.
The steps:

create a app client without client secret in Cognito User Pool, and enable Google as an identity provider and enable code grant flow; (If the client was issued a secret, the client must pass its client_id and client_secret in the authorization header through Basic HTTP authorization. The secret is Basic Base64Encode(client_id:client_secret).) It is in our doc: http://docs.aws.amazon.com/cognito/latest/developerguide/token-endpoint.html

Go to the hosted UI (/oauth2/authorize?response_type=code&client_id=********&redirect_uri=https://www.amazon.com), and click "log in with Google", I get redirected to amazon website. In the callback url, I get the code.

Go to postman,
make a post request: URL is: /oauth2/token
Header:
[{"key":"Content-Type","value":"application/x-www-form-urlencoded"}]

Body: remember to select x-www-form-urlencoded: and put the following,
[{"key":"grant_type","value":"authorization_code"},{"key":"client_id","value":""},{"key":"redirect_uri","value":"https://www.amazon.com"},{"key":"code","value":""}]
Then click send request, you will get id_token, access_token and refresh_token.

I got authorization code grant flow working in my angularjs app.
When creating client app in user pool, I forgot to uncheck generate client secret checkbox.
I create a new client app with no secret key and get the code grant flow working.
Thank you for your help.   The above steps should be included the sample app if not in the Amazon documentation.

@railsstudent  Glad it works! Thanks a lot for your suggestion, and I will include this part in our sample app doc.

@yuntuowang @railsstudent I am saving facebook user into userpool using auth SDK and able to redirect to it. But I want to see the the current logged in user on the redirect page.Is it possible?
If so, which method I have to use?

After Successfully login with GOOGLE plus app  a user identity is creatin my identity pool after that my own custom ui page is reloading properly see below

when am click continue with google  it showing

I have problem with post request authentification while trying to run the code I get error invalide request does anyone know how I could solve this problem, I get this error { error: 'invalid_request' }
const  dat = {
'grant_type': 'authorization_code',
          'code':code ,
           "redirect_uri" : redirect
           };

const URLSearchParams = Object.keys(dat).map((key) => {
return encodeURIComponent(key) + '=' + encodeURIComponent(dat[key]);
}).join('&');
fetch('https://polarremote.com/v2/oauth2/token',
{
method: 'POST',
headers: {
'Authorization':Basic ${creds},
'Content-Type': 'application/x-www-form-urlencoded',
 'Accept':'application/json; charset=utf-8'

},
data: URLSearchParams
}).then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});

Hi @tawfikbougerba, you can see the error "invalid_request" cause of many reasons.
Can you double check the detailed steps I posted earlier to make sure the POST parameters are exactly correct?
Also, make sure the app client settings on Cognito console page is all consistent, e.g., make sure you have enabled "authorization_code" flow.

@yuntuowang Hi, I have followed the steps above to ensure all my parameters are exactly correct, and my app client does not have a secret, but am still getting 'invalid_request' error.
Is it possible to have http://localhost:4000 as the redirect uri? Or does this have to be https? If it has to be https how is this supposed to be tested in development?

@yuntuowang nvm, the issue was actually that axios was not converting the parameter data from JSON to a query string before sending the request. Changing it to a query string manually fixed the issue

Hi @declan4, glad it worked!!

Hi @yuntuowang
I'm having issue with authorization code flow while trying to marry cognito with spring-security-oauth2
When I exchange code to access token  I get 400, "invalid_client" error.
I'm using Cognito User Poll as an identity provider.
Manual try  with Postman says the same.
My configuration is:

Can I see any logs from Cognito somewhere about what is happening?

Hi @DmytroRybka, you cannot see logs from Cognito. "Invalid_client" error means your client setting has some problems. As I can tell, your callback url is invalid. We don't support HTTP protocol, so you need to use HTTPS. And we also don't recommend your callback url containing "localhost".
You also need to set "sign out URLs" correctly.
For scopes, make sure your setting on console is exactly same as in your code configuration.
Thanks.

Hi,
Thanks for the idea  with https but unfortunately still getting the same error. I changed to use self signed certificate. The issue is that "implicit flow" works for me just fine.  The only issue is when I use authorization code and try to exchange code for access token.  Theoretically should not be a difference between both flow handling. Do you think I Self signed might be an issue?

Hi @DmytroRybka, I don't think Self signed is an issue.
When you use authorization code grant flow, can you successfully get code parameter in the callback url?
And then you see "invalid_client" error when SDK try to use this code to exchange for tokens?
If yes, can you reproduce this error and tell me which region are you using our service, the timestamp(which minute), your user pool id and your client id. Then I can pull the log for you to see what happened. Thanks!

curl -X POST -H "Authorization: Basic c2E***XE1a2tqZ2M=" -H "Content-Type: application/x-www-form-urlencoded" -d '{ "grant_type":"authorization_code", "redirect_uri":"https://www.google.com", "code":"801c738e-f7c6-4bc3-8409e4", "client_id":"sa0adikbpbdebakl79" }' https://mycompany.auth.us-east-2.amazoncognito.com/oauth2/token
Can anybody tell what's wrong with the above command? I'm getting {"error":"invalid_request"}.

Hi @sunsoori, "invalid_request" usually means the parameters you put in the command is inconsistent with the app client settings you have on cognito console. Can you double check those are correct?

hi @yuntuowang Thanks for the response. apparently I have to do like this:  -H "Content-Type: 'application/x-www-form-urlencoded'" and single quote within double quote.
But now, I'm getting 405 Method not allowed. Any thoughts?
 Or where do I create my app client?
I have created a project on Mobile Hub, but I do not know what is this client_id. Do I get it from the aws_config.js file?

Hi @SimoneMSR, you need to go to Cognito console to create a user pool and create an app client there. At the client settings tab, you can set all the fields. The hosted UI URL will be constructed from the app client settings. It looks like: https://.auth.us-east-1.amazoncognito.com/oauth2/authorize?response_type=token&client_id=***&redirect_uri=https://www.amazon.com
If you use the authorization code grant flow, you will get refreshToken using this SDK.
Please refer to following doc: https://docs.aws.amazon.com/cognito/latest/developerguide/token-endpoint.html
https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-ux.html
You can find more resources too on Cognito doc.

Why is cognito NOT having "Resource Owner Password Credentials Grant" flow?

Hi @sunsoori, I will make this as a feature request on behalf of you. Thanks!

Thankyou so much. Would you mind telling how long it usually takes, for a feature to be released after making the request?

Hi @sunsoori, at this point, it is hard to comment on the timeline. But we will take this feature request in our queue for sure. Thanks!

Thank you for the reply @yuntuowang  . But now facebook tells me that the URL is not included in the domains. I used https://CLIENT-APP-DOMAIN.auth.eu-west-1.amazoncognito.com. Where am I wrong?
I cannot use  https://CLIENT-APP-DOMAIN.auth.eu-west-1.amazoncognito.com/oauth2 as domain in Facebook...

There is a field called "redirect url" in Facebook setting, you need to put something like this: https://your-domain-prefix.auth.eu-west-1.amazoncognito.com/oauth2/idpresponse

Done!
By the way I had to add a mapping on the cognito pool, a mapping from the email facebook attribute so the email in the user pool, otherwise in the callback url I would have got an error!
Thank you @yuntuowang , this is pretty nice that you are here, let me feel not alone!

I'm unable to get a token from cognito oauth2/token endpoint after getting the authorization code successfully. I'm using an app client with a client secret.
request:
curl -X POST \
https://domain.auth.us-east-1.amazoncognito.com/oauth2/token \
-H 'Authorization: Basic  xxxxxxxxx(base64 of clientId:clientSecret)' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'grant_type=authorization_code&client_id=xxxxxxxx&code=xxxxx-
xxxx-4xxaf7-xx-d5497d5e000e&redirect_uri=https://www.example.com'

Furthermore I'm using authorization code grant and implicit grant for the allowed oauth flows and I was able to get the token when using the implicit grant.
my auth request:
https://domain.auth.us-east-1.amazoncognito.com/oauth2/authorize?response_type=code&client_id=xxxxxxxxxx&redirect_uri=https://www.example.com.&state=STATE&scope=openid+phone+email+profile+aws.cognito.signin.user.admin
Please let me know if I'm doing anything stupid here.

Hi @YasithLokuge, can you double check your scope setting under your app client setting? They must be consistent as "openid+phone+email+profile+aws.cognito.signin.user.admin".
If they are consistent, and token endpoint still doesn't work for you, can you send me an email about your UserpoolId, clientId, AWS account Id and the timestamp which you had this error(better to minute)?
My email address is<EMAIL_ADDRESS>Thanks a lot!

Hi @yuntuowang, Requested details have been sent via email. Thanks!

Through the email discussion with @YasithLokuge, implicit grant flow and authorization code grant flow works for him. Also, /oauth2/token endpoint works for him too.

I am getting an invalid client id error trading authorization code for token even though I can't find anything wrong.
I have triple checked that the client id I am using is the one on my App Client Settings page (I only have one) and all identity providers are enabled (in my case, cognito identity pool and facebook). I have both Authorization Code Grant and Implicit Grant both enabled as well as all scopes enabled.
I have a client secret, have triple checked that value is correct, and I am using it and the client id to form the "Authentication: Basic (base64 encoded value of clientid:clientsecret) and adding this header, in addition to the Content-Type x-www-form-urlencoded.
My code to create the base64 hash:
client_id=settings.COGNITO_CLIENT_APP_ID
secret = settings.COGNITO_CLIENT_SECRET
secret_token = client_id + ":" + secret
encode_string = base64.b64encode(secret_token.encode())
hash = base64.b64encode(encode_string).decode("utf-8")
This is what the request looks like in postman:

Please advise, I do not see any reason this should not work.

@yuntuowang My access token doesn't work in API gateway but my Id token works. Any reason? I've attached a cognito user pool as an authorizer to one of the API in the API gateway.

is there a way to set the expiration time for access toekns in cognito? I want to set it to NEVER EXPIRE

Hi @sunsoori , no way to set access token and id token to other expiration time. Their valid time is one hour. However, you can set the expiration time for refresh token when you create an app client on Cognito user pool console/CLI.
Please refer here:
https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity-providers.html

First off -> Super Special Thanks to Crystal (@yuntuowang) for her awesome contributions to this thread!
Now for the journey and headaches we experienced  and lessons learned in the first steps of implementing this our Serverless Web Application that will use S3 static pages, Cognito Login UI and Application Gateway with Lambda Functions to talk to S3 and RDS.
We are in the beginning stages of this so please excuse any obvious errors and politely correct them as we are still learning also.  One HUGE frustration was that the Amazon Engineers seem to be blessing Angular, React and Vue in their examples (especially with Amplify docs - which we were tempted to use because some older AWS libraries are on the way out) without considering more conventional approaches like jQuery (which we use extensively).   So finding actual examples of how to do this has been a PAIN!
Small RANT: We often feel that Amazon functionality is presented like a minimum of five (5) HUGE boxes of Legos form different kits without any final instructions of what they will make.  As we route around the box of functionality, we see a lot of really cool pieces, but no real picture of how to connect them together to get to the final goals you have. The result has been a LOT of Dead Ends, or very late discovery that other functionality that is easier to use (like Cognito UI) but also somewhat of a pain to understand the requirements for it.  I hope someone from Amazon sees this and takes initiative to improve it across all their documentation. (AWS docs often reads like meeting notes for a meeting we were never invited to and the people who wrote it understand completely).
That all being said - I wanted to share what we have learned after quite a few hours of testing with limited success in the hopes that it helps others trying to implement non-Angular/React/Vue/bla/bla/bla approaches.
** ---- The LOGIN URL ----**
https://>>yourDomain<<.auth.us-east-1.amazoncognito.com/login?response_type=code&client_id=>>yourClientId<<&redirect_uri=>>yourRedirectURLEndpoint<<
yourDomain = obviously your your application root domain name
yourClientId = your specific App Client Id that was created when you defined the App Client
-- NOTE: Web Apps do NOT require a App Client Secret ID, and they are NOT created by default.
response_type = code
-- NOTE: This can be either "code" or "id_token" - the "id_token" produces the one (1) hour limited token directly, the id_token does NOT include a refresh_token!  If you want to obtain the refresh_token, you must request the "code" response_type to use it later. (keep reading)
redirect_uri  = Callback URL in your App Client Settings
-- NOTE: Notice the "i" not "redirect_url" - this is MUST be the EXACT SAME as the Callback URL in your App Client Settings - it MUST ALSO be an HTTPS endpoint!
As a side note: on the App Client Settings - we flagged Authorization Code Grant and Implicit Grant as well as openid (we did not fully debug - but these seem to follow the advice of others).
Once you have the LOGIN URL properly configured - you will get a Login Screen from Cognito when you go to it in your Browser.  It works as expected.  If you get an error on the login screen (or a completely blank screen), it is likely a problem with the format of your LOGIN URL and/or your settings.  Recheck everything -- especially the redirect_uri as it is often overlooked for both the variable name and correct and value.
---- Using the "code" Response to get a Refresh Token ----
Since our application has a goal of being used LONGER than one (1) hour for users, the id_token is not useful in this scenario.  To get around this we discovered we needed the "code" instead and then use that to obtain the refreh_token by making a call to the following URL:
` https://>>yourDomain<<.auth.us-east-1.amazoncognito.com/oauth2/token
BUT the "code" that comes back has a few "quirks" you need to be aware of.

I read somewhere that the "code" returned is only valid for five (5) minutes.  This may or may not be the case - Amazon can better confirm this.  If this is the case, it would explain a lot of problems we were possibly having while trying to debug other areas of this transaction - when the darn thing was expired and not going to work anyway. (sigh).

The "code" can apparently ONLY BE USED ONCE (1x) to request the oatuh/token endpoint!  We have confirmed this repeatedly using both live testing and stand alone testing via Postman (a cool app if you have not tried it - it saved our bacon on figuring this out!).

---- THE AJAX REQUEST via jQuery ----
Again, I know Angular/React/Vue are apparently what the hip kids are using these days, but we prefer the old-reliable jQuery for most of our apps (and I think a bunch of you still do also).
Assuming you have jQuery loaded properly - the AJAX request is pretty simple:

Helper Function for extracting "code" from the Resulting URL
function getQueryVariable(variable) {
var query = window.location.search.substring(1);
var vars = query.split('&');
for (var i = 0; i < vars.length; i++) {
var pair = vars[i].split('=');
if (decodeURIComponent(pair[0]) == variable) {
return decodeURIComponent(pair[1]);
}
}
console.log('Query variable %s not found', variable);
}
Extract the 'code' using the helper function, set to 'cognito_code' variable
cognito_code = getQueryVariable('code');
AJAX Body Parameters
var bodyParams = {
grant_type: 'authorization_code',
client_id : '>>yourClientId<<',
redirect_uri : '>>yourRedirectURLEndpoint<<',
code : cognito_code
};
AJAX Request
$.ajax({
url: 'https://>>yourDomain<<.auth.us-east-1.amazoncognito.com/oauth2/token',
dataType: 'json',
type: 'POST',
data: bodyParams,
success: function (dataObj) {
console.log('SUCCESSFUL REFRESH REQUEST!');
console.log(JSON.stringify(dataObj));
},
error: function (request, status, err) {
console.log("got to the error!" + JSON.stringify(status) + ' --> '+JSON.stringify(err));
}
});

NOTE: dataType = 'json' -- IF you put in 'application/json' you will not get a 'success' event - it will result in a 'parseError' and defer to statusCode for the handling.  (found this out the hard way).  So to our surprise a simple 'json' dataType was all that was required to properly handle the 'success' event.
ALSO - you will read in the docs that "Headers" are required. Specifically "Authorization" = "Basic : and "Content-Type" = "application/x-www-form-urlencoded"
We FOUND THAT THIS WAS NOT NECESSARY OR REQUIRED for applications that DO NOT have a secret_id defined for the App Client! (this was a significant point of confusion and testing to figure out).
The ONLY THING that was required was the BODY of the AJAX Request to be setup properly with the request variables and values as per the example above.
THE RESULT of the above call will produce an Object - should look like the following:

{
"id_token":".....",
"access_token":".....",
"refresh_token":".....",
"expires_in":3600,
"token_type": "Bearer"
}

I hope that this post was well received and useful to anyone trying to also figure this out.  We have more to do with this, but this is a milestone that we achieved to get this "basic" thing talking with Cognito... Now on to the next steps and more testing....

Hi,
My code execution goes like below,
var auth = new AWSCognito.CognitoIdentityServiceProvider.CognitoAuth(authData);
var curUrl = window.location.href;
auth .parseCognitoWebResponse(curUrl);
auth .getSession();
I am able to see the login screen, once I enter username and password and click the sign in button,
the  control goes to auth.userhandler onFailure method.
what might be the problem? How can I check?
Could you please help?
Thank you!

Hi @Elayaraja-Dhanapal, are you using the newest version of this Auth SDK?
Currently Auth SDK doesn't depend on aws-sdk anymore.
We use this way to initialize now:
var auth = new AmazonCognitoIdentity.CognitoAuth(authData);
Please see the sample to see more details.
https://github.com/aws/amazon-cognito-auth-js/tree/master/sample
Also, when it went to auth.userhandler.onFailure(), what error message you saw on the login screen?? You can debug from there. You may have some settings about app client not correct.

Hi @Crystal Wang, thank you for the quick response and solution.
I took the latest file and updated the method according to your comments.
After entering credentials, and hitting login button, the page is loaded with the below URL,
https:///onelogin.html?code=1eadf067-1797-4e7e-9742-39273a931cdb&state=oewSwop59scqesBJrqIndXLqNKRJnUPC
The page reloads indefinitely and the code and state values are changing with the indefinite redirectURL calls.
There is not error coming from the auth.userhandler -> onFailure call. I see it as blank.
Could you please provide me the working example for the same?
If setting and getting the state parameter included  will help me a lot!
Thank you in advance!

update:
https:///onelogin.html?code=1eadf067-1797-4e7e-9742-39273a931cdb&state=oewSwop59scqesBJrqIndXLqNKRJnUPC

Hello, @Elayaraja-Dhanapal, what do you mean "you set it blank"? You mean you set the onFailure() as blank?
The working sample is https://github.com/aws/amazon-cognito-auth-js/blob/master/sample/index.html
Setting and getting state parameter is supported in this sample too. Many other developers including me use it and works well. Can you carefully read it and put your own value in the value holder and try? Cause it is really hard for me to help me debug at this point. If you directly download the sample and follow the instruction to use it, it will work.

Hi @Crystal Wang,
Once again, thank you for the quick response!
What I meant was that the onFailure(err), the err or exception received
through the argument is empty. So nothing is displayed on the console.
It is working fine in Chrome browser but the problem actually is in Mozilla
Firefox browser.
Strange :-(
I will take a look in the sample code on setting and getting the state
parameter. thank you!
On Mon 14 May, 2018, 12:03 AM Crystal Wang<EMAIL_ADDRESS>wrote:

Hello, @Elayaraja-Dhanapal https://github.com/Elayaraja-Dhanapal, what
do you mean "you set it blank"? You mean you set the onFailure() as blank?
The working sample is
https://github.com/aws/amazon-cognito-auth-js/blob/master/sample/index.html
Setting and getting state parameter is supported in this sample too. Many
other developers including me use it and works well. Can you carefully read
it and put your own value in the value holder and try? Cause it is really
hard for me to help me debug at this point. If you directly download the
sample and follow the instruction to use it, it will work.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/aws/amazon-cognito-auth-js/issues/52#issuecomment-388646673,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AUSeBmqy5tULDWV9RDmz03uZcasDlTmxks5tyHxigaJpZM4Q48aP
.

Hi @Elayaraja-Dhanapal, I see. Let me if you still cannot make the Firefox working. Thanks!!

Hi @yuntuowang, I am still not able to make it work in Firefox. However the code works fine in Chrome and IE (with polyfil).
Please find the details below,

Onload open login screen

code snippet in login.js called onload!
tokenScopesArray = ['email', 'openid'];
Other authData details are populated from the json file.
var auth = new AmazonCognitoIdentity.CognitoAuth(authData);
auth.userhandler = {
onSuccess: function(result) {
signedIn(result);
},
onFailure: function(err) {
console.log("Error!" + err); //err value is coming as empty.
}
};
auth.useCodeGrantFlow();
auth.parseCognitoWebResponse(curUrl);
auth.getSession();

After I enter the cognito username and password,
The console is displayed with Error!

I see that in firefox (version 52.8.0) continuously reloading with below URL with 302 code,

"https://siteURL/onelogin.html?code=0c597415-d3f2-4df0-ad46-ef428dc5b0b8&state=XgujViE6Vy0BrRdjxYqu2PTiNw6C1L1W"
"https://siteURL?code=59fce4fb-b9af-4f18-8bc3-d01c08f81340&state=yVmxMEAwltBADpXnFJMER3cv7wJcvhYw"
cookies values remain the same!
Could you please help me to solve it?
Thank you!

Hi Crystal Wang,
In Firefox the issue is still there, however if I add a delay in launchURL
method on calling window.open, it works like a charm.
But I think this is not the actual fix.
For every one hour, the RefreshToken will be expired and I need to get the
new RefreshToken.
I am using to aws auth as well as indentity js files. But when used
together CognitoAuth is not working.
I get this error --> TypeError: AmazonCognitoIdentity.CognitoAuth is not a
constructor
On Mon, May 14, 2018 at 12:43 AM, Crystal Wang<EMAIL_ADDRESS>wrote:

Hi @Elayaraja-Dhanapal https://github.com/Elayaraja-Dhanapal, I see.
Let me if you still cannot make the Firefox working. Thanks!!
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/aws/amazon-cognito-auth-js/issues/52#issuecomment-388649244,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AUSeBq1XY5Pt1boxwc1MQqLzLSvKC9DPks5tyIXugaJpZM4Q48aP
.

The original question asked "Can amazon provide an sample of Authorization code grant flow?"
Has anyone managed to find anything. If anyone from Amazon is listening - is there any?

@chamathsilva Thanks for your reply.
However the example you gave is for client-side  authorization. The secret tokens are transmitted over the network and stored on the client. This would be vetoed by our security group. I want to do serverside authentication - where the identity provider redirects the single use 'authorization_code' back to a lambda function. The lambda function exchanges the authorization code for the JWT containing the secret Oauth2 tokens.  The secret tokens never go to the browser. The lambda function then creates http only session cookies. Is there any guidance on how to get such a scheme working?

@yuntuowang  I am using amazon cognito user pool for login.for testing purpose how do i integrate getting code part in postman ?

can you guys upload working angular/cli sample with components for auth sdk?

I am making a post to the following request and getting:
{
"error": "invalid_request"
}
I can confirm the clientId is correct, and I have disabled the generate client secret option.
does anyone have any guidance?

@yuntuowang Hi, is the authorisation code grant with PKCE flow working?
This issue is the only thing I could find that even remotely discusses auth flow issues.
When calling the AUTHORIZE endpoint I use a random string (conforming to the requirements A-Za-z0-9) that is hashed with sha256 and base64 encoded as code_challenge.
I manage to get the code. Then when I'm trying to get the token I use that same random string  (before it's hashed and base64 encoded) as code_verifier.
My request is identical to the one in the TOKEN endpoint documentation for Exchanging an Authorization Code Grant with PKCE for Tokens. (with my valuses).
What I receive is invalid_request the first time and then invalid_grant in the subsequent requests (I take it the code is marked as used at this point).

Hello @LUS1N
I was struggling exactly the same problem as you describe above. When I first read it I was like "when I put my question down here?". It took 3 days to solve it but finally I got the tokens on my screen !
For me, the problem was code_challenge that I try to generate. Yeap, that was it. That simple.
Here I dropped a python script that I run and finally got it worked. Hope you will handle too, or allready have done !

@atagunduzalp thx! I actually have also solved it already but forgot I made this comment :)

Hi,
I am using the cognito hosted UI for login (implicit grant), I am able to login successfully. I received the access token as a hash in the callback URL. How do I extract the token from the URL and get the user details like Name and PhoneNumber?
My requestURL is as below
https:///login?response_type=token&client_id=*************&redirect_uri=http://localhost:8080/searchEvent
Redirected URL is as belwo
http://localhost:8080/searchEvent#id_token=**************&access_token=************&expires_in=3600&token_type=Bearer

@nithinhuliyappa you need to extract it from the id token using some jwt decoding library.
you can paste it in https://jwt.io/ to see what it looks like when decoded and also find a library for your language.

@LUS1N thanks for the reply.
However, the challenge is accessing the Id_token returned from aws Cognito from the backend code (node.js). Since Id_token is URL Fragment it can't be passed on to backend. Any suggestions for accessing the URL fragment from backend is appreciated!
Note: I am able to extract the URL fragment on the browser using window.location.hash

@nithinhuliyappa if you have a backend app that is capable of holding a secret - use the authorization code grant flow instead of implicit grant. If you don’t know what I’m talking about, read this - https://developer.okta.com/blog/2017/06/21/what-the-heck-is-oauth

@yuntuowang I am getting 405 method not allowed error when post request is made to outh2/token endpoint. Please help

@nithinhuliyappa if you have a backend app that is capable of holding a secret - use the authorization code grant flow instead of implicit grant. If you don’t know what I’m talking about, read this - https://developer.okta.com/blog/2017/06/21/what-the-heck-is-oauth

getting 405 method not allowed error when the request is made to the token endpoint. Any Insights on this?

@nithinhuliyappa I have zero context to be able to answer that. Try asking on stackoverflow and read this before you do https://stackoverflow.com/help/how-to-ask

@chamathsilva Thanks for your reply.
However the example you gave is for client-side authorization. The secret tokens are transmitted over the network and stored on the client. This would be vetoed by our security group. I want to do serverside authentication - where the identity provider redirects the single use 'authorization_code' back to a lambda function. The lambda function exchanges the authorization code for the JWT containing the secret Oauth2 tokens. The secret tokens never go to the browser. The lambda function then creates http only session cookies. Is there any guidance on how to get such a scheme working?

Is anyone at AWS able to give an update on this? I'm currently trying to accomplish the same thing.


Fix backticks in app template README

:speech_balloon:

Coverage remained the same at 97.391% when pulling d9404faecfa4058fa460931c13d502a073100bcb on leoj3n:patch-1 into 0d218dbbc60f78813e88c6f8f5b758d27aa79359 on donejs:master.

Thanks!


Update contents of publication confirmation email

A series of tweaks to the confirmation of publication email body which is generated for editors.

Codecov Report

Merging #664 (60b0d65) into main (3321dc4) will decrease coverage by 0.04%.
The diff coverage is 100.00%.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
@@            Coverage Diff             @@
##             main     #664      +/-   ##
==========================================
- Coverage   70.99%   70.95%   -0.04%
==========================================
  Files          23       23
  Lines         786      785       -1
  Branches       35       35
==========================================
- Hits          558      557       -1
  Misses        221      221
  Partials        7        7

Impacted Files
Coverage Δ

judgments/views/edit_judgment.py
61.66% <100.00%> (-0.32%)
:arrow_down:

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Check login request body

https://github.com/PacktPublishing/Deno-Web-Development/blob/42265eb10aeac7111a8d3e60debc3ca7c1fb0c7c/Chapter06/sections/2-adding-authentication/museums-api/src/web/index.ts#L74
Dear Alexandre santos @asantos00. Please check the previous line.
const { username, password } = await ctx.request.body().value;
I was not able to execute the login in your book, because it was a little different than the register request body value.
I think it should be something like this:
const { username, password } = await ctx.request.body({ type: "json" }).value;
Once I modified that line, login worked. I used postman to make a test.

Hi @danielgara,
Thank you so much for taking the time to note that.
It should be fixed on the next chapters and I'll quickly update the code you mentioned today!
Let me know if you have further questions.
Alexandre


[NDM] Add protocol defaults for corecheck

What does this PR do?
Add default values for protocols

Motivation
Those 2 defaults are currently implemented for Python, but not for corechecks.
We should to implement them for backward compatibility when people switch from Python to Corecheck.

Additional Notes
For authProtocol we mention in docs :
Defaults to MD5 when authKey is specified.
For privProtocol we mention in docs:
Defaults to DES when privKey is specified.
These values are defined for the python integration: integrations-core/snmp/datadog_checks/snmp/config.py at 2aeb7be0d804e74d3fd61961cd4b7776430426f5 · DataDog/integrations-core
We want to add this to the corecheck as well: datadog-agent/pkg/collector/corechecks/snmp/internal/checkconfig/config.go at main · DataDog/datadog-agent

Possible Drawbacks / Trade-offs

Describe how to test/QA your changes

Reviewer's Checklist

[ ] If known, an appropriate milestone has been selected; otherwise the Triage milestone is set.
[ ] Use the major_change label if your change either has a major impact on the code base, is impacting multiple teams or is changing important well-established internals of the Agent. This label will be use during QA to make sure each team pay extra attention to the changed behavior. For any customer facing change use a releasenote.
[ ] A release note has been added or the changelog/no-changelog label has been applied.
[ ] Changed code has automated tests for its functionality.
[ ] Adequate QA/testing plan information is provided if the qa/skip-qa label is not applied.
[ ] At least one team/.. label has been applied, indicating the team(s) that should QA this change.
[ ] If applicable, docs team has been notified or an issue has been opened on the documentation repo.
[ ] If applicable, the need-change/operator and need-change/helm labels have been applied.
[ ] If applicable, the k8s/<min-version> label, indicating the lowest Kubernetes version compatible with this feature.
[ ] If applicable, the config template has been updated.

Thanks for the review :) I tried my best to address the comments. Not sure about the second part though, will appreciate any feedback!

I reverted all changes and only added the logic for handling default protocol values


⚠ ClamAV has degraded performance

In c756dd7, ClamAV (https://spamassassin.apache.org/) experienced degraded performance:

HTTP code: 200
Response time: 445 ms

Resolved: ClamAV performance has improved in 455b5c0.


fix(gridsome): plugin detail sidebar shouldn't float to bottom on small screen widths

Perhaps a better compromise would be having it move above the main content once the screen width makes it hard to have a sidebar.

@rwfeather - Agreed - I think if out of space, it makes more sense to move above the main content. That's similar to how the Jekyll site renders today:

e.g.: https://hub.meltano.com/extractors/tap-abcfinancial

@rwfeather, @cjohnhanson, FYI, I'm bumping this up into MVP milestone because the sidebar is now static at the bottom and seems to be stuck in a too-small width.


[MNT] remove skip ci checks from CI workflow

closes #1249

I can remove the 2 "tests" commit before merging.

We can just squash.


Fixed function id stringification for generic type function calls

I hereby agree to the terms of the CLA available at: https://yandex.ru/legal/cla/?lang=en

Pull request type

Please check the type of change your PR introduces:

[x] Bugfix
[ ] Feature
[ ] Code style update (formatting, renaming)
[ ] Refactoring (no functional changes, no api changes)
[ ] Build related changes
[ ] Documentation content changes
[ ] Other (please describe):

What is the current behavior?

Issue Number: N/A
What is the new behavior?

Other information

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 39.67%. Comparing base (5eb96ca) to head (62b3c6f).

Additional details and impacted files
@@             Coverage Diff             @@
##           master    #1136       +/-   ##
===========================================
- Coverage   67.54%   39.67%   -27.87%
===========================================
  Files         296      295        -1
  Lines       29626    29491      -135
===========================================
- Hits        20011    11702     -8309
- Misses       8694    17367     +8673
+ Partials      921      422      -499

Flag
Coverage Δ

?

go-1.21.x
40.88% <100.00%> (-28.33%)
:arrow_down:

go-1.22.x
39.67% <100.00%> (-27.83%)
:arrow_down:

integration
?

macOS
?

ubuntu
39.67% <100.00%> (-0.02%)
:arrow_down:

unit
39.67% <100.00%> (-0.06%)
:arrow_down:

windows
?

ydb-23.3
?

ydb-24.1
?

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

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


Edits to docs

Removed some stuff

Docs Build status updates of commit ffeddf4:
:x: Validation status: errors
Please follow instructions here which may help to resolve issue.

File
Status
Preview URL
Details

:x:Error

Details

[Error] Cannot sync git repo to specified state. Please make sure the pull request is mergeable. Details: Git merge results in conflict, repository remote url: https://github.com/MicrosoftDocs/bingmaps-docs, working directory: W:\nrb4-s, target branch: live, target branch commit: 498aec8654694b6a0b89dbaf65fe4847170583c8, source commit: ffeddf43b6463ff9f60861dddd399c660c00542e.

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

Docs Build status updates of commit ae345f7:
:x: Validation status: errors
Please follow instructions here which may help to resolve issue.

File
Status
Preview URL
Details

:x:Error

Details

[Error] Cannot sync git repo to specified state. Please make sure the pull request is mergeable. Details: Git merge results in conflict, repository remote url: https://github.com/MicrosoftDocs/bingmaps-docs, working directory: W:\nsfk-s, target branch: live, target branch commit: 4ae3ce3b3c987a9a43e9ba1be5439aff52c9ddd3, source commit: ae345f771622d645d620606511b0280db95e1f72.

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

Docs Build status updates of commit 8b1ea4d:
:x: Validation status: errors
Please follow instructions here which may help to resolve issue.

File
Status
Preview URL
Details

:x:Error

Details

[Error] Cannot sync git repo to specified state. Please make sure the pull request is mergeable. Details: Git merge results in conflict, repository remote url: https://github.com/MicrosoftDocs/bingmaps-docs, working directory: W:\hqst-s, target branch: live, target branch commit: 73977baad96f171e3d9344f1a774b8ded2e0a822, source commit: 8b1ea4de01aa8c6746ceae1391d165e1fd8a5787.

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

Docs Build status updates of commit bd7664b:
:x: Validation status: errors
Please follow instructions here which may help to resolve issue.

File
Status
Preview URL
Details

:x:Error

Details

[Error] Cannot sync git repo to specified state. Please make sure the pull request is mergeable. Details: Git merge results in conflict, repository remote url: https://github.com/MicrosoftDocs/bingmaps-docs, working directory: W:\ydad-s, target branch: live, target branch commit: 7eb85254925935d35309a587f2e4963a1233ef53, source commit: bd7664b2178ef45be83f806946f1f518adf7aba7.

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

Docs Build status updates of commit d7d9b40:
:x: Validation status: errors
Please follow instructions here which may help to resolve issue.

File
Status
Preview URL
Details

:x:Error

Details

[Error] Cannot sync git repo to specified state. Please make sure the pull request is mergeable. Details: Git merge results in conflict, repository remote url: https://github.com/MicrosoftDocs/bingmaps-docs, working directory: W:\tx10-s, target branch: live, target branch commit: 7eb85254925935d35309a587f2e4963a1233ef53, source commit: d7d9b4072fcceae197c631438d98b4f0a36173ba.

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

Docs Build status updates of commit 529f846:
:x: Validation status: errors
Please follow instructions here which may help to resolve issue.

File
Status
Preview URL
Details

:x:Error

Details

[Error] Cannot sync git repo to specified state. Please make sure the pull request is mergeable. Details: Git merge results in conflict, repository remote url: https://github.com/MicrosoftDocs/bingmaps-docs, working directory: W:\2hel-s, target branch: live, target branch commit: 7eb85254925935d35309a587f2e4963a1233ef53, source commit: 529f846e98430fa94b524566498fb60f62880533.

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

Docs Build status updates of commit 89a3815:
:x: Validation status: errors
Please follow instructions here which may help to resolve issue.

File
Status
Preview URL
Details

:x:Error

Details

[Error] Cannot sync git repo to specified state. Please make sure the pull request is mergeable. Details: Git merge results in conflict, repository remote url: https://github.com/MicrosoftDocs/bingmaps-docs, working directory: W:\oqq1-s, target branch: live, target branch commit: 2d1f1f8089b50fa807833d0d4bac4d9b13b03aad, source commit: 89a3815de93d959042d52c3b0123ac2fb4e2d443.

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

Docs Build status updates of commit 8b09c3a:
:x: Validation status: errors
Please follow instructions here which may help to resolve issue.

File
Status
Preview URL
Details

:x:Error

Details

[Error] Cannot sync git repo to specified state. Please make sure the pull request is mergeable. Details: Git merge results in conflict, repository remote url: https://github.com/MicrosoftDocs/bingmaps-docs, working directory: W:\agnt-s, target branch: live, target branch commit: 0e1e33de21d1f0f7e947a5ca15f7bdc35bfe4653, source commit: 8b09c3a9eb0bbaa8aee617c87e33aef5cb4aa756.

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

Docs Build status updates of commit 0a8364b:
:x: Validation status: errors
Please follow instructions here which may help to resolve issue.

File
Status
Preview URL
Details

:x:Error

Details

[Error] Cannot sync git repo to specified state. Please make sure the pull request is mergeable. Details: Git merge results in conflict, repository remote url: https://github.com/MicrosoftDocs/bingmaps-docs, working directory: W:\qv1l-s, target branch: live, target branch commit: 0e1e33de21d1f0f7e947a5ca15f7bdc35bfe4653, source commit: 0a8364b17b961afd6cf8fe80d96a63477ab3fe8c.

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

Docs Build status updates of commit ff8594c:
:x: Validation status: errors
Please follow instructions here which may help to resolve issue.

File
Status
Preview URL
Details

:x:Error

Details

[Error] Cannot sync git repo to specified state. Please make sure the pull request is mergeable. Details: Git merge results in conflict, repository remote url: https://github.com/MicrosoftDocs/bingmaps-docs, working directory: W:\tlwr-s, target branch: live, target branch commit: 0e1e33de21d1f0f7e947a5ca15f7bdc35bfe4653, source commit: ff8594cb02dc4425089dff01d790f6673934f3ca.

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

Docs Build status updates of commit 6f54849:
:x: Validation status: errors
Please follow instructions here which may help to resolve issue.

File
Status
Preview URL
Details

:x:Error

Details

[Error] Cannot sync git repo to specified state. Please make sure the pull request is mergeable. Details: Git merge results in conflict, repository remote url: https://github.com/MicrosoftDocs/bingmaps-docs, working directory: W:\zn44-s, target branch: live, target branch commit: 0e1e33de21d1f0f7e947a5ca15f7bdc35bfe4653, source commit: 6f548494afcd0506b96b41872f3efe094bc54ed3.

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Antrea-1.4 connecitivity between windows pod and linux pods fails with different CNIs

Describe the bug
We have a setup with windows nodes using Antrea. linux nodes use a different CNI plugin. In this setup, with Antrea1.4, connectivity between linux pods and windows pods do not work.
There is asymmetry in the packet path. A ping from linux pods reached the windows pods. The response from the windows pod ends up being sent to antrea-gw0 and then gets SNATed to the host IP.
This behavior looks happen because table70 of openflow pipeline sets the destination mac address of the packet as antrea-gw0 mac for the podCIDR of linux node. But for podCIDR of other windows nodes, it sets it as  the mac address of the physical interface of the other windows nodes.
e.g:
# antrea-gw0 mac when dst podcidr exists on a linux node.
 cookie=0x2020000000000, duration=750366.615s, table=L3Forwarding, n_packets=2736210, n_bytes=222875530, priority=200,ip,nw_dst=<IP_ADDRESS>/24 actions=mod_dl_dst:00:15:5d:5b:84:03,resubmit(,L2Forwarding)

# remote windows node mac
 cookie=0x2020000000000, duration=750366.615s, table=L3Forwarding, n_packets=205, n_bytes=15422, priority=200,ip,nw_dst=<IP_ADDRESS>/24 actions=mod_dl_dst:00:50:56:82:64:50,resubmit(,L2Forwarding)

Relevent ofproto/trace for failure case
PS C:\antrea> ovs-dpctl show
2021-12-02T18:03:39Z|00001|dpif_netlink|INFO|The kernel module does not support meters.
system@ovs-system:
  lookups: hit:115763301 missed:48521682 lost:0
  flows: 148
  port 1: Ethernet0 2
  port 2: br-int (internal)
  port 3: antrea-gw0 (internal)
  port 4: gke-metr-3bc3dd (internal)
  port 5: fluent-b-0a9e18 (internal)
  port 6: anetd-wi-e20fb4 (internal)
  port 7: windows--773e64 (internal)
  port 8: windows--6a9a0f (internal)

PS C:\antrea> ovs-appctl ofproto/trace 'recirc_id(0x2d717),ct_state(est|rpl|trk),ct_tuple4(src=<IP_ADDRESS>,dst=<IP_ADDRESS>,proto=1,tp_src=8,tp_dst=0),eth(src=00:15:5d:fa:70:11,dst=00:15:5d:5b:84:03),in_port(8),eth_type(0x0800),ipv4(src=<IP_ADDRESS>,dst=<IP_ADDRESS>,proto=1,tos=0,ttl=128,frag=no),icmp(type=0,code=0)'
Flow: recirc_id=0x2d717,ct_state=est|rpl|trk,ct_nw_src=<IP_ADDRESS>,ct_nw_dst=<IP_ADDRESS>,ct_nw_proto=1,ct_tp_src=8,ct_tp_dst=0,eth,icmp,in_port=9,vlan_tci=0x0000,dl_src=00:15:5d:fa:70:11,dl_dst=00:15:5d:5b:84:03,nw_src=<IP_ADDRESS>,nw_dst=<IP_ADDRESS>,nw_tos=0,nw_ecn=0,nw_ttl=128,icmp_type=0,icmp_code=0

bridge("br-int")
----------------
    thaw
        Resuming from table 31
31. ct_state=-new+trk,ip, priority 190, cookie 0x2040000000000
    goto_table:50
50. ct_state=-new+est,ip, priority 210, cookie 0x2000000000000
    goto_table:61
61. priority 0, cookie 0x2000000000000
    goto_table:70
70. ip,nw_dst=<IP_ADDRESS>/24, priority 200, cookie 0x2020000000000
    set_field:00:15:5d:5b:84:03->eth_dst
    goto_table:80
80. dl_dst=00:15:5d:5b:84:03, priority 200, cookie 0x2000000000000
    load:0x2->NXM_NX_REG1[]
    load:0x1->NXM_NX_REG0[16]
    goto_table:101
101. priority 0, cookie 0x2000000000000
    goto_table:105
105. priority 0, cookie 0x2000000000000
    goto_table:108
108. priority 0, cookie 0x2000000000000
    goto_table:110
110. ip,reg0=0x10000/0x10000, priority 200, cookie 0x2000000000000
    output:NXM_NX_REG1[]
     -> output port is 2

Final flow: recirc_id=0x2d717,ct_state=est|rpl|trk,ct_nw_src=<IP_ADDRESS>,ct_nw_dst=<IP_ADDRESS>,ct_nw_proto=1,ct_tp_src=8,ct_tp_dst=0,eth,icmp,reg0=0x10002,reg1=0x2,in_port=9,vlan_tci=0x0000,dl_src=00:15:5d:fa:70:11,dl_dst=00:15:5d:5b:84:03,nw_src=<IP_ADDRESS>,nw_dst=<IP_ADDRESS>,nw_tos=0,nw_ecn=0,nw_ttl=128,icmp_type=0,icmp_code=0
Megaflow: recirc_id=0x2d717,ct_state=-new+est-rel+rpl+trk,ct_mark=0,eth,ip,in_port=9,dl_dst=00:15:5d:5b:84:03,nw_dst=<IP_ADDRESS>/24,nw_frag=no
Datapath actions: 3

To Reproduce

Expected
Connection should work. It worked correctly with Antrea 1.2
Actual behavior
Description above
Versions:

Antrea 1.4
kubernetes v1.21.5
containerd

I am assigning this to @tnqn because this is related to https://github.com/antrea-io/antrea/pull/2161 which he worked on. https://github.com/antrea-io/antrea/pull/2161 relies on Linux Nodes annotating their Node resource with "node.antrea.io/mac-address", which obviously is not the case if the Antrea Agent is not running on the Linux Nodes.
@shettyg if there is any possibility to annotate the Nodes with "node.antrea.io/mac-address" and the correct MAC address value, it should resolve the issue.
I understand why the path is asymmetric (this is by design when the annotation is missing). I do not understand however why the Windows host would do SNAT on the reply traffic (Pod-to-Pod traffic in encapMode...).

Thank you for the immediate response. We will consider adding "node.antrea.io/mac-address" if there is no easy fixe to avoid it. (In this case, we are using noencapmode.)

@antoninbas is correct. To get better dataplane performance, it bypasses the windows host network when possible, but that requires overwriting the dst MAC by OpenFlow rules. If it doesn't know the dst MAC, it falls through to the host network to forward the traffic.
I guess the windows host didn't even know this was reply traffic as it's the first packet it saw for this connection. Even it can check TCP flags, it doesn't work for UDP.
Except the workaround, a possible solution is we don't bypass the host network for incoming traffic if we don't know the MAC of the Node which they come from, to make the path symmetry. But we need to check if Windows will still do SNAT when it can see the request packet, and how much it will affect the dataplane performance.

@tnqn why is there SNAT in this case given that it is Pod-to-Pod traffic (even if the host doesn't know this is reply traffic)?

@antoninbas I forgot this is Pod-to-Pod. You are right. It shouldn't do SNAT at all regardless of the direction. Then we should look at the NAT configuration of the windows host. For Linux, we use -m set ! --match-set ANTREA-POD-IP dst -j MASQUERADE to filter pod-to-external traffic. There should be a similar filter on Windows. @wenyingd could you confirm if this is an issue?

Windows NetNat confguration doesn't support "exclude" options on either internal addresses (PodCIDR) or external addresses (SNATed address), so I don't think we could do it on the Windows host as what we have done on Linux. A substitution is, maybe we could query peer Node's MAC (using "Get-NetNeighbor" on Windows by Agent) if the Node's annotation is not set. What do you think?

There may be no neighbor cache if the two Nodes never communicated. If adding another step to trigger communication, maybe it makes make sense to just send ARP query to retrieve the MAC address. There should be some Go libraries doing it.
And it needs to handle cross-subnet case. Bypassing windows host network was optional and affected performance only before, now it becomes necessary as it will cause destination Pods not seeing source Pod IPs.

If sending ARP, I have thought of 3 options to leverage the ARP reply: 1) packet in the reply to Antrea Agent, then Antrea Agent could install OpenFlow entries for peer PodCIDR on a different Node; 2) use "learn" action to dynamic use the src MAC in the reply, then Antrea Agent could not wait for the ARP reply, but directly installs a flow on OVS. 3) let the Windows Host to learn the ARP reply (by output the reply packet to OVS bridge interface), and use "Get-NetNeighbor" command to learn the MAC from Windows host.
option 1 and 3 are similar, the difference is if using the packetIn or not. And Antrea Agent should wait the ARP reply. option 2 leverage OVS and not need to wait in Antrea Agent. A disadvantage is Antrea Agent doesn't know the MAC of the peer Node, and not able to cache the L3 flow entry. If a disconnection with OVS happens, Antrea Agent is not able to replay the flows.
Which option would you like, do you have other suggestions? @tnqn @jianjuns @lzhecheng @XinShuYang

But Windows should have a way to skip NAT for specific IPs, no?
Using ARP to discover MAC is much complexer, and can be another source of traffic issues, esp. when we have a large number of Nodes.

But Windows should have a way to skip NAT for specific IPs, no?
Using ARP to discover MAC is much complexer, and can be another source of traffic issues, esp. when we have a large number of Nodes.

I didn't find a valid configuration to exclude some IP/CIDR in Windows NetNat yet.

Another thought is, using another CIDR for windows NAT, and filter the traffic that is sending to external in OVS then perform SNAT in OVS using the CIDR configured for Windows NAT. This solutions should be also suitable for Egress feature on windows. What do you think? @jianjuns @tnqn

Another thought is, using another CIDR for windows NAT, and filter the traffic that is sending to external in OVS then perform SNAT in OVS using the CIDR configured for Windows NAT. This solutions should be also suitable for Egress feature on windows. What do you think? @jianjuns @tnqn

The CIDR for Windows NAT could be <IP_ADDRESS>/25, which can be configured on Windows NetNAT

Having some offline discussion and test with @hongliangl @XinShuYang , we have another solution: add a new OVS internal port for the traffic that doesn't need to perform SNAT, enable IP-Forwarding on the interface, and then we add OpenFlow entries in OVS to ensure the packets are output to the new interface. Back to this issue, we could add OpenFlow entry for the Pod traffic on a Node which is not annotated with MAC, and set the dst MAC of packet with the new Interface in L3ForwardTable, then set the output ofport number in L2ForwardCalcTable. Since IP forwarding is enabled on the new interface, the packet can be forwarded to br-int from the interface, and then output to the uplink.

Having some offline discussion and test with @hongliangl @XinShuYang , we have another solution: add a new OVS internal port for the traffic that doesn't need to perform SNAT, enable IP-Forwarding on the interface, and then we add OpenFlow entries in OVS to ensure the packets are output to the new interface. Back to this issue, we could add OpenFlow entry for the Pod traffic on a Node which is not annotated with MAC, and set the dst MAC of packet with the new Interface in L3ForwardTable, then set the output ofport number in L2ForwardCalcTable. Since IP forwarding is enabled on the new interface, the packet can be forwarded to br-int from the interface, and then output to the uplink.

Any thoughts about this option? @jianjuns @tnqn @antoninbas

I feel the new proposal sounds better than the previous two.
So, there is no other way like packet mark, etc. to identify a packet requires NAT?

I feel the new proposal sounds better than the previous two.
So, there is no other way like packet mark, etc. to identify a packet requires NAT?

I didn't find a valid configuration from the Windows host. Windows SNAT using source CIDR as the filter, and we can't use it to differentiate the pod traffic to an external destination or to a Node


Custom DateTime filter no longer available when upgrading from 0.16.0-alpha5 to 0.16.0-alph6

Here's an example filter in 0.16.0-alpha5:
type Incoming_queue_itemsFilter {
id: IDInput
call_id: IDInput
created_at: DateTimeInput
handled_at: DateTimeInput
incoming_call_type: StringInput
pod_id: IDInput
updated_at: DateTimeInput
user_call_sid: StringInput
and: [Incoming_queue_itemsFilter!]
or: [Incoming_queue_itemsFilter!]
not: Incoming_queue_itemsFilter
}

When I upgrade to 0.16.0-alpha6 the filter looks like this:
type Incoming_queue_itemsFilter {
id: IDInput
call_id: IDInput
incoming_call_type: StringInput
pod_id: IDInput
user_call_sid: StringInput
and: [Incoming_queue_itemsFilter!]
or: [Incoming_queue_itemsFilter!]
not: Incoming_queue_itemsFilter
}

I have been using a simple scalar DateTime just fine until 0.16.0-alph6, and there is no mention of this change in the release notes. I hope it's just a bug and that this functionality hasn't been removed.

Automatically generated comment to notify maintainers
/cc @craicoverflow, @machi1990, @wtrocki

Hey Jordan! That's a bug, thanks. We will get it back.

Here's an example filter in 0.16.0-alpha5:
type Incoming_queue_itemsFilter {
id: IDInput
call_id: IDInput
created_at: DateTimeInput
handled_at: DateTimeInput
incoming_call_type: StringInput
pod_id: IDInput
updated_at: DateTimeInput
user_call_sid: StringInput
and: [Incoming_queue_itemsFilter!]
or: [Incoming_queue_itemsFilter!]
not: Incoming_queue_itemsFilter
}

When I upgrade to 0.16.0-alpha6 the filter looks like this:
type Incoming_queue_itemsFilter {
id: IDInput
call_id: IDInput
incoming_call_type: StringInput
pod_id: IDInput
user_call_sid: StringInput
and: [Incoming_queue_itemsFilter!]
or: [Incoming_queue_itemsFilter!]
not: Incoming_queue_itemsFilter
}

I have been using a simple scalar DateTime just fine until 0.16.0-alph6, and there is no mention of this change in the release notes. I hope it's just a bug and that this functionality hasn't been removed.

This is a bug, you can use scalar GraphbackDateTime which is supported out of the box.

https://github.com/aerogear/OpenVolunteerPlatform/blob/master/platform/server/model/main.graphql#L81


Allow user to resize columns

I get the following error when I set resizable to true and refreshing the results.

Also, if the width of the columns whilst querying is not set to an exact value, we get a flicker effect. I assume this is the case because it has to recalculate the widths after each query result.

Having found this issue made it possible to resize the columns. However it is only resizable a to an extend, after this one of the columns causes an overflow which makes the table scroll-able horizontally . Giving the columns a set width in %  makes large content partially disapear due to overflow.
This all is visible in branch column resizable
Note that this is still an open issue on GridJS' side

I have also experienced some render lag when scrolling up or down to expose results.


Update README URLs based on HTTP redirects

Created with https://github.com/dkhamsing/frankenstein
GitHub Corrected URLs

Was
Now

https://github.com/SugarRecord/SugarRecord
https://github.com/carambalabs/SugarRecord

https://github.com/jollychang/robotframework-appiumlibrary
https://github.com/serhatbolsu/robotframework-appiumlibrary

          1 Warning

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

  Generated by :no_entry_sign: danger


Use unprivileged user

Use unprivileged user sam-collector since it's unsecure to run as root,
especially with the executable attributes collector files.

:shipit:


feat: add Pulumi Heroku provider to Pulumi Registry

@marns93 can you rebase this PR? I just merged another request before this one.

@marns93 can you rebase this PR? I just merged another request before this one.

@ringods Sure, branch is rebased.


(BKR-1083) Pass beaker run options through from subcommands

This PR adds in the ability to accept and pass through options from a subcommand
to a Beaker::CLI object. Prior to this change, subcommands could not configure
beaker execution; this PR opens up virtually every option.

Refer to this link for build results (access rights to CI server needed):
http://jenkins-beaker.delivery.puppetlabs.net//job/qe_beaker_btc-intn/3650/


(inkscape)  Start menu entry is not visible for all users

Chocolatey Version
2.2.2
Chocolatey License
None
Package Version
1.3.0
Current Behaviour
Start Menu entry is created under %APPDATA% folder of the user who runs Choco
--> Start menu entry is not visible to other users
Expected Behaviour
Start menu entry is visible to other users
Steps To Reproduce

log in as Administrator user
in administrative powershell: choco install inkscape
switch to other user
--> Inkscape not in start menu

Environment
- Operating System: Microsoft Windows NT 10.0.20348.0  (Win Server 2022 demo VM from Microsoft)
- PowerShell Version: 5.1.20348.1850
- Shell: Power Shell, right click - run as Administrator

Chocolatey Log
not relevant

Anything else?
Upstream bug: https://gitlab.com/inkscape/inkscape/-/issues/1618
Workaround: Install MSI package with extra argument ALLUSERS=1.
Example: msiexec /qn /i inkscape-XXXX.msi ALLUSERS=1 works correctly.
--> Suggested fix: Append ALLUSERS=1 to silentArgs here:
https://github.com/chocolatey-community/chocolatey-packages/blob/b2226a47b637fc643fdd6f70f27438ac0ecd48bb/automatic/inkscape/tools/chocolateyInstall.ps1#L13
I don't know enough about Choco to test this suggestion.

I tested it locally:
Download the MSI to ...../inkscape/tools within chocolatey-packages
In Admin-Powershell, run
cd ......./inkscape/tools
choco pack
choco install --source .

And it works as expected. Is this enough?


notifyDataSetChanged overscroll after fixing #70

After fixing overscroll correction in #70 you've created another one. When notifyDataSetChanged, or any other notify, is called recyclerView gets scrolled up. It worked fine before version 0.4.10.
This happens when I add new items to adapter and call notifyDataSetChanged, or when I call notifyItemChanged.

Is this a scroll, or is it an overscroll? If it is just a scroll to a different position because the numbers changed in the adapter, it is something I am fixing in 0.5.

Hey Tonic, I'm not sure  what you mean by overscroll but I believe this is just a simple scroll issue. It just scrolls a little bit by itself (you can still see the first item tho) even on first adapter asignment.

Overscroll is when the content is not positioned correctly after the normal layout pass. It is caused when the content position and the virtual display area gets out of sync, like on a screen rotation or data change. The term comes from the support lib source.
Anyway, I'll look into this issue soon.

That's right, just scrolls a little bit every time.


Passing Spring version on runtime #58

Made spring.version variable dynamic to set the version on runtime.
-Dspring.version=4.3.20.RELEASE
-Dspring.version=5.1.5.RELEASE
Working fine for both versions of spring.

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.kganes837 seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


Add =% for monadic operations

Refer to #1145 for a discussion of motivation and some alternatives.
This introduces a new synthetic rune =%.  This:
=%  a=@  b  c
d

Expands to this:
%+  (b a=@)
  c
|=  a=@
d

The intended use case is monadic operations.  Here's an idiomatic real-world example where I use it to boot two ships and have them |hi each other.  Note that each of these actions requires sending moves to another gall app and receiving multiple responses from that app.
=/  m  (ph ,~)
^-  data:m
=%  [%booted from=@p]     bind:m  (boot-ship ~bud ~)
=%  [%boot-done from=@p]  bind:m  (check-ship-booted from)
=%  [%booted to=@p]       bind:m  (boot-ship ~dev ~)
=%  [%boot-done to=@p]    bind:m  (check-ship-booted to)
(send-hi ~bud ~dev)

This assumes you have defined an explicitly parameterized monad that looks something like this:
++  ph
  |*  a=mold
  |%
  ++  data  !!
  ++  return
    |=  =a
    ^-  data
    !!
  ::
  ++  bind
    |*  b=mold
    |=  [m-b=(data:(ph b) fun=$-(b data)]
    ^-  data:
    !!
  --

Since bind is associative and monads compose, you can refactor this test:
++  full-boot
  |=  her=ship
  =/  m  (ph ,~)
  =%  [%booted from=@p]     bind:m  (boot-ship her ~)
  =%  [%boot-done from=@p]  bind:m  (check-ship-booted from)
  (return:m ~)
::
++  hi
  =%  ~  bind:m  (full-boot ~bud)
  =%  ~  bind:m  (full-boot ~dev)
  (send-hi ~bud ~dev)

This sort of composability of operations that include sending and receiving moves to other apps is something we've never properly had.  This rune provides a convenient syntax to do that.
You can also use this with wet gates if you prepend _.  The gates also don't have to "bind" operations.  For example:
=/  a=(list (unit @))  ~[`1 ~ `3 `4 ~]
=%  b=(unit @)  _murn  a
=%  c=@         _biff  b
?:  =(0 (mod c 2))
  ~
(some (scow %ub c))

The usual cautions around wet gates apply.  As is usual with wet gates, some extra casts may be necessary.  In this case, the (list (unit @)) and some lines are important to assign the correct types and faces.
If the above code is confusing, consider adding some casts for documentation.  This is too many, but it gets the point across:
=/  a=(list (unit @))  ~[`1 ~ `3 `4 ~]
^-  (list tape)
=%  b=(unit @)  _murn  a
^-  (unit tape)
=%  c=@         _biff  b
^-  (unit tape)
?:  =(0 (mod c 2))
  ~
(some (scow %ub c))

Making one last bid to use a ; rune for this, and leave =% open for
integration of something like /: into the hoon grammar :P
On 4/16/19, Ted Blackman<EMAIL_ADDRESS>wrote:

belisarius222 approved this pull request.
LGTM this is very cool
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/urbit/arvo/pull/1150#pullrequestreview-227505713

--
Here lies a toppled god —
His fall was not a small one.
We did but build his pedestal,
A narrow and tall one.

Although I like this proposal more than the other one, for reasons I will discuss in more detail there, I think this is a bad idea. Please hold off on merging this until further discussion.

Okay, it looks like you closed the other one, so I'll move my comments here.

I agree that ; seems like a better fit — it falls under “random macros” like ;~ —
Sent from my iPhone

On Apr 16, 2019, at 5:41 PM, Anton Dyudin<EMAIL_ADDRESS>wrote:
Making one last bid to use a ; rune for this, and leave =% open for
integration of something like /: into the hoon grammar :P
On 4/16/19, Ted Blackman<EMAIL_ADDRESS>wrote:

belisarius222 approved this pull request.
LGTM this is very cool
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/urbit/arvo/pull/1150#pullrequestreview-227505713

--
Here lies a toppled god —
His fall was not a small one.
We did but build his pedestal,
A narrow and tall one.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.

Or possibly to %;? That's annoying to pronounce tho.
To elaborate on the rune category concern: : runes expand to cons, | runes expand to cores, ? runes expand to an outer nock 6, = runes expand to an outer nock 7(or nock 8 which is by definition a very thin macro around nock 7), % runes expand to an outer nock 9(or nock #), ~ runes expand to nock ~10~ 11(grr), ^ runes expand away at runtime. Since ultimately the rune in the pr expands to %:, it's arguably a % rune; but it also declares a core and has a very nonstandard argument ordering, and the category for "does multiple things with weird control flow" is clearly ;
in particular ;: already does "weird %-", and ;~ does both "create a new core" and "using wet gate application for a particular pattern of monadic composition"

It's also worth noting that when I was in college, I spoke with one of the original designers of Haskell, and he, to that day, was opposed to the addition of the do notation to haskell, saying it was a frivolous addition. For when
do
  x <- y
  foo
  z <- w
  bar

merely translates to
y >>= \x
foo >>
w >>= \z
bar

it's unclear what is gained by adding the first form directly to the grammar.
The fact that there is special syntax here can also lead beginners astray.

@benjamin-tlon

I disagree that wet gates are incredibly cumbersome and difficult to work with ^-^
They have some pitfalls, but can be very easily reasoned about mechanically, which I'll take any day over trying to puzzle out what types Hinley-Minler is failing to bidirectionally concoct properly.

it's unclear what is gained by adding the first form directly to the grammar.

Huh, for me it is perfectly clear: the number of glyphs in the code has been reduced by a factor of 3. This might sound somewhat hypocritical from a hoon perspective ofc, and I certainly concede that reserved words are significantly worse - but it doesn't make the gain any less obvious.

Please hold off on merging this until further discussion.

Will do.  I think Joe has thoughts too.

Or possibly to %;? That's annoying to pronounce tho.

%; is pronounced "cenmic" nowadays, which isn't too hard to pronounce.
The argument for putting it in = is that it feels like "subject modification" when you're using it.  It feels a lot like =+.  However, that may be misleading; it's certainly significantly more complicated than any of the others, and there may be flow-of-control implications.  That's probably enough to warrant ; status.
Unfortunately, most of the good ; runes are taken for sail.  ;@ ;$ ;^ ;& ;| ;\ ;, and ;. are available.  None of them seem particularly evocative, so perhaps ;| is the best.

I firmly believe more syntax is not the answer here, at least not yet. The answer is to fix wet gates.

Wet gates have been recognized to be a pain for at least 5 years, and they're not fixed yet, despite multiple attempts to do so.  I don't claim that it's impossible to fix them -- eg I think HM would likely fix the problems we've had with them, which is not to say it's necessarily a good idea -- but I don't think we should delay anything on the hope that they'll be fixed any time soon.

What will happen when we find we like applicative functors? More syntax? Alternatives? More syntax? Foldable and traversable?

The same could be said of =^ and the state monad, and everyone loves it.  One of hoon's design principles is that often can get away with not implementing a fully general solution if you just implement the one or two most useful forms of it.  I don't think we're generally in danger of going wild and adding a new rune every time we find a new pattern we like.
As for why this specific pattern is likely to be useful, my answer is that (1) we've often wished for monads, as evidenced by the fact that every 6 months somebody goes and half-implements them in a specific context and (2) it's the first pattern we've used that gets rid of decomposed state machines, and decomposed state machines are a fairly urgent problem (not in a threshold sense, it's just that programming in arvo is drastically slower and more bug-prone than it could be, and there's a significant cost to that).

What we need is a way to make generic functional programming work well. The main obstacle to this is the type system. In a world with HM type inference, you could just use ;: with your bind function, as I think you alluded to in the other pr. In such a world, I think we'd all more or less be opposed to the change suggested here.

It's not clear to me that better type inference will give a better experience for this than what this PR gives.  Honestly, I like that you have to specify your bind operation and the intermediate types.  You needed to give them names anyway, why not types?  I feel that this style is significantly more readable than do notation because it includes the types.  When I look at Haskell code in do notation, I don't know what anything is doing or what type it is because we don't explicitly name bind and the types.
However, my point is not that we shouldn't switch to HM or otherwise improve type inference -- that's a whole other discussion which we're not ready to have yet.  My point is that we shouldn't hold off on language improvements because there might some day be a better way to do it.  Almost everything could reasonably be claimed to be close to changing, but you can't let that stop you from pushing the current system to its limits.  For one, it bogs down progress by making you program more painfully, but more importantly you can't make a good decision as to whether a significant change like HM is worth it without pushing the current system to its limits.
My general rule is that it's best to do things the right way given the current conditions until such time as a decision to change those conditions has actually been made.
Additionally, even if we fix wet gates such that ;: is all we need, it's very easy to just search for ;| and convert it to a ;:.  Certainly much easier than searching for %+ and finding which ones are binds.  If we agree that the occasional monad is good, then making them easier now will only make it easier to understand why improved type inference simplifies the language (we'll be able to get rid of runes).

it's unclear what is gained by adding the first form directly to the grammar.

I don't know idiomatic Haskell, so I can't judge whether do notation is a good idea there.  But in hoon as it stands now, the expanded version is significantly more cumbersome and less readable.

@joemfb suggested ;< where the < is evocative of =< and do notation.  It suggests something like "do what's on the right and assign the result to the first argument", and makes the most sense in tall form like this:
;<  a=@  bind  data
next-stuff

It's not great, but I think it's better than ;|, which would be my second choice.  ;> appears to be sail for div, so we don't have to worry about preserving < and > for a symmetric operation -- that symmetry has already been broken for ; runes.

@pilfer-pandex You said IRL that you're less opposed to this than before; do you have any further objection to me merging this once I get feedback from people about naming it ;<?

I'm in favor of this addition. To briefly recap some offline conversations:
I don't think it makes sense to defer this until we've "fixed wet gates". I agree that the experience of parametric polymorphism is desirable, and that wet gates don't exactly provide it. I still think that wet gates are useful, and that the experience of using them can be improved, but I'll say no more until I have so demonstrated (and in the meantime, +bake is a good solution for many use-cases). Any more disruptive change in this area will take awhile to materialize, and there are improvements to be realized via this new rune in the meantime.
I sympathize with the idea of =% given the feel of this rune, but it's a bit too much -- the last sub-expression of all the other = runes is an arbitrary hoon evaluated against the new subject a la =>, the last sub-expression here is a function body. ; is the appropriate rune family for the reasons given above, and ;< seems the best remaining rune therein.
I do find this macro-expansion to be a little confusing, but I don't see any obvious way to improve it. It's certainly not any more confusing than ;~ already is, and it may be that I'll find it intuitive once I've used it in anger.

I don't have anything more substantive to say than "this seems really neat!"
But I do have a question! Is there a strong argument for the current wing ordering? ie, instead of:
=%  [%boot-done to=@p]    bind:m  (check-ship-booted to)
(send-hi ~bud ~dev)

why don't we have:
=%  bind:m  [%boot-done to=@p]  (check-ship-booted to)
(send-hi ~bud ~dev)

That seems closer to the expansion, and ;~ also puts the "glue" operation first.

I could see it going either way, but this introduces a new variable to your subject, defined by the given type.  As far as I can think, every time we do that it's the first argument to the rune except =-, which is widely considered a mistake (and =; was introduced exactly to remedy this) and =<, which replaces the entire subject and practically screams at you "we're reversing the normal flow".
Additionally, putting the type second splits the bind from its argument.  The type is an annotation, like ^-.  It happens to be used to parameterize the bind, but that's because we don't have true polymorphism, not because it's an argument that changes anything about bind.
;~ has to put the glue operation first because it's n-ary, unlike here.

I think this is fine to merge in, based on how the above discussion unfolded.  @philipcmonk was there anything else to add here?

Based on further discussion in person, I think this is ok in the short term.


Feature request: Add retry option to test command

Question/Feature
Adding a --retry on the molecule test command, to relaunch the scenario where it stops.
Molecule and Ansible details
#> ansible --version
ansible <IP_ADDRESS>
  config file = /etc/ansible/ansible.cfg
  configured module search path = Default w/o overrides
  python version = 2.7.12 (default, Nov 19 2016, 06:48:10) [GCC 5.4.0 20160609]

#> molecule --version
molecule, version <IP_ADDRESS>rc11

Molecule installation method: pip
Ansible installation method: OS package

Desired Behaviour
I would like a --retry option in molecule test in order to avoid to relaunch all the test cases in case of a lint failure, or a test failure.
For example, I have 3 scenario in molecule, and I launch the tests. Molecule fail on the linter verification, in the third scenario. I need to relaunch the complete test session (well I could only launch the scenario, but still...)
With the --retry, it would restart the test at the test level where it failed. If I understand the way that test work, it's a combination of destroy/converge/lint/verify/destroy, so it may be something usefull.
What do you think ?

This is going to take a lot of effort to accomplish, since we will need to know state of each term ran through a sequence.

Oh okay, though it would be more simple (like adding a flag in state.yml file, or something). Maybe my use case is too much specific, considering the effort needed then.

Oh okay, though it would be more simple (like adding a flag in state.yml file, or something). Maybe my use case is too much specific, considering the effort needed then.

And it may be.  I would just need to think it over more seriously.

Hi @blackillzone I am probably going to mark this as invalid for the time being.  I have thought it over and generally speaking a developer would not be executing molecule test over and over.
We have worked with Molecule v1 quite a bit.  However, Molecule v2 is new.  Scenarios are new.   So some workflows may get annoying.  However, our general methodology is to run molecule converge and molecule verify while iterating on role development.  We save molecule test for CI and validating the role works in entirety.
I suggest giving this workflow a chance while targeting specific scenarios.
Again, I'm going to close this out for the time being.  Hope you understand, I'm not trying to be difficult.

Okay, clearly understand. Thanks for the feedback.


Dynamic NodeDriver discovery, import resolution and plugins

The need for https://github.com/fediverse-devnet/feditest/pull/178/commits/140eb13521dc79ee52bdd6647a33774390fb100a#diff-0966bbd71ccb431e7bf6dd6a60bc867dac71736ca76a8668d4a1b9f31d26343eL21 seems to be a consequence of the particular way we discover available NodeDrivers.
This issue is basically just a reminder that this kluge exists and is likely a consequence of something (NodeDriver discovery) that perhaps should be fixed instead, if we can find a better way.
In Python, what are some good ways to do "plugins"? The idea is something like:

the feditest package
"plugin" packages that give feditest some extra NodeDriver implementations, say feditest-mastodon (which would depend on feditest and mastodon.py)
and that ... and I don't know how to do that other than with a mechanism such as our current NodeDriver discovery mechanism ... can either be dynamically discovered by fedtest as being installed, or that somehow register with the parent package.

I don't know how common this issue will be (where a third party library is the same name as a parent package name). It's arguably a python quirk as much as a plugin-related issue.
That said, a couple ways plugin support is commonly implemented are using setuptools entrypoints (e.g., rdflib) and the pluggy library (e.g., pytest plugins). Both of these techniques allow plugins to be packaged in external libraries (rather than source files in a list of directories). Since those external packages are installed into the python environment, it helps with resolving any library dependencies for the plugin.
For example, the Mastodon support could be implemented in a separate repo (feditest-mastodon) and installed into any feditest environment where a Mastodon node is needed. The mastodon.py library would be automatically installed as a side-effect without a direct dependency from feditest. If any libraries are shared between feditest and feditest-mastodon, those version constraints will be analyzed during installation.

@steve-bate does #264 have any impact on this? (I may be entirely misunderstanding what this issue is all about)

I think we kind of sidestepped that now, so I'm closing this.


Support React Native Web

Is your feature request related to a problem? If so, Please describe.
You cannot use a full-featured webview in react native web (ie expo web). For example, there is no hook into if the page it loading, like there is on the react-native webview

Describe the solutions you came up with

Attempted to use react-native-web-webview (https://github.com/react-native-web-community/react-native-web-webview) and use injectedJavascript
Implemented hacky ways to possibly achieve them, like injectedJavascript like this, and adding a heuristic for if the content is loading in a similar hacky manner, like by checking if the iframe's iframe?.contentWindow has items. This works, mostly. But it'd be good to have an official implementation/extraction that uses the best we have to make the RNW iframe implementation as good as it can be.

Additional context
Why do we need this?

If you're using RNW to create a mobile-first experience, the current options are extremely hard to work with and result in a poor UI/UX. (I am working on a few projects that require this, and it's a huge pain point)
Apps that are built for Native, but also want to run on the web need this support.

There's not a good way to create a good mobile experience using a webview in RNW (react native web).
The react-native-web-webview, from what I could gather, is basically just a wrapper around an iframe, with some basic functionality extracted. You can see the source code at https://github.com/react-native-web-community/react-native-web-webview/blob/master/src/index.js
So that means, you're really just getting an iframe. And if you think about it, that makes complete sense!
However, using that package or just the regular iframe in react native web does not have support for the methods we see on the native webviews ( like from https://github.com/react-native-webview/react-native-webview/blob/master/docs/Reference.md). Some most notable are:
scalesPageToFit (this one is huge IMO)
injectedJavaScript
onError
onLoad
onLoadEnd
onLoadStart
onLoadProgress
Now, it's understandable that a lot of this is not possible. If you look at the options with the native html 5 iframe, most of the props/attributes above are not implemented, but there are hacky ways to possibly achieve them, like injectedJavascript like this, and you can add a heuristic for if the content is loading in a similar hacky manner, like by checking if the iframe's iframe?.contentWindow has items. This works, mostly. But it'd be good to have an official implementation/extraction that uses the best we have to make the RNW iframe implementation as good as it can be.

Used, but cannot call "injectedJavaScript"

I would like to see this too.  In the meantime, you can use this package: https://github.com/react-native-web-community/react-native-web-webview

@buffaloDeveloper I am using that, but it's not well supported at all and is very limiting. It may be better to just use a html iframe in many cases over that package.

Still looking for a solution

Maybe you can post an overview of the current limitations, and what you need to do? I for one am also looking at this, and I am very interested in what is possible with the current react-native-webview and what exactly isn't.

@raarts Sure, Here you go. Adding it to the post too
Why do we need this?

If you're using RNW to create a mobile-first experience, the current options are extremely hard to work with and result in a poor UI/UX. (I am working on a few projects that require this, and it's a huge pain point)
Apps that are built for Native, but also want to run on the web need this support.

Background
There's not a good way to create a good mobile experience using a webview in RNW (react native web).
The react-native-web-webview, from what I could gather, is basically just a wrapper around an iframe, with some basic functionality extracted. You can see the source code at https://github.com/react-native-web-community/react-native-web-webview/blob/master/src/index.js
So that means, you're really just getting an iframe. And if you think about it, that makes complete sense!
However, using that package or just the regular iframe in react native web does not have support for the methods we see on the native webviews ( like from https://github.com/react-native-webview/react-native-webview/blob/master/docs/Reference.md). Some most notable are:
scalesPageToFit (this one is huge IMO)
automaticallyAdjustContentInsets
automaticallyAdjustsScrollIndicatorInsets
injectedJavaScript
onError
onRenderProcessGone
onLoad
onLoadEnd
onLoadStart
onLoadProgress
onHttpError
Now, it's understandable that a lot of this is not possible. If you look at the options with the native html 5 iframe, most of the props/attributes above are note implemented, but there are hacky ways to possibly achieve them, like injectedJavascript like this, and you can add a heuristic for if the content is loading in a similar hacky manner, like by checking if the iframe's iframe?.contentWindow has items. This works, mostly. But it'd be good to have an offical implementation/extraction that uses the best we have to make the RNW iframe implementation as good as it can be.

Very helpful. Implementing WebView on RNW isn't on my backlog yet, but it will be. Thanks for the overview.

This just showed up on my backlog. It seems that  tag for text/html allows communication between the two pages through javascript. Will investigate further.

This just showed up on my backlog. It seems that <embed> tag for text/html allows communication between the two pages through javascript. Will investigate further.

Can you elaborate a bit on what you mean?

Probably forget about what I said. I read a stackoverflow answer which implied that the embed tag offered more functionality than the iframe tag. When I looked into it that didn't seem to be the case.

I still am interested in RNW support, so please leave this open.

still searching for solutions

Same here!

still searching for solutions

still searching for solutions

still searching for solutions

+1 Thinking about just creating a PR and writing support for it myself. I really don't want to dangerously set the html or add a package just for this one screen.

@inform880 Do it! :)

Not fixed, please don't close it

still searching for solutions :P

Not fixed, please don't close it

Mit fixed please do not close Beste Grüße,Nils BaumgartnerAm 23.06.2023 um 02:18 schrieb github-actions[bot] @.***>:
Hello 👋, this issue has been opened for more than 2 months with no activity on it. If the issue is still here, please keep in mind that we need community support and help to fix it! Just comment something like still searching for solutions and if you found one, please open a pull request! You have 7 days until this gets closed automatically
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you commented.Message ID: @.***>

still searching for solutions! Please can a maintainer chime in with some idea if this is on the table or not?

still searching for solutions

Still searching for solutions

still searching for solutions

We'll all keep on waitin :p

still searching for solutions --you know :)

still searching for solutions --you know :)

I gave up and just used another workaround. Using deeplinks for iOS and Android and for web just a rerouting. Can’t wait that long.
For me this makes this package not reliable.

Still waiting for solutions ⌛

still searching for solutions

still searching for solutions


Windows 10 UWP edition doesn't show the Swedish translation properly

Ahoy! Please look at these pictures!

Note how instead of the translation, it just shows a generic "show_picotorrent_in_notification_area". Feel free pushing a fix ASAP.
Aside from this minor problem this app is worth every penny.

Hi! This is due to missing translations for those items in the Swedish translation file. There's a few languages that has missing translation keys, Swedish being one of the worst offenders.

I'd happily translate it!
https://github.com/picotorrent/picotorrent/blob/develop/lang/1053.json
That's the file, right?

That's it 😄

Closing this since it's not really a bug - it's an outdated translation.