Jenkins 2 support

Description
Enables support for jenkins 2.x
Work in progress; not detecting if jenkins 2.x is installed yet.
Would love feedback on this
Issues Resolved
#466
#469
Check List

[X ] All tests pass. See https://github.com/chef-cookbooks/community_cookbook_documentation/blob/master/TESTING.MD
[ /] New functionality includes testing.
[X ] New functionality has been documented in the README if applicable
[ X] The CLA has been signed. See https://github.com/chef-cookbooks/community_cookbook_documentation/blob/master/CONTRIBUTING.MD

Thanks for writing this, I'm going to give it a go and comment on any changes I have to make

+1 for this, we are at Jenkins 2.5 already! ;)

What I am still missing is a check on the jenkins version (for master and war) to only do some things for jenkins 2.x

I've rebased the entire thing now on top of latest master :)

@tknerr I deleted security off, since it's the wizard that turns it on, which means that the only that we'd need to do to make this work is dynamically detect the jenkins version and set the wizard to be turned off.

Apparently the test fails because with the latest chef version jenkins doesn't start fast enough (or at all), but i have no idea why it does that in that specific case :s

I'll give your new changes a try!

Hi Daften
Probably travis is a bit slow.
Anyways, you can increase the timeout in: attributes/executor.rb

@daften Tested your branch using Vagrant running CentOS 7.1 to play with Jenkins 2 pipeline support and Docker containers, all went smoothly here. Recipe used:
node.set['jenkins']['master']['version'] = '2.6'
node.set['jenkins']['master']['install_method'] = 'war'

include_recipe 'jenkins::master'

plugins = [
  'docker-workflow',
  'github',
  'gitlab-plugin',
  'pipeline-stage-view',
  'workflow-aggregator',
  'workflow-multibranch'
]

plugins.each do |plugin_id|
  jenkins_plugin plugin_id
end

Thanks!

@daften Tested your branch using Vagrant running Ubuntu 14.04, works fine! Thanks!!

I've had problems with jenkins-cli (been experimenting with 2.6) and invalid header errors.
Adding "-Dhudson.diyChunking=false" to jvm_options fixes it.

@damphyr  Normally, this should be in jenkins itself (I saw a commit pass by, but yes, that does fix it. See also https://issues.jenkins-ci.org/browse/JENKINS-34287
@KrestenKjaer I just doubled the timeout time, hopefully the tests will succeed now. I leave it to your discretion to decide if I have to reset this after. Thanks for the feedback!

The build fails partially due to a slave not connected, can't find what's wrong, anybody have clues? :s

I'm excited about this feature branch. However the jenkins_user resource fails on this line:
https://github.com/daften/cookbook-jenkins/blob/master/libraries/user.rb#L104
       ---- Begin output of "java" -jar "/tmp/kitchen/cache/jenkins-cli.jar" -s http://localhost:8080 groovy /tmp/groovy20160718-10794-wijis0 ----
       STDOUT:
       STDERR: ERROR: Unexpected exception occurred while performing groovy command.
       org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
       RemoteClass: 4: unable to resolve class hudson.tasks.Mailer.UserProperty
        @ line 4, column 21.
               email = new hudson.tasks.Mailer.UserProperty('')
                       ^

       1 error

       	at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:310)
       	at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:946)
       	at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:593)
       	at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:542)
       	at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:298)
       	at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:268)
       	at groovy.lang.GroovyShell.parseClass(GroovyShell.java:688)
       	at groovy.lang.GroovyShell.run(GroovyShell.java:517)
       	at groovy.lang.GroovyShell.run(GroovyShell.java:497)

I have had the unfortunate effect of the update center not pulling the absolute latest compatible version of a plugin that is listed as a dependency which has often led to me having to start jenkins go to the GUI and update the plugins by hand before anything will run.

@johnr-spindance  i'm noticing that now in the kitchen tests that are running. Will see if I can find anything, but not sure I will, cause this seems to be more jenkins internally where things changed than purely the cookbook.
@damphyr that would be a problem with jenkins-cli I'd think? Can you give more info, I can try to reproduce, but that's not that easy :)

I have a working cookbook for 2.x using the master of this cookbook. I
ended up disabling authentication to do the work with the option to
re-enable it once everything is done.
But I can do all the things I need which include plugin installation and
credential creation (ssh and user/password).
Has been working nicely, I only had to increase the wait time for Jenkins'
boot-up sometime around 2.9.
btw. the last commit will break installations based on trusty, which only
has openjdk7 available out of the box.
On Mon, Aug 1, 2016 at 11:43 AM, Dieter Blomme<EMAIL_ADDRESS>wrote:

@johnr-spindance https://github.com/johnr-spindance i'm noticing that
now in the kitchen tests that are running. Will see if I can find anything,
but not sure I will, cause this seems to be more jenkins internally where
things changed than purely the cookbook.
@damphyr https://github.com/damphyr that would be a problem with
jenkins-cli I'd think? Can you give more info, I can try to reproduce, but
that's not that easy :)
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/chef-cookbooks/jenkins/pull/471#issuecomment-236535942,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAF5W0VbF3whvp2RwjsmfCbvQDjnZ__aks5qbb-3gaJpZM4IO66x
.

--
http://www.ampelofilosofies.gr

Hmmm, ok, I'll see what default java versions are on what versions of centos and ubuntu and adapt the cookbook, but I though trusty had openjdk-8 out of the box. It should have that since 15.10

trusty is 14.04 :)
Since it is LTS it is still in heavy use.
On Mon, Aug 1, 2016 at 1:29 PM, Dieter Blomme<EMAIL_ADDRESS>wrote:

Hmmm, ok, I'll see what default java versions are on what versions of
centos and ubuntu and adapt the cookbook, but I though trusty had openjdk-8
out of the box. It should have that since 15.10
—
You are receiving this because you were mentioned.

The java version should be fixed now, sorry for the delay, had some other things to take care of.
Disabling and enabling auth seems like the right thing to shift to a wrapper cookbook, although an example could be handy in the readme file i guess.

@johnr-spindance  After some digging it seems this is because the mailer plugin is not installed in jenkins 2 by default, unlike in jenkins 1.x.

For future reference, I tried fixing it like this, which off course failse, since without the correct plugin the script won't even compile:
            def plugins = jenkins.model.Jenkins.instance.getPluginManager().getPlugins()             def mailerPresent = false             plugins.each {               println "${it.getShortName()} - ${it.getVersion()}"               if (it.getShortName() == 'mailer') {                 mailerPresent = true               }             }             if (mailerPresent) {               email = new hudson.tasks.Mailer.UserProperty('#{new_resource.email}')               user.addProperty(email)             }

Some tests keep failing, mainly because the war install method doesn't adapt the startup scripts like the package install does. Could use some help at this point, since I'm not familiar with runit.

The online docker-based tests fail, but I can't see why, because locally, they run fine.
Furthermore there are some errors, but I'll need to run ALL kitchen tests to identify those, and I can't do that right now. Any help with doing this is appreciated ;)

+1 for this for installing Jenkins 2.19.4

As a test I pulled this PR and merged in the changes https://github.com/chef-cookbooks/jenkins/pull/557 - if you (@daften) want to rebase and fix it up I'm happy to merge or we can push my PR which still includes all your commits.

Whatever is easiest and quickest. I won't have time to rebase and test again for at least a week, so feel free to merge the other PR. Main thing is the jenkins 2 support :)
Thanks!

Thanks so much, we've pushed this in https://github.com/chef-cookbooks/jenkins/pull/557

Awesome, thanks!

@daften Some of the changes in your PR are still not merged in jenkins cookbook, right? I am still having issues installing Jenkins 2.0 using the cookbook. I am using the 5.0.1 version of the cookbook. I am getting the below error -
```  Error executing action execute on resource 'jenkins_script[create ~/.ssh credentials]'      ================================================================================
       Mixlib::ShellOut::ShellCommandFailed
       ------------------------------------
       Expected process to exit with [0], but received '255'
       ---- Begin output of "java" -jar "/tmp/kitchen/cache/jenkins-cli.jar" -s http://localhost:8080 -"remoting" -i "/tmp/kitchen/cache/jenkins-key" groovy /tmp/groovy20170502-24231-cddh15 ----
       STDOUT:
       STDERR: java.io.IOException: No X-Jenkins-CLI2-Port among [X-Jenkins, null, Server, X-Content-Type-Options, X-You-Are-In-Group-Disabled, X-Hudson, Date, X-Jenkins-Session, X-You-Are-Authenticated-As, X-Required-Permission, Set-Cookie, Expires, Content-Length, Content-Type]
            at hudson.cli.CLI.getCliTcpPort(CLI.java:305)
            at hudson.cli.CLI.<init>(CLI.java:137)
            at hudson.cli.CLIConnectionFactory.connect(CLIConnectionFactory.java:82)
            at hudson.cli.CLI._main(CLI.java:585)
            at hudson.cli.CLI.main(CLI.java:399)
            Suppressed: java.io.IOException: Server returned HTTP response code: 403 for URL: http://localhost:8080/cli?remoting=true
                    at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1840)
                    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)
                    at hudson.cli.FullDuplexHttpStream.<init>(FullDuplexHttpStream.java:99)
                    at hudson.cli.CLI.connectViaHttp(CLI.java:163)
                    at hudson.cli.CLI.<init>(CLI.java:141)
                    ... 3 more
       ---- End output of "java" -jar "/tmp/kitchen/cache/jenkins-cli.jar" -s http://localhost:8080 -"remoting" -i "/tmp/kitchen/cache/jenkins-key" groovy /tmp/groovy20170502-24231-cddh15 ----
       Ran "java" -jar "/tmp/kitchen/cache/jenkins-cli.jar" -s http://localhost:8080 -"remoting" -i "/tmp/kitchen/cache/jenkins-key" groovy /tmp/groovy20170502-24231-cddh15 returned 255

Do you know what could be the issue here?

That's probably related to the recent CLI changes in the newest versions of
Jenkins.
On Tue, May 2, 2017 at 12:29 PM, ankitgupta07<EMAIL_ADDRESS>wrote:

@daften https://github.com/daften Some of the changes in your PR are
still not merged in jenkins cookbook, right? I am still having issues
installing Jenkins 2.0 using the cookbook. I am using the 5.0.1 version of
the cookbook. I am getting the below error -
~/.ssh credentials]' ==============================
==================================================

       Mixlib::ShellOut::ShellCommandFailed
       ------------------------------------
       Expected process to exit with [0], but received '255'
       ---- Begin output of "java" -jar "/tmp/kitchen/cache/jenkins-cli.jar" -s http://localhost:8080 -"remoting" -i "/tmp/kitchen/cache/jenkins-key" groovy /tmp/groovy20170502-24231-cddh15 ----
       STDOUT:
       STDERR: java.io.IOException: No X-Jenkins-CLI2-Port among [X-Jenkins, null, Server, X-Content-Type-Options, X-You-Are-In-Group-Disabled, X-Hudson, Date, X-Jenkins-Session, X-You-Are-Authenticated-As, X-Required-Permission, Set-Cookie, Expires, Content-Length, Content-Type]
            at hudson.cli.CLI.getCliTcpPort(CLI.java:305)
            at hudson.cli.CLI.<init>(CLI.java:137)
            at hudson.cli.CLIConnectionFactory.connect(CLIConnectionFactory.java:82)
            at hudson.cli.CLI._main(CLI.java:585)
            at hudson.cli.CLI.main(CLI.java:399)
            Suppressed: java.io.IOException: Server returned HTTP response code: 403 for URL: http://localhost:8080/cli?remoting=true
                    at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1840)
                    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)
                    at hudson.cli.FullDuplexHttpStream.<init>(FullDuplexHttpStream.java:99)
                    at hudson.cli.CLI.connectViaHttp(CLI.java:163)
                    at hudson.cli.CLI.<init>(CLI.java:141)
                    ... 3 more
       ---- End output of "java" -jar "/tmp/kitchen/cache/jenkins-cli.jar" -s http://localhost:8080 -"remoting" -i "/tmp/kitchen/cache/jenkins-key" groovy /tmp/groovy20170502-24231-cddh15 ----
       Ran "java" -jar "/tmp/kitchen/cache/jenkins-cli.jar" -s http://localhost:8080 -"remoting" -i "/tmp/kitchen/cache/jenkins-key" groovy /tmp/groovy20170502-24231-cddh15 returned 255

Do you know what could be the issue here?

—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
<https://github.com/chef-cookbooks/jenkins/pull/471#issuecomment-298736520>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AALVnqBr-VwrZv29YZ6cOc1zHUO2jQRPks5r14QHgaJpZM4IO66x>
.

@stormerider The issue with new CLI has been fixed in version 5.0.1. So I don't think it's related. FYI, I am using the war method to install jenkins

@ankitgupta07 that seems related to an authentication error somehow. You best check your security of the jenkins instance if that's as it should be. If it isn't, open up another issue, because I don't think this is directly related to this.

@daften I am running into this issue while installing jenkins on a bare metal box. So basically, no jenkins instance exists when I start using jenkins cookbook to install jenkins 2.0

@ankitgupta07 OK, but I don't believe that this PR has anything to do with that. If the jenkins instance doesn't exist, that's something separate, so please open a separate issue!


Replace req["user"] with req["userEntity"] in the user.controller.ts

Overview
Take a read through the umbrella ticket. As a sub task to this ticket we want to phase out the use of req["user"] from the user.controller.ts. This most popular endpoint is GET /user/me. For a short period this endpoint will be less performant as the endpoint will be getting the full user profile twice: once in the AuthGuard and once when we hit the service. However, this hopefully will be solved swiftly as the refactor proceeds.
Action Items

[ ] In the user service, create a almost duplicate function user.getUserByFirebaseId and call it user.getUserProfile. getUserByFirebaseId will be refactored to only return the user and will be used by the FirebaseAuthguard. See detials blocked [ticket] (https://github.com/chaynHQ/bloom-backend/issues/454). The difference between the two functions is that instead of using the firebaseId we can use the userId instead to get the user.
[ ] In the controller, use the service method user.getUserProfile rather than returning req["user"]. You will need to pass it req["userEntity"].id.
[ ] Replace all other instances in the controller of req["user"] with references to req["userEntity"]. These are found in DELETE /user and PATCH /user.
[ ] Run all tests. This includes Cypress tests as this endpoint is used everywhere.

I'd like to work on this issue. Could you please assign it to me? Thank you!


[helm v3] The lock file (requirements.lock) is out of sync when using repository alias

This is similar to #7233.
helm dependency build using Helm 3 with v1 API fails with the following when repository in requirements.yaml is referenced by an alias.
manager.go:94: warning: a valid Helm v3 hash was not found. Checking against Helm v2 hash...
Error: the lock file (requirements.lock) is out of sync with the dependencies file (requirements.yaml). Please update the dependencies

helm version
$ helm version --client
Client: &version.Version{SemVer:"v2.14.3", GitCommit:"0e7f3b6637f7af8fcfddb3d2941fcc7cbebb0085", GitTreeState:"clean"}
$ helm3 version
version.BuildInfo{Version:"v3.1+unreleased", GitCommit:"", GitTreeState:"clean", GoVersion:"go1.13.8"}

steps to reproduce
helm v2
$ helm create test-chart
Creating test-chart
$ cd test-chart/
$ helm repo add elastic https://helm.elastic.co
"elastic" has been added to your repositories
$ cat << EOF > requirements.yaml
dependencies:
  - name: elasticsearch
    version: 7.5.1
    repository: '@elastic'
EOF
$ helm dep up
Hang tight while we grab the latest from your chart repositories...
...Unable to get an update from the "local" chart repository (http://<IP_ADDRESS>:8879/charts):
	Get http://<IP_ADDRESS>:8879/charts/index.yaml: dial tcp <IP_ADDRESS>:8879: connect: connection refused
...Successfully got an update from the "elastic" chart repository
...Successfully got an update from the "stable" chart repository
Update Complete.
Saving 1 charts
Downloading elasticsearch from repo https://helm.elastic.co
Deleting outdated charts

helm v3
$ helm3 repo add elastic https://helm.elastic.co
"elastic" has been added to your repositories
$ helm3 dep build
manager.go:94: warning: a valid Helm v3 hash was not found. Checking against Helm v2 hash...
Error: the lock file (requirements.lock) is out of sync with the dependencies file (requirements.yaml). Please update the dependencies

Note the same code works fine when repository in requirements.yaml is referenced by a full URL (e.g. https://helm.elastic.co)

thanks for finding this. Have you been able to identify a fix, or at least determine what causes this behaviour?

@bacongobbler  I have opened a PR for this, could you please help review it? Thanks :)


composer.lock in the repository

Is it normal that the composer.lock file is present in the repository ?
When installing a fresh 2.7.x-dev project the message is :
Warning: The lock file is not up to date with the latest changes in composer.json. You may be getting outdated dependencies. Run update to update them.
And i have a 2.6.4 project at the end of the installation...

Yes it's intended. But apparently @fabpot needs to recreate the lock file.

fixed now.


[Bug Report] Settings page navigation exceptions

Lapce Version
0.3.0
System information
Windows 11
Describe the bug
Sometimes, when we click on the navigation on the left side of the settings page, the settings do not jump to the specified position correctly. Especially the ones that are lower down. This is episodic, and the pattern of its appearance is not yet known.
Additional information
For example, click the tab of "Terminal Settings", it wont jump to the settings about terminal.

As I noted in #2808 the pattern of appearance seems to be fresh loads/renders of the settings page, when content below a certain point has not yet come into view. Maybe this'll make it easier to find the cause


Issue running on paper

when trying to run the plugin on a paper spigot server, it simply says "Could not load 'plugins\MyWorlds-1.16.5-v1.jar' in folder 'plugins' " when starting the server

What is the full error? This can't be everything.
Also, make sure BKCommonLib is installed as MyWorlds depends on it, as mentioned heavily on the Spigot page.

i don't know how i didn't see that, but thank you! it works now!

If that is fixed, should you close the issue.


Add clarity to .NET Framework installation for developers

Add clarity to .NET Framework installation for developers
General
The Install the .NET Framework for Developers could benefit from some reformatting and in some cases rewriting to clarify existing content or make it more noticeable.
See PR #2968.
/cc @mairaw

This issue was addressed in PR #4748


Review kube-bench results

This is an issue to track which ones we need to take care of, or offer the option for the user to work with

This is the results for a 3 control plane, 2 node cluster running 1.25.3 with kube-bench:
[INFO] 1 Control Plane Security Configuration
[INFO] 1.1 Control Plane Node Configuration Files
[PASS] 1.1.1 Ensure that the API server pod specification file permissions are set to 644 or more restrictive (Automated)
[PASS] 1.1.2 Ensure that the API server pod specification file ownership is set to root:root (Automated)
[PASS] 1.1.3 Ensure that the controller manager pod specification file permissions are set to 644 or more restrictive (Automated)
[PASS] 1.1.4 Ensure that the controller manager pod specification file ownership is set to root:root (Automated)
[PASS] 1.1.5 Ensure that the scheduler pod specification file permissions are set to 644 or more restrictive (Automated)
[PASS] 1.1.6 Ensure that the scheduler pod specification file ownership is set to root:root (Automated)
[PASS] 1.1.7 Ensure that the etcd pod specification file permissions are set to 644 or more restrictive (Automated)
[PASS] 1.1.8 Ensure that the etcd pod specification file ownership is set to root:root (Automated)
[WARN] 1.1.9 Ensure that the Container Network Interface file permissions are set to 644 or more restrictive (Manual)
[WARN] 1.1.10 Ensure that the Container Network Interface file ownership is set to root:root (Manual)
[PASS] 1.1.11 Ensure that the etcd data directory permissions are set to 700 or more restrictive (Automated)
[FAIL] 1.1.12 Ensure that the etcd data directory ownership is set to etcd:etcd (Automated)
[PASS] 1.1.13 Ensure that the admin.conf file permissions are set to 600 or more restrictive (Automated)
[PASS] 1.1.14 Ensure that the admin.conf file ownership is set to root:root (Automated)
[PASS] 1.1.15 Ensure that the scheduler.conf file permissions are set to 644 or more restrictive (Automated)
[PASS] 1.1.16 Ensure that the scheduler.conf file ownership is set to root:root (Automated)
[PASS] 1.1.17 Ensure that the controller-manager.conf file permissions are set to 644 or more restrictive (Automated)
[PASS] 1.1.18 Ensure that the controller-manager.conf file ownership is set to root:root (Automated)
[PASS] 1.1.19 Ensure that the Kubernetes PKI directory and file ownership is set to root:root (Automated)
[PASS] 1.1.20 Ensure that the Kubernetes PKI certificate file permissions are set to 644 or more restrictive (Manual)
[PASS] 1.1.21 Ensure that the Kubernetes PKI key file permissions are set to 600 (Manual)
[INFO] 1.2 API Server
[WARN] 1.2.1 Ensure that the --anonymous-auth argument is set to false (Manual)
[PASS] 1.2.2 Ensure that the --token-auth-file parameter is not set (Automated)
[PASS] 1.2.3 Ensure that the --DenyServiceExternalIPs is not set (Automated)
[PASS] 1.2.4 Ensure that the --kubelet-https argument is set to true (Automated)
[PASS] 1.2.5 Ensure that the --kubelet-client-certificate and --kubelet-client-key arguments are set as appropriate (Automated)
[FAIL] 1.2.6 Ensure that the --kubelet-certificate-authority argument is set as appropriate (Automated)
[PASS] 1.2.7 Ensure that the --authorization-mode argument is not set to AlwaysAllow (Automated)
[PASS] 1.2.8 Ensure that the --authorization-mode argument includes Node (Automated)
[PASS] 1.2.9 Ensure that the --authorization-mode argument includes RBAC (Automated)
[WARN] 1.2.10 Ensure that the admission control plugin EventRateLimit is set (Manual)
[PASS] 1.2.11 Ensure that the admission control plugin AlwaysAdmit is not set (Automated)
[WARN] 1.2.12 Ensure that the admission control plugin AlwaysPullImages is set (Manual)
[WARN] 1.2.13 Ensure that the admission control plugin SecurityContextDeny is set if PodSecurityPolicy is not used (Manual)
[PASS] 1.2.14 Ensure that the admission control plugin ServiceAccount is set (Automated)
[PASS] 1.2.15 Ensure that the admission control plugin NamespaceLifecycle is set (Automated)
[PASS] 1.2.16 Ensure that the admission control plugin NodeRestriction is set (Automated)
[PASS] 1.2.17 Ensure that the --secure-port argument is not set to 0 (Automated)
[FAIL] 1.2.18 Ensure that the --profiling argument is set to false (Automated)
[FAIL] 1.2.19 Ensure that the --audit-log-path argument is set (Automated)
[FAIL] 1.2.20 Ensure that the --audit-log-maxage argument is set to 30 or as appropriate (Automated)
[FAIL] 1.2.21 Ensure that the --audit-log-maxbackup argument is set to 10 or as appropriate (Automated)
[FAIL] 1.2.22 Ensure that the --audit-log-maxsize argument is set to 100 or as appropriate (Automated)
[WARN] 1.2.23 Ensure that the --request-timeout argument is set as appropriate (Manual)
[PASS] 1.2.24 Ensure that the --service-account-lookup argument is set to true (Automated)
[PASS] 1.2.25 Ensure that the --service-account-key-file argument is set as appropriate (Automated)
[PASS] 1.2.26 Ensure that the --etcd-certfile and --etcd-keyfile arguments are set as appropriate (Automated)
[PASS] 1.2.27 Ensure that the --tls-cert-file and --tls-private-key-file arguments are set as appropriate (Automated)
[PASS] 1.2.28 Ensure that the --client-ca-file argument is set as appropriate (Automated)
[PASS] 1.2.29 Ensure that the --etcd-cafile argument is set as appropriate (Automated)
[WARN] 1.2.30 Ensure that the --encryption-provider-config argument is set as appropriate (Manual)
[WARN] 1.2.31 Ensure that encryption providers are appropriately configured (Manual)
[WARN] 1.2.32 Ensure that the API Server only makes use of Strong Cryptographic Ciphers (Manual)
[INFO] 1.3 Controller Manager
[WARN] 1.3.1 Ensure that the --terminated-pod-gc-threshold argument is set as appropriate (Manual)
[FAIL] 1.3.2 Ensure that the --profiling argument is set to false (Automated)
[PASS] 1.3.3 Ensure that the --use-service-account-credentials argument is set to true (Automated)
[PASS] 1.3.4 Ensure that the --service-account-private-key-file argument is set as appropriate (Automated)
[PASS] 1.3.5 Ensure that the --root-ca-file argument is set as appropriate (Automated)
[PASS] 1.3.6 Ensure that the RotateKubeletServerCertificate argument is set to true (Automated)
[PASS] 1.3.7 Ensure that the --bind-address argument is set to <IP_ADDRESS> (Automated)
[INFO] 1.4 Scheduler
[FAIL] 1.4.1 Ensure that the --profiling argument is set to false (Automated)
[PASS] 1.4.2 Ensure that the --bind-address argument is set to <IP_ADDRESS> (Automated)

== Remediations master ==
1.1.9 Run the below command (based on the file location on your system) on the control plane node.
For example, chmod 644 <path/to/cni/files>

1.1.10 Run the below command (based on the file location on your system) on the control plane node.
For example,
chown root:root <path/to/cni/files>

1.1.12 On the etcd server node, get the etcd data directory, passed as an argument --data-dir,
from the command 'ps -ef | grep etcd'.
Run the below command (based on the etcd data directory found above).
For example, chown etcd:etcd /var/lib/etcd

1.2.1 Edit the API server pod specification file /etc/kubernetes/manifests/kube-apiserver.yaml
on the control plane node and set the below parameter.
--anonymous-auth=false

1.2.6 Follow the Kubernetes documentation and setup the TLS connection between
the apiserver and kubelets. Then, edit the API server pod specification file
/etc/kubernetes/manifests/kube-apiserver.yaml on the control plane node and set the
--kubelet-certificate-authority parameter to the path to the cert file for the certificate authority.
--kubelet-certificate-authority=<ca-string>

1.2.10 Follow the Kubernetes documentation and set the desired limits in a configuration file.
Then, edit the API server pod specification file /etc/kubernetes/manifests/kube-apiserver.yaml
and set the below parameters.
--enable-admission-plugins=...,EventRateLimit,...
--admission-control-config-file=<path/to/configuration/file>

1.2.12 Edit the API server pod specification file /etc/kubernetes/manifests/kube-apiserver.yaml
on the control plane node and set the --enable-admission-plugins parameter to include
AlwaysPullImages.
--enable-admission-plugins=...,AlwaysPullImages,...

1.2.13 Edit the API server pod specification file /etc/kubernetes/manifests/kube-apiserver.yaml
on the control plane node and set the --enable-admission-plugins parameter to include
SecurityContextDeny, unless PodSecurityPolicy is already in place.
--enable-admission-plugins=...,SecurityContextDeny,...

1.2.18 Edit the API server pod specification file /etc/kubernetes/manifests/kube-apiserver.yaml
on the control plane node and set the below parameter.
--profiling=false

1.2.19 Edit the API server pod specification file /etc/kubernetes/manifests/kube-apiserver.yaml
on the control plane node and set the --audit-log-path parameter to a suitable path and
file where you would like audit logs to be written, for example,
--audit-log-path=/var/log/apiserver/audit.log

1.2.20 Edit the API server pod specification file /etc/kubernetes/manifests/kube-apiserver.yaml
on the control plane node and set the --audit-log-maxage parameter to 30
or as an appropriate number of days, for example,
--audit-log-maxage=30

1.2.21 Edit the API server pod specification file /etc/kubernetes/manifests/kube-apiserver.yaml
on the control plane node and set the --audit-log-maxbackup parameter to 10 or to an appropriate
value. For example,
--audit-log-maxbackup=10

1.2.22 Edit the API server pod specification file /etc/kubernetes/manifests/kube-apiserver.yaml
on the control plane node and set the --audit-log-maxsize parameter to an appropriate size in MB.
For example, to set it as 100 MB, --audit-log-maxsize=100

1.2.23 Edit the API server pod specification file /etc/kubernetes/manifests/kube-apiserver.yaml
and set the below parameter as appropriate and if needed.
For example, --request-timeout=300s

1.2.30 Follow the Kubernetes documentation and configure a EncryptionConfig file.
Then, edit the API server pod specification file /etc/kubernetes/manifests/kube-apiserver.yaml
on the control plane node and set the --encryption-provider-config parameter to the path of that file.
For example, --encryption-provider-config=</path/to/EncryptionConfig/File>

1.2.31 Follow the Kubernetes documentation and configure a EncryptionConfig file.
In this file, choose aescbc, kms or secretbox as the encryption provider.

1.2.32 Edit the API server pod specification file /etc/kubernetes/manifests/kube-apiserver.yaml
on the control plane node and set the below parameter.
--tls-cipher-suites=TLS_AES_128_GCM_SHA256,TLS_AES_256_GCM_SHA384,TLS_CHACHA20_POLY1305_SHA256,
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256,
TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,
TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256,TLS_RSA_WITH_3DES_EDE_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA,
TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_256_GCM_SHA384

1.3.1 Edit the Controller Manager pod specification file /etc/kubernetes/manifests/kube-controller-manager.yaml
on the control plane node and set the --terminated-pod-gc-threshold to an appropriate threshold,
for example, --terminated-pod-gc-threshold=10

1.3.2 Edit the Controller Manager pod specification file /etc/kubernetes/manifests/kube-controller-manager.yaml
on the control plane node and set the below parameter.
--profiling=false

1.4.1 Edit the Scheduler pod specification file /etc/kubernetes/manifests/kube-scheduler.yaml file
on the control plane node and set the below parameter.
--profiling=false

== Summary master ==
42 checks PASS
9 checks FAIL
11 checks WARN
0 checks INFO

[INFO] 2 Etcd Node Configuration
[INFO] 2 Etcd Node Configuration
[PASS] 2.1 Ensure that the --cert-file and --key-file arguments are set as appropriate (Automated)
[PASS] 2.2 Ensure that the --client-cert-auth argument is set to true (Automated)
[PASS] 2.3 Ensure that the --auto-tls argument is not set to true (Automated)
[PASS] 2.4 Ensure that the --peer-cert-file and --peer-key-file arguments are set as appropriate (Automated)
[PASS] 2.5 Ensure that the --peer-client-cert-auth argument is set to true (Automated)
[PASS] 2.6 Ensure that the --peer-auto-tls argument is not set to true (Automated)
[PASS] 2.7 Ensure that a unique Certificate Authority is used for etcd (Manual)

== Summary etcd ==
7 checks PASS
0 checks FAIL
0 checks WARN
0 checks INFO

[INFO] 3 Control Plane Configuration
[INFO] 3.1 Authentication and Authorization
[WARN] 3.1.1 Client certificate authentication should not be used for users (Manual)
[INFO] 3.2 Logging
[WARN] 3.2.1 Ensure that a minimal audit policy is created (Manual)
[WARN] 3.2.2 Ensure that the audit policy covers key security concerns (Manual)

== Remediations controlplane ==
3.1.1 Alternative mechanisms provided by Kubernetes such as the use of OIDC should be
implemented in place of client certificates.

3.2.1 Create an audit policy file for your cluster.

3.2.2 Review the audit policy provided for the cluster and ensure that it covers
at least the following areas,
- Access to Secrets managed by the cluster. Care should be taken to only
  log Metadata for requests to Secrets, ConfigMaps, and TokenReviews, in
  order to avoid risk of logging sensitive data.
- Modification of Pod and Deployment objects.
- Use of `pods/exec`, `pods/portforward`, `pods/proxy` and `services/proxy`.
For most requests, minimally logging at the Metadata level is recommended
(the most basic level of logging).

== Summary controlplane ==
0 checks PASS
0 checks FAIL
3 checks WARN
0 checks INFO

[INFO] 4 Worker Node Security Configuration
[INFO] 4.1 Worker Node Configuration Files
[PASS] 4.1.1 Ensure that the kubelet service file permissions are set to 644 or more restrictive (Automated)
[PASS] 4.1.2 Ensure that the kubelet service file ownership is set to root:root (Automated)
[PASS] 4.1.3 If proxy kubeconfig file exists ensure permissions are set to 644 or more restrictive (Manual)
[PASS] 4.1.4 If proxy kubeconfig file exists ensure ownership is set to root:root (Manual)
[PASS] 4.1.5 Ensure that the --kubeconfig kubelet.conf file permissions are set to 644 or more restrictive (Automated)
[PASS] 4.1.6 Ensure that the --kubeconfig kubelet.conf file ownership is set to root:root (Automated)
[PASS] 4.1.7 Ensure that the certificate authorities file permissions are set to 644 or more restrictive (Manual)
[PASS] 4.1.8 Ensure that the client certificate authorities file ownership is set to root:root (Manual)
[PASS] 4.1.9 Ensure that the kubelet --config configuration file has permissions set to 644 or more restrictive (Automated)
[PASS] 4.1.10 Ensure that the kubelet --config configuration file ownership is set to root:root (Automated)
[INFO] 4.2 Kubelet
[PASS] 4.2.1 Ensure that the --anonymous-auth argument is set to false (Automated)
[PASS] 4.2.2 Ensure that the --authorization-mode argument is not set to AlwaysAllow (Automated)
[PASS] 4.2.3 Ensure that the --client-ca-file argument is set as appropriate (Automated)
[PASS] 4.2.4 Ensure that the --read-only-port argument is set to 0 (Manual)
[PASS] 4.2.5 Ensure that the --streaming-connection-idle-timeout argument is not set to 0 (Manual)
[FAIL] 4.2.6 Ensure that the --protect-kernel-defaults argument is set to true (Automated)
[PASS] 4.2.7 Ensure that the --make-iptables-util-chains argument is set to true (Automated)
[PASS] 4.2.8 Ensure that the --hostname-override argument is not set (Manual)
[WARN] 4.2.9 Ensure that the --event-qps argument is set to 0 or a level which ensures appropriate event capture (Manual)
[WARN] 4.2.10 Ensure that the --tls-cert-file and --tls-private-key-file arguments are set as appropriate (Manual)
[PASS] 4.2.11 Ensure that the --rotate-certificates argument is not set to false (Automated)
[PASS] 4.2.12 Verify that the RotateKubeletServerCertificate argument is set to true (Manual)
[WARN] 4.2.13 Ensure that the Kubelet only makes use of Strong Cryptographic Ciphers (Manual)

== Remediations node ==
4.2.6 If using a Kubelet config file, edit the file to set `protectKernelDefaults` to `true`.
If using command line arguments, edit the kubelet service file
/etc/systemd/system/kubelet.service.d/10-kubeadm.conf on each worker node and
set the below parameter in KUBELET_SYSTEM_PODS_ARGS variable.
--protect-kernel-defaults=true
Based on your system, restart the kubelet service. For example:
systemctl daemon-reload
systemctl restart kubelet.service

4.2.9 If using a Kubelet config file, edit the file to set `eventRecordQPS` to an appropriate level.
If using command line arguments, edit the kubelet service file
/etc/systemd/system/kubelet.service.d/10-kubeadm.conf on each worker node and
set the below parameter in KUBELET_SYSTEM_PODS_ARGS variable.
Based on your system, restart the kubelet service. For example,
systemctl daemon-reload
systemctl restart kubelet.service

4.2.10 If using a Kubelet config file, edit the file to set `tlsCertFile` to the location
of the certificate file to use to identify this Kubelet, and `tlsPrivateKeyFile`
to the location of the corresponding private key file.
If using command line arguments, edit the kubelet service file
/etc/systemd/system/kubelet.service.d/10-kubeadm.conf on each worker node and
set the below parameters in KUBELET_CERTIFICATE_ARGS variable.
--tls-cert-file=<path/to/tls-certificate-file>
--tls-private-key-file=<path/to/tls-key-file>
Based on your system, restart the kubelet service. For example,
systemctl daemon-reload
systemctl restart kubelet.service

4.2.13 If using a Kubelet config file, edit the file to set `TLSCipherSuites` to
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_128_GCM_SHA256
or to a subset of these values.
If using executable arguments, edit the kubelet service file
/etc/systemd/system/kubelet.service.d/10-kubeadm.conf on each worker node and
set the --tls-cipher-suites parameter as follows, or to a subset of these values.
--tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_128_GCM_SHA256
Based on your system, restart the kubelet service. For example:
systemctl daemon-reload
systemctl restart kubelet.service

== Summary node ==
19 checks PASS
1 checks FAIL
3 checks WARN
0 checks INFO

[INFO] 5 Kubernetes Policies
[INFO] 5.1 RBAC and Service Accounts
[WARN] 5.1.1 Ensure that the cluster-admin role is only used where required (Manual)
[WARN] 5.1.2 Minimize access to secrets (Manual)
[WARN] 5.1.3 Minimize wildcard use in Roles and ClusterRoles (Manual)
[WARN] 5.1.4 Minimize access to create pods (Manual)
[WARN] 5.1.5 Ensure that default service accounts are not actively used. (Manual)
[WARN] 5.1.6 Ensure that Service Account Tokens are only mounted where necessary (Manual)
[WARN] 5.1.7 Avoid use of system:masters group (Manual)
[WARN] 5.1.8 Limit use of the Bind, Impersonate and Escalate permissions in the Kubernetes cluster (Manual)
[INFO] 5.2 Pod Security Standards
[WARN] 5.2.1 Ensure that the cluster has at least one active policy control mechanism in place (Manual)
[WARN] 5.2.2 Minimize the admission of privileged containers (Manual)
[WARN] 5.2.3 Minimize the admission of containers wishing to share the host process ID namespace (Automated)
[WARN] 5.2.4 Minimize the admission of containers wishing to share the host IPC namespace (Automated)
[WARN] 5.2.5 Minimize the admission of containers wishing to share the host network namespace (Automated)
[WARN] 5.2.6 Minimize the admission of containers with allowPrivilegeEscalation (Automated)
[WARN] 5.2.7 Minimize the admission of root containers (Automated)
[WARN] 5.2.8 Minimize the admission of containers with the NET_RAW capability (Automated)
[WARN] 5.2.9 Minimize the admission of containers with added capabilities (Automated)
[WARN] 5.2.10 Minimize the admission of containers with capabilities assigned (Manual)
[WARN] 5.2.11 Minimize the admission of Windows HostProcess containers (Manual)
[WARN] 5.2.12 Minimize the admission of HostPath volumes (Manual)
[WARN] 5.2.13 Minimize the admission of containers which use HostPorts (Manual)
[INFO] 5.3 Network Policies and CNI
[WARN] 5.3.1 Ensure that the CNI in use supports NetworkPolicies (Manual)
[WARN] 5.3.2 Ensure that all Namespaces have NetworkPolicies defined (Manual)
[INFO] 5.4 Secrets Management
[WARN] 5.4.1 Prefer using Secrets as files over Secrets as environment variables (Manual)
[WARN] 5.4.2 Consider external secret storage (Manual)
[INFO] 5.5 Extensible Admission Control
[WARN] 5.5.1 Configure Image Provenance using ImagePolicyWebhook admission controller (Manual)
[INFO] 5.7 General Policies
[WARN] 5.7.1 Create administrative boundaries between resources using namespaces (Manual)
[WARN] 5.7.2 Ensure that the seccomp profile is set to docker/default in your Pod definitions (Manual)
[WARN] 5.7.3 Apply SecurityContext to your Pods and Containers (Manual)
[WARN] 5.7.4 The default namespace should not be used (Manual)

== Remediations policies ==
5.1.1 Identify all clusterrolebindings to the cluster-admin role. Check if they are used and
if they need this role or if they could use a role with fewer privileges.
Where possible, first bind users to a lower privileged role and then remove the
clusterrolebinding to the cluster-admin role :
kubectl delete clusterrolebinding [name]

5.1.2 Where possible, remove get, list and watch access to Secret objects in the cluster.

5.1.3 Where possible replace any use of wildcards in clusterroles and roles with specific
objects or actions.

5.1.4 Where possible, remove create access to pod objects in the cluster.

5.1.5 Create explicit service accounts wherever a Kubernetes workload requires specific access
to the Kubernetes API server.
Modify the configuration of each default service account to include this value
automountServiceAccountToken: false

5.1.6 Modify the definition of pods and service accounts which do not need to mount service
account tokens to disable it.

5.1.7 Remove the system:masters group from all users in the cluster.

5.1.8 Where possible, remove the impersonate, bind and escalate rights from subjects.

5.2.1 Ensure that either Pod Security Admission or an external policy control system is in place
for every namespace which contains user workloads.

5.2.2 Add policies to each namespace in the cluster which has user workloads to restrict the
admission of privileged containers.

5.2.3 Add policies to each namespace in the cluster which has user workloads to restrict the
admission of `hostPID` containers.

5.2.4 Add policies to each namespace in the cluster which has user workloads to restrict the
admission of `hostIPC` containers.

5.2.5 Add policies to each namespace in the cluster which has user workloads to restrict the
admission of `hostNetwork` containers.

5.2.6 Add policies to each namespace in the cluster which has user workloads to restrict the
admission of containers with `.spec.allowPrivilegeEscalation` set to `true`.

5.2.7 Create a policy for each namespace in the cluster, ensuring that either `MustRunAsNonRoot`
or `MustRunAs` with the range of UIDs not including 0, is set.

5.2.8 Add policies to each namespace in the cluster which has user workloads to restrict the
admission of containers with the `NET_RAW` capability.

5.2.9 Ensure that `allowedCapabilities` is not present in policies for the cluster unless
it is set to an empty array.

5.2.10 Review the use of capabilites in applications running on your cluster. Where a namespace
contains applicaions which do not require any Linux capabities to operate consider adding
a PSP which forbids the admission of containers which do not drop all capabilities.

5.2.11 Add policies to each namespace in the cluster which has user workloads to restrict the
admission of containers that have `.securityContext.windowsOptions.hostProcess` set to `true`.

5.2.12 Add policies to each namespace in the cluster which has user workloads to restrict the
admission of containers with `hostPath` volumes.

5.2.13 Add policies to each namespace in the cluster which has user workloads to restrict the
admission of containers which use `hostPort` sections.

5.3.1 If the CNI plugin in use does not support network policies, consideration should be given to
making use of a different plugin, or finding an alternate mechanism for restricting traffic
in the Kubernetes cluster.

5.3.2 Follow the documentation and create NetworkPolicy objects as you need them.

5.4.1 If possible, rewrite application code to read Secrets from mounted secret files, rather than
from environment variables.

5.4.2 Refer to the Secrets management options offered by your cloud provider or a third-party
secrets management solution.

5.5.1 Follow the Kubernetes documentation and setup image provenance.

5.7.1 Follow the documentation and create namespaces for objects in your deployment as you need
them.

5.7.2 Use `securityContext` to enable the docker/default seccomp profile in your pod definitions.
An example is as below:
  securityContext:
    seccompProfile:
      type: RuntimeDefault

5.7.3 Follow the Kubernetes documentation and apply SecurityContexts to your Pods. For a
suggested list of SecurityContexts, you may refer to the CIS Security Benchmark for Docker
Containers.

5.7.4 Ensure that namespaces are created to allow for appropriate segregation of Kubernetes
resources and that all new resources are created in a specific namespace.

== Summary policies ==
0 checks PASS
0 checks FAIL
30 checks WARN
0 checks INFO

== Summary total ==
68 checks PASS
10 checks FAIL
47 checks WARN
0 checks INFO


[AAQ-346] Switch from Nginx/Certbot to Caddy

Reviewer: @amiraliemami
Estimate: 30 mins

Ticket
Fixes: AAQ-346
Description, Motivation and Context
Goal
Simplify arch
Changes
Removed Nginx and Certbot
Added Caddy
How has this been tested?
Run locally using docker compose.
Have not tested deployment on server!
Checklist
Fill with x for completed. Delete any lines that are not relevant

[x] My code follows the style guidelines of this project
[x] I have reviewed my own code to ensure good quality
[x] I have tested the functionality of my code to ensure it works as intended
[x] I have resolved merge conflicts
[x] I have updated the automated tests (if applicable)
[x] I have updated the requirements (if applicable)
[x] I have updated the README file (if applicable)
[ x] I have updated affected documentation (if applicable)

nginx root folder need to be deleted

This is being used for deployment. I'll leave it for now till @yvonnegitau and @suzinyou look at deployment for caddy.

deployment/template.env needs to be updated

I don't think this needs to change. I have deleted the template.env.nginx file.

Also, should we test and add server deployment compatibility before we merge with main so we don't break our deployments?

I'll check with @suzinyou. Deployments will definitely break but we can fix it in another PR. I want to make sure it doesn't mess up EG demo though since we use that for other demos.


Removed fields not in use

Removed fields that have been declared but were not used anywhere within
the solution to reduce build warnings/for clarity.

This is for issue #6.

Got it earmarked for abit later tonight (GMT) and a couple of the others.

On 31 Aug 2017, at 17:41, Alan Mervitz<EMAIL_ADDRESS>wrote:
@amervitz requested changes on this pull request.
Please address the feedback in IfxMetrixReporter.cs, once done we should be able to close this off.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.


Cannot locate .hishtory.db file

The main README.md says:

I've been trying to find it in my local workspace but it doesn't seem to exist:

Any pointers are appreciated!

It is in ~/.hishtory/.hishtory.db:
david@Davids-MacBook-Air hishtory % sqlite3 ~/.hishtory/.hishtory.db
SQLite version 3.37.0 2021-12-09 01:34:53
Enter ".help" for usage hints.
sqlite> .schema
CREATE TABLE `history_entries` (`local_username` text,`hostname` text,`command` text,`current_working_directory` text,`exit_code` integer,`start_time` datetime,`end_time` datetime,`device_id` text, `home_directory` text, `custom_columns` blob);
CREATE UNIQUE INDEX `compositeindex` ON `history_entries`(`local_username`,`hostname`,`command`,`current_working_directory`,`exit_code`,`start_time`,`end_time`,`device_id`);
sqlite>

Let me know if you're still having issues finding it!

@ddworken Works! Didn't realize it was a dot file :)
One quick follow unrelated follow up: is it possible to index my previous history into hishtory?


Slim down jsforce-core browser library

Some dependencies, like underscore.js, can be replaced with something smaller.

It was my concern too. The easiest would be that, all external libraries shouldn't be bundle into the core, at all, so that we can e.g. add our own version of underscore (or lodash according to the package.json?), reused in other parts of the application. Removing it altogether would be obviously better...

Now the latest code has been slimed-down like this.
-rw-r--r--  1 stomita  staff    2856  3  2 17:59 build/jsforce-api-analytics.min.js
-rw-r--r--  1 stomita  staff    2029  3  2 17:59 build/jsforce-api-apex.min.js
-rw-r--r--  1 stomita  staff   11581  3  2 17:59 build/jsforce-api-bulk.min.js
-rw-r--r--  1 stomita  staff    3391  3  2 17:59 build/jsforce-api-chatter.min.js
-rw-r--r--  1 stomita  staff   28759  3  2 17:59 build/jsforce-api-metadata.min.js
-rw-r--r--  1 stomita  staff    3604  3  2 17:59 build/jsforce-api-soap.min.js
-rw-r--r--  1 stomita  staff   44358  3  2 17:59 build/jsforce-api-streaming.min.js
-rw-r--r--  1 stomita  staff    2708  3  2 17:59 build/jsforce-api-tooling.min.js
-rw-r--r--  1 stomita  staff  219569  3  2 17:59 build/jsforce-core.min.js
-rw-r--r--  1 stomita  staff  289901  3  2 17:59 build/jsforce.min.js

The jsforce.min.js is 284KB in size and the jsforce-core.min.js is 216KB. Usually the size is become rather big because it includes polyfills like Buffer.
It will be published to npm in a few days.


Custom values possible?

Chromecast remote YouTube and Netflix buttons have no key names but do report a unique value. Can this be used?
I tried the code value in place of the button name but no luck
Event: time<PHONE_NUMBER>.653384, type 4 (EV_MSC), code 4 (MSC_SCAN), value c0077
Event: time<PHONE_NUMBER>.653384, type 1 (EV_KEY), code 588 (?), value 1
Event: time<PHONE_NUMBER>.653384, -------------- SYN_REPORT ------------
Event: time<PHONE_NUMBER>.773394, type 4 (EV_MSC), code 4 (MSC_SCAN), value c0077
Event: time<PHONE_NUMBER>.773394, type 1 (EV_KEY), code 588 (?), value 0
Event: time<PHONE_NUMBER>.773394, -------------- SYN_REPORT ------------
Event: time<PHONE_NUMBER>.213425, type 4 (EV_MSC), code 4 (MSC_SCAN), value c0078
Event: time<PHONE_NUMBER>.213425, type 1 (EV_KEY), code 589 (?), value 1
Event: time<PHONE_NUMBER>.213425, -------------- SYN_REPORT ------------
Event: time<PHONE_NUMBER>.353349, type 4 (EV_MSC), code 4 (MSC_SCAN), value c0078
Event: time<PHONE_NUMBER>.353349, type 1 (EV_KEY), code 589 (?), value 0
Event: time<PHONE_NUMBER>.353349, -------------- SYN_REPORT ------------

I see this was already started here https://github.com/philipl/evdevremapkeys/issues/33


Video/Log file overridden when resetSession used

When we specify the capability to save the video/log with the desired filename, the file gets overridden when resetSession is used. This doesn't happen when no file name is specified as Selenoid's default behaviour is to save the file with the session ID, which will be different for the second execution done after the resetSession is issued. Is there a workaround for this?

The reason we have to rely on the capability to name the file is, the session id's aren't following the same pattern all the time.
We have seen the following three types of id's. Can you help us understand when this happens and how to make them follow a particular pattern all the time?

9f3a40ef-69f6-4f34-86d1-0151aab02016.mp4
9ff6a92f168d466eee002c1ef06cb06a.mp4
selenoid61c83d6f4b3b831e4c63d808cba00960.mp4

@prasadasokan

Selenoid does not process resetSession capability at all.
Selenoid always saves files as <session-id>.mp4. However Chromedriver (and probably Operadriver) generates sessions as 9ff6a92f168d466eee002c1ef06cb06a whereas other drivers (Geckodriver, Appium, etc.) return 9f3a40ef-69f6-4f34-86d1-0151aab02016.
selenoid61c83d6f4b3b831e4c63d808cba00960.mp4 is a temporary file name renamed to final name when the session is closed. When no sessions are running no such files should exist.

Thanks @vania-pooh
So we can go ahead with the video name capability then as there is no possibility of the video being overridden.

@prasadasokan we consider user responsibility to provide unique video file names when using videoName capability.


In full screen mode, items on background are klicking

In full screen mode, i'm clicking on the video Layout and items which on the background (not visible) are clicking.

Mmm.. that is weird.
I'll check :)

Hi @Monster-king
So, the "problem" is because we return "false" in our internal onTouchListener implementation.
The easiest way to solve it, it just set the onTouchListener and return false.
view.setOnTouchListener...

I am having the same issue, but I am not sure where to set the view.setOnTouchListener(true);?


Skin manager not having any skins on dropdown

My jellyfin is running off docker on ubuntu 22.04. Recently install skin manager and restart jellyfin but there are no skins on dropdown, i dont know if it is cause im using cloudflare as tunnel for my website for viewing jellyfin

Try clearing your browser client cache and cookies,then access jellyfin directly from localhost.
It happened to me when upgraded the jellyfin server version, a lot of settings that should have been there disappeared.
---Original---
From: "scott @.>
Date: Fri, Aug 25, 2023 07:07 AM
To: @.>;
Cc: @.***>;
Subject: [danieladov/jellyfin-plugin-skin-manager] Skin manager not having anyskins on dropdown (Issue #58)
My jellyfin is running off docker on ubuntu 22.04. Recently install skin manager and restart jellyfin but there are no skins on dropdown, i dont know if it is cause im using cloudflare as tunnel for my website for viewing jellyfin
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you are subscribed to this thread.Message ID: @.***>


Replace TBD with the correct App ID/SPN for SPO/OneDrive

Under the section "For example, for SharePoint Online and OneDrive for Business:" it has the APP ID as "TBD" instead of the correct value when setting the key vault access policy. The correct app ID is shown earlier on the page, but is not in the example.
Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 58b6670c-3ed1-97f9-b728-79bb77106206
Version Independent ID: 50934005-9e01-e6ea-21dc-af6735e1faa7
Content: Set up Customer Key - Microsoft 365 Compliance
Content Source: microsoft-365/compliance/customer-key-set-up.md
Service: o365-seccomp
GitHub Login: @KCCross
Microsoft Alias: krowley

@andypituch Thank you for your feedback. We have made changes in the document via PR#https://github.com/MicrosoftDocs/microsoft-365-docs/pull/2476
Thanks
Sri

@msbemba  Thank you very much for the contribution and updating the documentation with PR. @andypituch Hope this update is helpful for you. Thanks for taking out some time to open the issue. Appreciate and encourage you to do the same in future also.


Two reports

Is there a way to run kover twice once generating a report on the entire project and the second time on very specific classes?

Hi,
unfortunately, now there is only one task for generating HTML/XML files.
You may pass an additional parameter when starting the build and change the filters depending on it, e.g.
koverReport {
    filters {

        if (project.hasProperty("limitedKoverReport")) {
            includes{
                classes("very.specific.classes.*")
            }
        }

    }
}

and pass it during the build
gradlew koverHtmlReport -PlimitedKoverReport

Does filtering with the word include exclude everything that is not in the include block?

Does filtering with the word include exclude everything that is not in the include block?

Yes, the includes filter excludes all classes from the report except those specified.
It is acceptable to use * and ? wildcards in class names; * means any number of arbitrary characters (including no chars), ? means one arbitrary character.


Cluster containing multiple annotations with exact same coordinates.

Currently, when a cluster contains multiple annotations with exact same coordinates, they do not expand (display child annotations) when tapped on or zoomed in. Is there a way to add handle such cases or perhaps add displacement to this annotations so they're displayed separately.

You can reduce the maxZoomLevel of the cluster manager to have access to the annotations. But they wont be distinct.

+1
Here could be some directions to solve this :
https://stackoverflow.com/questions/44698027/correctly-handle-clustering-when-markers-are-placed-identically-and-overlapping

Hi maxep,
Today I have also faced this kind of issue. After reduce the "maxZoomLevel", I can see the child annotatins.
Thanks for the above solution.
:) 👍

This library handles this quit nice: https://github.com/ashare80/TSClusterMapView
It moves the annotations in a circular form around the center


PYIC-4818: Spike into device sniffing POC

Proposed changes
What changed
Spike into device sniffing POC
Why did it change

Issue tracking

PYIC-4818

Don't merge, just a POC branch


react-redux: Using mergeProps with Object-type mapDispatchToProps

As far as I understand, https://github.com/flowtype/flow-typed/blob/master/definitions/npm/react-redux_v5.x.x/flow_v0.62.0-/react-redux_v5.x.x.js does not allow to use mergeProps with mapDispatchToProps defined as Object. Is it intended?
I receive the following errors:
Error ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ src/accounts/utils/withCompanyAccount.js:87:16

Cannot call connect because:
 • Either a callable signature is missing in object literal [1] but exists in MapDispatchToProps [2].
 • Or a callable signature is missing in object literal [1] but exists in MapDispatchToProps [3].

     src/withAccount.js
 [1]  57│ const mapDispatchToProps = {
      58│   onPersistAccount: accountsActions.persistAccount,
      59│   onRequestProject: projectsActions.requestMaybeInactiveProject,
      60│   onRequestExchange: exchangeActions.requestMaybeInactiveExchange,
      61│   onPersistProject: projectsActions.persistProject,
      62│   onPersistExchange: exchangeActions.persistExchange
      63│ };
        :
      84│   );
      85│ }
      86│
      87│ export default connect(mapStateToProps, mapDispatchToProps, mergeProps);
      88│

     flow-typed/npm/react-redux_v5.x.x.js
 [2] 132│     mapDispatchToProps: ?MapDispatchToProps<A, DP, RDP>,
        :
 [3] 147│     mapDispatchToProps: ?MapDispatchToProps<A, DP, RDP>,

Found 1 error

Only showing the most relevant union/intersection branches.
To see all branches, re-run Flow with --show-all-branches

cc @villesau

@102 good catch, not intended!


System-Versioned (Temporal) History Table Index Fail on Build. Not reproducible. SDK-style SQLProj

This is pretty simple. I can't reproduce this error, but I had a clean project. Using the GUI to build the Project. Not connected to any systems (offline development). Using SDK-style project file. Made a change, and rebuilt just to confirm. Got 2 identical errors thrown
Build error SQL71508: The model already has an element that has the same name dbo.tablename.IX_indexname

I investigated the table and index. Realized it was referring to the history table. Knew nothing could actually be wrong. Reran the build command and it succeeded just fine.
Random bug?
Version: 1.43.0 (system setup)
Commit: b790d700898b1095d83e62f0de14678a58222520
Date: 2023-04-10T23:14:27.236Z
VS Code: 1.67.0
Electron: 19.1.8
Chromium: 102.0.5005.167
Node.js: 16.14.2
V8: <IP_ADDRESS>-electron.0
OS: Windows_NT x64 10.0.19045
SQL Database Projects v1.0.1

if you're able to repro this again, please share the repro steps and we can try to investigate

Please reopen this issue if repro steps can be provided

I am getting this same error on a project that has literally not changed between when it build successfully a week ago and when it is failing now. Exact same situation - two identical SQL71508 errors referring to the same index on a history table that is automatically build from a table definition. That table certainly has not changed (no table definitions changed). It builds locally in Visual Studio (latest version 17), but it fails in Azure now. And it fails every time I retry it.
I am trying to see if there are any new options I need to include, or if anything about my project definition changed at all somehow. No changes other than two minor changes to stored procedures (decision logic, not even affecting the output row structure of those procedures).

As far as I can tell it's not reproducible (race condition?). Part of the build process when it comes to system versioned tables may fail for no apparent reason. Whether local or in the CI pipeline, I can just rerun the build and it'll work the next time. It doesn't fail often, but if you build enough it will happen at some point I've found. "Try again" works, but does hamper automation!

I have been able to isolate something, but it makes absolutely no sense. And I mean that in the most literal sense.
We have several loader scripts that are very cookie cutter. One of the most basic ones loads our application version history table. This table consists of basic columns:

INT identity PK ID column,
VARCHAR version number column,
DATETIME2 version date column (date/time the version was published/active),
created on/by and updated on/by audit fields (same as all other tables with default/auto-set values).

The version loader stored procedure just MERGEs a manual list of values into this table. The values are just pairs of the version number string and the date/time string in a mm/dd/yyyy hh:mmAM format.
For the current working release branch that is under development, it always has GETUTCDATE() in its date entry instead of a hard coded date/time string like all the others.
So here is the utterly baffling thing. I changed that working version entry that looks like this:
  ('2.20.0', GETUTCDATE())
to the following that represents the upcoming finalized release date:
  ('2.20.0', '05/29/2024 12:00PM')
This is the exact same format and the exact same procedure we have done time after time. However, this is the difference that apparently is causing the build failure. Again, note that the build failure is two identical errors with that error SQL71508 referring to the same history table index on each error line. This table hasn't been touched in months, just to be clear.
I changed that back to using GETUTCDATE() and it build. I changed it to use a different date/time and it did NOT build (same error).
I then removed the 2.20.0 line altogether, leaving our last version number item as the last one in the list (2.19.2). This means that this procedure, this merge statement, is the exact script that was used when 2.19.2 was published last month. Now, however, it does NOT build (same unrelated index error). Exact same script that worked a month ago.
Then I changed that 2.19.2 line to use GETUTCDATE() and it now does build.
So then I left that with GETUTCDATE() in place and added the 2.20.0 entry after it again with the same hard-coded date/time as before. This time it DID build (only difference being that the second to last line had GETUTCDATE() in it instead of its previous literal value).
Next I restored the 2.19.2 and 2.20.0 lines to use the literal hard-coded date/time strings they had before (when the initial build problem was seen). This time, I added another line for a future/fake 2.21.0 version and used GETUTCDATE() for it. At this point, I have this as those last lines in the merge's USING values list:
  ('2.19.2', '04/23/2024 14:00PM'),
  ('2.20.0', '05/29/2024 12:00PM'),
  ('2.21.0', GETUTCDATE())
This time, the project DID build.
These experiments strongly imply that if I have any one of those value lines with GETUTCDATE() in them instead of a hard-coded date like all the others, it builds. But if I have all hard-coded date/time strings, it does NOT build. Even though it built just one month ago. Again note that the error that is given concerning a history table index has absolutely nothing to do with this stored procedure, what it does, and what table it operates on: this stored proc is even for a completely different table than the one that the error would be related to.
I'm going to have to try some kind of bizarre workaround that has GETUTCDATE() in the list without upsetting any of the actual real versions somehow. But I cannot for the life of me understand why this makes any difference with relation to the error we are seeing. The only actual difference is that one month ago I build this project and it works. Today I can build the exact same project in Azure and it does not build with this very bizarre error.

By the way, to try and eliminate any chance of random occurrence, I ran several of these scenarios again during this trial and error process. It was absolutely consistent in that it ALWAYS failed if I had all literal string dates in that stored procedure, and it ALWAYS succeeded if I had one of them with GETUTCDATE() in it.

I have now also tried using a CONVERT() on the hard-coded date to explicitly cast it as DATETIME2, DATETIME, and SMALLDATETIME. None of these things worked.
I ended up adding a '0.0.0' version row at the top with DATEADD(YEAR, -100, GETUTCDATE()) to create basically a dummy entry when the procedure is called. This use of DATEADD() with GETUTCDATE() does work still, so this is what I am stuck with...

@ssreerama fyi

Update: additional information.
I was creating the template for our new working version. It has a last line in the values of ('2.21.0', GETUTCDATE()) (indicating it is still in development). When I added this and Azure attempted to build it, I got the same error described originally above. I had to comment out the line I added for version 0.0.0 described in my previous message in order for it to build.
So the conclusion seems to be that I must have one row with GETUTCDATE() in it, but I can't have two rows.

I have had another random incident of the same index errors appearing again; I haven't been able to identify any change in the database project between when it worked before, and when it does not work now.
2024-06-11T19:53:22.1422197Z ##[error]D:\a\1\s\xxxxxxxx\MSSQL::history.Notification_History(18,5): Error SQL71508: The model already has an element that has the same name history.Notification_History.IX_Notification_EntityId.
2024-06-11T19:53:22.1433565Z      1>MSSQL::history.Notification_History(18,5,18,5): Build error SQL71508: The model already has an element that has the same name history.Notification_History.IX_Notification_EntityId. [D:\a\1\s\xxxxxxxx\xxxx-Database.sqlproj]
2024-06-11T19:53:22.1437076Z ##[error]D:\a\1\s\xxxxxxxx\MSSQL::history.Notification_History(18,5): Error SQL71508: The model already has an element that has the same name history.Notification_History.IX_Notification_EntityId.
2024-06-11T19:53:22.1440736Z      1>MSSQL::history.Notification_History(18,5,18,5): Build error SQL71508: The model already has an element that has the same name history.Notification_History.IX_Notification_EntityId. [D:\a\1\s\xxxxxxxx\xxxx-Database.sqlproj]

I was reviewing the database definitions, and the "offending" database is very cookie cutter. It has this index for a foreign key ID column, pretty simple. I do notice that the history tables don't actually seem to have these same indexes and constraints that the parent table do. As a result, I don't understand why it would even be trying to create an index like the one showing in the error messages above.
It also occurs to me that the indexes wouldn't necessarily be needed for the history table's existence, so I am not surprised to see that they are not present in the history table definition for the Notification table (as well as others; I did a quick spot check to see if it was an aberration).
I just now noticed one thing that is unique for the Notification table's SSDT definition. It is the only table definition that uses the INDEX declarations inside the CREATE TABLE statement block. All our other table definitions (built in the SSDT project) have the INDEXes created in the table definition SQL but using CREATE INDEX statements after the CREATE TABLE statement block!
The resulting table is identical in its creation regardless of whether the table SQL definition uses the INDEX lines inside the CREATE TABLE vs the table SQL definition using CREATE INDEX in lines following the CREATE TABLE block.
This is definitely a bug; my local SSDT project build produces the same table in the database either way.
cc @kisantia @ssreerama


PHP 8.0 compatibility

It seems to be working properly and all tests are successful

Added the composer change in. Thanks


add support for openapi_3 server variables

This PR implements support for OpenAPI 3 server variables for templated server URLs and using default values to populate the URL.
Currently, conversion to 2.0 fails for server objects using templated URLs and variables.

@rbren Anything more you would like added? Also, any idea when this could be merged and npm updated? Thx?

This is great! Thanks for the contribution

Published in 2.11.0


How to handle the authentication?

Hey @link2qaiser,
The latest update will accommodate user authentication. For Laravel 10 and v2.10.2 of the plugin:
User.php
<?php

namespace App\Models;

use Illuminate\Auth\Passwords\CanResetPassword as CanResetPasswordTrait;
use Illuminate\Contracts\Auth\CanResetPassword;

use Illuminate\Notifications\Notifiable;
use PDPhilip\Elasticsearch\Eloquent\Model as Eloquent;
use Illuminate\Auth\Authenticatable as AuthenticatableTrait;
use Illuminate\Contracts\Auth\Authenticatable;

class User extends Eloquent implements Authenticatable, CanResetPassword
{
    use Notifiable, AuthenticatableTrait, CanResetPasswordTrait;

}

Side note: You're absolutely free to do this, but given what ElasticSearch was designed to do I personally would not go down the road of using ElasticSearch as a primary data store.


⚠ ClamAV has degraded performance

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

HTTP code: 200
Response time: 71 ms

Resolved: ClamAV performance has improved in 7a210cf after 12 minutes.


Feat: Add Hourly Rate Feature on Skill Cards

Hello..would like to be of help..whats the contribution guide


Bulk Upsert errors intermittently with {"name":"ClientInputError","errorCode":"ClientInputError"}

Logic used  for bulk upsert
conn.bulk.pollTimeout = 50000;       conn.bulk.load(         objectName,         'upsert',         { extIdField: externalId },         data,         (error, results) => {           if (error) {             console.log(               "Error in SF Bulk Push :: " + JSON.stringify(error)             );             resolve({ status: StringConstants.ERROR, error });           }           if (!isUndefined(results) && !isNull(results)) {             resolve({ status: StringConstants.SUCCESS, results });           } else {             resolve({ status: StringConstants.PENDING, results });           }         }       );
conn => SF Connection object
For the above program, we are  intermittently facing an error which prints
Error in SF Bulk Push :: {"name":"ClientInputError","errorCode":"ClientInputError"}
The error is not very detailed and if we process the same set of records again (without changing anything in the dataset), the bulk upsert happens without any issues.
Any suggestions on how to fix this?

Please mention the jsforce version.

triaging old issues...
ClientInputError could be because of a bad payload, see:
https://developer.salesforce.com/docs/atlas.en-us.api_asynch.meta/api_asynch/asynch_api_reference_errors.htm?q=ClientInputError
the code uses callbacks so it's jsforce v1.
Please re-open if you can repro on jsforce v3 and with a consistent repro. If it's intermittent I would suggest logging the payload before creating the bulk operation.


[tool_crash] ProcessException: No such file or directory Command: /home/mukeshsuthar/snap/flutter/common/flutter/bin/cache/dart-sdk/bin/pub, OS error code: 2

Command
flutter doctor

Steps to Reproduce

...
...
...

Logs
ProcessException: No such file or directory Command: /home/mukeshsuthar/snap/flutter/common/flutter/bin/cache/dart-sdk/bin/pub, OS error code: 2
#0      _ProcessImpl._start (dart:io-patch/process_patch.dart:390:33)
#1      Process.start (dart:io-patch/process_patch.dart:36:20)
#2      LocalProcessManager.start (package:process/src/interface/local_process_manager.dart:39:20)
#3      ErrorHandlingProcessManager.start.<anonymous closure> (package:flutter_tools/src/base/error_handling_io.dart:638:33)
#4      _run (package:flutter_tools/src/base/error_handling_io.dart:532:20)
#5      ErrorHandlingProcessManager.start (package:flutter_tools/src/base/error_handling_io.dart:638:12)
#6      _DefaultProcessUtils.start (package:flutter_tools/src/base/process.dart:472:28)
#7      _DefaultProcessUtils.stream (package:flutter_tools/src/base/process.dart:491:35)
#8      _DefaultPub.batch (package:flutter_tools/src/dart/pub.dart:282:34)
<asynchronous suspension>
#9      _DefaultPub.get (package:flutter_tools/src/dart/pub.dart:222:7)
<asynchronous suspension>
#10     PubDependencies.update (package:flutter_tools/src/cache.dart:774:5)
<asynchronous suspension>
#11     Cache.updateAll (package:flutter_tools/src/cache.dart:562:9)
<asynchronous suspension>
#12     FlutterCommand.verifyThenRunCommand (package:flutter_tools/src/runner/flutter_command.dart:1109:7)
<asynchronous suspension>
#13     FlutterCommand.run.<anonymous closure> (package:flutter_tools/src/runner/flutter_command.dart:1009:27)
<asynchronous suspension>
#14     AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:150:19)
<asynchronous suspension>
#15     AppContext.run (package:flutter_tools/src/base/context.dart:149:12)
<asynchronous suspension>
#16     CommandRunner.runCommand (package:args/command_runner.dart:197:13)

[✓] Flutter (Channel beta, 2.0.2, on Linux, locale en_US.UTF-8)
    • Flutter version 2.0.2 at /home/mukeshsuthar/snap/flutter/common/flutter
    • Framework revision 8962f6dc68 (4 days ago), 2021-03-11 13:22:20 -0800
    • Engine revision 5d8bf811b3
    • Dart version 2.12.1

[!] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at /home/mukeshsuthar/Android/Sdk
    • Platform android-30, build-tools 30.0.3
    • Java binary at: /usr/bin/java
    • Java version OpenJDK Runtime Environment (build
      11.0.10+9-Ubuntu-0ubuntu1.20.10)
    ✗ Android license status unknown.
      Run `flutter doctor --android-licenses` to accept the SDK licenses.
      See https://flutter.dev/docs/get-started/install/linux#android-setup for
      more details.

[✗] Chrome - develop for the web (Cannot find Chrome executable at
    google-chrome)
    ! Cannot find Chrome. Try setting CHROME_EXECUTABLE to a Chrome executable.

[!] Android Studio (not installed)
    • Android Studio not found; download from
      https://developer.android.com/studio/index.html
      (or visit https://flutter.dev/docs/get-started/install/linux#android-setup
      for detailed instructions).

[✓] VS Code (version 1.54.2)
    • VS Code at /usr/share/code
    • Flutter extension can be installed from:
      🔨 https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter

[!] Connected device
    ! No devices available

! Doctor found issues in 4 categories.

Flutter Application Metadata
No pubspec in working directory.

Duplicate of https://github.com/flutter/flutter/issues/77484. Please follow up on that for updates.
Thank you


Sharing image not working as intended

When we share image only the name of the image is being sent as the message, but an image must be sent.
Steps to Reproduce:

Long press on any image
Click on Share
Choose WhatsApp or any other app where you can send images

Only text (name and comment) related to the image will appear pre-filled.
Tested on OnePlus A3003 (Android 8.0.0)

@pulkonet Image is getting uploaded and shared but it is only viewable on specifically clicking on the image in full screen image mode. In short preview of image is not avialable.
@borisyankov I would like to work on this issue.

I don't think you got the point. I'm saying the image isn't being sent in the intent to foreign apps. Have you checked it correctly according to the steps of reproduction?

@pulkonet ok got it. I guess we have a problem in our sharing module.
I am interested in working over this if I get the permission to.

Claim it if you wish to work on it. We need to solve the bugs, I don't think you need a permission to work on this.

@zulipbot claim

@borisyankov @jainkuniya Any help 😅

@zulipbot will not allow to claim more than 1 issue to new contributors.
Which other issues are you working on, if it is completed, let me know I will review it :)
else its better to focus on that one and make progress in the app development. :)

@zulipbot claim

@borisyankov Since the Share module provided by react native is only able to share text on android, shall we use another library such as react-native-share which is quite popular.

@pulkonet here this problem as to do nothing with share module.
Here problem is we are not considering the long press of image. We are not differentiating that whether it is a message text or image. We are always considering it as a message.
So in order to fix (I would rather say improvement) this, we need to show action sheet which is being shown in Lightbox when user long presses image in webView list

@gnprice this issue is still not fixed and there in the production app. I would like to take this forward and close it.

This time I will keep it specific to the longPress of image.


lottie: repeater transformation fix

In the case of a transformation (denoted as T1)
appearing after the repeater, but at the same
level of nesting, the objects to which the repeater is applied should not consider T1. However,
the transformation of the repeater itself should
take T1 into account.
example 20874.json from lottie zip files:
before:

after:

other sample checking different configurations of transformation:
rep1.json
rep2.json
rep3.json
rep4.json
before:

after:

expected:
|||
|||

combined with https://github.com/thorvg/thorvg/pull/2280


Remove pipenv from pip3

This should temporarily fix #132

Unless the user has already installed pipenv for python3 and needs it. :smiling_imp:

I blame the user


Potential NAL_ADAPTATION_FLAGS issue introduced by an FFMPEG decodable bitstream

The use case is to upload an H.264 bitstream in NALUs from a NVR to KVS.
The bitstream seems regular with SPS and PPS prepended to IDR NALUs as key frames and non-IDR NALUs as other frames.
FFMPEG based players such as ffplay can play the saved bitstream showing the pixel format as YUVJ420p without noticeable issues or warnings but when using the cproducer in the SDK to upload the frames with the key frame flag set properly and the combination of NAL_ADAPTATION_FLAGS, either putKinesisVideoFrame() failed with error code or the console shows Missing codec private data error (STATUS 400):

NAL_ADAPTATION_FLAG_NONE => Missing codec private data error
NAL_ADAPTATION_ANNEXB_NALS => 0x3200000d
NAL_ADAPTATION_AVCC_NALS => 0x3200000e
NAL_ADAPTATION_ANNEXB_CPD_NALS => Missing codec private data error
NAL_ADAPTATION_ANNEXB_NALS |  NAL_ADAPTATION_ANNEXB_CPD_NALS => 0x3200000d

Since FFMPEG is able to decode the bitstream correctly, any idea to set the flags correctly for KVS?

Hello @farleylai ,
Can you dump the frames into raw bytes and post it here so that we can see where the issue might be?

@disa6302
Sure, the first SPS(31 bytes)/PPS(9 bytes)/IDR frame and the 2nd non-IDR frame are attached FYI.
All NALUs are prefixed with the start code 0x00000001.
bitstream-frames.zip
Let me know if you find anything wrong.
Thanks.

0x3200000d is indicative that the stream is not properly formatted in Annex-B. Namely, it has more than 3 zeroes which is not allowed.
https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp/blob/master/kinesis-video-pic/src/mkvgen/include/com/amazonaws/kinesis/video/mkvgen/Include.h#L41
Could you please include the raw frames you are submitting?
Some background info. The KVS console playback and HLS/MPEG-DASH will work only on AvCC format streams with h264/h265 encoding and when the CPD (Codec Private Data) is present.
When your stream is in Annex-B format, you might need to set both of the flags (NAL_ADAPTATION_ANNEXB_NALS | NAL_ADAPTATION_ANNEXB_CPD_NALS) to get the stream adapted and it possible automatically extract the CPD (NOTE: the stream should have type set of video/h264)

@farleylai the frames you've attached are good. Those won't cause the issue. Please ensure you specify the correct size for the data when submitting the frames to the producer SDK.
Can you dump the frame that's causing the issue. Ensure you record the size and we can look at it

@MushMal
This what I got puzzled since the same code (based on the kinesis video only sample) works with other camera bitstreams but not this particular one.
I would like to clarify:

the default settings remain, using the NAL_ADAPTATION_ANNEXB_NALS | NAL_ADAPTATION_ANNEXB_CPD_NALS that leads to 0x3200000d immediately
the saved bitstream frame is exactly the same as the one passed to putKinesisVideoFrame() that got the error

I did one more time and made sure the uploaded frame size is exactly the same as the saved bitstream.
and the following log messages that print the frame info including the size matching the saved raw bitstream size attached FYI.
BTW, the SDK is based on tag 2.1.0.
Let me know if you have any other insight.
2020-02-26 19:19:25 DEBUG   heapInitialize(): Initializing native heap with limit size 134217728, spill ratio 0% and flags 0x00000001
2020-02-26 19:19:25 DEBUG   heapInitialize(): Creating AIV heap.
2020-02-26 19:19:25 DEBUG   heapInitialize(): Heap is initialized OK
2020-02-26 19:19:25 DEBUG   stepStateMachine(): State Machine - Current state: 0x0000000000000001, Next state: 0x0000000000000002
2020-02-26 19:19:25 DEBUG   stepStateMachine(): State Machine - Current state: 0x0000000000000002, Next state: 0x0000000000000010
2020-02-26 19:19:25 DEBUG   createDeviceResultEvent(): Create device result event.
2020-02-26 19:19:25 DEBUG   stepStateMachine(): State Machine - Current state: 0x0000000000000010, Next state: 0x0000000000000040
2020-02-26 19:19:25 DEBUG   createKinesisVideoStream(): Creating Kinesis Video Stream.
2020-02-26 19:19:25 DEBUG   stepStateMachine(): State Machine - Current state: 0x0000000000000001, Next state: 0x0000000000000002
2020-02-26 19:19:25 DEBUG   writeHeaderCallback(): RequestId: e321d331-0db4-4ad5-a666-37233648fe45
2020-02-26 19:19:25 DEBUG   describeStreamCurlHandler(): DescribeStream API response: {"StreamInfo":{"CreationTime":1.582624109213E9,"DataRetentionInHours":6,"DeviceName":"JY9757ACX1EVE7NM","KmsKeyId":"arn:aws:kms:us-east-1:734908081819:alias/aws/kinesisvideo","MediaType":"video/h264","Status":"ACTIVE","StreamARN":"arn:aws:kinesisvideo:us-east-1:734908081819:stream/calstore-ucb/1582624109213","StreamName":"calstore-ucb","Version":"IIUOwnPBmov1e6IS8iT1"}}
2020-02-26 19:19:25 DEBUG   describeStreamResultEvent(): Describe stream result event.
2020-02-26 19:19:25 DEBUG   stepStateMachine(): State Machine - Current state: 0x0000000000000002, Next state: 0x0000000000000020
2020-02-26 19:19:26 DEBUG   writeHeaderCallback(): RequestId: ceb32437-9c2e-458d-bafd-d90c385af870
2020-02-26 19:19:26 DEBUG   getStreamingEndpointCurlHandler(): GetStreamingEndpoint API response: {"DataEndpoint":"https://s-1e415f8b.kinesisvideo.us-east-1.amazonaws.com"}
2020-02-26 19:19:26 DEBUG   getStreamingEndpointResultEvent(): Get streaming endpoint result event.
2020-02-26 19:19:26 DEBUG   stepStateMachine(): State Machine - Current state: 0x0000000000000020, Next state: 0x0000000000000010
2020-02-26 19:19:26 DEBUG   getStreamingTokenResultEvent(): Get streaming token result event.
2020-02-26 19:19:26 DEBUG   stepStateMachine(): State Machine - Current state: 0x0000000000000010, Next state: 0x0000000000000040
2020-02-26 19:19:26 DEBUG   defaultStreamReadyCallback(): Reported streamReady callback for stream handle<PHONE_NUMBER>8793

pFrame.index=0
pFrame.size=205022
pFrame.flags=1
pFrame.decodingTs=15827447675999135
pFrame.presentationTs=15827447675999135

2020-02-26 19:19:27 DEBUG   stepStateMachine(): State Machine - Current state: 0x0000000000000040, Next state: 0x0000000000000080
2020-02-26 19:19:27 DEBUG   putStreamResultEvent(): Put stream result event.
2020-02-26 19:19:27 DEBUG   stepStateMachine(): State Machine - Current state: 0x0000000000000080, Next state: 0x0000000000000100
2020-02-26 19:19:27 DEBUG   putKinesisVideoFrame(): Failed to submit frame to Kinesis Video client. status: 0x3200000d decoding timestamp:<PHONE_NUMBER>5999135 presentation timestamp:<PHONE_NUMBER>5999135
2020-02-26 19:19:27 DEBUG   stopKinesisVideoStreamSync(): Synchronously stopping Kinesis Video Stream 000055e166c4fe79.
2020-02-26 19:19:27 DEBUG   writeHeaderCallback(): RequestId: ece8f764-39ab-16cf-ba38-319b7f7b8d73
2020-02-26 19:19:27 DEBUG   defaultStreamClosedCallback(): Reported streamClosed callback for stream handle<PHONE_NUMBER>8793. Upload handle 0
2020-02-26 19:19:27 DEBUG   postReadCallback(): Reported end-of-stream for stream calstore-ucb. Upload handle: 0
2020-02-26 19:19:27 DEBUG   postReadCallback(): Wrote 0 bytes to Kinesis Video. Upload stream handle: 0
2020-02-26 19:19:27 DEBUG   freeKinesisVideoStream(): Freeing Kinesis Video stream.
2020-02-26 19:19:27 DEBUG   curlApiCallbacksShutdownActiveRequests(): pActiveRequests hashtable is empty
2020-02-26 19:19:31 DEBUG   defaultStreamShutdownCallback(): Reported streamShutdown callback for stream handle<PHONE_NUMBER>8793
2020-02-26 19:19:31 DEBUG   freeKinesisVideoClient(): Freeing Kinesis Video Client
2020-02-26 19:19:31 DEBUG   curlApiCallbacksShutdownActiveRequests(): pActiveRequests hashtable is empty
2020-02-26 19:19:31 DEBUG   freeKinesisVideoClientInternal(): Total allocated memory 0
2020-02-26 19:19:31 DEBUG   curlApiCallbacksShutdown(): curlApiCallbacksShutdown called when already in progress of shutting down

bitstream-1st.h264.zip

Hmm, this is odd. The first few bytes of the frame are:
0000 0001 274d 6028 8d68 0780 227e 5c05
b200 0003 0002 0000 0300 1e1e 2845 4000
0000 0128 ee1c 9200 0000 0001 25b8 0000
d05f f383 62ca 023a 7ae5 2ecf fdc2 7f37
It's SPS|PPS|I-frame but what's odd is that the PPS ends with 0x00 and follows with the Annex-B start code of 3 zeroes and 1. The resulting code breaks Annex-B format. Not sure if this is valid and need to do some research. Either way, this is an edge case that we will need to handle. This might take some time. What's your timeline like? This simple case can be handled by using the 2 zero and 1 version of Annex-B start code.

@MushMal
Yeah, I just figured out that too by scanning the pattern in the bitstream and compared with other camera streams. It turns out that there is no such patterns from the other camera streams but only those particular two. The expectation is the get the streams to KVS as soon as possible (hopefully by Friday).
Regarding the workaround, do you mean to have the encoder to emit start code with 0x000001? Since we have no control of the cameras/NVR, this has to be done by rewrite the whole frame. Alternatively, mutating the last byte of PPS seems to work with replacement of 0x01. Nonetheless, an official clarification would be appreciated.

@farleylai we should fix this properly and we can prioritize this fix but I can't give the exact timelines for now.
I think "hacking" this by removing the zero or modifying it might produce some artifacts on some of the players downstream.
I will keep you posted on this

Agreed!
I did some research and it seems like there should be an RBSP stop bit set to 1 in the last byte.
If the last data byte is indeed zero, an additional byte should be inserted with the MSb set to 1.
Therefore, it can be either case for the last zero byte of PPS, that is, the encoder forgets to set the stop bit despite some prior 0 data bits or insert an additional trailing byte with MSb set to 1.
Also, FFMPEG seems to deal with the situation by skipping that trailing zero byte as follows (h264.c):
/**
 * Identify the exact end of the bitstream
 * @return the length of the trailing, or 0 if damaged
 */
static int decode_rbsp_trailing(H264Context *h, const uint8_t *src)
{
    int v = *src;
    int r;

    ff_tlog(h->avctx, "rbsp trailing %X\n", v);

    for (r = 1; r < 9; r++) {
        if (v & 1)
            return r;
        v >>= 1;
    }
    return 0;
}

static int get_bit_length(H264Context *h, const uint8_t *buf,
                          const uint8_t *ptr, int dst_length,
                          int i, int next_avc)
{
    if ((h->workaround_bugs & FF_BUG_AUTODETECT) && i + 3 < next_avc &&
        buf[i]     == 0x00 && buf[i + 1] == 0x00 &&
        buf[i + 2] == 0x01 && buf[i + 3] == 0xE0)
        h->workaround_bugs |= FF_BUG_TRUNCATED;

    if (!(h->workaround_bugs & FF_BUG_TRUNCATED))
        while (dst_length > 0 && ptr[dst_length - 1] == 0)
            dst_length--;

    if (!dst_length)
        return 0;

    return 8 * dst_length - decode_rbsp_trailing(h, ptr + dst_length - 1);
}

This is being tracked as part of a hack to support broken encoders: https://github.com/awslabs/amazon-kinesis-video-streams-pic/pull/68
and this is also a dup. Resolving this one


unit testing support

While testing with Jest and Enzyme SVG inside chart is not rendering with mount or shallow.

Hey @darpanpathak,
The Google Charts library is highly dependent on the DOM, so you won't be able to render the actual chart in your jest tests (which are running in either node or jsdom).
I suggest you mock the Chart component and just make sure it receives the right props if you want to stick to unit testing your wrapper component.
If you want to make sure the chart renders than you're going to need to some e2e tests with Cypress or Puppeteer.
Cheers !


docs: Adding Network Resource and data source examples to the doc

Added Fabric Network Resource and Data Source examples to the docs

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

Project coverage is 44.46%. Comparing base (93c3834) to head (3ca2239).

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@           Coverage Diff           @@
##             main     #580   +/-   ##
=======================================
  Coverage   44.46%   44.46%
=======================================
  Files          93       93
  Lines       18164    18164
=======================================
  Hits         8077     8077
  Misses       9883     9883
  Partials      204      204

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


Working on this on Axelrod at the moment it's actually pretty straightforward, here's how to build a decorator that creates a matches strategy:
from hypothesis.strategies import composite, integers, tuples, sampled_from, floats

import axelrod as axl

@composite
def matches(draw, players=axl.strategies, min_turns=1, max_turns=200, noise=False):
    strategies = draw(tuples(sampled_from(players), sampled_from(players)))
    players = [s() for s in strategies]
    turns = draw(integers(min_value=min_turns, max_value=max_turns))
    if noise:
        noise = draw(floats(min_value=0.05, max_value=1))
    else:
        noise = 0
    match = axl.Match(players, turns=turns, noise=noise)
    return match

print(matches().example())
print(matches().example().play())

Sounds interesting. Will need a bit of planning as a simulation object is very complicated, lots of optional stuff, things relying on other things etc. but looks good :D 🐣


"Mărculești" is listed in the drop-down menu

Description:
When user writes "Mărculești" the location appears in the drop-down menu next to the comune and the county witch is a part according to the law
Precondition:
The website is up an running.

Step 1
Write in the search bar "Mărculești"
Expected results
The location appears in the drop-down menu as "Comuna Mărculești, ** IALOMIȚA**"

Step 2
Press "x" button.

Expected results
The location was deleted from the search bar.

Step 3
Write in the search bar "Mărculești"

Expected results
The location appears in the drop-down menu as "Sat Mărculești, IALOMIȚA (Mărculești)".


Automatically set bandwidth (KDE), only specify the algorithm

Normal Scale picks a bandwidth that's too high, so it oversmoothes, but good bandwidth selectors are too computationally intensive.


stream IDs: sharing, links, tests

This is the next installment after #5069 on #3918, converting from stream names to stream IDs.
In this PR, we take care of getting stream IDs available at most of the remaining Narrow-constructor call sites that will need them:

in ShareToStream and related code;
when parsing an internal link to find a narrow to navigate to;
in lots of unit tests where we had constructed narrows using a string literal directly for the name, and now we take the name from some actual Stream object.

Thanks for the review! Merging, with that TODO comment and other comment / commit-message changes.


Map final branch

Please, go through these steps before you submit a PR.

[x ] My Pod Leader knows I'm working on this Pull Request
[x ] I've explained what the Pull Request is adding.
[x ] I've explained why this is important.

Sorry @grace-omotoso I removed the lockfile but not sure how to delete Gemfile without deleting it for the main so I added you as a collaborator just now!


D/BufferQueueProducer(17421): SurfaceTexture-42-17421-0 cancelBuffer: slot 1

D/BufferQueueProducer(17421): SurfaceTexture-42-17421-0 cancelBuffer: slot 1
Why this error coming after video preview started every sec and phone getting Hang

same as https://github.com/AgoraIO-Community/Agora-Flutter-Quickstart/issues/97#issuecomment-616056382

why this happenig D/BufferQueueProducer(17421): SurfaceTexture-42-17421-0 cancelBuffer: slot 1
continuously