📄 socketserver.java
字号:
// Decompiled by Jad v1.5.8e2. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://kpdus.tripod.com/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi space
// Source File Name: SocketServer.java
package org.gudy.azureus2.ui.telnet;
import java.io.*;
import java.net.*;
import java.util.Iterator;
import java.util.Set;
import org.gudy.azureus2.ui.console.UserProfile;
import org.gudy.azureus2.ui.console.multiuser.UserManager;
// Referenced classes of package org.gudy.azureus2.ui.telnet:
// UI
final class SocketServer
implements Runnable
{
private final ServerSocket serverSocket;
private final Set allowedHosts;
private final int maxLoginAttempts;
private final UserManager userManager;
private final UI ui;
public SocketServer(UI ui, int port, Set allowedHosts, UserManager userManager, int maxLoginAttempts)
throws IOException
{
this.ui = ui;
this.allowedHosts = allowedHosts;
this.userManager = userManager;
serverSocket = new ServerSocket(port);
this.maxLoginAttempts = maxLoginAttempts;
}
public void run()
{
int threadNum = 1;
System.out.println((new StringBuilder()).append("Telnet server started. Listening on port: ").append(serverSocket.getLocalPort()).toString());
try
{
label0:
do
{
Socket socket = serverSocket.accept();
InetSocketAddress addr = (InetSocketAddress)socket.getRemoteSocketAddress();
if (addr.isUnresolved() || !isAllowed(addr))
{
System.out.println((new StringBuilder()).append("TelnetUI: rejecting connection from: ").append(addr).append(" as address is not allowed").toString());
socket.close();
continue;
}
System.out.println((new StringBuilder()).append("TelnetUI: accepting connection from: ").append(addr).toString());
int loginAttempts = 0;
do
{
UserProfile profile = login(socket.getInputStream(), socket.getOutputStream());
if (profile == null)
continue;
ui.createNewConsoleInput((new StringBuilder()).append("Telnet Console ").append(threadNum++).toString(), socket.getInputStream(), new PrintStream(socket.getOutputStream()), profile);
continue label0;
} while (++loginAttempts < maxLoginAttempts);
System.out.println((new StringBuilder()).append("TelnetUI: rejecting connection from: ").append(addr).append(" as number of failed connections > max login attempts (").append(maxLoginAttempts).append(")").toString());
socket.close();
} while (true);
}
catch (Throwable t)
{
t.printStackTrace();
}
}
private UserProfile login(InputStream in, OutputStream out)
throws IOException
{
if (userManager == null)
return UserProfile.DEFAULT_USER_PROFILE;
PrintStream ps = new PrintStream(out);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
ps.print("Username: ");
String username = br.readLine();
ps.print("Password: ");
String password = br.readLine();
UserProfile userProfile = userManager.authenticate(username, password);
if (userProfile != null)
{
ps.println("Login successful");
return userProfile;
} else
{
ps.println("Login failed");
return null;
}
}
private boolean isAllowed(InetSocketAddress addr)
{
InetAddress address = addr.getAddress();
if (checkHost(address.getHostAddress()))
return true;
return checkHost(address.getHostName());
}
private boolean checkHost(String hostName)
{
if (hostName == null)
return false;
hostName = hostName.toLowerCase();
for (Iterator iter = allowedHosts.iterator(); iter.hasNext();)
{
String allowedHost = (String)iter.next();
if (hostName.equals(allowedHost))
return true;
}
return false;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -