It is currently 24 Apr 2024, 07:37
   
Text Size

Crowdsourcing Project Firemind Duels

Moderators: ubeefx, beholder, melvin, ShawnieBoy, Lodici, CCGHQ Admins

Re: Crowdsourcing Project Firemind Duels

Postby mike » 10 Sep 2014, 17:19

Yeah, I'm working on the google sign in problem. Apparently they don't like that I changed the url to https ...

Worker code is still the same. hg status shows no changes.

Edit: google, facebook and github are now fixed. Twitter is still a problem ...
User avatar
mike
Programmer
 
Posts: 128
Joined: 05 Jul 2013, 17:00
Has thanked: 0 time
Been thanked: 29 times

Re: Crowdsourcing Project Firemind Duels

Postby ShawnieBoy » 10 Sep 2014, 17:41

Cool, thanks for that - found some error generation for you: Hopefully will shed some light

Code: Select all
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException:
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
        at sun.security.ssl.Alerts.getSSLException(Unknown Source)
        at sun.security.ssl.SSLSocketImpl.fatal(Unknown Source)
        at sun.security.ssl.Handshaker.fatalSE(Unknown Source)
        at sun.security.ssl.Handshaker.fatalSE(Unknown Source)
        at sun.security.ssl.ClientHandshaker.serverCertificate(Unknown Source)
        at sun.security.ssl.ClientHandshaker.processMessage(Unknown Source)
        at sun.security.ssl.Handshaker.processLoop(Unknown Source)
        at sun.security.ssl.Handshaker.process_record(Unknown Source)
        at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
        at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
        at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
        at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
        at sun.net.www.protocol.https.HttpsClient.afterConnect(Unknown Source)
        at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown Source)
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
        at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown Source)
        at magic.firemind.FiremindClient.checkMagarenaVersion(FiremindClient.java:153)
        at magic.ui.widget.firemind.FiremindWorkerPanel$1.actionPerformed(FiremindWorkerPanel.java:98)
        at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
        at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
        at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
        at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
        at java.awt.Component.processMouseEvent(Unknown Source)
        at javax.swing.JComponent.processMouseEvent(Unknown Source)
        at java.awt.Component.processEvent(Unknown Source)
        at java.awt.Container.processEvent(Unknown Source)
        at java.awt.Component.dispatchEventImpl(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
        at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
        at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Window.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.awt.EventQueue.access$400(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue$4.run(Unknown Source)
        at java.awt.EventQueue$4.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.WaitDispatchSupport$2.run(Unknown Source)
        at java.awt.WaitDispatchSupport$4.run(Unknown Source)
        at java.awt.WaitDispatchSupport$4.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.awt.WaitDispatchSupport.enter(Unknown Source)
        at java.awt.Dialog.show(Unknown Source)
        at java.awt.Component.show(Unknown Source)
        at java.awt.Component.setVisible(Unknown Source)
        at java.awt.Window.setVisible(Unknown Source)
        at java.awt.Dialog.setVisible(Unknown Source)
        at magic.ui.dialog.FiremindWorkerDialog.<init>(FiremindWorkerDialog.java:44)
        at magic.ui.screen.SettingsMenuScreen$4.actionPerformed(SettingsMenuScreen.java:61)
        at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
        at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
        at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
        at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
        at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
        at java.awt.Component.processMouseEvent(Unknown Source)
        at javax.swing.JComponent.processMouseEvent(Unknown Source)
        at java.awt.Component.processEvent(Unknown Source)
        at java.awt.Container.processEvent(Unknown Source)
        at java.awt.Component.dispatchEventImpl(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
        at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
        at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Window.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.awt.EventQueue.access$400(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue$4.run(Unknown Source)
        at java.awt.EventQueue$4.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
        at sun.security.validator.PKIXValidator.doBuild(Unknown Source)
        at sun.security.validator.PKIXValidator.engineValidate(Unknown Source)
        at sun.security.validator.Validator.validate(Unknown Source)
        at sun.security.ssl.X509TrustManagerImpl.validate(Unknown Source)
        at sun.security.ssl.X509TrustManagerImpl.checkTrusted(Unknown Source)
        at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown Source)
        ... 97 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
        at sun.security.provider.certpath.SunCertPathBuilder.build(Unknown Source)
        at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(Unknown Source)
        at java.security.cert.CertPathBuilder.build(Unknown Source)
        ... 103 more
User avatar
ShawnieBoy
Programmer
 
Posts: 601
Joined: 02 Apr 2012, 22:42
Location: UK
Has thanked: 80 times
Been thanked: 50 times

Re: Crowdsourcing Project Firemind Duels

Postby mike » 10 Sep 2014, 18:16

Great, more problems caused by my attempt to improve security :(

This is apparently caused by your system not having the necessary ca certificate installed that is needed for it to trust certificates signed by StartSSL.

Could you maybe tell me what OS and Java Versions you're using?

I will try finding a solution that does not require the user to install the cert.
User avatar
mike
Programmer
 
Posts: 128
Joined: 05 Jul 2013, 17:00
Has thanked: 0 time
Been thanked: 29 times

Re: Crowdsourcing Project Firemind Duels

Postby ShawnieBoy » 10 Sep 2014, 18:39

mike wrote:Great, more problems caused by my attempt to improve security :(

This is apparently caused by your system not having the necessary ca certificate installed that is needed for it to trust certificates signed by StartSSL.

Could you maybe tell me what OS and Java Versions you're using?

I will try finding a solution that does not require the user to install the cert.
Security is good!

Win 7 (feel dirty)
Java 1.8.0_20 (mainly)
1.7.0_67 also installed
User avatar
ShawnieBoy
Programmer
 
Posts: 601
Joined: 02 Apr 2012, 22:42
Location: UK
Has thanked: 80 times
Been thanked: 50 times

Re: Crowdsourcing Project Firemind Duels

Postby mike » 12 Sep 2014, 10:38

I haven't been able to come up with a fully satisfying solution for this.

The options I currently see are these:
* drop https entirely (obviously bad)
* add the ca cert of startssl and an installer script to magarena (I feel this would clutter magarena with unnecessary files that in my opinion do not belong there)
* link the user to a guide/script on firemind.ch that explains how to install the certs (not convenient for the user)
* buy a better supported SSL cert (I guess this is what I have to go with. does anyone know a cert authority that is well supported over all java platforms magarena runs on?)
User avatar
mike
Programmer
 
Posts: 128
Joined: 05 Jul 2013, 17:00
Has thanked: 0 time
Been thanked: 29 times

Re: Crowdsourcing Project Firemind Duels

Postby Lodici » 12 Sep 2014, 11:03

mike wrote:I haven't been able to come up with a fully satisfying solution for this.

The options I currently see are these:
* drop https entirely (obviously bad)
...
This is probably a stupid question (SSL certs - way over my head) but why would this be bad? It's not like you are transferring credit card or even any personal or identifying details? Or are you? :wink:
User avatar
Lodici
Programmer
 
Posts: 399
Joined: 13 Oct 2013, 09:44
Has thanked: 29 times
Been thanked: 71 times

Re: Crowdsourcing Project Firemind Duels

Postby mike » 12 Sep 2014, 16:40

Don't worry, I'm not. ;)

I am transmitting the access token that is used to identify the user though. Right now the only thing this grants access to is posting game results but if I want to add more features to my API in the future I have to be careful not to compromise the users' accounts.

On the website itself it is even more crucial since a user can log in with email and password. Not securing this with TLS will eventually lead to compromised credentials and if the user entered the same password and email on another page it will to a whole other set of problems. So you see: it would be very reckless of me not to enforce SSL encryption because I can't count on everybody knowing the risks of insecure networks and password reuse.

The question wasn't stupid by the way. Unfortunately proper use of TLS is something that, even in the programming community, isn't known well enough.
User avatar
mike
Programmer
 
Posts: 128
Joined: 05 Jul 2013, 17:00
Has thanked: 0 time
Been thanked: 29 times

Re: Crowdsourcing Project Firemind Duels

Postby mike » 06 Oct 2014, 14:22

I purchased a certificate from another cert authority and added that to firemind.ch

If someone who experienced the SSL errors with the Queue Worker previously could verify that it is working now I'd be thankful (don't have a win7 machine at hand right now).
User avatar
mike
Programmer
 
Posts: 128
Joined: 05 Jul 2013, 17:00
Has thanked: 0 time
Been thanked: 29 times

Re: Crowdsourcing Project Firemind Duels

Postby PalladiaMors » 06 Oct 2014, 19:31

I'm still getting "Version is outdated. Please update Magarena.". However, I'm still using my old access key, since I don't know how to get a new one?
PalladiaMors
 
Posts: 343
Joined: 12 Jul 2014, 17:40
Has thanked: 36 times
Been thanked: 22 times

Re: Crowdsourcing Project Firemind Duels

Postby ShawnieBoy » 06 Oct 2014, 23:39

Looks like firemind is down at the moment, but will give it a look once it's back up
User avatar
ShawnieBoy
Programmer
 
Posts: 601
Joined: 02 Apr 2012, 22:42
Location: UK
Has thanked: 80 times
Been thanked: 50 times

Re: Crowdsourcing Project Firemind Duels

Postby mike » 07 Oct 2014, 14:03

Forgot to include an intermediate certificate. It's fixed now.

Firemind is up and also the Queue Worker should run now
User avatar
mike
Programmer
 
Posts: 128
Joined: 05 Jul 2013, 17:00
Has thanked: 0 time
Been thanked: 29 times

Re: Crowdsourcing Project Firemind Duels

Postby ShawnieBoy » 07 Oct 2014, 20:15

mike wrote:Forgot to include an intermediate certificate. It's fixed now.

Firemind is up and also the Queue Worker should run now
Looks like the worker is running properly now :) Though the logs may look strange as they will contain the users profile name.

Will leave this running for a while and see what happens
User avatar
ShawnieBoy
Programmer
 
Posts: 601
Joined: 02 Apr 2012, 22:42
Location: UK
Has thanked: 80 times
Been thanked: 50 times

Re: Crowdsourcing Project Firemind Duels

Postby ShawnieBoy » 07 Oct 2014, 21:11

I've already found a few things that should help this further.

When a duel begins, it reloads lots of stuff for magarena that the queue worker doesn't really need, and pushes up the heap-space, even while not interacting with magarena at all (eg. random deck generators, cube lists, etc.)
First duel sits around 750MB, the second duel pushes this to 1,000MB (I don't know what the default heap space is for the Magarena.exe, I've set my build to use more when working on it) The third duel seizes up before it can start.
I'm also wondering if it's also loading all the images in the background as well. Are the duels being run in text mode?

Having an alternative load method in Magarena for the queue-worker should help with this.
User avatar
ShawnieBoy
Programmer
 
Posts: 601
Joined: 02 Apr 2012, 22:42
Location: UK
Has thanked: 80 times
Been thanked: 50 times

Re: Crowdsourcing Project Firemind Duels

Postby PalladiaMors » 07 Oct 2014, 22:45

Good job, Mike & Co.! I see this as a big achievement, it will shorten queue times massively and allow a lot more players to use Firemind in the long run.

Only issue that caught my eye is that I can't choose Monte Carlo to run the duels - Firemind seems to switch the AI to MiniMax when I try to do that.
PalladiaMors
 
Posts: 343
Joined: 12 Jul 2014, 17:40
Has thanked: 36 times
Been thanked: 22 times

Re: Crowdsourcing Project Firemind Duels

Postby mike » 10 Oct 2014, 20:17

I've already found a few things that should help this further.

When a duel begins, it reloads lots of stuff for magarena that the queue worker doesn't really need, and pushes up the heap-space, even while not interacting with magarena at all (eg. random deck generators, cube lists, etc.)
First duel sits around 750MB, the second duel pushes this to 1,000MB (I don't know what the default heap space is for the Magarena.exe, I've set my build to use more when working on it) The third duel seizes up before it can start.
I'm also wondering if it's also loading all the images in the background as well. Are the duels being run in text mode?

Having an alternative load method in Magarena for the queue-worker should help with this.
Thanks for the feedback. I was able to replace MagicMain.initializeEngine() with CardDefinitions.loadCardDefinitions() which should fix some of the unnecessarily initialized stuff. Not sure what you mean by text mode but the game is set to artificial after initialization.

I pushed an updated version to https://code.google.com/r/projectfiremi ... dsourcing/

Only issue that caught my eye is that I can't choose Monte Carlo to run the duels - Firemind seems to switch the AI to MiniMax when I try to do that.
You shouldn't be able to change the AI since it is hard-coded. How do you figure Firemind switched to MiniMax?
User avatar
mike
Programmer
 
Posts: 128
Joined: 05 Jul 2013, 17:00
Has thanked: 0 time
Been thanked: 29 times

PreviousNext

Return to Magarena

Who is online

Users browsing this forum: No registered users and 31 guests


Who is online

In total there are 31 users online :: 0 registered, 0 hidden and 31 guests (based on users active over the past 10 minutes)
Most users ever online was 4143 on 23 Jan 2024, 08:21

Users browsing this forum: No registered users and 31 guests

Login Form