LDAP Authentication accepts bad password

I just finished installing both 3.1.8 and 3.2.4 (on separate Windowd 7 machines) and found that when I use the LDAP plugin and set the LDAP to Authentication/Gateway and the same for Local Machine, as long as I enter a valid LDAP username and any password, real or bogus, the system "binds" my account to LDAP, says that it 's authenticated, and then creates the local account on my machine and lets me in.
My LDAP server requires credentials to bind (i.e. CN=companyfedid@comp.com,ou=users,dc=company,dc=ldapserver,dc=com) and that does require/validates a password but when it passes the user's account from the pGina tile, as long as the user account name is valid, I can put anything in the password and get in.  I've also disabled Logon for all credential providers through the GUI except for pGinaCredentialProvider.
Is this a bug or do I need to make a change somewhere to enforce the password for the user is actually checked?  Oh and as a test, if I try to use some other LDAP tool for that user, it always requires me to enter valid credentials so I know the LDAP server isn't just accepting any password.
Thanks for your help!
In the log below, the username was USERACCT (I masked it in the logs here but it's like 'smith')
328 [4232|37|DEBUG] LocalMachine: IterateCleanupUsers Eligible users: USERACCT: DELETE_PROFILE
331 [4232|37|DEBUG] LocalMachine: IterateCleanupUsers loggedOnUsers: ADMINISTRATOR,USERACCT
363 [4232|37|DEBUG] LocalMachine: User USERACCT doesn't exist, not cleaning up.
08,844 [4232|16|DEBUG] RemoteLog[NativeLib]: [Provider.cpp:96] Stopping service state helper thread (if necessary)
09,353 [4232|38|INFO ] pGina.Service.Impl: SessionChange: 4 -> ConsoleDisconnect
10,274 [4232|11|DEBUG] RemoteLog[NativeLib]: [Provider.cpp:88] Starting service state helper thread
10,504 [4232|18|DEBUG] RemoteLog[NativeLib]: [CredentialProviderFilter.cpp:73] CredentialProviderFilter::Filter
10,509 [4232|19|DEBUG] RemoteLog[NativeLib]: [CredentialProviderFilter.cpp:131] Filtering {25cbb996-92ed-457e-b28c-4774084bd562}
10,519 [4232|17|DEBUG] RemoteLog[NativeLib]: [CredentialProviderFilter.cpp:131] Filtering {3dd6bec0-8193-4ffe-ae25-e08e39ea4063}
10,555 [4232|15|DEBUG] RemoteLog[NativeLib]: [CredentialProviderFilter.cpp:131] Filtering {503739d0-4c5e-4cfd-b3ba-d881334f0df2}
10,560 [4232|20|DEBUG] RemoteLog[NativeLib]: [CredentialProviderFilter.cpp:131] Filtering {8bf9a910-a8ff-457f-999f-a5ca10b4a885}
10,561 [4232|22|DEBUG] RemoteLog[NativeLib]: [CredentialProviderFilter.cpp:131] Filtering {94596c7e-3744-41ce-893e-bbf09122f76a}
10,563 [4232|24|DEBUG] RemoteLog[NativeLib]: [CredentialProviderFilter.cpp:131] Filtering {ac3ac249-e820-4343-a65b-377ac634dc09}
10,564 [4232|21|DEBUG] RemoteLog[NativeLib]: [CredentialProviderFilter.cpp:131] Filtering {e74e57b0-6c6d-44d5-9cda-fb2df5ed7435}
10,565 [4232|23|DEBUG] RemoteLog[NativeLib]: [Provider.cpp:121] Provider::SetUsageScenario(1, 0x00000000)
10,567 [4232|26|DEBUG] RemoteLog[NativeLib]: [CredentialProviderFilter.cpp:73] CredentialProviderFilter::Filter
10,569 [4232|28|DEBUG] RemoteLog[NativeLib]: [Provider.cpp:237] Provider::Advise(00000000013CE310,<PHONE_NUMBER>41E900) - provider events callback reference added
10,649 [4232|38|INFO ] pGina.Service.Impl: SessionChange: 1 -> ConsoleConnect
10,688 [4232|25|DEBUG] RemoteLog[NativeLib]: [Provider.cpp:407] SerializedCredsAppearComplete: No serialized creds set
10,690 [4232|30|DEBUG] RemoteLog[NativeLib]: [Provider.cpp:407] SerializedCredsAppearComplete: No serialized creds set
10,692 [4232|31|DEBUG] RemoteLog[NativeLib]: [Provider.cpp:365] GetCredentialAt: Non CredUI - returning an IID_IConnectableCredentialProviderCredential
22,758 [4232|10|DEBUG] RemoteLog[NativeLib]: [Credential.cpp:601] Credential::Connect()
22,759 [4232|12|DEBUG] RemoteLog[NativeLib]: [Credential.cpp:640] ProcessLoginAttempt: Processing login for USERACCT
22,763 [4232|9|DEBUG] PluginDriver:af545987-4e20-4f1e-bc96-cb00f999d6d4: New PluginDriver created
22,764 [4232|9|DEBUG] pGina.Service.Impl: Processing LoginRequest for: USERACCT in session: 1 reason: Login
22,767 [4232|9|DEBUG] PluginDriver:af545987-4e20-4f1e-bc96-cb00f999d6d4: Begin login chain, 1 stateful plugin(s).
22,768 [4232|9|DEBUG] LdapPlugin: BeginChain
22,769 [4232|9|DEBUG] LdapServer: Initializing LdapServer host(s): [ldap.us.ldapserver.com], port: 636, encryption = TLS_SSL, verifyCert = False
22,770 [4232|9|DEBUG] LdapServer: Timeout set to 10 seconds.
22,770 [4232|9|DEBUG] PluginDriver:af545987-4e20-4f1e-bc96-cb00f999d6d4: Performing login process
22,771 [4232|9|DEBUG] PluginDriver:af545987-4e20-4f1e-bc96-cb00f999d6d4: Authenticating user USERACCT, 2 plugins available
22,772 [4232|9|DEBUG] PluginDriver:af545987-4e20-4f1e-bc96-cb00f999d6d4: Calling 0f52390b-c781-43ae-bd62-553c77fa4cf7
22,772 [4232|9|DEBUG] LdapPlugin: AuthenticateUser(af545987-4e20-4f1e-bc96-cb00f999d6d4)
22,773 [4232|9|DEBUG] LdapPlugin: Received username: USERACCT
22,773 [4232|9|DEBUG] LdapPlugin: Attempting authentication for USERACCT
22,775 [4232|9|DEBUG] LdapServer: Attempting bind as CN=companyfedid@comp.com,ou=users,dc=company,dc=ldapserver,dc=com
23,209 [4232|9|DEBUG] LdapServer: VerifyCert(...)
23,209 [4232|9|DEBUG] LdapServer: Verifying certificate from host: ldap.us.ldapserver.com
23,210 [4232|9|DEBUG] LdapServer: Server certificate accepted without verification.
23,838 [4232|9|DEBUG] LdapServer: Successful bind to ldap.us.ldapserver.com as CN=companyfedid@comp.com,ou=users,dc=company,dc=ldapserver,dc=com
23,838 [4232|9|DEBUG] LdapServer: Searching for DN using filter cn=USERACCT
23,839 [4232|9|DEBUG] LdapServer: Searching context dc=company,dc=ldapserver,dc=com
24,549 [4232|9|DEBUG] LdapServer: Found DN: cn=USERACCT, ou=users, dc=company, dc=ldapserver, dc=com
24,550 [4232|9|DEBUG] LdapServer: Attempting to bind with DN cn=USERACCT, ou=users, dc=company, dc=ldapserver, dc=com
24,551 [4232|9|DEBUG] LdapServer: Attempting bind as cn=USERACCT, ou=users, dc=company, dc=ldapserver, dc=com
24,637 [4232|9|DEBUG] LdapServer: Successful bind to ldap.us.ldapserver.com as cn=USERACCT, ou=users, dc=company, dc=ldapserver, dc=com
24,638 [4232|9|DEBUG] LdapServer: LDAP DN cn=USERACCT, ou=users, dc=company, dc=ldapserver, dc=com successfully bound to server, return success
24,638 [4232|9|DEBUG] PluginDriver:af545987-4e20-4f1e-bc96-cb00f999d6d4: 0f52390b-c781-43ae-bd62-553c77fa4cf7 Succeeded
24,639 [4232|9|DEBUG] PluginDriver:af545987-4e20-4f1e-bc96-cb00f999d6d4: Calling 12fa152d-a2e3-4c8d-9535-5dcd49dfcb6d
24,639 [4232|9|DEBUG] LocalMachine: AuthenticateUser(af545987-4e20-4f1e-bc96-cb00f999d6d4)
24,640 [4232|9|DEBUG] LocalMachine: Found username: USERACCT
24,813 [4232|9|INFO ] LocalMachine: User USERACCT does not exist on this machine.
24,814 [4232|9|ERROR] LocalMachine: Failed to authenticate user: USERACCT
24,814 [4232|9|WARN ] PluginDriver:af545987-4e20-4f1e-bc96-cb00f999d6d4: 12fa152d-a2e3-4c8d-9535-5dcd49dfcb6d Failed without a message
24,814 [4232|9|INFO ] PluginDriver:af545987-4e20-4f1e-bc96-cb00f999d6d4: Successfully authenticated USERACCT
24,815 [4232|9|DEBUG] PluginDriver:af545987-4e20-4f1e-bc96-cb00f999d6d4: Authorizing user USERACCT, 0 plugins available
24,816 [4232|9|INFO ] PluginDriver:af545987-4e20-4f1e-bc96-cb00f999d6d4: Successfully authorized USERACCT
24,817 [4232|9|DEBUG] PluginDriver:af545987-4e20-4f1e-bc96-cb00f999d6d4: Processing gateways for user USERACCT, 2 plugins available
24,818 [4232|9|DEBUG] PluginDriver:af545987-4e20-4f1e-bc96-cb00f999d6d4: Calling 12fa152d-a2e3-4c8d-9535-5dcd49dfcb6d
24,819 [4232|9|DEBUG] LocalMachine: Marking for deletion: USERACCT
24,834 [4232|9|DEBUG] LocalMachine: AuthenticatedUserGateway(af545987-4e20-4f1e-bc96-cb00f999d6d4) for user: USERACCT
24,834 [4232|9|DEBUG] LocalAccount[USERACCT]: SyncToLocalUser()
25,053 [4232|9|DEBUG] LocalAccount[USERACCT]: Checking for groups to remove.
25,164 [4232|9|DEBUG] LocalAccount[USERACCT]: Checking for groups to add
25,164 [4232|9|DEBUG] LocalAccount[USERACCT]: End SyncToLocalUser()
25,165 [4232|9|DEBUG] PluginDriver:af545987-4e20-4f1e-bc96-cb00f999d6d4: Calling 0f52390b-c781-43ae-bd62-553c77fa4cf7
25,165 [4232|9|DEBUG] LdapPlugin: LDAP Plugin Gateway
25,166 [4232|9|INFO ] LdapPlugin: Adding user USERACCT to local group Remote Desktop Users, due to rule "Always add to local group "Remote Desktop Users""
25,166 [4232|9|INFO ] PluginDriver:af545987-4e20-4f1e-bc96-cb00f999d6d4: Successfully processed gateways for USERACCT
25,168 [4232|9|DEBUG] PluginDriver:af545987-4e20-4f1e-bc96-cb00f999d6d4: End login chain, 1 stateful plugin(s).
25,168 [4232|9|DEBUG] LdapPlugin: EndChain
25,169 [4232|9|DEBUG] LdapServer: Closing LDAP connection to ldap.us.ldapserver.com.
25,170 [4232|14|WARN ] RemoteLog[NativeLib]: Plugins did not set a domain name, assuming local machine!
25,171 [4232|16|DEBUG] RemoteLog[NativeLib]: [Credential.cpp:667] Plugins registered logon success
25,173 [4232|11|DEBUG] RemoteLog[NativeLib]: [Credential.cpp:260] Credential::GetSerialization, enter
25,177 [4232|13|DEBUG] RemoteLog[NativeLib]: [Provider.cpp:248] Provider::UnAdvise() - provider events callback reference released
25,464 [4232|19|DEBUG] RemoteLog[NativeLib]: [Credential.cpp:380] Credential::ReportResult(0x00000000, 0x00000000) called

Could be a bug if the plugin were using the original search/bind
credentials when attempting to bind against the located object, instead of
the provided u/p perhaps? I'm not an expert at the ldap plugin, but will
label this a bug pending investigation.
On Fri, Jan 29, 2016 at 6:06 AM, Planes96<EMAIL_ADDRESS>wrote:

I just finished installing both 318 and 324 (on separate Windowd 7
machines) and found that when I use the LDAP plugin and set the LDAP to
Authentication/Gateway and the same for Local Machine, as long as I enter a
valid LDAP username and any password, real or bogus, the system "binds" my
account to LDAP, says that it 's authenticated, and then creates the local
account on my machine and lets me in
My LDAP server requires credentials to bind (ie CN=companyfedid@compcom,ou=users,dc=company,dc=ldapserver,dc=com)
and that does require/validates a password but when it passes the user's
account from the pGina tile, as long as the user account name is valid, I
can put anything in the password and get in I've also disabled Logon for
all credential providers through the GUI except for pGinaCredentialProvider
Is this a bug or do I need to make a change somewhere to enforce the
password for the user is actually checked? Oh and as a test, if I try to
use some other LDAP tool for that user, it always requires me to enter
valid credentials so I know the LDAP server isn't just accepting any
password
Thanks for your help!
In the log below, the username was USERACCT (I masked it in the logs here
but it's like 'smith')
328 [4232|37|DEBUG] LocalMachine: IterateCleanupUsers Eligible users:
USERACCT: DELETE_PROFILE
331 [4232|37|DEBUG] LocalMachine: IterateCleanupUsers loggedOnUsers:
ADMINISTRATOR,USERACCT
363 [4232|37|DEBUG] LocalMachine: User USERACCT doesn't exist, not
cleaning up
08,844 [4232|16|DEBUG] RemoteLog[NativeLib]: [Providercpp:96] Stopping
service state helper thread (if necessary)
09,353 [4232|38|INFO ] pGinaServiceImpl: SessionChange: 4 ->
ConsoleDisconnect
10,274 [4232|11|DEBUG] RemoteLog[NativeLib]: [Providercpp:88] Starting
service state helper thread
10,504 [4232|18|DEBUG] RemoteLog[NativeLib]:
[CredentialProviderFiltercpp:73] CredentialProviderFilter::Filter
10,509 [4232|19|DEBUG] RemoteLog[NativeLib]:
[CredentialProviderFiltercpp:131] Filtering
{25cbb996-92ed-457e-b28c-4774084bd562}
10,519 [4232|17|DEBUG] RemoteLog[NativeLib]:
[CredentialProviderFiltercpp:131] Filtering
{3dd6bec0-8193-4ffe-ae25-e08e39ea4063}
10,555 [4232|15|DEBUG] RemoteLog[NativeLib]:
[CredentialProviderFiltercpp:131] Filtering
{503739d0-4c5e-4cfd-b3ba-d881334f0df2}
10,560 [4232|20|DEBUG] RemoteLog[NativeLib]:
[CredentialProviderFiltercpp:131] Filtering
{8bf9a910-a8ff-457f-999f-a5ca10b4a885}
10,561 [4232|22|DEBUG] RemoteLog[NativeLib]:
[CredentialProviderFiltercpp:131] Filtering
{94596c7e-3744-41ce-893e-bbf09122f76a}
10,563 [4232|24|DEBUG] RemoteLog[NativeLib]:
[CredentialProviderFiltercpp:131] Filtering
{ac3ac249-e820-4343-a65b-377ac634dc09}
10,564 [4232|21|DEBUG] RemoteLog[NativeLib]:
[CredentialProviderFiltercpp:131] Filtering
{e74e57b0-6c6d-44d5-9cda-fb2df5ed7435}
10,565 [4232|23|DEBUG] RemoteLog[NativeLib]: [Providercpp:121]
Provider::SetUsageScenario(1, 0x00000000)
10,567 [4232|26|DEBUG] RemoteLog[NativeLib]:
[CredentialProviderFiltercpp:73] CredentialProviderFilter::Filter
10,569 [4232|28|DEBUG] RemoteLog[NativeLib]: [Providercpp:237]
Provider::Advise(00000000013CE310,<PHONE_NUMBER>41E900) - provider events
callback reference added
10,649 [4232|38|INFO ] pGinaServiceImpl: SessionChange: 1 -> ConsoleConnect
10,688 [4232|25|DEBUG] RemoteLog[NativeLib]: [Providercpp:407]
SerializedCredsAppearComplete: No serialized creds set
10,690 [4232|30|DEBUG] RemoteLog[NativeLib]: [Providercpp:407]
SerializedCredsAppearComplete: No serialized creds set
10,692 [4232|31|DEBUG] RemoteLog[NativeLib]: [Providercpp:365]
GetCredentialAt: Non CredUI - returning an
IID_IConnectableCredentialProviderCredential
22,758 [4232|10|DEBUG] RemoteLog[NativeLib]: [Credentialcpp:601]
Credential::Connect()
22,759 [4232|12|DEBUG] RemoteLog[NativeLib]: [Credentialcpp:640]
ProcessLoginAttempt: Processing login for USERACCT
22,763 [4232|9|DEBUG] PluginDriver:af545987-4e20-4f1e-bc96-cb00f999d6d4:
New PluginDriver created
22,764 [4232|9|DEBUG] pGinaServiceImpl: Processing LoginRequest for:
USERACCT in session: 1 reason: Login
22,767 [4232|9|DEBUG] PluginDriver:af545987-4e20-4f1e-bc96-cb00f999d6d4:
Begin login chain, 1 stateful plugin(s)
22,768 [4232|9|DEBUG] LdapPlugin: BeginChain
22,769 [4232|9|DEBUG] LdapServer: Initializing LdapServer host(s):
[ldapusldapservercom], port: 636, encryption = TLS_SSL, verifyCert = False
22,770 [4232|9|DEBUG] LdapServer: Timeout set to 10 seconds
22,770 [4232|9|DEBUG] PluginDriver:af545987-4e20-4f1e-bc96-cb00f999d6d4:
Performing login process
22,771 [4232|9|DEBUG] PluginDriver:af545987-4e20-4f1e-bc96-cb00f999d6d4:
Authenticating user USERACCT, 2 plugins available
22,772 [4232|9|DEBUG] PluginDriver:af545987-4e20-4f1e-bc96-cb00f999d6d4:
Calling 0f52390b-c781-43ae-bd62-553c77fa4cf7
22,772 [4232|9|DEBUG] LdapPlugin:
AuthenticateUser(af545987-4e20-4f1e-bc96-cb00f999d6d4)
22,773 [4232|9|DEBUG] LdapPlugin: Received username: USERACCT
22,773 [4232|9|DEBUG] LdapPlugin: Attempting authentication for USERACCT
22,775 [4232|9|DEBUG] LdapServer: Attempting bind as
CN=companyfedid@compcom,ou=users,dc=company,dc=ldapserver,dc=com
23,209 [4232|9|DEBUG] LdapServer: VerifyCert()
23,209 [4232|9|DEBUG] LdapServer: Verifying certificate from host:
ldapusldapservercom
23,210 [4232|9|DEBUG] LdapServer: Server certificate accepted without
verification
23,838 [4232|9|DEBUG] LdapServer: Successful bind to ldapusldapservercom
as CN=companyfedid@compcom,ou=users,dc=company,dc=ldapserver,dc=com
23,838 [4232|9|DEBUG] LdapServer: Searching for DN using filter cn=USERACCT
23,839 [4232|9|DEBUG] LdapServer: Searching context
dc=company,dc=ldapserver,dc=com
24,549 [4232|9|DEBUG] LdapServer: Found DN: cn=USERACCT, ou=users,
dc=company, dc=ldapserver, dc=com
24,550 [4232|9|DEBUG] LdapServer: Attempting to bind with DN cn=USERACCT,
ou=users, dc=company, dc=ldapserver, dc=com
24,551 [4232|9|DEBUG] LdapServer: Attempting bind as cn=USERACCT,
ou=users, dc=company, dc=ldapserver, dc=com
24,637 [4232|9|DEBUG] LdapServer: Successful bind to ldapusldapservercom
as cn=USERACCT, ou=users, dc=company, dc=ldapserver, dc=com
24,638 [4232|9|DEBUG] LdapServer: LDAP DN cn=USERACCT, ou=users,
dc=company, dc=ldapserver, dc=com successfully bound to server, return
success
24,638 [4232|9|DEBUG] PluginDriver:af545987-4e20-4f1e-bc96-cb00f999d6d4:
0f52390b-c781-43ae-bd62-553c77fa4cf7 Succeeded
24,639 [4232|9|DEBUG] PluginDriver:af545987-4e20-4f1e-bc96-cb00f999d6d4:
Calling 12fa152d-a2e3-4c8d-9535-5dcd49dfcb6d
24,639 [4232|9|DEBUG] LocalMachine:
AuthenticateUser(af545987-4e20-4f1e-bc96-cb00f999d6d4)
24,640 [4232|9|DEBUG] LocalMachine: Found username: USERACCT
24,813 [4232|9|INFO ] LocalMachine: User USERACCT does not exist on this
machine
24,814 [4232|9|ERROR] LocalMachine: Failed to authenticate user: USERACCT
24,814 [4232|9|WARN ] PluginDriver:af545987-4e20-4f1e-bc96-cb00f999d6d4:
12fa152d-a2e3-4c8d-9535-5dcd49dfcb6d Failed without a message
24,814 [4232|9|INFO ] PluginDriver:af545987-4e20-4f1e-bc96-cb00f999d6d4:
Successfully authenticated USERACCT
24,815 [4232|9|DEBUG] PluginDriver:af545987-4e20-4f1e-bc96-cb00f999d6d4:
Authorizing user USERACCT, 0 plugins available
24,816 [4232|9|INFO ] PluginDriver:af545987-4e20-4f1e-bc96-cb00f999d6d4:
Successfully authorized USERACCT
24,817 [4232|9|DEBUG] PluginDriver:af545987-4e20-4f1e-bc96-cb00f999d6d4:
Processing gateways for user USERACCT, 2 plugins available
24,818 [4232|9|DEBUG] PluginDriver:af545987-4e20-4f1e-bc96-cb00f999d6d4:
Calling 12fa152d-a2e3-4c8d-9535-5dcd49dfcb6d
24,819 [4232|9|DEBUG] LocalMachine: Marking for deletion: USERACCT
24,834 [4232|9|DEBUG] LocalMachine:
AuthenticatedUserGateway(af545987-4e20-4f1e-bc96-cb00f999d6d4) for user:
USERACCT
24,834 [4232|9|DEBUG] LocalAccount[USERACCT]: SyncToLocalUser()
25,053 [4232|9|DEBUG] LocalAccount[USERACCT]: Checking for groups to remove
25,164 [4232|9|DEBUG] LocalAccount[USERACCT]: Checking for groups to add
25,164 [4232|9|DEBUG] LocalAccount[USERACCT]: End SyncToLocalUser()
25,165 [4232|9|DEBUG] PluginDriver:af545987-4e20-4f1e-bc96-cb00f999d6d4:
Calling 0f52390b-c781-43ae-bd62-553c77fa4cf7
25,165 [4232|9|DEBUG] LdapPlugin: LDAP Plugin Gateway
25,166 [4232|9|INFO ] LdapPlugin: Adding user USERACCT to local group
Remote Desktop Users, due to rule "Always add to local group "Remote
Desktop Users""
25,166 [4232|9|INFO ] PluginDriver:af545987-4e20-4f1e-bc96-cb00f999d6d4:
Successfully processed gateways for USERACCT
25,168 [4232|9|DEBUG] PluginDriver:af545987-4e20-4f1e-bc96-cb00f999d6d4:
End login chain, 1 stateful plugin(s)
25,168 [4232|9|DEBUG] LdapPlugin: EndChain
25,169 [4232|9|DEBUG] LdapServer: Closing LDAP connection to
ldapusldapservercom
25,170 [4232|14|WARN ] RemoteLog[NativeLib]: Plugins did not set a domain
name, assuming local machine!
25,171 [4232|16|DEBUG] RemoteLog[NativeLib]: [Credentialcpp:667] Plugins
registered logon success
25,173 [4232|11|DEBUG] RemoteLog[NativeLib]: [Credentialcpp:260]
Credential::GetSerialization, enter
25,177 [4232|13|DEBUG] RemoteLog[NativeLib]: [Providercpp:248]
Provider::UnAdvise() - provider events callback reference released
25,464 [4232|19|DEBUG] RemoteLog[NativeLib]: [Credentialcpp:380]
Credential::ReportResult(0x00000000, 0x00000000) called
—
Reply to this email directly or view it on GitHub
https://github.com/pgina/pgina/issues/285.

From looking at the logs on both the LDAP server on in pGina, that's what I think is happening.  Surprised no one else has realized this (or maybe they have and they're keeping it hush hush).

More likely most people use an anonymous bind :)
On Fri, Jan 29, 2016 at 9:56 AM, Planes96<EMAIL_ADDRESS>wrote:

From looking at the logs on both the LDAP server on in pGina, that's what
I think is happening. Surprised no one else has realized this (or maybe
they have and they're keeping it hush hush).
—
Reply to this email directly or view it on GitHub
https://github.com/pgina/pgina/issues/285#issuecomment-176887314.

The code for the plugin does correctly attempt a second bind with the located objects DN and the provided password (as typed by the user).
I suspect the server in this case is simply no-op'ing the re-bind, given that the connection is already bound.
What server are you using exactly?  I'm wondering if this is configurable behavior on the server.  Plugin fix would be to forcefully disconnect and establish a new connection and attempt to bind with the located DN and provided password.

How would you force the disconnect and use the located DN??  The vendor doesn't appear to want to 'fix' it on their end.

What ldap server and schema are you using?


Performance boost using native 'ipairs' iterator

This pull removes the custom inext iterator function, in favour of the native implementation. Increases loop speed in resolver by 50-55%.

@aimingoo could you kindly review this pull? I'm not sure it will work, on account of ipairsaux using rawget instead of indexing.. but any optimisation is good(?)


fix(scale_pattern): check for descendingIntervalSteps in ==

Fixes #104

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

2 of 2 (100.0%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 100.0%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
502

Relevant Lines:
502

💛  - Coveralls


Make default timeout configurable

fixes #116
NOTE: timeout field of Client._wait_for has type float but default value all over code is int.

Thanks for your pull-request.
With the numeric tower, you only need float as it is valid to pass int to float.

Credit where credit is due: Use of math.inf for "No timeout" inspired by the anyio API. :)

Hi skewty, thanks for the changes. 👍 It looks good to me except for one bug: The user can't disable the timeout.
To allow the user to disable the timeout (by setting timeout=math.inf), I need this code inside _wait_for:
if timeout is None:
    timeout = self._timeout
# Note that asyncio uses `None` to mean "No timeout". We use `math.inf`.
timeout_for_asyncio = None if timeout == math.inf else timeout
try:
    return await asyncio.wait_for(fut, timeout=timeout_for_asyncio, **kwargs)
except ...

Does it make sense? Let me know if you want to make the change. Otherwise, I can commit this PR as is and push the change myself. 👍

Does it make sense? Let me know if you want to make the change. Otherwise, I can commit this PR as is and push the change myself. 👍

Please go ahead and merge what is here and make the fixes you want.  🎉
This code has been sitting around long enough.

Please go ahead and merge what is here and make the fixes you want. 🎉
This code has been sitting around long enough.

Done! Thank you for your contribution to asyncio-mqtt. 👍


Probate

Added the examples for both show & save controller & views
Haven't added the extra attributes on the Probate model, as I'd like to
get the happy path going for now.
NOTE: Adding it to be merged into fee branch for now, but that can be changed. I'm interested in showing what was done.

I'll close this and re-create it against master


Bad Performance on Android

Bad performance was reported on Android devices:
http://forum.dyn4j.org/viewtopic.php?f=1&t=374
Initial analysis by reporter is object allocation (and enum comparison?).  This was reported on an Android version before 8.  Awaiting results of modification to DynamicAABBTree and testing on Android version 8.
According to the following article, object allocations are 70% faster in 8 than prior versions.
https://source.android.com/devices/tech/dalvik/improvements

1be54e3519d86a881c917e61c0cef804241ee96b

Changes to the library were made and released in version 3.3.0.


ffproc seems to be stripping audio tracks

Hi,
This might not be bug but maybe just a config issue...
I'm currently running Plex and have the DVR function enabled (hooked up on a HDHomeRun Extend).
I'm recording shows and movies but since most of our devices are iOS based (eg: atv, iphones, ipad, ...), I have to optimize these records to get directplay.
I've been trying to use ffproc to do mass conversion.
So far, I'm able to do conversions, but for some odd reason, the audio track seems to be stripped.
The current ffprobe's output on the TS file is:
ffprobe version N-90182-g40102a2 Copyright (c) 2007-2018 the FFmpeg developers
  built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.9) 20160609
  configuration: --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-nonfree --enable-shared --enable-openssl
  libavutil      56.  7.101 / 56.  7.101
  libavcodec     58. 13.100 / 58. 13.100
  libavformat    58. 10.100 / 58. 10.100
  libavdevice    58.  2.100 / 58.  2.100
  libavfilter     7. 12.100 /  7. 12.100
  libswscale      5.  0.101 /  5.  0.101
  libswresample   3.  0.101 /  3.  0.101
  libpostproc    55.  0.100 / 55.  0.100
Input #0, mpegts, from '/media/ltellier/Plex Movies/Movies_DVR/21 Jump Street (2012)/21 Jump Street (2012).ts':
  Duration: 02:08:57.80, start: 1.400000, bitrate: 10175 kb/s
  Program 1
    Metadata:
      service_name    : Service01
      service_provider: FFmpeg
    Stream #0:0[0x100]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p(tv, top first), 1920x1080 [SAR 1:1 DAR 16:9], Closed Captions, 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
    Stream #0:1[0x101](fre): Audio: ac3 ([129][0][0][0] / 0x0081), 48000 Hz, 5.1(side), fltp, 384 kb/s

And the ffproc conversion's output:
# ./ffproc.py --profile default --immediate --showcommand /root/ffproc/21.ts                                                                 [ffpro
c] rq and redis libraries not found. Disabling redis support...
[MediaTransformer] Copying video track
[MediaTransformer] Deinterlacing video track (will cause transcode!)
[ffproc] Enqueing 21.ts for video
[ffproc] ffmpeg command: -map 0:0 -c:v libx264 -level:v 4.1 -preset veryslow -bf 16 -b_strategy 2 -subq 10 -refs 4 -vf yadif=0:-1:0
[ffproc] Running ffmpeg locally.
ffmpeg version N-90182-g40102a2 Copyright (c) 2000-2018 the FFmpeg developers
  built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.9) 20160609
  configuration: --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --e
nable-libx264 --enable-nonfree --enable-shared --enable-openssl
  libavutil      56.  7.101 / 56.  7.101
  libavcodec     58. 13.100 / 58. 13.100
  libavformat    58. 10.100 / 58. 10.100
  libavdevice    58.  2.100 / 58.  2.100
  libavfilter     7. 12.100 /  7. 12.100
  libswscale      5.  0.101 /  5.  0.101
  libswresample   3.  0.101 /  3.  0.101
  libpostproc    55.  0.100 / 55.  0.100
ffmpeg version N-90182-g40102a2 Copyright (c) 2000-2018 the FFmpeg developers
  built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.9) 20160609
  configuration: --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --e
nable-libx264 --enable-nonfree --enable-shared --enable-openssl
  libavutil      56.  7.101 / 56.  7.101
  libavcodec     58. 13.100 / 58. 13.100
  libavformat    58. 10.100 / 58. 10.100
  libavdevice    58.  2.100 / 58.  2.100
  libavfilter     7. 12.100 /  7. 12.100
  libswscale      5.  0.101 /  5.  0.101
  libswresample   3.  0.101 /  3.  0.101
  libpostproc    55.  0.100 / 55.  0.100
Input #0, mpegts, from '/root/ffproc/21.ts':
  Duration: 02:08:57.80, start: 1.400000, bitrate: 10175 kb/s
  Program 1
    Metadata:
      service_name    : Service01
      service_provider: FFmpeg
    Stream #0:0[0x100]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p(tv, top first), 1920x1080 [SAR 1:1 DAR 16:9], Closed Captions, 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
    Stream #0:1[0x101](fre): Audio: ac3 ([129][0][0][0] / 0x0081), 48000 Hz, 5.1(side), fltp, 384 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
Press [q] to stop, [?] for help
[libx264 @ 0x1829240] using SAR=1/1
[libx264 @ 0x1829240] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.1 Cache64
[libx264 @ 0x1829240] profile High, level 4.1
[libx264 @ 0x1829240] 264 - core 155 r2901 7d0ff22 - H.264/MPEG-4 AVC codec - Copyleft 2003-2018 - http://www.videolan.org/x264.html - options: cabac=1 ref=4 deblock=1:0:0 analyse=0x3:0x133 me=umh subme=10 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=24 chroma_me=1 trellis=2 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=16 b_pyramid=2 b_adapt=2 b_bias=0 direct=3 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=60 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'tmp.mp4':
  Metadata:
    encoder         : Lavf58.10.100
    Stream #0:0: Video: h264 (libx264) (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], q=-1--1, 29.97 fps, 30k tbn, 29.97 tbc
    Metadata:
      encoder         : Lavc58.13.100 libx264
    Side data:
      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
frame=231868 fps=2.7 q=-1.0 Lsize= 2723450kB time=02:08:56.56 bitrate=2883.8kbits/s dup=57 drop=0 speed=0.0893x
video:2721008kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.089752%
[libx264 @ 0x1829240] frame I:1830  Avg QP:20.18  size: 85967
[libx264 @ 0x1829240] frame P:50343 Avg QP:23.42  size: 28874
[libx264 @ 0x1829240] frame B:179695 Avg QP:26.49  size:  6541
[libx264 @ 0x1829240] consecutive B-frames:  2.1%  2.1% 17.2%  5.8%  5.8% 63.8%  1.8%  0.4%  0.7%  0.1%  0.2%  0.1%  0.0%  0.0%  0.0%  0.0%  0.0%
[libx264 @ 0x1829240] mb I  I16..4: 18.4% 75.2%  6.4%
[libx264 @ 0x1829240] mb P  I16..4:  9.4% 19.6%  0.4%  P16..4: 37.7%  5.0%  5.7%  0.0%  0.0%    skip:22.2%
[libx264 @ 0x1829240] mb B  I16..4:  0.7%  1.2%  0.0%  B16..8: 33.0%  1.9%  0.3%  direct: 1.6%  skip:61.3%  L0:44.7% L1:53.3% BI: 2.0%
[libx264 @ 0x1829240] 8x8 transform intra:66.8% inter:85.5%
[libx264 @ 0x1829240] direct mvs  spatial:100.0% temporal:0.0%
[libx264 @ 0x1829240] coded y,uvDC,uvAC intra: 34.5% 51.2% 6.8% inter: 4.9% 9.2% 0.3%
[libx264 @ 0x1829240] i16 v,h,dc,p: 28% 25% 15% 33%
[libx264 @ 0x1829240] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 22% 14% 20%  6%  7%  8%  8%  8%  8%
[libx264 @ 0x1829240] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 16% 16%  7%  7% 11% 11% 12%  8% 11%
[libx264 @ 0x1829240] i8c dc,h,v,p: 36% 31% 26%  7%
[libx264 @ 0x1829240] Weighted P-Frames: Y:1.6% UV:1.2%
[libx264 @ 0x1829240] ref P L0: 64.6%  9.8% 18.5%  7.0%  0.2%  0.0%
[libx264 @ 0x1829240] ref B L0: 90.0%  8.4%  1.7%
[libx264 @ 0x1829240] ref B L1: 97.1%  2.9%
[libx264 @ 0x1829240] kb/s:2881.15

And finally the ffprobe's output on the newly created file:
# ffprobe 21.mp4

ffprobe version N-90182-g40102a2 Copyright (c) 2007-2018 the FFmpeg developers
  built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.9) 20160609
  configuration: --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-nonfree --enable-shared --enable-openssl
  libavutil      56.  7.101 / 56.  7.101
  libavcodec     58. 13.100 / 58. 13.100
  libavformat    58. 10.100 / 58. 10.100
  libavdevice    58.  2.100 / 58.  2.100
  libavfilter     7. 12.100 /  7. 12.100
  libswscale      5.  0.101 /  5.  0.101
  libswresample   3.  0.101 /  3.  0.101
  libpostproc    55.  0.100 / 55.  0.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '21.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.10.100
  Duration: 02:08:56.66, start: 0.000000, bitrate: 2883 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], Closed Captions, 2881 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default)
    Metadata:
      handler_name    : VideoHandler

The current profiles.json looks like:
# cat profiles.json
{
"720p":{
        "video": {
                "deinterlace": "yes",
                "allowhevc": true,
                "ignore": false,
                "codec": "h264",
                "force": false,
                "encodepreset": "veryslow",
                "quality": "20",
                "res": "720p"
        },
        "audio": {
                "surround": {
                        "keep": true
                },
                "stereo": {
                        "keep": true,
                        "create": true,
                        "ffproc_filtering": true,
                        "bitrate": "128k",
                        "force_libfdk": true
                }
        },
        "format": {
                "filetype": "mp4"
        }
},
"default":{
        "video": {
                "deinterlace": "yes",
                "allowhevc": true,
                "ignore": false,
                "codec": "h264",
                "force": false,
                "encodepreset": "veryslow",
                "quality": "20",
                "res": "1080p"
        },
        "audio": {
                "surround": {
                        "keep": true
                },
                "stereo": {
                        "keep": true,
                        "create": true,
                        "ffproc_filtering": true,
                        "bitrate": "128k",
                        "force_libfdk": true
                }
        },
        "format": {
                "filetype": "mp4"
        }
},
"tox265":{
        "video": {
                "deinterlace": "yes",
                "allowhevc": true,
                "ignore": false,
                "codec": "hevc",
                "force": false,
                "encodepreset": "veryslow",
                "quality": "20",
                "res": "1080p"
        },
        "audio": {
                "surround": {
                        "keep": true
                },
                "stereo": {
                        "keep": true,
                        "create": true,
                        "ffproc_filtering": true,
                        "bitrate": "128k",
                        "force_libfdk": false
                }
        },
        "format": {
                "filetype": "mp4"
        }
}
}

Are we missing something ?
Is there any particular reason why the audio track(s) would get stripped ?
Thanks!

Hello! Thanks for trying out ffproc, and the super well-detailed bug report.
I think I know the issue: the (fre) tag & stream ID on your audio track. ffproc has a line:
if ( track["language"] == "eng" or track["language"] == "und" or track["language"] == None):
which excludes that track from processing.
That dates back from my original use of ripping DVDs, where I did want to bring in only the english track.
My proposed fix would be to add a config option somewhere to disable this check, and also add a configurable list of languages that you do want to extract. Does that work for you?

Indeed, that would definitely work! Most of our shows aired in Quebec are in french, but I would also like to rip other stuff with foreign languages; if we could get that option, that would definitely be awesome. Thanks for the quick turnaround, much appreciated 👍

Alright, I've pushed a commit which should hopefully fix this for you. The "default" profile shows an example of the new feature being configured. You'd just have to set "ignore" to true, or add "fre" as an allowed language.
What I intend to implement a little later on is extracting/transcoding audio tracks per-language, so if you had both English and French, your output would have both as well. I'm tracking that in #13. In Ontario at least, I haven't ever seen a TV broadcaster do that, but I have some DVDs that have this configuration.
Let me know if this works/doesn't work for you.
Also, I'm not sure how much ffmpeg you know, but the output will contain the lines:
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))

Stream mapping:
  Stream #0:0 -> #0:0 (mpeg2video (native) -> h264 (libx264))
  Stream #0:3 -> #0:1 (ac3 (native) -> aac (libfdk_aac))
  Stream #0:1 -> #0:2 (copy)

or similar, which lets you verify it's pulling the right data out of your source, and your output has the right tracks, without letting it transcode all the way through (because 2.7fps movie-length transcodes suck just to find out ffproc did it wrong :disappointed:  Sorry about that)

Awesome!
I’ll try this out later this week and let you know how it goes.
Cheers!

Luc

Envoyé depuis mon iPhone // Sent from my iPhone

On Mar 3, 2018, at 12:00 AM, Alex Roth<EMAIL_ADDRESS>wrote:
Alright, I've pushed a commit which should hopefully fix this for you. The "default" profile shows an example of the new feature being configured. You'd just have to set "ignore" to true, or add "fre" as an allowed language.
What I intend to implement a little later on is extracting/transcoding audio tracks per-language, so if you had both English and French, your output would have both as well. I'm tracking that in #13. In Ontario at least, I haven't ever seen a TV broadcaster do that, but I have some DVDs that have this configuration.
Let me know if this works/doesn't work for you.
Also, I'm not sure how much ffmpeg you know, but the output will contain the lines:
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
Stream mapping:
Stream #0:0 -> #0:0 (mpeg2video (native) -> h264 (libx264))
Stream #0:3 -> #0:1 (ac3 (native) -> aac (libfdk_aac))
Stream #0:1 -> #0:2 (copy)
or similar, which lets you verify it's pulling the right data out of your source, and your output has the right tracks, without letting it transcode all the way through (because 2.7fps movie-length transcodes suck just to find out ffproc did it wrong 😞 Sorry about that)
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.

Looks like this fellow Quebecois forgot this existed. I'll try to run it on a couple french canadian movies I have laying around, see if I can reproduce the issue :)
I also have a metric ton of japanese anime.


deploy: Make container root file system read only.

It is a best practice to make the containers root file system read-only.
One exception is node driver container - because LVM expect root file
system writable.  Otherwise, all LVM calls fails with error:
"File-based locking initialization failed"
So, driver container root in node daemonset runs with read-write
permission.
Also, avoid using "privileged" when it's not necessary.

@avalluri : needs to be rebased

@avalluri : needs to be rebased

Done.

Something isn't quite right: at the end of https://cloudnative-k8sci.southcentralus.cloudapp.azure.com/blue/rest/organizations/jenkins/pipelines/pmem-csi/branches/PR-656/runs/3/log/?start=0
there's no PMEM available to run a pod:
[2020-05-27T23:49:09.874Z]<EMAIL_ADDRESS>I0527 23:49:09.499599       1 scheduler.go:178] scheduler "msg"="node filter result" "pod"="inline-volume-tester-sqmm5" "failed nodes"={"pmem-csi-govm-master":"checking for capacity: retrieve capacity: connect to PMEM-CSI on node \"pmem-csi-govm-master\": No node registered with id: pmem-csi-govm-master","pmem-csi-govm-worker1":"only 0B of PMEM available, need 220MiB","pmem-csi-govm-worker2":"only 0B of PMEM available, need 220MiB","pmem-csi-govm-worker3":"only 0B of PMEM available, need 220MiB"} "suitable nodes"=null

Something isn't quite right: at the end of https://cloudnative-k8sci.southcentralus.cloudapp.azure.com/blue/rest/organizations/jenkins/pipelines/pmem-csi/branches/PR-656/runs/3/log/?start=0
there's no PMEM available to run a pod:
[2020-05-27T23:49:09.874Z]<EMAIL_ADDRESS>I0527 23:49:09.499599       1 scheduler.go:178] scheduler "msg"="node filter result" "pod"="inline-volume-tester-sqmm5" "failed nodes"={"pmem-csi-govm-master":"checking for capacity: retrieve capacity: connect to PMEM-CSI on node \"pmem-csi-govm-master\": No node registered with id: pmem-csi-govm-master","pmem-csi-govm-worker1":"only 0B of PMEM available, need 220MiB","pmem-csi-govm-worker2":"only 0B of PMEM available, need 220MiB","pmem-csi-govm-worker3":"only 0B of PMEM available, need 220MiB"} "suitable nodes"=null

I have been working on debugging this, to my surprise I couldn't find any logs about init-containers to check if any issue in initializing LVM volume group:(

I have been working on debugging this, to my surprise I couldn't find any logs about init-containers to check if any issue in initializing LVM volume group:(

You mean in the CI output? That might be a race condition in podlogs: I am not sure if it can get logs for containers that start and stop quickly.

https://cloudnative-k8sci.southcentralus.cloudapp.azure.com/blue/organizations/jenkins/pmem-csi/detail/PR-656/4/tests
[It] imagefile.ext4 [It] 511Mi test failed on ClearLinux with check-imagefile.sh: ERROR: timeout accessing <IP_ADDRESS> through ssh
@pohly any quick guesses what could be wrong?

Could be a flake. The test needs to boot up a VM, which may have had timing issues.
There were issues with sshd restarting during the VM boot process, but https://github.com/intel/pmem-csi/commit/283a9292ee8735200de09a2e67f2b4fc49e94b02 should have fixed that via retrying.


add links to tech for palestine datasets

closes https://github.com/Zain-ul-din/awesome-palestine-apis/issues/2

Thank you so much for your PR 🙂


feat: add --skip-sync flag to upload and feed upload

On the gateway nodes the tag related features are disabled so it would be good if the flag would also disable the calls to createTag and retrieveTag.

Closes #64

Closes #36 and #61


[babel-preset-react-app] Temporary fix missing babel plugins

As said in #1156 and #1160 it seems that babel-plugin-transform-regenerator needs some additional plugins to work, and babel-preset-env is unable to detect it.

Does this fix your tests?

Yes, all of them

k let's do it.
I think this is also a good time to set up some integration tests.
There was an attempt in https://github.com/facebookincubator/create-react-app/pull/875 but the submitter didn't follow up and I'm not sure how to best solve this. Would you like to take over that PR and figure out a good way to integrate it?

Yes, I was thinking about some more accurate tests, maybe in the template in react-scripts.
Maybe it could also be useful for showcasing what can be done with es6..

I'd rather keep the default template simple and only use those for catching regressions.

Bonus points: have a way to actually assert things in such integration tests. Not just run npm start and npm run build but execute the produced bundle in jsdom so that we can make assertions inside of it.

That's also an option, and we could also address the problem with using npm link with react-scripts (I'll open an issue, but I talked about it here #936)

Conversation about tests continuing in #875.


Getting 404 for an issue that exist and is open

I am running the action based on the readme example. When I do it it return 0 though it succeed to extract the issue number from the PR description and it builds a valid issue link that when I use it the issue is open with no problems. You can find below the action log.
Run<EMAIL_ADDRESS>  with:
    prbody: Fixes #52

  Description of the PR content:
  Added SNS support for AWS backup such that, if a backup job fails, an email will be sent to the eng team

    prurl: https://api.github.com/repos/<MASKED>/cloud-environment/pulls/53
/usr/bin/docker run --name cd98f2d391664c89949c7b1f07fd4e4aada07_db75b3 --label 4cd98f --workdir /github/workspace --rm -e INPUT_PRBODY -e INPUT_PRURL -e HOME -e GITHUB_JOB -e GITHUB_REF -e GITHUB_SHA -e GITHUB_REPOSITORY -e GITHUB_REPOSITORY_OWNER -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RETENTION_DAYS -e GITHUB_RUN_ATTEMPT -e GITHUB_ACTOR -e GITHUB_WORKFLOW -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e GITHUB_EVENT_NAME -e GITHUB_SERVER_URL -e GITHUB_API_URL -e GITHUB_GRAPHQL_URL -e GITHUB_REF_NAME -e GITHUB_REF_PROTECTED -e GITHUB_REF_TYPE -e GITHUB_WORKSPACE -e GITHUB_ACTION -e GITHUB_EVENT_PATH -e GITHUB_ACTION_REPOSITORY -e GITHUB_ACTION_REF -e GITHUB_PATH -e GITHUB_ENV -e GITHUB_STEP_SUMMARY -e RUNNER_OS -e RUNNER_ARCH -e RUNNER_NAME -e RUNNER_TOOL_CACHE -e RUNNER_TEMP -e RUNNER_WORKSPACE -e ACTIONS_RUNTIME_URL -e ACTIONS_RUNTIME_TOKEN -e ACTIONS_CACHE_URL -e GITHUB_ACTIONS=true -e CI=true -v "/var/run/docker.sock":"/var/run/docker.sock" -v "/home/runner/work/_temp/_github_home":"/github/home" -v "/home/runner/work/_temp/_github_workflow":"/github/workflow" -v "/home/runner/work/_temp/_runner_file_commands":"/github/file_commands" -v "/home/runner/work/cloud-environment/cloud-environment":"/github/workspace" 4cd98f:2d391664c89949c7b1f07fd4e4aada07
Fixes #52
Description of the PR content:
Added SNS support for AWS backup such that, if a backup job fails, an email will be sent to the eng team
https://api.github.com/repos/<MASKED>/cloud-environment/pulls/53
52
https://github.com/<MASKED>/cloud-environment/issues/52
Invalid Response Code obtained - error code: 404
Valid flag is: 0

It seems that the issue is related to the security context that the request is running in. The action gets 404 for every request it send to private repo. It seems that the action should receive the GITHUB_TOKEN and use it in order to avoid the 404 for existing issues,

Hi @RonenYAtZenity 👋
Apologies for the late response — Yes, it should ideally receive a GITHUB_TOKEN. The action scraps the GitHub PR body to make sure that it contains an issue. Please give me sometime to find a way to use GH CLI to make that happen instead.

@RonenYAtZenity Which trigger do you use?
pull_request ?
Try pull_request_target and see if this will help.

@RonenYAtZenity is it fixed now?
Close the issue then?


Define node compatibility

Node compatibility should be defined in package.json due to scraper.ts using a node >18.0.0 feature  global.fetch.
As node 16.x is still used by some people, it could create confusion.
Due to the error not being so detailed when global.fetch is not defined.
The error:
ArgumentError {
  name: 'ArgumentError',
  message: 'fetch must be a function'
}

The suggestion is to add the following to the package.json
"engines": {
	"node": ">=18.0.0"
  },
"engineStrict": true

Hey @aske02, thanks for this report! You are very much right that this confusion should be prevented by the fix you suggest.
Sadly I don't have time to update, but if you can make a PR I'll be happy to merge. Otherwise I'll have a look in a month or so.
Thanks

Sure ill make a PR.
The issue global.fetch was an experimental feature in node 16.x which was disabled by default and enabled with --experimental-fetch.
In node 18.x its still an experimental feature but should be disabled by the user with --no-experimental-fetch.
The pull request for global.fetch


Implement direct livestreaming (Extremely WIP)

PR Checklist

Please check all that apply to this PR using "x":

[x] I have checked that this PR is not a duplicate of an existing PR (open, closed or merged)
[x] I have checked that this PR does not introduce a breaking change

PR Type
What kind of change does this PR introduce?

[x] Feature

Fixes
Issue Number: #94
What is the current behavior?
What is the new behavior?
Direct livestreaming available
Note that currently you need to navigate to the go live fragment again after granting the audio permission in order for the camera permission to be requested.

All three suggestions done in https://github.com/OdyseeTeam/odysee-android/pull/167/commits/40ec4b84af14f2488e1c6c6f5fec93a60547185f
(I'll squash the commits once it's ready for review)

Thanks, @ktprograms

Current status: It's ready for review but should not be merged because the commits aren't squashed, and due to a bug(?) in HaishinKit.kt. Once it's approved I'll squash the commits.
Blocker: The livestream does not have the correct aspect ratio. https://github.com/shogo4405/HaishinKit.kt/issues/48
@akinwale @kekkyojin Can you please review?

The livestreaming feature doesn’t seem to need to offer additional UI changes, like showing other fragments along the livestream UI. Chat can be displayed in a layout. Doesn’t make sense implementing this on its own activity?

Current status: It's ready for review but should not be merged because the commits aren't squashed, and due to a bug(?) in HaishinKit.kt. Once it's approved I'll squash the commits.

There was a time when I suggested contributors to squash their commits. However, as GitHub is already offering this as an option when merging, squashing is no longer needed

Current status: It's ready for review but should not be merged because the commits aren't squashed, and due to a bug(?) in HaishinKit.kt. Once it's approved I'll squash the commits.

There was a time when I suggested contributors to squash their commits. However, as GitHub is already offering this as an option when merging, squashing is no longer needed

I'd still prefer to do it manually, since the GitHub squash and merge puts all the commit messages into the merge commit's description.

But it asks for confirmation and you could remove all the commits from the description, so only the commit message remains

The livestreaming feature doesn’t seem to need to offer additional UI changes, like showing other fragments along the livestream UI. Chat can be displayed in a layout. Doesn’t make sense implementing this on its own activity?

Do you mean make livestreaming be in an Activity so it's easier to add features later on?

The bug in HaishinKit has been partially fixed. It seems to work fine if I don't change the cameraSource's resolution, but it still gets stretched with other resolutions. So the stream will be locked to 640x360px.
What should the bitrate be set to, and should it be user configurable? The default in HaishinKit is 500kbit/s.

Ok, I see. That makes sense.
Just FYI there isn't any chat currently.

@kekkyojin Should permissions be handled in the GoLiveActivity or use the callbacks in MainActivity?

Ok, moved livestreaming into an activity.
(Did the permission handling directly in the activity)

@akinwale Ok, done.
Few discussion points:

Currently no alert is shown when pressing back while confirming, which would make the user lose access to that livestream session.
I've just made it not reset the livestream flow when resuming while waiting for confirmation, but it won't save any state, so when the GoLiveActivity instance gets destroyed it won't be able to resume.

Rebased against master.


Revise .cicdtemplate for Github Actions

Why
There are some points to revamp the current CI/CD template to have workflow ready to work in new projects:
https://github.com/nimblehq/android-templates/tree/develop/.cicdtemplate/.github

[ ] Remove unused templates since it's out of date and unmaintained, the team need to reference to git-template as single source truth and latest update for new projects:

[ ] Combine reviewing PR workflows: review_pull_request.yml && run_detekt_and_unit_tests.yml. Both workflow have the same steps can be extract to shared workflow to reuse (Reference: https://docs.github.com/en/actions/using-workflows/sharing-workflows-secrets-and-runners-with-your-organization).

[ ] Revamp the deployment workflow: deploy_staging_and_production_to_firebase_app_distribution.yml. Github supports environment for deployment therefore creating variables/secretes with environment suffix is unnecessary (Reference: https://docs.github.com/en/actions/deployment/targeting-different-environments/using-environments-for-deployment)

Who Benefits?
Developers

Remove unused templates since it's out of date and unmantainced, the team need to reference to git-template as single source truth and latest update for new projects:

@hoangnguyen92dn Instead of remove, IMO, we should keep them up to date or have a script to sync them when generating new projects.

Revamp the deployment workflow: deploy_staging_and_production_to_firebase_app_distribution.yml. Github supports environment for deployment therefore creating variables/secretes with environment suffix is unnecessary

Agree, we should separate Environment variables by env: production and staging instead of by template: template-compose and template-xml.

@luongvo In fact, when the team create new repo, I see that choosing git-template from the options would be more efficient 😅

@hoangnguyen92dn Yes, but then, we will generate and push up the generated initial project from our Template.


Switch to pure TCP instead of HTTP for testing communication

Currently, the extension uses HTTP to communicate between the python extension and the node server spun up to run the necessary python code. These are both on the same computer and therefore should use TCP for port communication instead of HTTP.

closed by: https://github.com/microsoft/vscode-python/commit/869dc64f4734064ccb44011446398e1275647867, https://github.com/microsoft/vscode-python/commit/b771c0e91e754cd075ba9acc54daa128870030c6, and https://github.com/microsoft/vscode-python/commit/c64bb0e5403c41b951501f786460fe7b92d65511.


Improve readability of TTL values in printed records

What

Formats the TTL values in a more human-friendly format by forming a string specifying the TTL in remaining hours, minutes and seconds.

Why

TTL values becomes more recognizable in the output.
Both the output as well as the code remain free of clutter with this approach.

References

Closes #23

@mmourick is it possible to investigate the spacing between each tab? It seems that there's a slight difference in spacing now.


Create ryanccn-dev.json

Hello - that was me

Sorry for the inconvenience

Thank you!

Thanks to you too :)


Benchmark different client libraries

The reqwest library does a lot of wrapping into other threads to keep it synchronous. It's possible that using hyper::client directly might be faster and give us slightly less overhead per request.
Also, using evented IO may allow us to increase the concurrency levels and limit the size of the threading.
We could also test using other libraries but there are not many out there besides these and hyper is the most maintained. The lower in the stack we go, however, the more accurate the measurements will be and the more requests we should be able to make.

So far, hyper is by-far the fastest. I could possibly switch to actix and see if that's any faster, but hyper seems to meet the needs currently.


Possible deadlock between integration builds

What happened?
After creating 4 integrations at the same time, 3 of the builds are hanging for minutes after the first build has finished.
Steps to reproduce

Clean up all Integration Kits on the Camel K installation.
Create the following Integrations using a single yaml file:

apiVersion: camel.apache.org/v1
kind: Integration
metadata:
  name: deploy-a41357e7-14c0-4a64-9933-80044f023ad3-381
spec:
  sources:
  - name: main.yaml
    content: |-
      - from:
          uri: quartz://ipaas/trigger?cron=0+*+*+?+*+*
          steps:
          - log:
              message: "It worked"
  traits:
    camel:
      runtimeVersion: 3.8.1
    cron:
      fallback: true
---
apiVersion: camel.apache.org/v1
kind: Integration
metadata:
  name: deploy-a41357e7-14c0-4a64-9933-80044f023ad3-323
spec:
  sources:
  - name: main.yaml
    content: |-
      - from:
          uri: quartz://ipaas/trigger?cron=0+*+*+?+*+*
          steps:
          - log:
              message: "It worked"
  traits:
    camel:
      runtimeVersion: 3.2.3
    cron:
      fallback: true
---
apiVersion: camel.apache.org/v1
kind: Integration
metadata:
  name: deploy-fc949ea7-e5ea-4d59-8fed-83471b9350e0-381
spec:
  sources:
  - name: main.yaml
    content: |-
      - from:
          uri: rest:get:/demo
          steps:
          - setBody:
              constant: "It worked"
  traits:
    knative-service:
      minScale: 1
    camel:
      runtimeVersion: 3.8.1
---
apiVersion: camel.apache.org/v1
kind: Integration
metadata:
  name: deploy-fc949ea7-e5ea-4d59-8fed-83471b9350e0-323
spec:
  sources:
  - name: main.yaml
    content: |-
      - from:
          uri: rest:get:/demo
          steps:
          - setBody:
              constant: "It worked"
  traits:
    knative-service:
      minScale: 1
    camel:
      runtimeVersion: 3.2.3

This will create 4 Builds:
NAME                       PHASE        AGE   STARTED   DURATION   ATTEMPTS
kit-cqqft44lsn2s73ed6ufg   Running      55s   55s
kit-cqqft44lsn2s73ed6ug0   Scheduling   55s
kit-cqqft4clsn2s73ed6ugg   Scheduling   54s
kit-cqqft4clsn2s73ed6uh0   Scheduling   54s

Wait for the first build to finish.
Keep waiting for the second build to start.
Even after minutes waiting, the build is still in Scheduling status; (I waited for ~5 minutes)

Checking the operator log I see:
{"level":"info","ts":"2024-08-08T17:24:23Z","logger":"camel-k.controller.build","msg":"Waiting for build (kit-cqqft44lsn2s73ed6ug0) to finish in order to use incremental image builds - the build (kit-cqqft4clsn2s73ed6uh0) gets enqueued","request-namespace":"a1b2c3d4e5","request-name":"deploy-fc949ea7-e5ea-4d59-8fed-83471b9350e0-323","order-strategy":"dependencies","api-version":"camel.apache.org/v1","kind":"Build","ns":"a1b2c3d4e5","name":"kit-cqqft4clsn2s73ed6uh0"}
{"level":"info","ts":"2024-08-08T17:24:27Z","logger":"camel-k.controller.build","msg":"Waiting for build (kit-cqqft4clsn2s73ed6ugg) to finish in order to use incremental image builds - the build (kit-cqqft44lsn2s73ed6ug0) gets enqueued","request-namespace":"a1b2c3d4e5","request-name":"deploy-a41357e7-14c0-4a64-9933-80044f023ad3-323","order-strategy":"dependencies","api-version":"camel.apache.org/v1","kind":"Build","ns":"a1b2c3d4e5","name":"kit-cqqft44lsn2s73ed6ug0"}
{"level":"info","ts":"2024-08-08T17:24:27Z","logger":"camel-k.controller.build","msg":"Waiting for build (kit-cqqft44lsn2s73ed6ug0) to finish in order to use incremental image builds - the build (kit-cqqft4clsn2s73ed6ugg) gets enqueued","request-namespace":"a1b2c3d4e5","request-name":"deploy-fc949ea7-e5ea-4d59-8fed-83471b9350e0-381","order-strategy":"dependencies","api-version":"camel.apache.org/v1","kind":"Build","ns":"a1b2c3d4e5","name":"kit-cqqft4clsn2s73ed6ugg"}
{"level":"info","ts":"2024-08-08T17:24:28Z","logger":"camel-k.controller.build","msg":"Waiting for build (kit-cqqft44lsn2s73ed6ug0) to finish in order to use incremental image builds - the build (kit-cqqft4clsn2s73ed6uh0) gets enqueued","request-namespace":"a1b2c3d4e5","request-name":"deploy-fc949ea7-e5ea-4d59-8fed-83471b9350e0-323","order-strategy":"dependencies","api-version":"camel.apache.org/v1","kind":"Build","ns":"a1b2c3d4e5","name":"kit-cqqft4clsn2s73ed6uh0"}
{"level":"info","ts":"2024-08-08T17:24:32Z","logger":"camel-k.controller.build","msg":"Waiting for build (kit-cqqft4clsn2s73ed6ugg) to finish in order to use incremental image builds - the build (kit-cqqft44lsn2s73ed6ug0) gets enqueued","request-namespace":"a1b2c3d4e5","request-name":"deploy-a41357e7-14c0-4a64-9933-80044f023ad3-323","order-strategy":"dependencies","api-version":"camel.apache.org/v1","kind":"Build","ns":"a1b2c3d4e5","name":"kit-cqqft44lsn2s73ed6ug0"}
{"level":"info","ts":"2024-08-08T17:24:32Z","logger":"camel-k.controller.build","msg":"Waiting for build (kit-cqqft44lsn2s73ed6ug0) to finish in order to use incremental image builds - the build (kit-cqqft4clsn2s73ed6ugg) gets enqueued","request-namespace":"a1b2c3d4e5","request-name":"deploy-fc949ea7-e5ea-4d59-8fed-83471b9350e0-381","order-strategy":"dependencies","api-version":"camel.apache.org/v1","kind":"Build","ns":"a1b2c3d4e5","name":"kit-cqqft4clsn2s73ed6ugg"}
{"level":"info","ts":"2024-08-08T17:24:33Z","logger":"camel-k.controller.build","msg":"Waiting for build (kit-cqqft44lsn2s73ed6ug0) to finish in order to use incremental image builds - the build (kit-cqqft4clsn2s73ed6uh0) gets enqueued","request-namespace":"a1b2c3d4e5","request-name":"deploy-fc949ea7-e5ea-4d59-8fed-83471b9350e0-323","order-strategy":"dependencies","api-version":"camel.apache.org/v1","kind":"Build","ns":"a1b2c3d4e5","name":"kit-cqqft4clsn2s73ed6uh0"}
{"level":"info","ts":"2024-08-08T17:24:37Z","logger":"camel-k.controller.build","msg":"Waiting for build (kit-cqqft4clsn2s73ed6ugg) to finish in order to use incremental image builds - the build (kit-cqqft44lsn2s73ed6ug0) gets enqueued","request-namespace":"a1b2c3d4e5","request-name":"deploy-a41357e7-14c0-4a64-9933-80044f023ad3-323","order-strategy":"dependencies","api-version":"camel.apache.org/v1","kind":"Build","ns":"a1b2c3d4e5","name":"kit-cqqft44lsn2s73ed6ug0"}
{"level":"info","ts":"2024-08-08T17:24:37Z","logger":"camel-k.controller.build","msg":"Waiting for build (kit-cqqft44lsn2s73ed6ug0) to finish in order to use incremental image builds - the build (kit-cqqft4clsn2s73ed6ugg) gets enqueued","request-namespace":"a1b2c3d4e5","request-name":"deploy-fc949ea7-e5ea-4d59-8fed-83471b9350e0-381","order-strategy":"dependencies","api-version":"camel.apache.org/v1","kind":"Build","ns":"a1b2c3d4e5","name":"kit-cqqft4clsn2s73ed6ugg"}
{"level":"info","ts":"2024-08-08T17:24:38Z","logger":"camel-k.controller.build","msg":"Waiting for build (kit-cqqft44lsn2s73ed6ug0) to finish in order to use incremental image builds - the build (kit-cqqft4clsn2s73ed6uh0) gets enqueued","request-namespace":"a1b2c3d4e5","request-name":"deploy-fc949ea7-e5ea-4d59-8fed-83471b9350e0-323","order-strategy":"dependencies","api-version":"camel.apache.org/v1","kind":"Build","ns":"a1b2c3d4e5","name":"kit-cqqft4clsn2s73ed6uh0"}

It seems like each build is waiting for another one to finish;
Relevant log output
No response
Camel K version
2.4.0

Adding the trait:
    builder:
      incrementalImageBuild: false

to each Integration or to the IntegrationPlatform didn't change the results.

The same scenario with Camel K 2.3.3 worked as expected. The builds ran sequentially.

Trying to understand the code, I guess this is related to how this method  is implemented.
BuilderDependencies() will load the dependencies from the builder task in each build. Taking one of my builds as an example, I see the list:
      dependencies:
      - camel:quartz
      - mvn:org.apache.camel.k:camel-k-cron
      - mvn:org.apache.camel.k:camel-k-runtime
      - mvn:org.apache.camel.quarkus:camel-quarkus-yaml-dsl

These strings do not include the jar version. If two builds use the same Camel components, but with different camel-k-runtimes, HasMachingBuild will work as if the dependencies are the same, but they are not.
This might lead to a wrong image reuse. I will try and confirm this and open a separate ticket.

This difference between 2.3.x and 2.4.0 is due to https://github.com/apache/camel-k/pull/5669. Indeed, changing the build order strategy to sequential in 2.4.0 fixes the issue and replicates the 2.3.x behavior.

Thanks for reporting. Yes, apparently the dependencies strategy is having some problem. We need to fix it, but in the while, the solution is to revert the build order strategy.

BTW, feel free to work on its resolution if you have the availability to.

After more troubleshooting, I figured out that the problem happens if 2 builds have exactly the same dependencies and have been created within the same second.
This condition was supposed to give priority to the whatever build was created first, but as the creationTimestamp precision is down to the second only, we may have equal timestamps and no build will be prioritized.
I think that in this case we might prioritize based on anothet criteria, like the build name, which is unique.
@squakez  I'll try to come up with a solution and submit a PR. It this gets more complicated than I antecipated I'll let you know so we can unsassign the issue.

Excellent, thanks. Sure, just let me know how it goes.

The scenario was a bit trickier. I opened a draft PR for review, but I still need to build the operator and test it on a K8s cluster. I'll do it in the next few days.


404 error on setting image tag src

Whenever a string of any value is added to src of the img tag within the editor, a 404 error occurs. The 404 error occurs on every stroke after src is specified.
This error does not take place in the CSS url() case.
This happens despite a blob url being generated in the case of the selfie extension. Further, the image rendering in the preview works.
This leads to a large number of requests being made to the server and has a high cost.

Image will display is the string to a valid file is removed and re-added, so it is likely not an issue with nohost.
This seems to only when a diff check takes place.

This appears to happen on any change to the editor after the src attribute of an <img> tag has been populated.

This turns out to be caused by https://github.com/KeniMorri/HTMLHinter, which is where we use SlowParse.  @Pomax, any ideas what would cause SlowParse to actually try and load an img's src URL?
Let's disable HTMLHinter on Bramble until we fix this.

@gideonthomas confirms this is being caused by slowparse.

Slowparse builds an active DOM, so the quickest path to success here will be to write a dropin for the document API we're using in https://github.com/mozilla/slowparse/blob/gh-pages/src/DOMBuilder.js, with minimal Node (the data structure, not Node.js) implementations for appending children and setting attributes.

This is being fixed in https://github.com/mozilla/slowparse/pull/79

will be fixed with https://github.com/humphd/brackets/issues/263

Slowparse has been patched and updated.

Fixed in 40bd5f4040034628cc75b7b10577ce9016d5cc39


Add perl as a run dep

Ping @kmuehlbauer this might help fix our problems.

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

Seems it needs perl also at build time...

Seems it needs perl also at build time...

I did that to investigate if autoconf was the right place for the perl dependency here, but I guess m4 is. (At least my Linux distro builds m4 with perl.)

I don't know what is causing the perl conflict. It is definitely not m4 which is the only dependency for autoconf.
Error:  Package missing in current linux-64 channels:
  - perl 5.18.2*

@msarahan do you have any idea of what I am doing wrong here?

  The default Perl version is the one you see, but that's not available.  Pin to >=5.20 and it should work.

Thanks @msarahan! That solved it!! We need to figure out a pinning strategy for perl and add it here.
Does perl 5.20.* sounds OK? If so I can put a PR to add that to the pin_the_slow_way.py script. (Ping @pelson.)

I thought we fixed this perl issue. @pelson, any idea why it still doesn't respect the version in the feedstock?

I thought we fixed this perl issue. @pelson, any idea why it still doesn't respect the version in the feedstock?

Good question. I definitely added conda-build-all perl support (https://github.com/SciTools/conda-build-all/blob/master/conda_build_all/version_matrix.py#L217) so yes, the CONDA_PERL environment variable should be being set appropriately (and automatically).

Ah, but we didn't add it to conda-smithy.

FYI this is not the last time perl issues will come out of the woodwork. I expect to see several in the near future. We were implicitly depending on perl that was installed with git from yum. However, we now use our git that does not install perl currently (may change). As a result, a few packages may need to be fixed to have perl as a build and/or run time dependency.

FYI automake had the same issue, but it is now fixed.


Feature: Support for Multitenancy

It would be great if this package could support multitenancy (i. e. https://github.com/spatie/laravel-multitenancy). Basically it would be enough to put custom translations in a tenant-specifiy folder like:
/resources/lang-custom/1/ (for tenant with ID 1)
I already tried implementing it but had no chance a chained translation is always initialized before tenancy. Maybe anyone has a suggestion how this could be done.

@danielbehrendt PRs are welcome! But we do not have a use case for this at the moment, so we will not pursue this ourselves.
Maybe you can already get away with most of your translation issues, by creating a translation file per tenant. And then use @lang("messages-tenant-{$tenantId}.title") or something like that.

@sten thank you for the reply. I already tried tweaking the required config values by as task in my tenant package but it seems your package is doing all the related stuff in register already so there's no chance (yet) to make adjustments in advance.

@sten this is what i already tried:
$customLangDirectoryName = config('laravel-chained-translator.custom_lang_directory_name');
$customLangDirectoryName .= sprintf('/%06u', app('currentTenant')->id);
config()->set('laravel-chained-translator.custom_lang_directory_name', $customLangDirectoryName);

but as i already mentioned i haven't found a way to do this BEFORE the register method of the TranslationServiceProvider get executed.

my problem is also related to Filament (though i use the Spatie multi-tenancy package there) but how do you like the handle the multi-tenancy there?
https://github.com/statikbe/laravel-filament-chained-translation-manager


rework model #1444

Summary of the discussion
From #1444
Type of change (CHANGELOG.md)
Added

model
model role
scale model
mathematical model

Updated

OEO_00000274 relabeled from model to numerical computer model and reclassified as mathematical model

Removed

Removed a broken link #

Workflow checklist
Automation
Closes #1444
PR-Assignee

[ ] 🐙 Follow the Pull Request Workflow
[ ] 📝 Update the CHANGELOG.md
[ ] 📙 Add #'s to term tracker item

Reviewer

[ ] 🐙 Follow the Reviewer Guide
[ ] 🐙 Provided feedback and show sufficient appreciation for the work done

Any reason why not to classify mathematical model as information content entity? @l-emele @areleu
Regarding https://github.com/OpenEnergyPlatform/ontology/issues/1444#issuecomment-1742468245:

the definition of models seem to fit for the new generic model class. Therefore, I'd change the domain.
the definition of has contributor seem to fit for the new generic model class, too.
For the subproperties of has contributor: tbd

Originally posted by @stap-m in https://github.com/OpenEnergyPlatform/ontology/issues/1444#issuecomment-1742635787

Any reason why we don't classify mathematical model as information content entity?

I am fine with that. I also already commented somewhere that I think that model could be classified as information content entity.

The latest CI error looks similar to the one fixed in #1729 . Let's merge #1724 and see, wether the problem still occurs.

I found why the CI is failing. There are multiple reasons. First, there is a " too much at one place, see specific comment.
Second, you add the following two axioms:
'has organisation'
    Domain: 'numerical computer model' or 'information content entity'
    Range: 'has role' some 'organisational role

'has client'
    'numerical computer model' or 'information content entity'
    Range: 'has role' some client

Be aware that both has organisation and has client already identical ranges in oeo-social. Additional there are already different ranges in oeo-model.
But the problem why the CI fails is that neither organisational role nor client are known to oeo-shared.
I suggest the following:

As we make numerical computer model a subclass of information content entity, the range expression 'numerical computer model' or 'information content entity' can be simplified in both cases to information content entity. So the domain axiom will contain IAO classes only.
organisational role and client are both defined in oeo-social, has organisation. Thus, has client should be moved to oeo-social, too, as the only OEO classes they depend on are in this class.

But the problem why the CI fails is that neither organisational role nor client are known to oeo-shared.

Thanks, that was the problem!
I didn't read your comment closely yesterday and moved organisational role nor client to oeo-shared. For organisational role this is the right place in my view, since organisation is defined by it. I will move client back, though, and follow your proposal.


Use same task sbom processing in buildah 0.1 and 0.2

Before you complete this pull request ...
Look for any open pull requests in the repository with the title "e2e-tests update" and
see if there are recent e2e-tests updates that will be applicable to your change.

@midnightercz Thank you for the contribution! What is the reason for this change?
As far as I know, we want to generally avoid updating 0.1 versions.
cc @mmorhun

Hi, I need to do changes in 0.2 to support spdx format. I wasn't sure if 0.1 should be modified as well, so I filed this PR to unify tasks so I can do changes only in build-tasks-dockerfiles in relevant scripts instead of duplicating the functionality to "inline" python code in 0.1. This change might be unneeded if you decide 0.1 shouldn't be touched as it's deprecated and going to be removed.

I think we should leave 0.1 task as is and make changes to 0.2 only.


Arriba.IpRangeColumn implementation.

@vScottLouvau, thanks for signing the contribution license agreement. We will now validate the agreement and then the pull request.
Thanks, Microsoft Pull Request Bot


Design proposal for RTCIceTransport

For a little white I have been brainstorming on how to best enhance the ICE protocol and finally after conversations with @Sean-Der decided to put down the information I found in this proposal. This change is primarily only for enhancing internal readability and does not change a single thing in terms of the public API. In this proposal I am not going to cover in depth how the current design of the IceAgent is structures In fact for the most part how it operates is really not negotiable since it needs to comply with [RFC5245] (https://tools.ietf.org/html/rfc5245).

If you are interested please follow the code HERE. Current implementation uses this object in two places. During initialization HERE and when starting up the gathering process HERE.

What I will mention however is why in my opinion this design is hard to read and how to package as its own module:

The code is initialized during application initialization but, in fact nothing within the module is actually used during that intialization nor is there any initialization specific information covered in the ICE RFC. This fact seems to have been actually addressed and extended using [RTCPeerConnection Interface Extensions] (https://www.w3.org/TR/webrtc/#rtcpeerconnection-interface-extensions) which talks about an object called RTCIceTransport whose suppose is to be an interface into the ICE process.
The whole process of gathering is kicked off with a start() function which does not convey the needed information that this is a gathering of candidates process.
Local candidate gathering is happening outside of the IceAgent. This makes things hard for isolation purposes.
IceAgent shares objects with the rest of the webrtc. This one makes it especially hard to make ICE its own module. In fact after reading the entire ICE RFC there is absolutely no mentioning of webrtc state management which raises the question of why ICE shares objects with webrtc at all.

Solution:

Note this is not my solution an I am simply adopting the extended variation of the webrtc spec.

After a few days of investigation and trying to figure out how exactly the RTCIceTransport plays a role relative to the IceAgent that we created I came to the conclusion that they are one and the same. (In a way). WebRTC spec talks a lot about Ice Transports. In fact a lot of the state management of webrtc is done by checking the states and existence of these ice transports. For a little while I could not understand what they are but I after following up on other webrtc library in another language (python) I found one that clearly explains it. [HERE] (https://github.com/jlaine/aiortc/blob/master/aiortc/rtcpeerconnection.py#L108) you can see that the library initializes an empty set of iceTransports. Then during addTrack these iceTransports are initialized and places inside of this set (1->2->3). In fact they are first wrapped inside of a dtls object. Then during the setLocalDescription function the gathering process is kicked off HERE which  does the whole ice compliant process.
Here is the proposal (pseudocode):
class IceAgent:
    AddRemoteCandidate()
    Gather()
    Connect()
    SetSelectedPair()

For the most part it will be similar to this design: https://aioice.readthedocs.io/en/stable/api.html

The initialization process is going to be during addTrack or createDataChannel depending on whether this is a data transfer or audio/video. Just like the python library we'll wrap the newly create RTCIceTransport with a RTCDtlsTransport object. And finally we'll kick off the complete gathering and connectivity processes during setLocalDescription. Just like the WebRTC RFC instructs to do.
The design inspiration credits go to: https://github.com/jlaine.
Just want to give credit where it is due.

This is fantastic! Thank you so much for doing this, in the future this should be the standard before making any changes, this just makes everything better long term.

For the IceAgent constructor we pass STUN/TURN URLs. It then maintains them and emits up to the RTCPeerConnection when they are ready. This makes sense to me (and matches the RFC) thanks for doing all the research!

IceAgent.Gather is this async? Would be nice if trickle-ice landed with this, so you only have to do this all once. This is just fired when the RTCPeerConnection is built (so we start contacting STUN/TURN before setLocalDescription/setRemoteDescription)

Maybe change Connect to Start to match aioice and the intent a little better (since we aren't really connecting, but kicking off a complicated stateful process)

I find RTCDtlsTransport confusing. Especially since it is only used for SCTP traffic, and it shared across all candidates. Currently we share one DTLS state between all ports, and candidates may switch but we always use the same DTLS state. Right now a candidate sends traffic, and just conditionally chooses to encrypt things using DTLS (am I sending SRTP or SCTP).

What does the call-stack look like for sending an RTP/SCTP packet then? Do we actually send via these transports, or just query things from them?
RTCDataChannel.Send() -> iceAgent.SelectedPair() -> selectedPair.SendRTP() -> encrypts+send
r.networkManager.SendRTP -> iceAgent.SelectedPair() -> selectedPair.SendSRTP -> encrypts + send

I don't know how much value you will get from unique packages, I think the overhead of versioning/releases is more then you expect. If someone is looking for these packages I would love to build it for them, but I am a little worried spending time on things that no one uses.

I am 100% for making a better ICEAgent/keeping more state in there!
Would like a little more explanation about DTLSTransport.
Personally I don't think ORTC/WebRTC is perfect, it is just an arbitrary design and at times seems cryptic so I think it is ok to deviate, if we get wins in maintainability/onboard new devs.

@Sean-Der So yeah... I wrote an answer for every point you mentioned. Sorry that it is a long explanation.

For the IceAgent constructor we pass STUN/TURN URLs. It then maintains them and emits up to the RTCPeerConnection when they are ready. This makes sense to me (and matches the RFC) thanks for doing all the research!

Yes. That exactly how it is going to work.

IceAgent.Gather is this async? Would be nice if trickle-ice landed with this, so you only have to do this all once. This is just fired when the RTCPeerConnection is built (so we start contacting STUN/TURN before setLocalDescription/setRemoteDescription)

A few things to mention here. As for the async capability no. At least not at first. In my personal opinion we should use goroutines in general because a. it is SUPER golang. b. It is in line with RFC design. c. Without this we, already, have issues with parallelism. My product has a bunch of concurrency and this library as is currently not going to be usable by me for a little until I can test that there are no race conditions created. But really it is a big issue that will keep coming up more and more as the library becomes more stable. I am happy to help there. That is the stuff I like the most personally.
As for contacting before setLocalDescription/setRemoteDescription. According to the JSEP RFC HERE gathering only starts during setLocalDescription and not before that. In fact that is also confirmed by the ICE RFC HERE when it says: "An agent gathers candidates when it believes that communication is imminent." I am going to keep emphasizing this point because all other libraries I have seen so far confirm to this design. This is important because a. we need to comply with other libraries or otherwise there might be state mismatching if candidates are collected during stages before there are changes to candidates (ice-trickle will fix much of this but still important to keep the same.) b. This improves resource westfulness. As I mentioned in my personal case I create like 30 connections to other peers. This means if we start allocating candidates with the turn server before connectivity is "imminent" there might be a large amount of resources allocated for no reason. Big waste.

Maybe change Connect to Start to match aioice and the intent a little better (since we aren't really connecting, but kicking off a complicated stateful process)

Agreed.

I find RTCDtlsTransport confusing. Especially since it is only used for SCTP traffic, and it shared across all candidates. Currently we share one DTLS state between all ports, and candidates may switch but we always use the same DTLS state. Right now a candidate sends traffic, and just conditionally chooses to encrypt things using DTLS (am I sending SRTP or SCTP).

According to the RFC HERE RTCDtlsTransport is part of the specifications. In this current run over the code I am not planning on creating RTCDtlsTransport - just to be clear. After the initial implementation of RTCIceTransport I was planning on making it backward compatible so we could integrate it first and then we could talk about RTCDtlsTransport. I have solid understanding of crypto implementations so happy to take over the task of implementing golang pure dtls. When I do that we could have a deep talk about RTCDtlsTransport. Same applies for SCTP. As I said, the goal is going to be backward compatible.
As for the flow, I am not entirely sure how to "backward compatible" will look like but here is the flow of that aioice uses. There are a few of them depended on whether it is audio/video stream or data.
data: createDataChannel() -> NewRTCDataChannel(createSctpTransport(), parameters) -> NewRTCSctpTransport(createDtlsTransport()) -> NewRTCIceTransport(configuration.iceServers)
stream: addTrack() -> createTransceiver() -> createDtlsTransport() -> NewRTCIceTransport(configuration.iceServers) -> RTCRtpTransceiver(RTCRtpSender(dtlsTransport), RTCRtpReceiver(dtlsTransport))
In general some of the design that I omitted is that IceAgent also has additional functions:
class IceAgent:
    AddRemoteCandidate()
    Gather()
    Connect()
    SetSelectedPair()
    Send()
    SendTo()
    Recv()
    RecvFrom()

This way we can then wrap these calls anyway we want in terms of actually sending the data over the connections. I am not entirely sure how exactly the stack will look like but I am sure we can make it anyway you want since the actual sending and receiving code is going to be within the ice and we'll just wrap it around in any kind of stack you wish for.

Conversation was moved to the wiki here


Added card and button component files onto Lib folder

Description

Motivation and Context

How Has This Been Tested?

Screenshots (if appropriate):
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

[ ] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.

Looks good, make sure to seperate meaningful things in seperate PR, here I see Button and Card code being added. Should not be seperated in 2 PRs


Link back to parameters

Codecov Report

Merging #374 (b4ba6d1) into master (24dcf34) will decrease coverage by 1.59%.
The diff coverage is 52.80%.

@@             Coverage Diff              @@
##             master     #374      +/-   ##
============================================
- Coverage     70.00%   68.40%   -1.60%
+ Complexity     1217     1131      -86
============================================
  Files           136      135       -1
  Lines          4084     3865     -219
  Branches        602      521      -81
============================================
- Hits           2859     2644     -215
- Misses          993      996       +3
+ Partials        232      225       -7

Impacted Files
Coverage Δ

src/main/java/seedu/address/MainApp.java
0.00% <0.00%> (ø)

...main/java/seedu/address/commons/core/Messages.java
0.00% <ø> (ø)

.../main/java/seedu/address/logic/FeesCalculator.java
70.93% <ø> (-3.49%)
:arrow_down:

...java/seedu/address/logic/commands/BackCommand.java
50.00% <ø> (ø)

.../seedu/address/logic/commands/CalendarCommand.java
66.66% <ø> (ø)

...ava/seedu/address/logic/commands/ClearCommand.java
100.00% <ø> (ø)

.../java/seedu/address/logic/commands/DayCommand.java
50.00% <ø> (ø)

...java/seedu/address/logic/commands/ExitCommand.java
100.00% <ø> (ø)

...java/seedu/address/logic/commands/FindCommand.java
100.00% <ø> (ø)

...java/seedu/address/logic/commands/HelpCommand.java
100.00% <ø> (ø)

... and 42 more

Continue to review full report at Codecov.

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

mention parameters after the command format?


Concurrency and multiple :memory databases

I have a program which has two go routines which within each the go routine creates a separate memory database.
Each go routine loops, within each they do the following:

create a memory table from a select from a persistent database
loop through the data created (using the in memory database)
drop the memory table
loop

I am getting the "DROP: database table is locked: sqlite_master DROP TABLE xxxxx" error, but inconsistently on one or both of the tables.
My question:
Can you have two in memory databases which have independent goroutines accessing each?  I'm not having two goroutines access both, it is a 1 to 1 relationship.  1 goroutine creates, accesses, and drops 1 memory database.
Both databases are opened with:
sql.Open("sqlite3", "file::memory:?cache=shared&loc=auto&mode=rwc")
Thanks!

please try to use mode=memory file:memdb1?mode=memory&cache=shared

I believe that solved that issue. Thanks!

I added another routine creating another table, and again I'm getting "database table is locked: sqlite_master".  Will "mode=memory file:memdb1?mode=memory&cache=shared" work with more than 2 tables?

I don't make sure but memdb1 should be namespace for the tables. So it should work with same connect strings.


fix: goroutine leak when client connect successfully but setup failed

Codecov Report

Merging #98 (8379244) into master (55d48bf) will decrease coverage by 0.18%.
The diff coverage is 48.38%.

@@            Coverage Diff             @@
##           master      #98      +/-   ##
==========================================
- Coverage   62.50%   62.32%   -0.19%
==========================================
  Files         100      100
  Lines        4470     4496      +26
==========================================
+ Hits         2794     2802       +8
- Misses       1411     1425      +14
- Partials      265      269       +4

Impacted Files
Coverage Δ

internal/socket/resumable_client_socket.go
75.78% <0.00%> (-3.34%)
:arrow_down:

internal/socket/simple_client_socket.go
84.21% <0.00%> (-4.68%)
:arrow_down:

internal/socket/base_socket.go
58.97% <33.33%> (-6.55%)
:arrow_down:

internal/socket/duplex.go
31.71% <80.00%> (+0.52%)
:arrow_up:

client.go
96.51% <100.00%> (+0.04%)
:arrow_up:

server.go
71.02% <0.00%> (-2.28%)
:arrow_down:

Continue to review full report at Codecov.

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

Codecov Report

Merging #98 (8379244) into master (55d48bf) will decrease coverage by 0.18%.
The diff coverage is 48.38%.

@@            Coverage Diff             @@
##           master      #98      +/-   ##
==========================================
- Coverage   62.50%   62.32%   -0.19%
==========================================
  Files         100      100
  Lines        4470     4496      +26
==========================================
+ Hits         2794     2802       +8
- Misses       1411     1425      +14
- Partials      265      269       +4

Impacted Files
Coverage Δ

internal/socket/resumable_client_socket.go
75.78% <0.00%> (-3.34%)
:arrow_down:

internal/socket/simple_client_socket.go
84.21% <0.00%> (-4.68%)
:arrow_down:

internal/socket/base_socket.go
58.97% <33.33%> (-6.55%)
:arrow_down:

internal/socket/duplex.go
31.71% <80.00%> (+0.52%)
:arrow_up:

client.go
96.51% <100.00%> (+0.04%)
:arrow_up:

server.go
71.02% <0.00%> (-2.28%)
:arrow_down:

Continue to review full report at Codecov.

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


change js for js.Syntax.code

update for haxe 4.1.0, to avoid compile time js warnings.

@jgranick
This allows this type of code
lime._internal.unifill.Syntax.code('untyped js string');

instead of
untyped __js__('untyped js string');

package lime._internal.unifill;
import haxe.extern.Rest;
@:access( js.Syntax.code )
extern class Syntax extends js.Syntax {
    #if( haxe >= "4.0.0" )
    public static function code(code:String, args:Rest<Dynamic>):Dynamic {
       return untyped js.Syntax.code( code, args );
    }
    #else
    public inline static function code(code:String):Dynamic {
        return untyped  __js__( code );
    }
    #end
}

Would this be a nice backwards compatible approach?

My main concern about using # code within the main code is that it gets very messy with large chunks of text.  We could just use this for these situations.  The solution was derived by looking inside standard library.

This seems to work and is more backwards, what version of haxe minimum does OpenFL/Lime support currently?
package lime._internal.unifill;
import haxe.extern.Rest;
@:access( js.Syntax.code )
extern class Syntax /*extends js.Syntax*/ {
    #if( haxe >= "4.0.0" )
    public static function code(code:String, args:Rest<Dynamic>):Dynamic {
       return untyped js.Syntax.code( code, args );
    }
    #else
    public inline static function code(code:String):Dynamic {
        return untyped  __js__( code );
    }
    #end
}


Extend functionality of custom validation plugins

Pass model instances through to the validation routines, to allow extra introspection and functionality (if required).
Ref: https://github.com/inventree/InvenTree/discussions/4389

@matmair this is a prime candidate for profiling the unit tests. The extra plugin validation code has blown the unit tests out to three hours


Connection from task is not properly used when handling incoming task

I noticed that when an incoming task is handled, the "connection" attribute of the command is not properly fetched. There is code for it, it used to work, but after that it stopped working.
The problem: the $command is an array, but is treated like an object. I updated the code to treat is as an array and added a test for it.
If you have any feedback please let me know so we can get this bug fixed quickly. (this bug is withholding me from properly using this package)

@marickvantuil  Thanks for the quick merge! :D

I've tagged v3.6.6 with this bugfix. Thank you!


Whisper medium error with DirectML

When running whisper medium (int8 / normal) on DirectML provider it failed. on CPU it works. same build.
The error
Non-zero status code returned while running MemcpyToHost node

Reproduce
cmake -B build -DCMAKE_BUILD_TYPE=Release -DSHERPA_ONNX_ENABLE_DIRECTML=ON -DSHERPA_ONNX_ENABLE_PORTAUDIO=OFF -DSHERPA_ONNX_ENABLE_WEBSOCKET=OFF -DSHERPA_ONNX_ENABLE_TTS=OFF -DSHERPA_ONNX_ENABLE_BINARY=ON -DSHERPA_ONNX_BUILD_C_API_EXAMPLES=ON .

Change provider to DirectML in whiser-c-api and medium.int8
cmake --build build --config Release --target whisper-c-api

Result (failed)
Time taken for create recognizer: 13.49 seconds
2024-08-09 17:22:45.9754547 [E:onnxruntime:, sequential_executor.cc:494 onnxruntime::ExecuteKernel] Non-zero status code returned while running MemcpyToHost node. Name:'Memcpy_token_244' Status Message: D:\a\_work\1\s\onnxruntime\core\providers\dml\DmlExecutionProvider\src\MLOperatorAuthorImpl.cpp(2429)\onnxruntime.dll!00007FF9B54FE1D6: (caller: 00007FF9B5A25FC7) Exception(3) tid(2f08) 887A0006 The GPU will not respond to more commands, most likely because of an invalid command passed by the calling application.

D:\sherpa\sherpa-onnx\sherpa-onnx/csrc/offline-recognizer-whisper-impl.h:DecodeStream:176

Caught exception:

Non-zero status code returned while running MemcpyToHost node. Name:'Memcpy_token_244' Status Message: D:\a\_work\1\s\onnxruntime\core\providers\dml\DmlExecutionProvider\src\MLOperatorAuthorImpl.cpp(2429)\onnxruntime.dll!00007FF9B54FE1D6: (caller: 00007FF9B5A25FC7) Exception(3) tid(2f08) 887A0006 The GPU will not respond to more commands, most likely because of an invalid command passed by the calling application.

Return an empty result. Number of input frames: 663, Current tail paddings: 1000. If you see a lot of such exceptions, please consider using a larger --whisper-tail-paddings
Decoded text:
Time taken: 2.83 seconds
Decoded text:

Change provider to CPU in whisper-c-api and medium.int8
cmake --build build --config Release --target whisper-c-api

Result (success)
Time taken for create recognizer: 10.05 seconds
Decoded text:  After early nightfall the yellow lamps would light up here and there the squalid quarter of the brothels.
Time taken: 15.26 seconds
Decoded text:  After early nightfall the yellow lamps would light up here and there the squalid quarter of the brothels.

Change provider to DirectML and model to tiny.int8
Result (success)
Time taken for create recognizer: 1.39 seconds
Decoded text:  After early nightfall, the yellow lamps would light up here and there the squalid quarter of the brothels.
Time taken: 2.25 seconds
Decoded text:  After early nightfall, the yellow lamps would light up here and there the squalid quarter of the brothels.

Maybe related:
https://github.com/dog-qiuqiu/Ultralight-SimplePose/issues/5
https://github.com/microsoft/onnxruntime/issues/3205
https://github.com/k2-fsa/sherpa-onnx/pull/1037
By the way I can that it loads some of the model into the GPU memory. like 2GB and then fail (I have 8GB GPU)
Happens also in test whisper script
Maybe a fix: https://github.com/onnx/models/issues/156#issuecomment-690847276

Turns out it happens with scripts/whisper/test.py as well.
I created new issue in onnxruntime
https://github.com/microsoft/onnxruntime/issues/21805


Nuxt SSR Support

I love this library. Are there any plans to support Nuxt.js? This is very necessary so that pages using vue-virtual-collection can have good SEO.

Thank you for your favorite!
This library doesn't have plans for Nuxt.js. (I don't have enough time to improve it). Supporting SSR is a good idea. you can fork it and do whatever you want with it : )