2424package rabbitminer .Cluster .Server ;
2525
2626import Extasys .DataFrame ;
27+ import Extasys .Encryption .Base64Encryptor ;
2728import Extasys .ManualResetEvent ;
2829import Extasys .Network .TCP .Server .Listener .Exceptions .ClientIsDisconnectedException ;
2930import Extasys .Network .TCP .Server .Listener .Exceptions .OutgoingPacketFailedException ;
3031import Extasys .Network .TCP .Server .Listener .TCPClientConnection ;
32+ import Extasys .Network .TCP .Server .Listener .TCPListener ;
3133import java .util .HashMap ;
3234import java .util .LinkedHashMap ;
3335import rabbitminer .Cluster .ClusterCommunicationCommons ;
4547 */
4648public class ClusterServer extends Extasys .Network .TCP .Server .ExtasysTCPServer
4749{
48-
50+
4951 private final RabbitCluster fMyCluster ;
5052 private final Object fClientsConnectOrDisconnectLock = new Object ();
5153 private final HashMap <String , TCPClientConnection > fConnectedClients ;
5254 private final Thread fPingConnectedClientsThread ;
53-
55+
5456 public ClusterServer (RabbitCluster myCluster , ClusterServerSettings clusterServerSettings )
5557 {
5658 super ("" , "" , Computer .getComputerCPUCoresCount (), Computer .getComputerCPUCoresCount () * 2 );
57- super .AddListener ("" , clusterServerSettings .getIPAddress (), clusterServerSettings .getPort (), 60000 , 10240 , 30000 , 150 , ClusterCommunicationCommons .fETX );
58-
59+ TCPListener listener = super .AddListener ("" , clusterServerSettings .getIPAddress (), clusterServerSettings .getPort (), 60000 , 10240 , 30000 , 150 , ClusterCommunicationCommons .fETX );
60+ listener .setAutoApplyMessageSplitterState (true );
61+ listener .setConnectionEncryptor (new Base64Encryptor ());
62+
5963 fMyCluster = myCluster ;
6064 fConnectedClients = new HashMap <>();
6165
@@ -73,22 +77,22 @@ public ClusterServer(RabbitCluster myCluster, ClusterServerSettings clusterServe
7377 }
7478 catch (Exception ex )
7579 {
76-
80+
7781 }
7882 evt .Reset ();
7983 }
8084 });
8185 fPingConnectedClientsThread .start ();
8286 }
83-
87+
8488 @ Override
8589 public void OnDataReceive (TCPClientConnection sender , DataFrame data )
8690 {
8791 try
8892 {
8993 String incomingStr = new String (data .getBytes (), "UTF-8" );
9094 String [] parts = incomingStr .split (ClusterCommunicationCommons .fMessageSplitter );
91-
95+
9296 switch (parts [0 ])
9397 {
9498 case "LOGIN" :
@@ -106,41 +110,41 @@ public void OnDataReceive(TCPClientConnection sender, DataFrame data)
106110 sender .setTag (var );
107111
108112 // Ειδοποιούμε το Node οτι συνδέθηκε
109- sender .SendData ("AUTHORIZED" + ClusterCommunicationCommons .fMessageSplitter + ClusterCommunicationCommons . fETX );
113+ sender .SendData ("AUTHORIZED" + ClusterCommunicationCommons .fMessageSplitter );
110114 }
111115 else
112116 {
113- sender .SendData ("WRONG_PASSWORD" + ClusterCommunicationCommons .fMessageSplitter + ClusterCommunicationCommons . fETX );
117+ sender .SendData ("WRONG_PASSWORD" + ClusterCommunicationCommons .fMessageSplitter );
114118 }
115119 break ;
116-
120+
117121 case "GET_JOB" :
118122 if (CheckIfClientIsAuthorized (sender ))
119123 {
120124 // Ζήτα απο το Cluster να φτιάξει ένα
121125 // job για να το δώσουμε στο Node
122126 StratumJob job = fMyCluster .GiveNodeAJobToDo (sender );
123-
127+
124128 if (job != null )
125129 {
126- sender .SendData ("JOB" + ClusterCommunicationCommons .fMessageSplitter + job .toJSON () + ClusterCommunicationCommons . fETX );
130+ sender .SendData ("JOB" + ClusterCommunicationCommons .fMessageSplitter + job .toJSON ());
127131 }
128132 else
129133 {
130134 // Δεν υπάρχει Job....
131- sender .SendData ("NO_JOB" + ClusterCommunicationCommons .fMessageSplitter + ClusterCommunicationCommons . fETX );
135+ sender .SendData ("NO_JOB" + ClusterCommunicationCommons .fMessageSplitter );
132136 }
133137 }
134138 break ;
135-
139+
136140 case "JOB_SOLVED" :
137141 if (CheckIfClientIsAuthorized (sender ))
138142 {
139143 final String jobID = parts [1 ];
140144 final String extranonce2 = parts [2 ];
141145 final String nTime = parts [3 ];
142146 final String nonce = parts [4 ];
143-
147+
144148 String submitJobStr = "{\" params\" : [\" #WORKER_NAME#\" , \" #JOB_ID#\" , \" #EXTRANONCE_2#\" , \" #NTIME#\" , \" #NONCE#\" ], \" id\" : #STRATUM_MESSAGE_ID#, \" method\" : \" mining.submit\" }" ;
145149 submitJobStr = submitJobStr .replace ("#WORKER_NAME#" , fMyCluster .getStratumPoolSettings ().getUsername ());
146150 submitJobStr = submitJobStr .replace ("#JOB_ID#" , jobID );
@@ -158,49 +162,49 @@ public void OnDataReceive(TCPClientConnection sender, DataFrame data)
158162 fMyCluster .fJobsSubmitted += 1 ;
159163 }
160164 break ;
161-
165+
162166 case "JOB_SOLVED_RANDOMX" :
163167 if (CheckIfClientIsAuthorized (sender ))
164168 {
165169 StratumJob_RandomX randomXJobSolved = new StratumJob_RandomX (parts [1 ]);
166-
170+
167171 LinkedHashMap solvedJobParams = new LinkedHashMap ();
168172 solvedJobParams .put ("id" , Parser_RandomX .fPoolLoginID );
169173 solvedJobParams .put ("job_id" , randomXJobSolved .getJobID ());
170174 solvedJobParams .put ("nonce" , randomXJobSolved .getSolution_NonceHexlifyByteArray ());
171175 solvedJobParams .put ("result" , randomXJobSolved .getSolution_HashHexlifyByteArray ());
172-
176+
173177 LinkedHashMap messageToPool = new LinkedHashMap ();
174178 messageToPool .put ("id" , 1 );
175179 messageToPool .put ("jsonrpc" , "2.0" );
176180 messageToPool .put ("method" , "submit" );
177181 messageToPool .put ("params" , solvedJobParams );
178-
182+
179183 String dataToSend = JSONSerializer .SerializeObject (messageToPool );
180-
184+
181185 System .err .println (dataToSend );
182-
186+
183187 fMyCluster .getStratumClient ().SendData (dataToSend + "\n " );
184188 System .out .println ("SOLVED!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" );
185189
186190 // Καποιο Node ολοκλήρωσε ενα job με επιτυχία!
187191 // Στειλε το αποτέλεσμα στον Stratum Server
188192 fMyCluster .setCurrentStratumJob (null , false );
189193 }
190-
194+
191195 break ;
192-
196+
193197 case "PONG" :
194198 if (CheckIfClientIsAuthorized (sender ))
195199 {
196-
200+
197201 }
198202 break ;
199203 }
200204 }
201205 catch (Exception ex )
202206 {
203-
207+
204208 }
205209 }
206210
@@ -217,10 +221,10 @@ private boolean CheckIfClientIsAuthorized(TCPClientConnection client)
217221 NodeTCPConnectionVariables var = (NodeTCPConnectionVariables ) client .getTag ();
218222 return var .isClientAuthorized ();
219223 }
220-
224+
221225 return false ;
222226 }
223-
227+
224228 @ Override
225229 public void OnClientConnect (TCPClientConnection client )
226230 {
@@ -232,7 +236,7 @@ public void OnClientConnect(TCPClientConnection client)
232236 frmClusterControl .ACTIVE_INSTANCE .NodeConnected (client );
233237 }
234238 }
235-
239+
236240 @ Override
237241 public void OnClientDisconnect (TCPClientConnection client )
238242 {
@@ -247,7 +251,7 @@ public void OnClientDisconnect(TCPClientConnection client)
247251 }
248252 }
249253 }
250-
254+
251255 public void InformClientsToCleanJobs ()
252256 {
253257 synchronized (fClientsConnectOrDisconnectLock )
@@ -256,14 +260,14 @@ public void InformClientsToCleanJobs()
256260 {
257261 try
258262 {
259- client .SendData ("CLEAN_JOBS" + ClusterCommunicationCommons .fMessageSplitter + ClusterCommunicationCommons . fETX );
263+ client .SendData ("CLEAN_JOBS" + ClusterCommunicationCommons .fMessageSplitter );
260264 }
261265 catch (ClientIsDisconnectedException | OutgoingPacketFailedException ex )
262266 {
263267 }
264268 });
265269 }
266-
270+
267271 }
268272
269273 /**
@@ -277,21 +281,21 @@ private void PingClients()
277281 {
278282 try
279283 {
280- con .SendData ("PING" + ClusterCommunicationCommons .fMessageSplitter + ClusterCommunicationCommons . fETX );
284+ con .SendData ("PING" + ClusterCommunicationCommons .fMessageSplitter );
281285 }
282286 catch (ClientIsDisconnectedException | OutgoingPacketFailedException ex )
283287 {
284-
288+
285289 }
286290 });
287291 }
288292 }
289-
293+
290294 public HashMap <String , TCPClientConnection > getConnectedClients ()
291295 {
292296 return fConnectedClients ;
293297 }
294-
298+
295299 public void ClearRangesFromClients ()
296300 {
297301 synchronized (fClientsConnectOrDisconnectLock )
@@ -304,10 +308,10 @@ public void ClearRangesFromClients()
304308 }
305309 catch (Exception ex )
306310 {
307-
311+
308312 }
309313 });
310314 }
311315 }
312-
316+
313317}
0 commit comments