We are evaluating PoolServerJ for our mining pool, 50btc.com, as replacement for pushpoold. There are few problems we have encountered during testing; can anyone help with them?
We are running Scientific Linux 6.1, java version java-1.6.0-openjdk-1.6.0.0-1.40.1.9.10, poolserverj 0.4.0rc7 (rc2 + rc7 patch), stock bitcoind 0.5.2.
First problem is that currently PoolServerJ doesn't support postgresql properly. For example, with settings
db.engine=postgresql
db.host=dbserver
db.name=pool
db.schema=public
db.port=5432
db.user=pooluser
db.password=pass
It incorrectly forms connectiong string, it prints
[20:54:18.678] Connecting to DB URL: jdbc:postgresql:pool//dbserver:5432/public?autoReconnect=true
and then always connects to localhost, not "dbserver"
If I understand correctly, specifying connection string in jdbc:postgresql:<database> form can be used only for localhost connections, according to documentation
http://jdbc.postgresql.org/documentation/80/connect.html. So jdbc happily ignores dbserver and port, which makes poolserverj connect only to localhost.
We wouldn't mind to fix that issue, but there are no sources for this part of server (shadtools-sql), even in source repository there is only binary .jar. Therefore, we really can't do anything. Currently, for testing we have installed redirecting proxy for postgresql which forwards requests from localhost to real database server, but for production it would be nice to fix that issue properly. This problem is present both in 0.4.0 and git version.
Second problem is that we want users to authorize with any password, as long as they are registered on pool. There is auth engine called AnyPasswordWorkerAuthenticator which supposed to do the trick, but it doesn't do as advertised. Namely, it does allow to log in with any password, but not without password - when logging in with username only (we tried guiminer+poclbm and minerd) it still returns "401 Unauthorized". Of course, it's set up as it's supposed to
authenticatorEngine=com.shadworld.poolserver.servlet.auth.AnyPasswordWorkerAuthenticator
authenticatorEngine.extraParams=true, false
and I have looked at its simple code a few times but still can't figure out why it won't allow empty password. Could it be that there is a bug in other code which rejects empty password before it's processed by AnyPasswordWorkerAuthenticator?