/
ProxyServerSocket.java
82 lines (72 loc) · 1.95 KB
/
ProxyServerSocket.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
import java.io.*;
import java.net.*;
import java.util.*;
public class ProxyServerSocket extends Thread{
private ServerSocket serverSock;
private int portNumber;
private boolean running;
public ArrayList<String> blocklist;
public ProxyServerSocket(int port){
this.portNumber = port;
}
//Check if a domain has been blocked
public boolean checkBlockList(String domain){
return blocklist.contains(domain);
}
//Block a domain from being accessed through the server
public boolean blockDomain(String domain){
boolean result = false;
if(!checkBlockList(domain)){
blocklist.add(domain);
result = true;
}
return result;
}
//Unblock the domain from the server
public boolean unblockDomain(String domain){
boolean result = false;
if(checkBlockList(domain)){
blocklist.remove(domain);
result = true;
}
return result;
}
//Unblock all the domains on the list
public void dumpBlockList(){
blocklist = new ArrayList<String>();
}
//Return all the domains on the server
public String getBlockList(){
String result = "";
for(int i=1;i<blocklist.size();i++){
result = result+blocklist.get(i)+"\n";
}
return result;
}
//Start the proxy server
public void startProxyServer(){
try{
serverSock = new ServerSocket(portNumber);
blocklist = new ArrayList<String>();
blocklist.add("init");
this.start();
}catch(Exception e){}
}
//Stop the proxy server
public void stopServer(){
running = false;
this.interrupt();
}
//Start the proxy server thread
@Override
public void run(){
running = true;
while(running){
try{
Socket clientSock = serverSock.accept();
ClientConnectionHandler clientHandler = new ClientConnectionHandler(clientSock, this);
clientHandler.start();
}catch(Exception e){}
}
}
}