Making Network http error SocketException: Failed host lookup

Steps to Reproduce

Making Network http error when build release, even having internet connection
When build debug having no error
Error: SocketException: Failed host lookup: 'jsonplaceholder.typicode' (OS  Error No address associated with hostname, error = 7)

Code:
main.dart:
import 'dart:convert';

import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData.dark(),
      home: const MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({Key key}) : super(key: key);
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  static const url = 'https://jsonplaceholder.typicode.com/users';

  Future<List<Map<String, dynamic>>> _future;

  @override
  void initState() {
    super.initState();
    _future = fetch();
  }

  Future<List<Map<String, dynamic>>> fetch() {
    return http
        .get(url)
        .then((response) {
          return response.statusCode == 200
              ? response.body
              : throw 'Error when getting data';
        })
        .then((body) => json.decode(body))
        .then((list) => (list as List).cast<Map<String, dynamic>>());
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Home'),
      ),
      body: RefreshIndicator(
        onRefresh: () async {
          _future = fetch();
          setState(() {});
          return _future;
        },
        child: FutureBuilder<List<Map<String, dynamic>>>(
          future: _future,
          builder: (context, snapshot) {
            if (snapshot.hasError) {
              return Center(
                child: Container(
                  constraints: BoxConstraints.expand(),
                  child: SingleChildScrollView(
                    physics: AlwaysScrollableScrollPhysics(),
                    child: Text(snapshot.error.toString()),
                  ),
                ),
              );
            }

            if (!snapshot.hasData) {
              return Center(
                child: CircularProgressIndicator(),
              );
            }
            return ListView.builder(
              itemCount: snapshot.data.length,
              itemBuilder: (BuildContext context, int index) {
                final item = snapshot.data[index];
                return ListTile(
                  title: Text(item['name']),
                  subtitle: Text(item['email']),
                );
              },
            );
          },
        ),
      ),
    );
  }
}

Screenshots:
Lenovo a2010: android 5.1

Philips S337: android 5.1:

Logs

flutter analyze
Analyzing test_http...
No issues found! (ran in 3.5s)

flutter doctor -v
[√] Flutter (Channel dev, v1.2.0, on Microsoft Windows [Version 10.0.17134.523], locale en-US)
    • Flutter version 1.2.0 at C:\flutter\flutter
    • Framework revision 06b979c4d5 (3 weeks ago), 2019-01-25 14:27:35 -0500
    • Engine revision 36acd02c94
    • Dart version 2.1.1 (build 2.1.1-dev.3.2 f4afaee422)

[√] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
    • Android SDK at C:\Users\Admin\AppData\Local\Android\sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-28, build-tools 28.0.3
    • Java binary at: E:\Admin\Other\android-preview\android-studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1248-b01)
    • All Android licenses accepted.

[!] Android Studio (version 3.3)
    • Android Studio at E:\Admin\Other\android-preview\android-studio
    X Flutter plugin not installed; this adds Flutter specific functionality.
    X Dart plugin not installed; this adds Dart specific functionality.
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1248-b01)

[√] IntelliJ IDEA Community Edition (version 2018.3)
    • IntelliJ at C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2018.3.3
    • Flutter plugin version 32.0.3
    • Dart plugin version 183.5153.38

[√] VS Code (version 1.31.0)
    • VS Code at C:\Users\Admin\AppData\Local\Programs\Microsoft VS Code
    • Flutter extension version 2.22.3

[√] Connected device (1 available)
    • Philips S337 • FS011641B06736 • android-arm • Android 5.1 (API 22)

Are you using a proxy?

No. I don't use proxy

Hard to tell. Looks like a network issue.
Do other remote or local network adresses work?

I tried many network but still not working

Shouldn't this be jsonplaceholder.typicode.com instead of jsonplaceholder.typicode?

Please consider asking support questions in one of the other channels listed at http://flutter.io/support .

i think that url is not a problem.
paste url https://jsonplaceholder.typicode.com/users in browser working well
 static const url = 'https://jsonplaceholder.typicode.com/users'; in class _MyHomePageState

Where would the invalid URL (jsonplaceholder.typicode) from the error message come from then?
Can you provide a minimal reproduction?

@mraleph could this be a tree-shaking issue or something like that?
(sorry, don't know whom else to summon)

i rebuild release app and this is error:
E/flutter (11529): [ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: HandshakeException: Handshake error in client (OS Error:
E/flutter (11529):      BAD_SIGNATURE(ecdsa.c:247)
E/flutter (11529):      BAD_SIGNATURE(handshake_client.cc:1060))
E/flutter (11529): #0      IOClient.send (package:http/src/io_client.dart:33:23)
E/flutter (11529): <asynchronous suspension>
E/flutter (11529): #1      BaseClient._sendUnstreamed (package:http/src/base_client.dart:169:38)
E/flutter (11529): <asynchronous suspension>
E/flutter (11529): #2      BaseClient.get (package:http/src/base_client.dart:32:7)
E/flutter (11529): #3      get.<anonymous closure> (package:http/http.dart:46:36)
E/flutter (11529): #4      _withClient (package:http/http.dart:166:20)
E/flutter (11529): <asynchronous suspension>
E/flutter (11529): #5      get (package:http/http.dart:46:5)
E/flutter (11529): #6      _MyHomePageState.fetch (package:test_http/main.dart:37:12)
E/flutter (11529): #7      _MyHomePageState.build.<anonymous closure> (package:test_http/main.dart:56:21)
E/flutter (11529): <asynchronous suspension>
E/flutter (11529): #8      RefreshIndicatorState._show.<anonymous closure> (package:flutter/src/material/refresh_indicator.dart:357:53)
E/flutter (11529): #9      _rootRunUnary (dart:async/zone.dart:1132:38)
E/flutter (11529): #10     _CustomZone.runUnary (dart:async/zone.dart:1029:19)
E/flutter (11529): #11     _FutureListener.handleValue (dart:async/future_impl.dart:126:18)
E/flutter (11529): #12     Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:639:45)

E/flutter (11529): #13     Future._propagateToListeners (dart:async/future_impl.dart:668:32)
E/flutter (11529): #14     Future._completeWithValue (dart:async/future_impl.dart:483:5)
E/flutter (11529): #15     Future._asyncComplete.<anonymous closure> (dart:async/future_impl.dart:513:7)
E/flutter (11529): #16     _rootRun (dart:async/zone.dart:1124:13)
E/flutter (11529): #17     _CustomZone.run (dart:async/zone.dart:1021:19)
E/flutter (11529): #18     _CustomZone.runGuarded (dart:async/zone.dart:923:7)
E/flutter (11529): #19     _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:963:23)
E/flutter (11529): #20     _microtaskLoop (dart:async/schedule_microtask.dart:41:21)
E/flutter (11529): #21     _startMicrotaskLoop (dart:async/schedule_microtask.dart:50:5)
E/flutter (11529):

same problem in stackoverflow: https://stackoverflow.com/questions/54728717/error-when-using-https-with-flutter-http-dart-package

@hoc081098 Double-check / make sure you have
<uses-permission android:name="android.permission.INTERNET" />
in your app's android/app/src/main/AndroidManifest.xml

Thank @zarko-tg. Solve:
in your app's android/app/src/main/AndroidManifest.xml

Thank @zarko-tg.
Solve: add <uses-permission android:name="android.permission.INTERNET" /> to android/app/src/main/AndroidManifest.xml

This saves me, Why this is not in the documentation ?

@ferso It'd be less to worry about or consult documentation if they'd make it a default (in templates/starters) since most apps connect online.

I had that error even in Debug mode (android/app/src/debug/AndroidManifest.xml  has
 <uses-permission android:name="android.permission.INTERNET" />)

Adding internet permission is not only a solution,
You also have to make sure that you are online whether it is mobile or emulator (c)
https://stackoverflow.com/a/55548864

I wiped data
C:\Users\UN\AppData\Local\Android\Sdk\emulator> .\emulator -avd Nexus_5X_API_28 -wipe-data
(or via Android Studio)
and run main.dart
It works!

Adding <uses-permission android:name="android.permission.INTERNET" /> solved this issue for me.
The documentation is out of date and should be updated. Since Flutter uses the internet permission internally in development mode it is always active when developing. When deploying the app to the play store, it is not active by default.
The documentation currently says:
uses-permission: Remove the android.permission.INTERNET permission if your application code does not need Internet access. The standard template includes this tag to enable communication between Flutter tools and a running app.

Which is misleading since the internet permission isn't in the production manifest (apparently it was in earlier flutter versions?). Please add a note to this so the documentation accurately explains that the internet permission has to be added to the production manifest in case it is needed.

@hoc081098 Double-check / make sure you have
<uses-permission android:name="android.permission.INTERNET" />
in your app's android/app/src/main/AndroidManifest.xml

Great Info. This helped me.
As I was wondering a bit that, where to add this line in that file... figured it out to be at the end like:

This line used to be there on default on previous version of Flutter. It seems that they have removed on the recent updates.

Make sure the debugging device internet is turned on , if you use localhost try changing it into <IP_ADDRESS>

Thank @zarko-tg.
Solve: add <uses-permission android:name="android.permission.INTERNET" /> to android/app/src/main/AndroidManifest.xml

would I have to restart the app before it works? Mine isn't working.

@Emyboy yes, it means building and starting the app again. If it isn't working that your are likely having some other problem, unrelated to this Github issue.

@hoc081098 Double-check / make sure you have
<uses-permission android:name="android.permission.INTERNET" />
in your app's android/app/src/main/AndroidManifest.xml

@zarko-tg  pls help me this way dont solve my problem
flutter/flutter/#43357

@zarko-tg thanks man that saved me too!

@hoc081098 Double-check / make sure you have
<uses-permission android:name="android.permission.INTERNET" />
in your app's android/app/src/main/AndroidManifest.xml

@zarko-tg  Thanks man that saved me too!

@hoc081098 Double-check / make sure you have
<uses-permission android:name="android.permission.INTERNET" />
in your app's android/app/src/main/AndroidManifest.xml

great! works for me!!

After trying all the steps. if You are running the server locally. In my case Strapi. Replace the localhost with http://localhost:1337/auth/local/register to http://<IP_ADDRESS>:1337/auth/local/register

already set permission but still got that err
environment:
  sdk: ">=2.3.0 <3.0.0"
  ....
..
flutter_svg: ^0.14.0

I cant display my api pictures due to this

i tried and can't work too..
then realised my android simulator wifi is off... need to enable it ya :)

make sure your device has internet connection.

I have this issue on release build, but debug build works ok.
Manual adding
works, but its waird why it works on debug build

@hoc081098 Double-check / make sure you have
<uses-permission android:name="android.permission.INTERNET" />
in your app's android/app/src/main/AndroidManifest.xml

please help my i have same isuee and i try your way not working with me i use this this endpoint
https://yts.mx/api/v2/list_movies.json


GetLifeCycleBase" not found. You need to call "Get.put(GetLifeCycleBase())" or "Get.lazyPut(()=>GetLifeCycleBase())

After I upgrade my getx to 3.24.0. And every time I run the apps will get this error.
Test Device: Iphone 12 pro Simulator.
The following message was thrown building Builder:
"GetLifeCycleBase" not found. You need to call "Get.put(GetLifeCycleBase())" or "Get.lazyPut(()=>GetLifeCycleBase())"

The relevant error-causing widget was
GetMaterialApp
lib/main.dart:50
When the exception was thrown, this was the stack
#0      GetInstance.find
package:get/…/src/get_instance.dart:279
#1      Inst.find
package:get/…/src/extension_instance.dart:66
#2      _GetCache.onInit
package:get/…/simple/get_view.dart:75
#3      GetWidgetCacheElement.mount (package:get/get_state_manager/src/simple/get_widget_cache.dart:24:11)
...     Normal element mounting (4 frames)

You are using GetWidget rather GetView.
Change the class to the appropriate name.

You are using GetWidget rather GetView.
Change the class to the appropriate name.


Local pull request success status testing

Docs Build status updates of commit 23605e2:
:clock10: Pending: waiting for processors (14 builds ahead of you)
:warning: Docs Build is busy, currently there are 14 builds ahead of this one, for more information you can view the Build queue graph on the Docs Portal.

Docs Build status updates of commit 23605e2:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

E2E_DocsBranch_Dynamic/index.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching in the Docs contributor and Admin GuideSee the frequently asked questionsPost your question in the Docs support channel


Notifications (Clicked) feature

When will Flutter SDK support "Listen for Notifications (Clicked)" like the React Native SDK? We are looking for navigating to specific page via notification click event. Thanks.

Hi @chanmaoinc,
Thanks so much for your inquiry.
This feature is indeed high on our list -- you can expect completion in the next 4 weeks or so.

Thanks and looking forward.

Hi @anthonycmeow,
Great news! We have just finished integrating this functionality into the Pushy Flutter SDK.
Call the Pushy.setNotificationClickListener((data) => {}) method from your application to listen for when the user taps your notifications:
// Listen for push notification clicked
Pushy.setNotificationClickListener((Map data) {
    // Print notification payload data
    print('Notification clicked: $data');

    // Extract notification messsage
    String message = data['message'] ?? 'Hello World!';

    // Display an alert with the "message" payload value
    showDialog(
    context: context,
    builder: (BuildContext context) {
        return AlertDialog(
            title: Text('Notification clicked'),
            content: Text(message),
            actions: [ FlatButton( child: Text('OK'), onPressed: () { Navigator.of(context, rootNavigator: true).pop('dialog'); } )]
        );
    });

    // Clear iOS app badge number
    Pushy.clearBadge();
});

This functionality is supported on both Android and iOS. Inside this method, you can access the notification payload which was clicked and direct the user to the relevant page in your Flutter app, or execute other custom logic on notification click.
To be able to access this method, please update the Pushy Flutter SDK in your app by editing the pubspec.yaml in the root directory of your project and updating the pushy_flutter package version to 1.0.8:
pushy_flutter: 1.0.8

Then, run flutter pub get to fetch the new package.

Run your app and give it a go! Please let us know if you face any issues.

Hi @anthonycmeow @chanmaoinc,
Great news! We have just finished integrating this functionality into the Pushy Flutter SDK.
Call the Pushy.setNotificationClickListener((data) => {}) method from your application to listen for when the user taps your notifications:
// Listen for push notification clicked
Pushy.setNotificationClickListener((Map<String, dynamic> data) {
    // Print notification payload data
    print('Notification clicked: $data');

    // Extract notification messsage
    String message = data['message'] ?? 'Hello World!';

    // Display an alert with the "message" payload value
    showDialog(
    context: context,
    builder: (BuildContext context) {
        return AlertDialog(
            title: Text('Notification clicked'),
            content: Text(message),
            actions: [ FlatButton( child: Text('OK'), onPressed: () { Navigator.of(context, rootNavigator: true).pop('dialog'); } )]
        );
    });

    // Clear iOS app badge number
    Pushy.clearBadge();
});

This functionality is supported on both Android and iOS. Inside this method, you can access the notification payload which was clicked and direct the user to the relevant page in your Flutter app, or execute other custom logic on notification click.
To be able to access this method, please update the Pushy Flutter SDK in your app by editing the pubspec.yaml in the root directory of your project and updating the pushy_flutter package version to 1.0.8:
pushy_flutter: 1.0.8

Then, run flutter pub get to fetch the new package.

Run your app and give it a go! Please let us know if you face any issues.

Awesome!


screen and SD card use same pins

Hi
I've just realised that the screen and the SD card use the same pins in your tutorial. Do I just connect both devices to one pin or is there a way of changing what pins one of the devices uses?

They are both connected to the SPI bus, the only pin that need to be different is the CS (Chip Select Pin)

hello owner, why my SD card initialization failed!, i make sure the pin i use is correct


[ECMWF] Enhancing loop-hoist

More information to follow

Already working out of the box. Test case added by PR #124


Peer Review - Clarity and Specificity in Hazard Mitigations

Artifact Under Review
Hazard Analysis - Hazard Mitigations
Team Number for Team Doing the Review
Rasik Pokharel - Group 18
Description of Issue
Some mitigation strategies could benefit from greater specificity to make them more actionable. For instance, detailing the criteria used for labeler assessment in the Task Delegation Service section would enhance clarity.

We believe each of the mitigations are appropriately specific for this document/project stage


MySQL Support?

Is there any support for MySQL currently? I see there was a Fortune relational adapter on npm at one point, but I can't seem to find anything anymore. This library looks really great, btw.

There's a Postgres adapter, which is highly specific to postgresql syntax. With a little tweaking it could work with MySQL I guess, it's just a matter of finding the differences in sql syntax.

Ok, thanks!

I've started a fork of this with tweaking for MySQL - https://github.com/JohnField/fortune-mysql - much functionality doesn't work due to the Postgres specifics, but it's something am interested in looking into.


[BUG] Can not delete line 108 from snippets: insert space after inequality symbols

Description

In line 108 of snipptes.ts It said that
{trigger: "\\\\(neq|geq|leq|gg|ll|sim)([0-9]+)", replacement: "\\[[0]] [[1]]", options: "rmA"}, // Insert space after inequality symbols`
Whether to comment this line out, to delete it, or perhaps even to remove it from main.js, when I type ll or neq, it still auto expands to commands.
To Reproduce

Comment or delete this line from plugin setting in obsidian. In math mode, type ll or neq auto expands to \ll and \neq
Expected Behavior

Nothing would occur when I type ll, neq,or geq in math mode
Additional Info

Windows 11

I did not find any other place that

I think I have resolved it. This is because of this line     //{trigger: "([^\\\\])(${GREEK}|${SYMBOL})", replacement: "[[0]]\\[[1]]", options: "rmA", description: "Add backslash before greek letters and symbols"}


Gatsby 5 compatibility

Description
When using this plugin with Gatsby 5, you instantly get an error stating visitFn.call is not a function. The stack trace seems to suggest this is a pretty low level issue with gatsby-graphql-source-toolkit. My guess is it's fixed by https://github.com/gatsbyjs/gatsby-graphql-toolkit/pull/48, but that's not yet merged by Gatsby.
Stack trace
 ERROR #11321  PLUGIN

"gatsby-source-craft" threw an error while running the createSchemaCustomization lifecycle:

visitFn.call is not a function

  570 |     const schema = await getSchema();
  571 |     const gatsbyNodeTypes = await getGatsbyNodeTypes(gatsbyApi.reporter);
> 572 |     const documents = await compileNodeQueries({
      |                             ^
  573 |         schema,
  574 |         gatsbyNodeTypes,
  575 |         customFragments: await collectFragments(),

File: node_modules/gatsby-source-craft/gatsby-node.js:572:29
  TypeError: visitFn.call is not a function

  - compile-node-queries.ts:149 compileDocument
    [my-gatsby-site]/[gatsby-graphql-source-toolkit]/src/compile-node-queries/compile-node-queries.ts:149:10

  - compile-node-queries.ts:73
    [my-gatsby-site]/[gatsby-graphql-source-toolkit]/src/compile-node-queries/compile-node-queries.ts:73:17

  - Array.forEach

  - compile-node-queries.ts:72 compileNodeQueries
    [my-gatsby-site]/[gatsby-graphql-source-toolkit]/src/compile-node-queries/compile-node-queries.ts:72:24

  - gatsby-node.js:572 getSourcingConfig
    [my-gatsby-site]/[gatsby-source-craft]/gatsby-node.js:572:29

  - gatsby-node.js:368 Object.exports.createSchemaCustomization
    [my-gatsby-site]/[gatsby-source-craft]/gatsby-node.js:368:20

  - api-runner-node.js:487 runAPI
    [my-gatsby-site]/[gatsby]/src/utils/api-runner-node.js:487:16

Steps to reproduce

Create new Gatsby 5 project
Install and configure gatsby-source-craft
Run npm run develop

Example repo
https://github.com/ThijmenDeValk/gatsby-source-craft-error-proof
Additional info

Gatsby version: 5.1.0
gatsby-source-craft version: 3.0.0
Node version: 18.12.1
Craft version: 4.3.3
Gatsby Helper version: 2.0.0

Well, that was a quick fix. Gatsby-graphql-toolkit v2.0.3 fixes this issue. So now all that's needed to use this with Gatsby 5 is the --legacy-peer-deps flag until official support is added to this repo (I'll make a pull request for that soon).


Apply new pyi script

For all components except plotly, need to resolve resolution conflict.

I'm not so comfortable changing all the pyi files this close to calhacks, lets just generate this for the new data editor

I'm not comfortable with this large of a pr so close to the release and calhacks, lets just add the new pyi for the data editor and keep the old pyi for the other files

Then I'll add it on the datatable PR and we can merge this one after the release.


KAFKA-2522: ConsumerGroupCommand writes error messages to STDERR

ConsumerGroupCommand sends errors and valuable output to different streams. It simplifies results parsing.
@joestein @johann8384 could you please review this PR?
The contribution is my original work and I license the work to the project under the project's open source license.

Why not to use Console.err.println instead of  Java's System.err.println?

Can you please rebase this PR?


Add rspec to pj - Card #122

Card #122
Rspec is set and working. Capybara is set as well.

bundle install
bundle exec rake db:create RAILS_ENV=test
bundle exec rake db:schema:load RAILS_ENV=test
bundle exec rspec -fd

@natsteinmetz Let me know if I am missing anything. I am thinking of creating a separate card for adding the info how to set up rspec and run tests: update the readme. Thoughts? Since I wasn't sure if we want to have this info be in the readme or just a link to another document that will be dedicated to the running tests. (feel that readme is getting big)

Hi Anya! I appreciate your thought about the readme update. I would prefer to have the testing related information in the readme itself, not in a separate document.
Do you want to add it to this pull request, or do that separately? Both are fine with me. Thank you!

@natsteinmetz I created a first draft of Readme with how to run the tests. What are your thoughts? I am thinking now, looking at it. Should we include a link to Rspec documentation anywhere?

This looks great Anya, but I had trouble with the bundle install because of the Nokogiri gem that you added. Can you please add a note underneath, to look at http://www.nokogiri.org/tutorials/installing_nokogiri.html if one has trouble running bundle install because of Nokogiri?
And yes, a link to the Rspec documentation would be awesome too! :)


Error while trying to access an attribute in terraform plan.out.json file that is not part of the root_module

Question:

I have a terraform plan file(plan.out.json), against which i am running my feature tests against. I need to verify an attribute(terraform_version) as a part of terraform plan file which is not associated with a property or is not a property of the root module (configuration/root_module)
plan.out.json file will be as below:
{"format_version":"....","terraform_version":"0.14.11","variables":{...}, "root_module":{"resources":[....]} }
Does tf-compliance allow us to access such properties which are not a part of the root_module and does not have a "type" ? My feature test is unable to find this attribute , and i think thats because the attribute that i am trying to access is not part of the root_module. is that correct? If yes, is there a plan to add such a feature for Terraform-compliance?

@eerkunt , any idea on this one?


Where is cleavir-hir?

cleavir-path-replication depends on cleavir-hir, but I can't find this system.  Where is it hosted?

cleavir-path-replication was written for the previous version of cleavir, which had a different IR called HIR. the original project cleavir was forked from, SICL, has the old Cleavir with HIR and path replication. But path replication is not applicable to the new IR, at least for the moment.

OK, thanks for the details.
Maybe mention it in the doc?

i will probably just axe the subsystem; we can always get it back from the log or SICL if we need to. i'm only not doing so now because i've been very focused on a clasp project.


copr: fix datetime fallback handler edge cases

Signed-off-by: Iosmanthus Teng<EMAIL_ADDRESS>
What have you changed?
If there is a datetime format string (in format like yyyy-mm-ddThh:mm:ss/yyyy-mm-dd hh:mm:ss provided to the Duration parser, we need to check if the seperater is valid.
Don't assume reviewers understand the original issue.
What is the type of changes?

Bugfix (a change which fixes an issue)

How is the PR tested?

Unit test
Integration test

/merge

@sre-bot /merge


fix(mesheryctl): move completion to root level and fix oh-my-zsh command

Signed-off-by: Nishant Mittal<EMAIL_ADDRESS>Description
This PR fixes #5870, fixes part of #5895.
Notes for Reviewers
Signed commits

[X] Yes, I signed my commits.

Codecov Report

Merging #5896 (bbfd284) into master (e873d1c) will decrease coverage by 4.36%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master    #5896      +/-   ##
==========================================
- Coverage   17.92%   13.55%   -4.37%
==========================================
  Files         107      106       -1
  Lines        9923     9912      -11
==========================================
- Hits         1779     1344     -435
- Misses       7708     8278     +570
+ Partials      436      290     -146

Flag
Coverage Δ

gointegrationtests
?

unittests
13.55% <ø> (+<0.01%)
:arrow_up:

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

Impacted Files
Coverage Δ

mesheryctl/internal/cli/root/system/system.go
70.37% <ø> (-1.06%)
:arrow_down:

mesheryctl/internal/cli/root/system/update.go
1.05% <0.00%> (-58.95%)
:arrow_down:

mesheryctl/internal/cli/root/system/start.go
1.88% <0.00%> (-55.19%)
:arrow_down:

mesheryctl/internal/cli/root/system/status.go
1.14% <0.00%> (-55.18%)
:arrow_down:

mesheryctl/internal/cli/root/system/restart.go
1.92% <0.00%> (-48.08%)
:arrow_down:

mesheryctl/internal/cli/root/system/stop.go
2.00% <0.00%> (-46.67%)
:arrow_down:

mesheryctl/internal/cli/root/system/logs.go
3.26% <0.00%> (-36.96%)
:arrow_down:

mesheryctl/internal/cli/root/system/check.go
1.03% <0.00%> (-23.03%)
:arrow_down:

mesheryctl/internal/cli/root/system/dashboard.go
1.70% <0.00%> (-9.41%)
:arrow_down:

mesheryctl/pkg/utils/healthcheck.go
8.82% <0.00%> (-4.42%)
:arrow_down:

... and 1 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update e873d1c...bbfd284. Read the comment docs.

@nishantwrp how I should test this?

Hi @AugustasV
Testing the migration of command to root-level

Pull these changes
cd mesheryctl
Build mesheryctl using go build cmd/mesheryctl.
./mesheryctl completion zsh should work
./mesheryctl system completion zsh shouldn't work

Testing the oh-my-zsh command

Run this command: COMPLETION_DIR=$(echo $fpath | grep -o '[^ ]*completions' | grep -v "cache") && ./mesheryctl completion zsh > "${COMPLETION_DIR}/_mesheryctl"
Completions should be installed in your shell now

@nishantwrp how I should test this?

This is a good blog to test mesheryctl changes - https://layer5.io/blog/meshery/validating-meshery-cli-functionality

🚀 Preview for commit 825276e1d608c8e9784d91d580a9b8824282ee4c at: https://62e52121676826054b4bcd94--meshery-docs-preview.netlify.app

🚀 Preview for commit 693cf8a0db580560309864e1c5647b22834ebd78 at: https://62e528c5f71fda0a3ea15f69--meshery-docs-preview.netlify.app

Are we still tracking on a better UX?
$ mesheryctl completion
Error: accepts 1 arg(s), received 0

Are we still tracking on a better UX?
$ mesheryctl completion
Error: accepts 1 arg(s), received 0

I thought we have #5661 for tracking better messages in mesheryctl.

r

I have already fixed that in my PR,  just removed it due to some conflicts error.


Change disk type from standard to io1 not working

I updated the disk type from one type to another was hoping that disk copy job will kick in and it will got o another disk type but it seems nosh can not handle disk type change

You mention io2, but it is not a public EBS Volume Type - double check you have the correct spelling in your manifest.
When changing disk_pool.cloud_properties, you should indeed receive a new disk with the data copied over. The full docs are at bosh.io if you want to double check your manifest.
Otherwise, please include the disk_pool configuration that you are using.

@dpb587-pivotal I mean io1

it might be running this in old bosh I will try to so this with latest version ad see if that works

we can close this ticket for now


Add Resample and AsType

Adds "Resample" node to resample arrays to a user-designated voxel size, using  skimage.transform.rescale
Pre-Merge Checklist:

[ ] if this PR adds a feature: request merge into the latest development branch (vX.Y-dev)
[ ] if this PR fixes a bug: request merge into the latest patch branch (patch-X.Y.Z)
[ ] PR branch name is short and describes the feature/bug addressed in this PR
[ ] commit messages are consistent
[ ] changes reviewed by another contributor
[ ] tests cover changes
[ ] all tests pass

Tests written for Resample and AsType.

Pull Request out of date and the main author on paternity leave until 01/17/2022. Will be splitting off updates unrelated to AsType and Resample nodes at that time into a separate pull request.
Thank you for your feedback/interest.

Just a few quick changes and we can go ahead and merge:

Since you're adding new features can you target it at the patch-1.2.3? That will make it easier for @funkey when he eventually needs to update a new release.
Can you add these nodes to the docs. You can do that in the docs/build/api.rst file: https://github.com/funkey/gunpowder/blob/master/docs/build/api.rst

Just a few quick changes and we can go ahead and merge:

Since you're adding new features can you target it at the patch-1.2.3? That will make it easier for @funkey when he eventually needs to update a new release.
Can you add these nodes to the docs. You can do that in the docs/build/api.rst file: https://github.com/funkey/gunpowder/blob/master/docs/build/api.rst

Done.
Added in c04f5d7, but did not re-generate html.

No need to re-generate the HTML, Jan will do that when he creates a new release.
This all looks good and ready to merge


SI-2544 - Feature/identity api devicedefinition query tableland

Will take a look tomorrow. Sorry about the delay.

We will get the Tableland table id into the manufacturers table.

It's sort of working now

I was doing edits on a branch and then accidentally pushed to yours and it's a long story.
Here is a dump of the manufacturers on testnet:
mfrs.csv
I do \copy manufacturers from 'mfrs.csv' csv header and this loads in.

Some things I notice, poking around

Often imageURI is blank but not null. We should probably treat that like it's null.
Attributes are often blank. We should probably filter those out.


Opentsdb entered FATAL state, too many start retries too quickly

I run it by
sudo docker run --name bosun -p 4242:4242 -p 8070:8070 stackexchange/bosun

and show this error:
other info :
centos on hyper-v
uname -r
3.10.0-327.13.1.e17.x86_64

And I try run it on Ubuntu ,it's working well.


POI1 Integration in all Standard ROS Topics

All standard ROS topics shall be filled with POI1 related data channels. This makes it possible to either output the measurement data in the Measurement Reference Point (MRP) of the ADMA or to output the topics in desired Points in the vehicle, by defining the POI1 with offset values to the MRP.

We aim to enhance the system by introducing parameters for various standard ROS topics. These parameters will facilitate the choice of the desired ADMA POI (Point of Interest) to be utilized within the topic. By default, the selection will be configured for MRP. However, we're extending this capability to allow independent selection of all 8 POIs for each individual ROS topic.


php: fix minor style discrepency

and to sync up with v1.0.x branch

trivial change. tests passed. merging


Add numRowsResultSet to RequestStatistics

This PR adds numRowsResultSet to RequestStatistics. As we already have ResultTable object computed, there is no extra overhead

Codecov Report

Merging #7047 (80a9ad3) into master (18c0d9d) will decrease coverage by 7.96%.
The diff coverage is 100.00%.

@@             Coverage Diff              @@
##             master    #7047      +/-   ##
============================================
- Coverage     73.38%   65.42%   -7.97%
  Complexity       12       12
============================================
  Files          1454     1454
  Lines         72091    72096       +5
  Branches      10441    10441
============================================
- Hits          52903    47166    -5737
- Misses        15654    21522    +5868
+ Partials       3534     3408     -126

Flag
Coverage Δ

integration
?

unittests
65.42% <100.00%> (-0.01%)
:arrow_down:

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

Impacted Files
Coverage Δ

...org/apache/pinot/broker/api/RequestStatistics.java
42.46% <100.00%> (-22.82%)
:arrow_down:

...t/common/response/broker/BrokerResponseNative.java
91.66% <100.00%> (+0.32%)
:arrow_up:

...a/org/apache/pinot/minion/metrics/MinionMeter.java
0.00% <0.00%> (-100.00%)
:arrow_down:

.../apache/pinot/common/metrics/BrokerQueryPhase.java
0.00% <0.00%> (-100.00%)
:arrow_down:

.../apache/pinot/minion/metrics/MinionQueryPhase.java
0.00% <0.00%> (-100.00%)
:arrow_down:

...pache/pinot/common/utils/grpc/GrpcQueryClient.java
0.00% <0.00%> (-100.00%)
:arrow_down:

...pinot/minion/exception/TaskCancelledException.java
0.00% <0.00%> (-100.00%)
:arrow_down:

...t/core/startree/plan/StarTreeDocIdSetPlanNode.java
0.00% <0.00%> (-100.00%)
:arrow_down:

.../core/startree/plan/StarTreeTransformPlanNode.java
0.00% <0.00%> (-100.00%)
:arrow_down:

...core/startree/plan/StarTreeProjectionPlanNode.java
0.00% <0.00%> (-100.00%)
:arrow_down:

... and 339 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 18c0d9d...80a9ad3. Read the comment docs.


cannot find or create target with fingerprint=0x0501000000000fee

When I do the command:
./test_jpeg_classification resnet50_pt sample_classification.jpg

The log is
WARNING: Logging before InitGoogleLogging() is written to STDERR
F0616 03:34:07.241921   274 target_factory.cpp:128] [UNILOG][FATAL][TARGET_FACTORY_UNREGISTERED_TARGET][Unregistered target!] Cannot find or create target with fingerprint=0x0501000000000fee
*** Check failure stack trace: ***
Aborted (core dumped)

here is the device and platform information:
sudo /opt/xilinx/xrt/bin/xbmgmt examine --device 0000:01:00.0 --report all
System Configuration
  OS Name              : Linux
  Release              : 5.4.0-117-generic
  Version              : #132~18.04.1-Ubuntu SMP Thu Jun 2 23:36:48 UTC 2022
  Machine              : x86_64
  CPU Cores            : 8
  Memory               : 7642 MB
  Distribution         : Ubuntu 18.04.5 LTS
  GLIBC                : 2.27
  Model                : System Product Name

XRT
  Version              : 2.12.427
  Branch               : 2021.2
  Hash                 : 2719b6027e185000fc49783171631db03fc0ef79
  Hash Date            : 2021-10-08 22:10:57
  XOCL                 : 2.12.427, 2719b6027e185000fc49783171631db03fc0ef79
  XCLMGMT              : 2.12.427, 2719b6027e185000fc49783171631db03fc0ef79

Devices present
  [0000:01:00.0] : xilinx_vck5000-es1_gen3x16_base_2 mgmt(inst=256)

-------------------------------------------------------
1/1 [0000:01:00.0] : xilinx_vck5000-es1_gen3x16_base_2
-------------------------------------------------------
Flash properties
  Type                 : ospi_versal
  Serial Number        : 50253B115T13

Device properties
  Type                 : vck5000
  Name                 : VCK5000-ES1-2
  Config Mode          : 8
  Max Power            : 300W

Flashable partitions running on FPGA
  Platform             : xilinx_vck5000-es1_gen3x16_base_2
  SC Version           : 4.4.6
  Platform UUID        : B376430F-2629-B15D-8F44-A335D963DF7B
  Interface UUID       : 381B89F4-EBB9-F12E-F28F-BE8C372BB403

Flashable partitions installed in system
  Platform             : xilinx_vck5000-es1_gen3x16_base_2
  SC Version           : 4.4.6
  Platform UUID        : B376430F-2629-B15D-8F44-A335D963DF7B

  Mac Address          : 00:0A:35:0A:7F:92
                       : 00:0A:35:0A:7F:93

Mechanical
  Fans
    FPGA Fan 1
      Critical Trigger Temp : 60 C
      Speed                 : 941 RPM

Firewall
  Level -- --: -- --

Mailbox
  Total bytes received   : 832 Bytes
  Unknown                : 0
  Test msg ready         : 0
  Test msg fetch         : 0
  Lock bitstream         : 0
  Unlock bitstream       : 0
  Hot reset              : 0
  Firewall trip          : 0
  Download xclbin kaddr  : 0
  Download xclbin        : 0
  Reclock                : 0
  Peer data read         : 6
  User probe             : 1
  Mgmt state             : 0
  Change shell           : 0
  Reprogram shell        : 0
  P2P bar addr           : 0

CMC
  Status : 0x0 (GOOD)
  Runtime clock scaling feature :
    Supported : false
    Enabled : false
    Critical threshold (clock shutdown) limits:
      Power : 0 W
      Temperature : 0 C
    Throttling threshold limits:
      Power : 0 W
      Temperature : 0 C
    Power threshold override:
      Override : false
      Override limit : 0 W
    Temperature threshold override:
      Override : false
      Override limit : 0 C

Here is the validation log:
sudo /opt/xilinx/xrt/bin/xbutil validate --device 0000:01:00.1
Starting validation for 1 devices

Validate Device           : [0000:01:00.1]
    Platform              : xilinx_vck5000-es1_gen3x16_base_2
    SC Version            : 4.4.6
    Platform ID           : B376430F-2629-B15D-8F44-A335D963DF7B
-------------------------------------------------------------------------------
Test 1 [0000:01:00.1]     : PCIE link
    Warning(s)            : Link is active
                            Please make sure that the device is plugged into Gen 3x16,
                            instead of Gen 1x8. Lower performance maybe experienced.
    Test Status           : [PASSED WITH WARNINGS]
-------------------------------------------------------------------------------
Test 2 [0000:01:00.1]     : SC version
    Test Status           : [PASSED]
-------------------------------------------------------------------------------
Test 3 [0000:01:00.1]     : Verify kernel
    Test Status           : [PASSED]
-------------------------------------------------------------------------------
Test 4 [0000:01:00.1]     : DMA
    Details               : Host -> PCIe -> FPGA write bandwidth = 1391.4 MB/s
                            Host <- PCIe <- FPGA read bandwidth = 1723.9 MB/s
    Test Status           : [PASSED]
-------------------------------------------------------------------------------
Test 5 [0000:01:00.1]     : iops
    Details               : IOPS: 102716 (hello)
    Test Status           : [PASSED]
-------------------------------------------------------------------------------
Test 6 [0000:01:00.1]     : Bandwidth kernel
    Details               : Maximum throughput: 49595 MB/s
    Test Status           : [PASSED]
-------------------------------------------------------------------------------
Test 7 [0000:01:00.1]     : vcu
Validation completed, but with warnings. Please run the command '--verbose' option for more details

Hi @Qiang-Flute ,
According to the Log, I see that you are using a VCK5000-ES1 card. For VCK5000-ES1, you need to use the components corresponding to Vitis AI 1.4.1.
The steps involved are as follows:

Install the correct version of XRT, XRM, XCLBIN and Shell package  on the host according to the README
Run docker image vitis-ai-cpu:<IP_ADDRESS>8 according Docker Image List. Run source ./setup.sh in a docker container according README
Run Vitis-AI-Library samples according README
Note that the model used also needs to be downloaded from the model zoo in version 1.4.1

This issue is caused by using mismatched docker images. And the finger(0x0501000000000fee) is only supported in vai1.4.1 docker images. After vai1.4.1, vck5000 es1 are no longer released.

Hi @Qiang-Flute ,
Is there any update to this issue? Thanks

Hi @Qiang-Flute
Closing since no activity for more than 2 weeks, please reopen if you still have question, thanks


Easiest way to change the views top margin

I have a custom UINavigationBar created at runtime in my JSQMessagesViewController. This is not inherited from UINavigationController. The problem is the collection's view top part is being overlapped by my custom navigation bar. What's the proper way to modify the constraints of the collection view to set it's top to be aligned with the navigation bar bottom? I tried exactly this but there was a constraint conflict and the way it was resolved the navigation bar was pushed by the collection's view top outside the view frame.
thanks

Hey @attheodo - sounds like topContentAdditionalInset is what you need.
http://cocoadocs.org/docsets/JSQMessagesViewController/6.1.3/Classes/JSQMessagesViewController.html#//api/name/topContentAdditionalInset


Slim 1029 decouple mbus device

All is well.

All is well.

All is well.

All is well.

All is well.


Sign-up and sign-in

The following elements were implemented:

Registration form with email validation
Sign-in form
Added tests for both registration and sign-in forms
Modified transaction tests because there no longer is a Google login
Added doorkeeper so Jeroen can authenticate via mobile

All requested changes have been implemented :-)


use regex \s

Compare the text using whitespace regex and replaceString
LICNESE:
This data is licenced under 2 different licenses

1) GNU General Public License, version 2 or later
2) XFree86 1.0 license

This data can be used freely under either license.

This data is licenced under 2 different licenses 1) GNU General Public License, version 2 or later 2) XFree86 1.0 license This data can be used freely under either license.

This data is licenced under 2 different licenses  1) GNU General Public License, version 2 or later 2) XFree86 1.0 license  This data can be used freely under either license.

/lgtm


Update default Tailwind theme dependencies

This PR updates all dependencies of the Tailwind theme to their latest versions, also removed unused dependencies, and adds one new one. PR also fixes the toast and plan switcher functionality to work with Alpine 3 since updating broke them.
This PR tags a new version of the default Tailwind theme, updating it to 1.1, and updates the built version of the theme that comes with Wave to match the new 1.1 version.
If merged then this PR will supersede #19, IMO that's fine since there haven't been any updates since September. 🤷♂
New dependencies (1)

@tailwindcss/forms

Updated dependencies (14)

@tailwindcss/typography | 0.3.0 → 0.5.0
alpinejs | 2.6.0 → 3.5.1
autoprefixer | 10.2.4 → 10.4.0
axios | 0.21.1 → 0.24.0
glob-all | 3.1.0 → 3.2.1
laravel-mix | 4.0.7 → 6.0.39
laravel-mix-purgecss | 4.2.0 → 6.0.0
laravel-mix-tailwind | 0.1.0 → 0.1.2
lodash | 4.17.19 → 4.17.21
postcss | 8.2.4 → 8.4.4
resolve-url-loader | 2.3.1 → 4.0.0
sass | 1.26.10 → 1.43.4
sass-loader | 7.1.0 → 12.3.0
tailwindcss | 2.0.2 → 3.0.0

Removed dependencies (5)

@tailwindcss/custom-forms
cross-env
less
less-loader
vue-template-compiler

This PR has been update with Tailwind CSS v3.0. Should the theme version be bumped to v2.0 instead of v1.1? Updating to Alpine 3 and Tailwind CSS v3.0 will most likely cause some BC breaks if someones has used this theme as a base for their project, so to tag a new major version of the theme might be smarter.
Thoughts @bobbyiliev @tnylea?


[firebase_admob] Crash on launch for iOS (Needs better setup documentation)

Steps to Reproduce
Could not reproduce in another application.
It just started happening in my iOS application after cocoapods upgrade. When running the app with flutter run it works 100% of the times. But when building the app and installing via the .ipa file or through xcode it will crash on start ~40% of the times.

Go to xcode and run the app on a real device
See files added
error.txt

Logs
Analyzing Levconomy...
No issues found! (ran in 2.0s)

[✓] Flutter (Channel stable, v1.2.1, on Mac OS X 10.14.4 18E226, locale en-SE)
    • Flutter version 1.2.1 at /Users/admin/Documents/flutter
    • Framework revision 8661d8aecd (8 weeks ago), 2019-02-14 19:19:53 -0800
    • Engine revision 3757390fa4
    • Dart version 2.1.2 (build 2.1.2-dev.0.0 0a7dcf17eb)

[!] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
    • Android SDK at /Users/admin/Library/Android/sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-28, build-tools 28.0.3
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1136-b06)
    ! Some Android licenses not accepted.  To resolve this, run: flutter doctor --android-licenses

[✓] iOS toolchain - develop for iOS devices (Xcode 10.2)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 10.2, Build version 10E125
    • ios-deploy 1.9.4
    • CocoaPods version 1.6.1

[✓] Android Studio (version 3.2)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 31.1.1
    • Dart plugin version 181.5656
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1136-b06)

[✓] Connected device (1 available)
    • Roberts iPad • b54711fbe84c3679a1a4c726638f0f78394e4ee8 • ios • iOS 9.3.5

! Doctor found issues in 1 category.

@RobertBrunhage
The issue at https://github.com/flutter/flutter/issues/30962 has been closed and moved here. Future collaboration on this issue will be done here.

@RobertBrunhage is it still the same with current flutter stable and firebase_admob 0.9.0+7?

Without additional information, we are unfortunately not sure how to resolve this issue. We are therefore reluctantly going to close this bug for now. Please don't hesitate to comment on the bug if you have any more information for us; we will reopen it right away!
Thanks for your contribution.
Could everyone who still has this problem please file a new issue with the exact descriptions what happens, logs and the output of 'flutter doctor -v'  please.
All system setups can be slightly different so its always better to open new issues and reference related issues.


Logging on routes

Currently we use the default layout from log4js-express to send access requests to the log. Personally I don't agree with some of the categorizations (such as 304 Not Modified being considered a WARN level entry). Additionally, I think we want to make sure this behavior doesn't clutter the logs with all the public asset requests. So we should customize this behavior for our needs (they have examples of this in their docs).

Closed by https://github.com/bioneos/backup-system/commit/a8f077766a45b29fb32b9be5834cec7411bb06d1


Exclude the 'Edit Provider Credentials' dropdown menu item for OVA provider

Reference: https://issues.redhat.com/browse/MTV-1766
Since editing the OVA provider credentials is not supported, exclude this option from the providers drop-down menu items.
Screenshot

:warning: Please install the  to ensure uploads and comments are reliably processed by Codecov.
Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 36.21%. Comparing base (13484d0) to head (ea4f80d).
Report is 148 commits behind head on main.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1407      +/-   ##
==========================================
- Coverage   36.81%   36.21%   -0.60%
==========================================
  Files         158      159       +1
  Lines        2548     2579      +31
  Branches      599      603       +4
==========================================
- Hits          938      934       -4
- Misses       1428     1463      +35
  Partials      182      182

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


updating the Dakota doc header

@danial-faghihi Thank you for making that change.  You don't need to close and reopen a PR, just push your changes to your branch and the PR will update.  The tests failed the version check, so you will have to update the CMakeLists.txt file to
project(ablateLibrary VERSION 0.8.1)

@mmcgurn just changed the CMakeLists.txt and pushed the changes into my branch.

@mmcgurn just changed the CMakeLists.txt and pushed the changes into my branch.

@danial-faghihi Thanks!  The tests are now rerunning.


Fix arrow variable name in comment

The comments in the Import from Arrow guide referenced a my_df variable (as in the pandas example), but here my_arrow is used.

Thanks!


Update README.md

Update installation instruction

Codecov Report

:exclamation: No coverage uploaded for pull request base (main@04df19d). Click here to learn what that means.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main      #33   +/-   ##
=======================================
  Coverage        ?   43.94%
=======================================
  Files           ?        3
  Lines           ?      355
  Branches        ?        0
=======================================
  Hits            ?      156
  Misses          ?      199
  Partials        ?        0

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


chore(deps): upgrade dependencies

Upgrades project dependencies. See details in workflow run.

Automatically created by projen via the "upgrade-main" workflow

Codecov Report

Merging #545 (de763be) into main (92379ee) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main     #545   +/-   ##
=======================================
  Coverage   95.69%   95.69%
=======================================
  Files           1        1
  Lines         395      395
  Branches       53       53
=======================================
  Hits          378      378
  Misses         17       17

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


Combobox: Virtualization causes JAWS to read the list of options incorrectly

Description of the bug
Title basically. If I navigate the combobox dropdown using the arrow keys JAWS will eventually read the order incorrectly. Doesn't seem to matter if I've selected elements or not.
Say you've got 10 elements to choose from. For the first element it may read something like this:
Listeboks, Oslo, 1 av 10, bruk piltastene til å flytte til et element
... manually navigating using arrow keys ...
And then:
Listeboks, Trondheim, 7 av 8, bruk piltastene til å flytte til et element
Steps To Reproduce

Go to the virtualized example
Navigate the list using JAWS

Additional Information
No response

Comboboxes are hard with screenreaders :/
We'll have a look at this in not to long and see if we can't improve it somehow.
Are you having the same problem with other combobox components?

Comboboxes are hard with screenreaders :/
We'll have a look at this in not to long and see if we can't improve it somehow.
Are you having the same problem with other combobox components?

Haven't tested any other combobox components in React..

https://u-elements.github.io/u-elements/elements/u-datalist solves this, and soon we're adding u-tags as well, creating very good support for designs like https://storybook.designsystemet.no/?path=/story/komponenter-combobox--multiple ☺


Focusing on users location in the start

I think in the start it's better to focus on users current location than a static location. So that user can easily obtain data about the status of his/ her current location.

This looks good -- we should think about being able to give users the ability to select their map location on page load. But absent of setting that default, we can use this to center it at their location.


Add test for commands which contain quotes

This adds a new test which verifies if a command containing parameters with quotes will work correctly.
I stumbled across this when I tried to create a Dockerfile with the following command:
RUN mkdir C:\test_dir && \
    icacls C:\test_dir /grant "CREATOR OWNER":(OI)(CI)(IO)F /T && \
    /bin/sh.exe -c "echo test_content > /test_dir/test_file"

It seems to fail because hcsshim escapes the command args, turning "CREATOR OWNER" into \"CREATOR OWNER\" and icacls complains with:
Invalid parameter ""CREATOR"

Notice the double quote before CREATOR. Removing the call to windows.EscapeArg() and simply joining the args into a cmdline, seems to make it work. Not sure if that's right, though.
Signed-off-by: Gabriel Adrian Samfira<EMAIL_ADDRESS>

The cmd_test.go:166: process exited with exit code 87 translates to:
C:\> net helpmsg 87

The parameter is incorrect.

Which is in line with the message from standard output mentioned above.

Closing this. On Windows, using spec.Process.CommandLine (unescaped) is preferred instead of spec.Process.Args.


regex for "US currency" test case

I'm testing a few "real world" regex's from regexlib.com.
This "US currency" regex does not match "$1,234,567.89" but it should.
^$([0-9]{1,3}(,[0-9]{3})*|([0-9]+))(.[0-9]{2})?$
It works on these:
Matches
$0.84 | $123458
Non-Matches
$12,3456.01 | 12345 | $1.234

Thanks for finding this example, it seems that there's a bug somewhere that I should fix.

Looks like it's fixed now: https://github.com/snake5/sgregex/commit/c334eab03f9a7dbf1b3e8f7b385fa577e48e5506


smtp_server.log stores credentials data in base64 plaintext

For what a point write credentials in logs all the time by default in "production" without option to turn this off? Key in all logs lines in this file says: "DEBUG", such data must be optional and not be logged by default.

There have also been numerous instances of people pasting their credentials in log file excerpts in these issues so it would be nice to save people from themselves.

Obviously because their credentials are base64 encoded and they even don't know that gudyhddg== can be password

And for me thos more 🔐 security issue then future

@willpower232 can you please set security tag?

This is now resolved in https://github.com/postalhq/postal/commit/fcb63616e1ce578d7d4fd1c96ddc4ee0f7a71534


refactor: implement getCode in Notice base class

closes #783
Summary:
This PR refactors Notice.getCode: getCode is implemented in Notice base class.
Expected behavior:
The notice code derives from its class name and formatted_as_this.
Following

Step 1. Implement Notice.getCode() method. It should strip the "notice" substring but not strip "error" since we will carefully remove that suffix in the further steps.

https://github.com/MobilityData/gtfs-validator/pull/783#issuecomment-790123561
Please make sure these boxes are checked before submitting your pull request - thanks!

[x] Run the unit tests with gradle test to make sure you didn't break anything
[x] Format the title like "feat: [new feature short description]". Title must follow the Conventional Commit Specification(https://www.conventionalcommits.org/en/v1.0.0/).
[x] Linked all relevant issues
~[] Include screenshot(s) showing how this pull request works and fixes the issue(s)~

I am back! Looking forward to updates on this nice PR!

Great job! Just one comment - and please submit the PR, I can't wait to see it in the repo.

Thanks @aababilov!


Need non-windows replacement for System.Drawing.Printing

The suggested alternatives to System.Drawing.Common only support image manipulation and do not support image printing.  Please update this document to offer suggested alternatives.  Or, can the code relevant only to printing be successfully migrated to a discrete package that can be used on non-windows platforms?

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 3fa60e1c-9c9a-ce16-2e47-c41857fc8c48
Version Independent ID: c3b792d7-50ab-ff45-09bf-37a7550f0e09
Content: Breaking change: System.Drawing.Common only supported on Windows - .NET
Content Source: docs/core/compatibility/core-libraries/6.0/system-drawing-common-windows-only.md
Product: dotnet-fundamentals
GitHub Login: @gewarren
Microsoft Alias: gewarren

@ericstj or @tarekgh Can you help with this question?

Including @dotnet/area-system-drawing the current owners of System.Drawing.
I agree we need to update the doc to add the recommendation for printing. This needs to be investigated more though to ensure including the best option.

cc @JeremyKuhne


Fix multinode start now that we're passing env.

_start_ray_workers signature needs to match that of parent

#767
#766  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @rohinb2 and the rest of your teammates on  Graphite


Throw error on entering non-existing type in Get-FormatData

Fix #4235
PR Summary
Throw error when Get-FormatData is given a non-existing type.
When no type definitions are are found for the provided type, ThrowTerminatingError() with 'SPECIFIED_TYPE_NOT_FOUND' as error ID.
PR Checklist

[x] PR has a meaningful title

Use the present tense and imperative mood when describing your changes

[x] Summarized changes
[x] Change is not breaking
[x] Make sure all .h, .cpp, .cs, .ps1 and .psm1 files have the correct copyright header
[ ] This PR is ready to merge and is not Work in Progress.

If the PR is work in progress, please add the prefix WIP: to the beginning of the title and remove the prefix when the PR is ready.

User-facing changes

[ ] Not Applicable
OR
[] User-facing Documentation needed

[x] Issue filed - Issue link: #4235

Testing - New and feature

[ ] Not Applicable or can only be tested interactively
OR
[x] Make sure you've added a new test if existing tests do not effectively test the code changed

[ ] Add [feature] if the change is significant or affects feature tests

 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.:x: faraazahmad sign nowYou have signed the CLA already but the status is still pending? Let us recheck it.

Seems we could TypeLoadException

Those obvious comments were already there, so I didn't mess with them.

@mklement0 Is the fix good for you?

@SteveL-MSFT I added new commit to address your comment, please update your review.

@SteveL-MSFT @dantraMSFT Please update your review.

HANG ON ... This is a breaking change to the function!!!
Does -ErrorAction SilentlyContinue work, or are you now forcing everyone to wrap this in a try/catch block?

@Jaykul this is a non-terminating error

@SteveL-MSFT it still breaks code like this, right?
if(!(Get-FormatData $Type)) {
   Update-FormatData -TypeName $Type ...
}

@Jaykul:
Yes, for someone who relied on the previous de facto behavior, this would be a breaking change.
That in itself may be reason enough to not make the change - I have no sense of and have made no attempt to assess the real-world impact. What do you think the real-world impact is?
On the other end of the spectrum: any bug fix is a breaking change: what used to break / work nonsensically before now no longer does.
But let us be clear re:

deliberately handled the situation correctly

Correctly in this situation means:

inferred from the de facto behavior

with no supporting evidence from the documentation

despite the behavior being inconsistent with that of other cmdlets.

And, indeed, the same applies to the current behavior of Get-Module: with a non-wildcard argument it should not default to quietly outputting "nothing" ([System.Management.Automation.Internal.AutomationNull]::Value)

or would you accept a PR for Get-Module too?

In that vein: either yes, or  document the surprising existing behavior - see #7498
As an aside:

may return multiple entries even without a wildcard.

Unless you're referring to Get-Module's -ListAvailable switch - an explicit opt-in to multiple matches - neither Get-Module nor Get-FormatData  return multiple matches with non-wildcard arguments.

It's ironic that I'm the one arguing this -- I argued rather passionately against the no-output, no-error design pattern years ago in a discussion on the PowerShell MVP mailing list (although at the time, my argument was specifically against commands that behave differently when you have a simple name, versus a wildcard (thus allowing the possibility of multiple items).
Ultimately I was rather deluged with examples from the broader ecosystem showing examples of commands quietly returning nothing when they could have returned many things.  My point is that this is how PowerShell commands behave, in general:
If the command can return MULTIPLE items, then when there is nothing to return, they just return nothing. These aren't bugs. They are a deliberate design choice.
And yes, you're wrong @mklement0, when you say that those commands don't return multiple items with simple parameters. Here are some concrete examples.
# There are about *eight* default rules that affect ScriptInfo, for example:
Get-FormatData System.Management.Automation.ScriptInfo

# Users can have multiple versions of the same module imported because of dependencies.
# We can import multiple versions of Pester as an example...
# (most of us have 3.4.0 and a newer one, right?):
Get-Module Pester -ListAvailable | Import-Module
Get-Module Pester

But it's not just those, most of the default Get commands do this if they could return multiple items:
During the first command of your session, there's no history (or, do Clear-History; Get-History)
Get-History

When a folder is empty
mkdir emptyfolder
Get-ChildItem .\emptyfolder

When there's no input:
Get-Unique
# Or even ...
Get-ChildItem .\EmptyFolder\ | Get-Unique
# Or even ...
Get-ChildItem .\EmptyFolder\ | Get-Random

When there are no sessions
Get-PSSession

When there are no commands
Get-Command -Verb Build

When there's no TypeData:
Get-TypeData System.Boolean

When there's no Jobs:
Get-Job

When there's no scheduled jobs
Get-ScheduledJob

When the clipboard is empty, as after KeePass
Set-Clipboard $null
Get-Clipboard

I trust I don't need to go through and test every Get command to make the point?

@Jaykul:

It's ironic that I'm the one arguing this

I hear you, but let me ask you this before I address your examples:

Despite your earlier misgivings, do all the behaviors you list now make sense to you?

Do you believe that all of them apply directly to the case at hand?

They make sense:

They are returning what's there.
They are consistent to the principle that if the command can return multiple items, in any particular case where there is nothing to return, they return that -- without error.

Obviously in a lot of these cases, it's very clear that there's not an error. That is (if you understood the situation), you didn't actually expect there to be any child items, history, jobs, content, sessions, etc...
I think all of them are examples of the rule, and serve to show that this cmdlet was correct without the PR.

For what it's worth:
If we were willing to break the backward compatibility of PowerShell, then I would be happy to argue again this design pattern and try to convince the world that all commands should have the same output behavior regardless of how many items they might output:

Users (and developers) can't always tell when this will be the case.
Although it's a "common" design pattern, it's clearly not well-known or documented.

But in reality, changing this behavior across all the built-in commands would break too much, and there's no way to actually "fix" it because too many commands are outside the control of this team.

I have to agree with @Jaykul , this makes sense. For example, if I ls an empty directory, the expected behaviour would be to not print anything, and not throw an error.

@SteveL-MSFT:
If this fix is ultimately kept, I suggest amending the error message in 2 ways:

Make it clear that what couldn't be found wasn't a type per se, but that type's formatting data loaded into the current session.

Given the need to to always specify the full type name (that is, you cannot omit the System. component and you cannot use type accelerators), the error message should provide a hint to that effect.

Therefore, instead of The type name '{0}' could not be found., perhaps we could say:
No formatting data for type name '{0}' has been loaded into the current session.
Note that type names must be specified exactly as defined and are typically full .NET type names.

@PowerShell/powershell-committee discussed this and we also discussed it in this morning's Community Call.  We agreed that the intent is that if a literal is passed and is not found, it should return a non-terminating error.  Cmdlets that don't have this behavior have bugs.  In cases where it's explicit or implicit filtering, it should return nothing.  We also agreed that we should revert this change and revisit making cmdlets consistent in 6.2.  Finally, the real issue is that we are missing Test-* cmdlets so users had to rely on current behavior with Get-* cmdlets to see if something exists and we should add those cmdlets in the future.

I think you're going to break so very many things -- that 6.2 needs to be 7.0 to be semantic

Lord have mercy... once you do this, WPS and CPS are completely different languages that just happen to be related. Forget about moving scripts between the two.

I heard today in the @PowerShell/powershell-committee Community Call that we're going to revert this and work towards consistency and Test-* cmdlets across the board.
@SteveL-MSFT if we agree that's the case, will the revert make RC? GA?

The @PowerShell/powershell-maintainers will be reverting this commit, but that won't happen for RC where we are already in process of release but will make it for GA.  @iSazonov if you are available, can you revert this as the other maintainers are working on the release?

@SteveL-MSFT Will do.

@SteveL-MSFT The commit already reverted by @TravisEz13

@iSazonov The discussion is continuing in https://github.com/PowerShell/PowerShell/issues/7498.  I've created https://github.com/PowerShell/PowerShell/issues/7562 for new Test- cmdlets

Didn't know my first contribution to Powershell could stir up so much controversy :sweat_smile:. Is it safe to delete the branch?

@faraazahmad I think it's a healthy discussion.  Yes, you can delete the branch.


Can we have 2 arrows at the same time?

Can we have 2 arrows at the same time? I want to show 2 divs at the same time.

Would require some pretty serious data structure and rendering changes (the kinetic.js parts especially), but if you do it please share!


Estimate gas for withdrawals

Results with current commit and setOnWithdrawalsUnwrapToGNOByDefault == true

item
count
gasUsed
gas / w

success withdrawal
1
106440
106440

success withdrawal
2
155905
77953

success withdrawal
4
269835
67459

success withdrawal
8
497707
62213

success withdrawal
16
953429
59589

success withdrawal
32
1864876
58277

success withdrawal
64
3687782
57622

failed withdrawal
1
112103
112103

failed withdrawal
2
160640
80320

failed withdrawal
4
287714
71929

failed withdrawal
8
541875
67734

failed withdrawal
16
1050177
65636

failed withdrawal
32
2066790
64587

failed withdrawal
64
4100056
64063

retry fail withdrawal
1
50353
50353

retry fail withdrawal
2
50353
25177

retry fail withdrawal
4
50353
12588

retry fail withdrawal
8
50353
6294

retry fail withdrawal
16
50353
3147

retry fail withdrawal
32
50353
1574

retry fail withdrawal
64
50353
787

retry success withdrawal
1
106440
106440

retry success withdrawal
2
155905
77953

retry success withdrawal
4
269835
67459

retry success withdrawal
8
497707
62213

retry success withdrawal
16
953429
59589

retry success withdrawal
32
1864876
58277

retry success withdrawal
64
3687782
57622

Contract design is final, no need to keep this gas estimations up


Select the same node when reloading/routing to tree component

Hi
Currently i am using ng2-tree like this.
i made two div in the page, left div have this tree structure, right side i will load component depending on selected treenode.
The issue is, when i click on treenode, right div is loaded with component. now if i reload the page, in the left div the selected treenode is not highlighted/selected. whereas in the right div is with that component.
pic: before page reload

so is there any way programatically select/click the treenode, so that when page reloads it automatically selects/highlights the treenode.
pic: after page reload(india is not selected/highlighted in the tree)

@devdcores I'll have a look as soon as possible. Will let you know once find something

@rychkog Thanks for your reply. It would be really helpful if u find something in this regard.
In my current application i am using your tree in many pages. when we navigate from one page to other the tree is again initialized and no selected item will be there.
is there any way we can save the tree state (opened nodes, selected item). so that we can restore the state of the tree. when navigating between the pages.

Isn't there an option to flag an element as selected in the data?

@devdcores @igasparetto This new API should help you with your issue
https://github.com/valor-software/ng2-tree#gun-controller

How can we automatically expand the tree once selecting a node ?

@roydekleijn Could, you reproduce the issue with null instead of treeController using stackblitz.com?
This way I'll be able to help you ASAP.

https://stackblitz.com/edit/angular-cptwup
I want the tree to be opened to node 7 (in this case)


Fix Opacity slider in Layers panel adding Transactions on_update

Make sure Opacity slider in Layers panel does not add Transactions( History ) on_update
Only add Transactions on_commit.

!build


Max cut

Added max cut demo.
Open to suggestions for other example applications of the max cut problem!

Closes #68


⚠ DesiTorrents has degraded performance

In f0689e8, DesiTorrents ($DST) experienced degraded performance:

HTTP code: 200
Response time: 3537 ms

Resolved: DesiTorrents performance has improved in 853804f.


Some minor stuff for static flow

Recovered from my older repo and updated. The struct in particular will be helpful in the near future.

@ibriano @ricardotk

Looks good, go for it.

Applied with the bool -> void change, and adding missing ; to the output.


Error

Whe This error ??
Error! Problem found. Error occurred during parsing: Fail to push limit.

cannot sure. please refer to this issue https://github.com/atlaschiew/bitcoin-cryptocurrency-tutorial/issues/18


Localization File. satellite assembly

ConfuserEx Version: 1.5.0
Target Framework: 4.0
Operating System: Win 10 x64

Case 1.
TEST_Confuserex.zip
I need portable application.
when i use Fody + Resource.embedder. + Confuser
i can't make portable application.
if have satellite assembly Folder.

Good work.. But is not portable app T_T
I Hope how can i use Resource.embedder File??

can i skip rename just resource file?
i think if Skip rename  ".resource file" is good work..
Case 2.
and.. sometime... satellite file random rename.

ko-KR - Random rename.. ( somefile rename, somefile not rename...)

es - Full rename.. Good work. ( Check it "_JCj9UWqMdsm69QOxLGumrSAkBiI" )
ko - Full rename..Good work.
i will try search that... why?
when if i can make simple project tell you..
Confuserex really Good is Fantastic solution. Thank you !!!!!!!!

sorry my english is not good..

Using the Fody resource embedder together with ConfuserEx is not going to work, because the assemblies that are stored inside of the main assembly will not be processed.
To work around this issue you've got multiple possibilities:

You can disable the renaming for the affected types. The resources files are renamed together with the types used to access theses resources. Meaning if you exclude the types that are used to access the resources from renaming, the resource files will remain untouched. You can do so by adding a new rule to your project file and use the Expression Functions to disable the name protection for the specific type. I suggest using full-name or match-name to select the types you need. Alternatively you can exclude the types in code using the declarative obfuscation
Alternatively you drop the Fody thing and use the compressor to create a single assembly deployment.

Thank you for reply to me !!!
But i don't use fody & resource embedder when Case 2.
you can check it here
https://github.com/mkaring/ConfuserEx/issues/389
TEST.Zip File...

i Think Case 2
When CultureInfo name have "-" dash and multiple Language FIles, Case 2 is Fire.
(  ko-kr, us-en )
i saw ko_kr & en_us (under bar) when decompile after packing confuserex.
Thank you !!!!!!!!!!!!!!!!!!!!!!!
Have a nice day ^^

Case 1 is Solve now !!!!!!!!!!!!
i try use compressor function after Remove Fody & Resource embedder.
satellite assembly (Language File) is perfect merge and good work ^^
but. case2 is.. not Finish...
Just "ko-kr" Bug...

Good Morning....
Hello..
if i use compressor function...
virustotal tell me so many virus...
i don't want false positive..
so can i merge Language resource without compress???

i solve that..
but not Beautiful.. T_T
TEST.zip

Thank you ^_^

The only way ConfuserEx is able to merge multiple assemblies is using the compressor. There is no other option. The name of the resources for Windows Forms have to match the name of the type that is used for windows forms.
So if you add the following attribute to your windows forms you can disable the renaming for the specific type:
[Obfuscation(Exclude = false, Feature = "-rename")]

Alternatively you can add a new rule to your crproj file that disables the renaming for the specific types you need. Based of the example you send for #389 this rule needs to be added as second rule:
  <rule pattern="inherits('System.Windows.Forms.Form') and member-type('type')" inherit="false">
    <protection id="rename" action="remove" />
  </rule>

For resources not based on windows forms, you have to add similar additional rules.

Good Work !!!!!!! Nice Job ^_^

Thank you !!!!!!!!!!!!!!!!


Feature/user update

Summary

User updating functionality is proposed.
The user view has a more dynamic behavior and gets its information from the back-end and can update all related data.

most of the comments are resolved, if there's anything else or something to keep in mind please do say


Can't run go mod tidy after installing

It seems like pgx dependency points to a no longer available module.
github.com/vgarvardt/gue/v2 imports
        github.com/jackc/pgtype tested by
        github.com/jackc/pgtype.test imports
        github.com/jackc/pgx/v4 tested by
        github.com/jackc/pgx/v4.test imports
        github.com/jackc/pgtype/ext/satori-uuid: module github.com/jackc/pgtype@latest found (v1.6.1), but does not contain package github.com/jackc/pgtype/ext/satori-uuid

I was able to fix on my working copy by bumping pgx to latest.
-       github.com/jackc/pgx/v4 v4.0.0-pre1.0.20190824185557-6972a5742186
+       github.com/jackc/pgx/v4 v4.9.0

Let me know if you would like a PR for that. Tests still pass but I didn't test the functionality (since I'm not using that adapter).

@zapo thank you for reporting. I just merged potential fix - can you please try version from master branch and if it works for you then I'll issue new release.

It works, thank you!


Use balena-io-playground/data-relay for doc assets

Was using a kb2ma repository temporarily while renaming.

@balena-ci I self-certify!


Something wrong in time.Parse()

Please answer these questions before submitting your issue. Thanks!

What version of Go are you using (go version)?
1.6.2

What operating system and processor architecture are you using (go env)?
windows 10/amd64

What did you do?
If possible, provide a recipe for reproducing the error.
A complete runnable program is good.
A link on play.golang.org is best.
I was learning golang this week.When I using time.Parse() to format time string,I tried "2006-01-02      15:04:09"~"2006-01-02 15:04:00" for fun.I fund some bugs in this function,but I can't fix them...Sorry...
You can see the program in  play.golang.org

What did you expect to see?
Can we use "Y-m-d" for the layout ?

What did you see instead?

Your layout is wrong. Please re-read the time package documentation for its format.
For general questions and language learning help, see https://golang.org/wiki/Questions

The question is I use the wrong layout and I got the wrong value and nil
str :="2016-07-20 02:30:00"
fmt.Println(str)
tm6,err:=time.Parse("2006-01-02 15:04:06",str)
fmt.Println(tm6,err)
tm3,err:=time.Parse("2006-01-02 15:04:03",str)
fmt.Println(tm3,err)
tm2,err:=time.Parse("2006-01-02 15:04:02",str)
fmt.Println(tm2,err)

//resault
2016-07-20 02:30:00
2000-07-20 02:30:00 +0000 UTC <nil>
2016-07-20 00:30:00 +0000 UTC <nil>
2016-06-30 02:30:00 +0000 UTC <nil>

Because it's impossible for time.Parse to detect errors in the layout
without using heuristics.


Check if XFF is available before denying on IP

When using allow=ip:x.x.x.x behind an application loadbalancer Fabio will always deny access since it does the denyByIP before checking if there is a "X-Forwarded-For" available and therefore uses the loadbalancers ip as source, this PR puts the denyByIP after the XFF check and makes it work as intended.

 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.You have signed the CLA already but the status is still pending? Let us recheck it.

@atillamas That is intentional.  Trusting the XFF header without also validating the source IP makes adding rules pointless.
Think of this scenario:
You have an allow=ip:<IP_ADDRESS>/8 because you want to restrict a route to localhost.  If you do not validate both source and XFF header anyone on the internet can do: curl -H 'X-Forwarded-For: <IP_ADDRESS> and gain access to your route.
The only way to make it secure is to trust both the XFF header you expect AND the actual upstream load balancers.  Meaning you will need at least two allows.

@leprechau Hi. Thank you for the info. But using 1.5.8 i can still access a rule that has allow=ip:<IP_ADDRESS>/16,ip:X.X.X.X and then using curl -H 'X-Forwarded-For: X.X.X.X' hostname  or even any of the <IP_ADDRESS>/16 adresses give me access where ip from the curl host is something completely different. Should i just close this PR and open an Issue ticket?

The allow rule should enforce that the remote address and the XFF, if present, be inside the allowed mask(s).

The test cases should cover that.  There are several scenarios around XFF and the remote source address.  Keep in mind that the code currently only inspects the first member of the XFF header as per spect that should be the nearest upstream peer.
https://github.com/fabiolb/fabio/blob/master/route/access_rules_test.go#L167-L202

@leprechau Ok, i think I've found the problem.. Apparently AWS decides to append the ip of the client to the end of the XFF list (this is for classic loadbalancer but it seems to apply to Application Loadbalancer also: https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/x-forwarded-headers.html), so if i do:
curl -H 'X-Forwarded-For: <IP_ADDRESS>' host
printing xff variable give me this:
<IP_ADDRESS>, <IP_ADDRESS>
is the X-Forwardeded for header set by curl
and <IP_ADDRESS> is the ip of the client doing the curl
The culprit is here:
https://github.com/fabiolb/fabio/blob/master/route/access_rules.go#L39-L40

Right, that bit of code should be correct.  The leftmost element of the field should be the client.
https://en.wikipedia.org/wiki/X-Forwarded-For#Format
The behavior of proxies is to add/set the XFF header to the remote address (client) if it is not present or append the header if it already exists.
That should mean that if you allow the address(s) of the ALB and the address(s) of the client(s) you want to be able to access the route it should work.
Maybe I am missing something here.

More specifically if you have this sequence of events:
Client (<IP_ADDRESS>) -> Proxy (<IP_ADDRESS>) -> fabio (<IP_ADDRESS>) -> The XFF at fabio should be <IP_ADDRESS>,<IP_ADDRESS> and you would need to allow both the client <IP_ADDRESS> and the immediate prior proxy <IP_ADDRESS>
The reason ... fabio needs to know who it can trust in this scenario and not blindly accept the XFF header.  You can use the XFF header to allow clients but we also need to validate the remote peer (the proxy) so we don't accept XFF headers from unknown parties.
Make sense?

@leprechau No, since it's the rightmost value that is the true client IP, I can manipulate the leftmost value with the curl -H 'X-Forwarded-For: whateveripiwant'
and whateveripiwant will be the leftmost value and then fabio will let it pass, even though it should be blocked...
This is in AWS behind a LB

That is because you are tricking the ALB by sending an XFF header with curl.  If you do not pass an XFF header with curl the XFF at the ALB should only be the client.  The ALB (like most proxies) will not replace an existing XFF it will simply append it.

Well if "tricking" it with just adding a Header with an allowed IP is the only thing needed to bypass it i wouldn't consider it secure at all.
If this indeed is the intended behaviour I'll continue to stick with WAF.

So you are saying you can bypass the allow list?

Yes, that's what i've been saying all along

Sorry, I wasn't following that.

Wasn't very clear maybe but here is the post again:
@leprechau Hi. Thank you for the info. But using 1.5.8 i can still access a rule that has allow=ip:<IP_ADDRESS>/16,ip:X.X.X.X and then using curl -H 'X-Forwarded-For: X.X.X.X' hostname or even any of the <IP_ADDRESS>/16 adresses give me access where ip from the curl host is something completely different. Should i just close this PR and open an Issue ticket?

Right, that bit of code should be correct. The leftmost element of the field should be the client.
https://en.wikipedia.org/wiki/X-Forwarded-For#Format

Well i guess AWS doesn't follow the standard then:
https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/x-forwarded-headers.html

If a request from a client already contains an X-Forwarded-For header, Elastic Load Balancing appends the IP address of the client at the end of the header value. In this case, the last IP address in the list is the IP address of the client. For example, the following header contains two IP addresses added by the client, which might not be trustworthy, plus the client IP address added by Elastic Load Balancing:

X-Forwarded-For: ip-address-1, ip-address-2, client-ip-address

XFF header semantics aside ... what is the IP of the ALB that sits before fabio?  What does fabio see as the "source" of that connection?

Just looking at the code a client should have to fall through both checks in order to be allowed.  The only exception would be an error in the first part of the AccessDeniedHTTP function.
If this error is printed the request would be allowed ...
https://github.com/fabiolb/fabio/blob/master/route/access_rules.go#L22-L26
Moving on the next check is for the actual remote address ... this only returns on a deny ...
https://github.com/fabiolb/fabio/blob/master/route/access_rules.go#L22-L26
Next we have the whole XFF parsing and checking ... this also only returns on a deny ...
https://github.com/fabiolb/fabio/blob/master/route/access_rules.go#L22-L26
Lastly we return false if and only if the previous two sections did not return ....
https://github.com/fabiolb/fabio/blob/master/route/access_rules.go#L53-L54
I'll setup some local test cases and see what if anything I can pinpoint.

With stock 1.5.8 with a very basic setup I cannot reproduce this.
Here is my setup .. all running locally on one machine:
Terminal 1:
go get github.com/hashicorp/http-echo
http-echo -text="hello"

Terminal 2:
consul agent -dev

Terminal 3:
fabio -log.level=TRACE

Terminal 4:
$ curl --request PUT --data 'route add http-echo / http://<IP_ADDRESS>:5678 opts "allow=ip:<IP_ADDRESS>/8,ip:<IP_ADDRESS>"' <IP_ADDRESS>:8500/v1/kv/fabio/config
true
$ curl http://<IP_ADDRESS>:9999/
hello
$ curl --interface <IP_ADDRESS> -H "X-Forwarded-For: <IP_ADDRESS>" http://<IP_ADDRESS>:9999/
access denied
$ curl --interface <IP_ADDRESS> http://<IP_ADDRESS>:9999/
access denied
$ curl --interface <IP_ADDRESS> --header "X-Forwarded-For: <IP_ADDRESS>" http://<IP_ADDRESS>:9999/
access denied

This is the expected behavior.  What am I missing here?

Actually ... I think I see the problem with multiple proxies in this case ...
$ curl --interface <IP_ADDRESS> --header "X-Forwarded-For: <IP_ADDRESS>" http://<IP_ADDRESS>:9999/
hello

Hrmm... so you need to validate the source in this case the upstream proxy but you also need to validate the header.

What we really need is an 'allow xff from' type setting.  Does that exist within the ALB?

XFF header semantics aside ... what is the IP of the ALB that sits before fabio? What does fabio see as the "source" of that connection?

The Loadbalancer connects from random ips from the subnets specified for the clients. for example
<IP_ADDRESS>
<IP_ADDRESS>
Here's some tcpdumps on port 9999 on the fabio client with the request headers:
curl echo.staging.budbee.com
GET / HTTP/1.1
X-Forwarded-For: <IP_ADDRESS>
X-Forwarded-Proto: http
X-Forwarded-Port: 80
Host: echo.staging.budbee.com
X-Amzn-Trace-Id: Root=1-5a946e06-bde747b0116cf72811e9e6a2
User-Agent: curl/7.29.0
Accept: */*

HTTP/1.1 200 OK
Content-Length: 25
Content-Type: text/plain; charset=utf-8
Date: Mon, 26 Feb 2018 20:28:54 GMT
X-App-Name: http-echo
X-App-Version: 0.2.3

curl -H 'X-Forwarded-For: <IP_ADDRESS>' echo.staging.budbee.com
GET / HTTP/1.1
X-Forwarded-For: <IP_ADDRESS>, <IP_ADDRESS>
X-Forwarded-Proto: http
X-Forwarded-Port: 80
Host: echo.staging.budbee.com
X-Amzn-Trace-Id: Root=1-5a946e22-f9626e80398045b8c1ae4376
User-Agent: curl/7.55.1
Accept: */*

HTTP/1.1 200 OK
Content-Length: 25
Content-Type: text/plain; charset=utf-8
Date: Mon, 26 Feb 2018 20:29:22 GMT
X-App-Name: http-echo
X-App-Version: 0.2.3

curl echo.staging.budbee.com
GET / HTTP/1.1
X-Forwarded-For: <IP_ADDRESS>
X-Forwarded-Proto: http
X-Forwarded-Port: 80
Host: echo.staging.budbee.com
X-Amzn-Trace-Id: Root=1-5a946e29-a4a8610d9e7ac71d926d84f2
User-Agent: curl/7.55.1
Accept: */*

HTTP/1.1 403 Forbidden
Content-Type: text/plain; charset=utf-8
X-Content-Type-Options: nosniff
Date: Mon, 26 Feb 2018 20:29:29 GMT
Content-Length: 14

It would probably be easiest to just check if there is a X-Amzn-Trace-Id Header present, and if so, use the rightmost XFF header, (even though I've understood that you don't want to do this). But it would make this whole thing work.

It would probably be easiest to just check if there is a X-Amzn-Trace-Id Header present, and if so, use the rightmost XFF header, (even though I've understood that you don't want to do this). But it would make this whole thing work.

It's not about a want ... it's about actually enforcing the given ruleset.
We could add some odd if header Z then look at this part of the XFF else look at somewhere else ... but that's just adding more layers of obfuscation and not actually preventing the actual problem when you have another proxy in-front of fabio.
The problem being: in the current implementation when you have another proxy before fabio you are open to arbitrary bypass of the access list by simply sending the right XFF header.
The reason I made the AccessDeniedHTTP function check both the actual source as well as the XFF header was to try and prevent this arbitrary bypass.  However, in the case of another proxy before fabio you are forced to blindly trust the source of the proxy which then means you are blindly trusting arbitrary XFF headers.
Trusting client side XFF headers in general is a big security hole in my opinion.  Sane load balancers should replace ... not append ... the XFF unless they are operating in a completely trusted environment.   If you have the ability to strip client sent XFF on the ALB ... force the ALB to set, not append ... that would be your best option now.

Currently fabio does not add the XFF header itself but rather allows the upstream core function do that work.  It respects client sent XFF which is the real problem with using it for access control in my opinion.
https://github.com/golang/go/blob/master/src/net/http/httputil/reverseproxy.go#L186-L194
I think another bool option to fabio like proxy.trust.xff that would strip the XFF from the request before it enters the proxy.  This could default to false for backwards compatibility but allow it to be set to true in cases where there is not another proxy before fabio and fabio wants to ensure unverified client sent XFF are not interpreted or passed on to other applications.

@magiconair do you have any thoughts on the above proposed option?  I could submit a quick PR to handle that if you agree.

@atillamas the other option may be to validate ALL components of the XFF instead of just an arbitrary first or last element.  In the case of an allow rule all parts of the XFF plus the actual remote address would have to match for the request to be passed onto the backend.  Similarly for a deny rule if any part of the XFF or the actual remote address matched the request would be denied.
I think this would be acceptable.  Thoughts?

What do you think of this as a replacement for the current logic in the XFF part of the AccessDeniedHTTP function:
// check xff source if present
if xff := r.Header.Get("X-Forwarded-For"); xff != "" {
	// Trusting xff headers sent from clients is dangerous and generally
	// bad practice.  Therefore, we cannot assume which if any of the elements
	// is the actual client address.  To try and avoid the chance of spoofed
	// headers and/or loose upstream proxies we validate all elements in the header.
	for xip := range strings.Split(xff, ",") {
		// ensure we only get the ip string
		xip = strings.TrimSpace(xip)
		// only continue if xip differs from host
		if xip != host {
			if ip = net.ParseIP(xip); ip == nil {
				log.Printf("[WARN] failed to parse xff address %s", xip)
			}
			// check xff source and return if denied
			if t.denyByIP(ip) {
				return true
			}
		}
	}
}

See the proposed "fix" in the #453 referenced above.

It's not about a want ... it's about actually enforcing the given ruleset.
We could add some odd if header Z then look at this part of the XFF else look at somewhere else ... but that's just adding more layers of obfuscation and not actually preventing the actual problem when you have another proxy in-front of fabio.
The problem being: in the current implementation when you have another proxy before fabio you are open to arbitrary bypass of the access list by simply sending the right XFF header.

I just don't get it. We can trust the headers given by AWS Loadbalancers, atleast the LAST ENTRY it will be appended by AWS and will always be the client IP connecting to the loadbalancer, it is to be trusted as the source of the connection and cannot be manipulated. As long as you trust AWS you can trust that value.

@atillamas the other option may be to validate ALL components of the XFF instead of just an arbitrary first or last element. In the case of an allow rule all parts of the XFF plus the actual remote address would have to match for the request to be passed onto the backend. Similarly for a deny rule if any part of the XFF or the actual remote address matched the request would be denied.
I think this would be acceptable. Thoughts?

Yes this would work for our usecase  atleast. But as soon as someone needs to actually use XFF headers it will become a problem i would assume?

Validating all elements shouldn’t break anyone needing to use XFF for a layered proxy setup.  It also ensures that we are not exclusively trusting client sent headers.
I know that in this particular instance it’s the last element.  But the last element just means the client to the proxy before fabio.  I don’t want to assume that there will never be a case where there is more than one hop before fabio.  This wouldn’t be a good design but I can’t really control what others deploy.
In all cases I can imagine validating all the elements of the header seems to be the best option without having any control over what the upstream peer, or more importantly the internet facing peer, is sending.

I know that in this particular instance it’s the last element. But the last element just means the client to the proxy before fabio. I don’t want to assume that there will never be a case where there is more than one hop before fabio. This wouldn’t be a good design but I can’t really control what others deploy.

Isn't that how it's supposed to work? That's how firewall rules work. You take the source ip and base the rules of that. Is it allowed, is it denied.
Anyways. Don't feel like it's any point in discussing this further.
Thanks for taking the time with this.
Should i just close this PR?

Yes, the last element should always be the closest peer to where you are reading the header.  However, like I said just reading the last element doesn't ensure it's the client address ... it could be the address of the proxy before the proxy before fabio.
Proxies behind proxies is just kind of a mess and should really be avoided if at all possible.  I think the solution in #453 will address the case of any number of proxies before fabio and handle them in the best way possible.
To this PR, yes you can close it if you're happy with the solution in the #453 PR.

@leprechau
Yes I'm happy with it.
Thanks for your effort.
Closing this

As a side note people have been saying to put an nginx in front of fabio to handle cases like generic redirects, https enforcements and header mangling since fabio does not support this. If this would again sit behind an ELB you have the multi-layered proxy setup.

Correct, I have another PR coming to address the blind trust of client XFF headers in cases where fabio is indeed the internet facing authoritative load balancer (my personal deployment).

Also not directly related but I think fabio is quickly addressing those use cases.  It now supports generic redirects, https enforcement and some header injection.  There are also quite a few discussions around the structure for full on header manipulation that could be implemented.
We've been tracking fabio for quite some time and over the last few months have decided all of our needs are addressed.  We have fabio deployed to production for a small set of applications and have plans to fully replace our haproxy/consul-template setup in the near future.
Thank you!


Docstring comments

@noculture would you like me to contribute docstring comments to upstream?
I continue to document the pieces as I'm examining the code

Yes please. More documentation is always welcome.


Adds link and description for TracerBench

TracerBench is a performance benchmarking tool built on the Chrome DevTools Protocol. It seems appropriate to add it to this great list!

@googlebot I signed it!

Project looks good and extremely well documented (fantastic work there.) I think any open tooling to help get developers thinking about their performance better is worth supporting.
Thank you and keep up the good work!


Update WAQI.php, new function get by geolocation

Merge the new function getObservationByGeoLocation to retrieve the API reading by geolocation (latitude, longitude)

Thanks for the PR! It will be a good addition indeed.