Browse the code
| Differences between 27 and 28 on /trunk. | |||||||
|---|---|---|---|---|---|---|---|
| Number of edited files: | 3 (0 added, 0 deleted and 3 modified) | ||||||
| Author: | inouire | ||||||
| Log message: | fixes #1063 première version du master server | ||||||
| Date: | 2010-01-24 20:28:09 | ||||||
|
|||||||
| Old | New | Code |
|---|---|---|
| 22 | 22 |
import java.io.IOException; |
| 23 | 23 |
import java.io.InputStreamReader; |
| 24 | 24 |
import java.io.PrintWriter; |
| 25 |
import java.net.InetAddress; | |
| 25 | 26 |
import java.net.Socket; |
| 26 | 27 | |
| 27 | 28 | |
| 63 | 64 |
if(firstWord.toUpperCase().startsWith("REGISTER")){
|
| 64 | 65 |
//register server |
| 65 | 66 |
int port=12345; |
| 67 |
boolean is_secured=false; | |
| 68 |
int nb_players=0; | |
| 69 |
int max_nb_players=6; | |
| 66 | 70 |
String description="pas de description"; |
| 67 | 71 |
try{
|
| 68 | 72 |
String info=firstWord.substring(firstWord.indexOf(":")+1);
|
| 69 | 73 |
port = Integer.parseInt(info.substring(0,info.indexOf(":")));
|
| 74 |
info=info.substring(info.indexOf(":")+1);
| |
| 75 |
is_secured=Boolean.parseBoolean(info.substring(0,info.indexOf(":")));
| |
| 76 |
info=info.substring(info.indexOf(":")+1);
| |
| 77 |
nb_players=Integer.parseInt(info.substring(0,info.indexOf(":")));
| |
| 78 |
info=info.substring(info.indexOf(":")+1);
| |
| 79 |
max_nb_players=Integer.parseInt(info.substring(0,info.indexOf(":")));
| |
| 70 | 80 |
description=info.substring(info.indexOf(":")+1);
|
| 71 | 81 |
}catch(Exception e){
|
| 82 |
Main.printLog("Bad REGISTER frame from "+socket.getInetAddress().toString()+":"+firstWord);
| |
| 83 |
return; | |
| 72 | 84 |
} |
| 85 |
String ip; | |
| 86 |
InetAddress iaddress = socket.getInetAddress(); | |
| 87 |
if(iaddress.isLoopbackAddress()){
| |
| 88 |
ip="inouire.net"; | |
| 89 |
}else{
| |
| 90 |
ip=iaddress.toString().substring(1); | |
| 91 |
} | |
| 92 |
RegisteredServer RS = new RegisteredServer(ip,port,is_secured,nb_players,max_nb_players,description); | |
| 73 | 93 | |
| 74 |
RegisteredServer RS = new RegisteredServer(socket.getInetAddress(),port,description,false); | |
| 75 | ||
| 76 | 94 |
if(Main.register.isBlackListed(RS)){
|
| 77 | 95 |
Main.printLogIfVerbose("Server Blacklisted");
|
| 78 | 96 |
return; |
| 104 | 122 |
} |
| 105 | 123 | |
| 106 | 124 |
private void getInfoRoutine(){
|
| 107 |
this.send(Main.register.getRegisterList()); | |
| 125 |
this.out.println(Main.register.getRegisterInfo());
| |
| 108 | 126 |
} |
| 109 | 127 | |
| 110 |
private void statRoutine(){
| |
| 111 | ||
| 112 |
} | |
| 113 | ||
| 114 |
private void pingRoutine(){
| |
| 115 |
Main.printLogIfVerbose("Answering to PING request");
| |
| 116 |
send("PING");
| |
| 117 |
} | |
| 118 | ||
| 119 | 128 |
private void closeStreams(){
|
| 120 | 129 |
try {
|
| 121 | 130 |
this.in.close(); |
| 122 | 131 |
| Old | New | Code |
|---|---|---|
| 19 | 19 |
public class Register {
|
| 20 | 20 | |
| 21 | 21 |
public ArrayList<RegisteredServer> listOfServers; |
| 22 |
private ArrayList<InetAddress> blackListedIP; | |
| 22 |
private ArrayList<String> blackListedIP;
| |
| 23 | 23 | |
| 24 | 24 |
public Register(){
|
| 25 | 25 |
listOfServers=new ArrayList<RegisteredServer>(); |
| 71 | 71 |
} |
| 72 | 72 | |
| 73 | 73 |
public void heartBeat(RegisteredServer RS){
|
| 74 |
Main.printLog("HEARTBEAT received from "+RS.getIP().toString()+":"+RS.getPort());
| |
| 74 | 75 |
RegisteredServer A = Main.register.getServer(RS); |
| 75 | 76 |
if(A!=null){
|
| 76 | 77 |
A.rearmWatchdog(); |
| 77 | 78 |
A.reAffect(RS); |
| 78 |
printRegisterList(); | |
| 79 | 79 |
} |
| 80 |
Main.register.printRegisterList();
| |
| 80 | 81 |
} |
| 81 | 82 | |
| 82 | 83 |
public boolean isAlreadyRegistered(RegisteredServer RS){
|
| 104 | 105 |
} |
| 105 | 106 | |
| 106 | 107 |
public boolean isBlackListed(RegisteredServer RS){
|
| 107 |
InetAddress ip = RS.getIP(); | |
| 108 |
for(InetAddress IP:blackListedIP){
| |
| 108 |
String ip = RS.getIP();
| |
| 109 |
for(String IP:blackListedIP){
| |
| 109 | 110 |
if(IP.equals(ip)){
|
| 110 | 111 |
return true; |
| 111 | 112 |
} |
| 114 | 115 |
} |
| 115 | 116 | |
| 116 | 117 |
public void printRegisterList(){
|
| 117 |
System.out.println(getRegisterList()); | |
| 118 |
} | |
| 119 | ||
| 120 |
public String getRegisterList(){
| |
| 121 | 118 |
String s=""; |
| 122 | 119 |
String tmp=""; |
| 123 | 120 |
int max=0; |
| 124 | 121 |
if(!listOfServers.isEmpty()){
|
| 125 | 122 |
for(RegisteredServer rs : listOfServers){
|
| 126 |
tmp="| "+rs.getIP()+" | "+rs.getPort()+" | "+rs.isActive()+" | "+rs.getDescription()+"\n"; | |
| 127 |
s+=tmp; | |
| 128 |
if(tmp.length()>max){
| |
| 129 |
max=tmp.length(); | |
| 123 |
if(rs.isActive()){
| |
| 124 |
tmp="| "+rs.getIP()+":"+rs.getPort()+" | "+rs.isProtected()+" | "+rs.getNumberOfPlayers()+"/"+rs.getMaxNumberOfPlayers()+" | "+rs.getDescription()+"\n"; | |
| 125 |
s+=tmp; | |
| 126 |
if(tmp.length()>max){
| |
| 127 |
max=tmp.length(); | |
| 128 |
} | |
| 130 | 129 |
} |
| 131 | 130 |
} |
| 132 | 131 |
s="\n"+s; |
| 135 | 134 |
s+="-"; |
| 136 | 135 |
} |
| 137 | 136 |
} |
| 137 |
System.out.println(s); | |
| 138 |
} | |
| 139 | ||
| 140 |
public String getRegisterInfo(){
| |
| 141 |
String s=""; | |
| 142 |
if(!listOfServers.isEmpty()){
| |
| 143 |
for(RegisteredServer rs : listOfServers){
| |
| 144 |
if(rs.isActive()){
| |
| 145 |
s+=rs.getIP()+":"+rs.getPort()+":"+rs.isProtected()+":"+rs.getNumberOfPlayers()+":"+rs.getMaxNumberOfPlayers()+":"+rs.getDescription()+"\n"; | |
| 146 |
} | |
| 147 |
} | |
| 148 |
s=s.substring(0, s.length()-1); | |
| 149 |
} | |
| 138 | 150 |
return s; |
| 139 | 151 |
} |
| 140 | 152 | |
| 141 | 153 | |
| 142 | 154 | |
| 143 |
private ArrayList<InetAddress> loadBlackListedIP(){
| |
| 155 |
private ArrayList<String> loadBlackListedIP(){
| |
| 144 | 156 |
//load blacklist from file |
| 145 |
return new ArrayList<InetAddress>(); | |
| 157 |
return new ArrayList<String>();
| |
| 146 | 158 |
} |
| 147 | 159 |
} |
| 148 | 160 |
| Old | New | Code |
|---|---|---|
| 26 | 26 |
*/ |
| 27 | 27 |
public class RegisteredServer {
|
| 28 | 28 | |
| 29 |
private InetAddress IP; | |
| 29 |
private String IP;
| |
| 30 | 30 |
private int port; |
| 31 | 31 |
private String description; |
| 32 | 32 |
private boolean isProtected; |
| 37 | 37 |
public int counter;//to verify every 10 heartbeat that the server is still accessible |
| 38 | 38 |
private boolean activate; |
| 39 | 39 | |
| 40 |
public RegisteredServer(InetAddress IP,int port, String description,boolean isProtected){
| |
| 40 |
public RegisteredServer(String IP,int port,boolean isProtected,int nbPlayers,int maxPlayers, String description){
| |
| 41 | 41 |
this.IP=IP; |
| 42 | 42 |
this.port=port; |
| 43 | 43 |
this.description=description; |
| 44 | 44 |
this.isProtected=isProtected; |
| 45 |
this.nbPlayers=nbPlayers; | |
| 46 |
this.maxPlayers=maxPlayers; | |
| 45 | 47 |
this.watchdog=0; |
| 46 | 48 |
this.activate=false; |
| 47 | 49 |
} |
| 64 | 66 |
return activate; |
| 65 | 67 |
} |
| 66 | 68 | |
| 67 |
public InetAddress getIP(){
| |
| 69 |
public String getIP(){
| |
| 68 | 70 |
return IP; |
| 69 | 71 |
} |
| 70 | ||
| 71 | 72 |
public int getPort(){
|
| 72 | 73 |
return port; |
| 73 | 74 |
} |
| 74 | ||
| 75 | 75 |
public boolean isProtected(){
|
| 76 | 76 |
return isProtected; |
| 77 | 77 |
} |
| 78 | ||
| 79 | 78 |
public String getDescription() {
|
| 80 | 79 |
return description; |
| 81 | 80 |
} |
| 81 |
public int getNumberOfPlayers(){
| |
| 82 |
return nbPlayers; | |
| 83 |
} | |
| 84 |
public int getMaxNumberOfPlayers(){
| |
| 85 |
return maxPlayers; | |
| 86 |
} | |
| 82 | 87 | |
| 83 | 88 |
public void reAffect(RegisteredServer RS){
|
| 84 | 89 |
this.description=RS.description; |
| 85 | 90 |
this.isProtected=RS.isProtected; |
| 91 |
this.nbPlayers=RS.nbPlayers; | |
| 92 |
this.maxPlayers=RS.maxPlayers; | |
| 86 | 93 |
//and more... |
| 87 | 94 |
} |
| 88 | 95 |
} |
| 89 | 96 |

B@ggle