📄 configsectionipfilter.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: ConfigSectionIPFilter.java
package org.gudy.azureus2.ui.swt.views.configsections;
import com.aelitis.azureus.core.AzureusCore;
import com.aelitis.azureus.ui.swt.imageloader.ImageLoader;
import java.io.File;
import java.util.Arrays;
import java.util.Comparator;
import org.eclipse.swt.events.MouseAdapter;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.*;
import org.gudy.azureus2.core3.config.COConfigurationManager;
import org.gudy.azureus2.core3.internat.MessageText;
import org.gudy.azureus2.core3.ipfilter.*;
import org.gudy.azureus2.core3.logging.LogAlert;
import org.gudy.azureus2.core3.logging.Logger;
import org.gudy.azureus2.core3.util.AERunnable;
import org.gudy.azureus2.core3.util.DisplayFormatters;
import org.gudy.azureus2.ui.swt.Messages;
import org.gudy.azureus2.ui.swt.Utils;
import org.gudy.azureus2.ui.swt.config.*;
import org.gudy.azureus2.ui.swt.plugins.UISWTConfigSection;
public class ConfigSectionIPFilter
implements UISWTConfigSection
{
class FilterComparator
implements Comparator
{
boolean ascending;
static final int FIELD_NAME = 0;
static final int FIELD_START_IP = 1;
static final int FIELD_END_IP = 2;
int field;
final ConfigSectionIPFilter this$0;
public int compare(Object arg0, Object arg1)
{
IpRange range0 = (IpRange)arg0;
IpRange range1 = (IpRange)arg1;
if (field == 0)
return (ascending ? 1 : -1) * range0.compareDescription(range1);
if (field == 1)
return (ascending ? 1 : -1) * range0.compareStartIpTo(range1);
if (field == 2)
return (ascending ? 1 : -1) * range0.compareEndIpTo(range1);
else
return 0;
}
public void setField(int newField)
{
if (field == newField)
ascending = !ascending;
field = newField;
}
FilterComparator()
{
this$0 = ConfigSectionIPFilter.this;
super();
ascending = true;
field = 1;
}
}
AzureusCore azureus_core;
IpFilter filter;
Table table;
boolean noChange;
FilterComparator comparator;
private boolean bIsCachingDescriptions;
IpRange ipRanges[];
Label percentage_blocked;
private IPFilterListener filterListener;
public ConfigSectionIPFilter(AzureusCore _azureus_core)
{
bIsCachingDescriptions = false;
azureus_core = _azureus_core;
comparator = new FilterComparator();
}
public String configSectionGetParentSection()
{
return "root";
}
public String configSectionGetName()
{
return "ipfilter";
}
public void configSectionSave()
{
try
{
if (filter != null)
filter.save();
}
catch (Exception e)
{
Logger.log(new LogAlert(false, "Save of filter file fails", e));
}
}
public int maxUserMode()
{
return 1;
}
public void configSectionDelete()
{
if (bIsCachingDescriptions)
{
IpFilterManager ipFilterManager = azureus_core.getIpFilterManager();
ipFilterManager.clearDescriptionCache();
bIsCachingDescriptions = false;
}
if (filter != null)
filter.removeListener(filterListener);
ImageLoader imageLoader = ImageLoader.getInstance();
imageLoader.releaseImage("openFolderButton");
imageLoader.releaseImage("subitem");
}
public Composite configSectionCreate(final Composite parent)
{
ImageLoader imageLoader = ImageLoader.getInstance();
Image imgOpenFolder = imageLoader.getImage("openFolderButton");
int userMode = COConfigurationManager.getIntParameter("User Mode");
final IpFilterManager ipFilterManager = azureus_core.getIpFilterManager();
filter = ipFilterManager.getIPFilter();
Composite gFilter = new Composite(parent, 0);
GridLayout layout = new GridLayout();
layout.marginHeight = 0;
layout.marginWidth = 0;
gFilter.setLayout(layout);
GridData gridData = new GridData(272);
gFilter.setLayoutData(gridData);
gridData = new GridData();
BooleanParameter enabled = new BooleanParameter(gFilter, "Ip Filter Enabled");
enabled.setLayoutData(gridData);
Messages.setLanguageText(enabled.getControl(), "ConfigView.section.ipfilter.enable");
gridData = new GridData();
BooleanParameter deny = new BooleanParameter(gFilter, "Ip Filter Allow");
deny.setLayoutData(gridData);
Messages.setLanguageText(deny.getControl(), "ConfigView.section.ipfilter.allow");
deny.addChangeListener(new ParameterChangeAdapter() {
final ConfigSectionIPFilter this$0;
public void parameterChanged(Parameter p, boolean caused_internally)
{
setPercentageBlocked();
}
{
this$0 = ConfigSectionIPFilter.this;
super();
}
});
gridData = new GridData();
BooleanParameter persist_bad_data_banning = new BooleanParameter(gFilter, "Ip Filter Banning Persistent");
persist_bad_data_banning.setLayoutData(gridData);
Messages.setLanguageText(persist_bad_data_banning.getControl(), "ConfigView.section.ipfilter.persistblocking");
Group gBlockBanning = new Group(gFilter, 0);
Messages.setLanguageText(gBlockBanning, "ConfigView.section.ipfilter.peerblocking.group");
layout = new GridLayout();
layout.numColumns = 2;
gBlockBanning.setLayout(layout);
BooleanParameter enable_bad_data_banning = new BooleanParameter(gBlockBanning, "Ip Filter Enable Banning", "ConfigView.section.ipfilter.enablebanning");
gridData = new GridData();
gridData.horizontalSpan = 2;
enable_bad_data_banning.setLayoutData(gridData);
Label discard_label = new Label(gBlockBanning, 0);
Messages.setLanguageText(discard_label, "ConfigView.section.ipfilter.discardbanning");
FloatParameter discard_ratio = new FloatParameter(gBlockBanning, "Ip Filter Ban Discard Ratio");
gridData = new GridData();
gridData.widthHint = 30;
discard_ratio.setLayoutData(gridData);
Composite cIndent = new Composite(gBlockBanning, 0);
gridData = new GridData(1808);
gridData.horizontalSpan = 2;
gridData.horizontalIndent = 15;
cIndent.setLayoutData(gridData);
layout = new GridLayout(3, false);
layout.marginHeight = 0;
layout.marginWidth = 0;
cIndent.setLayout(layout);
Image img = imageLoader.getImage("subitem");
Label label = new Label(cIndent, 0);
gridData = new GridData(2);
label.setLayoutData(gridData);
label.setImage(img);
Label discard_min_label = new Label(cIndent, 0);
Messages.setLanguageText(discard_min_label, "ConfigView.section.ipfilter.discardminkb", new String[] {
DisplayFormatters.getUnit(1)
});
IntParameter discard_min = new IntParameter(cIndent, "Ip Filter Ban Discard Min KB");
gridData = new GridData();
gridData.widthHint = 30;
discard_min.setLayoutData(gridData);
Label block_label = new Label(gBlockBanning, 0);
Messages.setLanguageText(block_label, "ConfigView.section.ipfilter.blockbanning");
IntParameter block_banning = new IntParameter(gBlockBanning, "Ip Filter Ban Block Limit");
gridData = new GridData();
gridData.widthHint = 30;
block_banning.setLayoutData(gridData);
enable_bad_data_banning.setAdditionalActionPerformer(new ChangeSelectionActionPerformer(new Control[] {
block_banning.getControl(), block_label, discard_ratio.getControl(), discard_label, discard_min.getControl(), discard_min_label
}));
Group gAutoLoad = new Group(gFilter, 0);
Messages.setLanguageText(gAutoLoad, "ConfigView.section.ipfilter.autoload.group");
layout = new GridLayout();
layout.numColumns = 4;
gAutoLoad.setLayout(layout);
gAutoLoad.setLayoutData(new GridData(256));
String sCurConfigID = "Ip Filter Autoload File";
Label lblDefaultDir = new Label(gAutoLoad, 0);
Messages.setLanguageText(lblDefaultDir, "ConfigView.section.ipfilter.autoload.file");
lblDefaultDir.setLayoutData(new GridData());
gridData = new GridData(768);
gridData.minimumWidth = 50;
final StringParameter pathParameter = new StringParameter(gAutoLoad, sCurConfigID);
pathParameter.setLayoutData(gridData);
Button browse = new Button(gAutoLoad, 8);
browse.setImage(imgOpenFolder);
imgOpenFolder.setBackground(browse.getBackground());
browse.addListener(13, new Listener() {
final Composite val$parent;
final StringParameter val$pathParameter;
final ConfigSectionIPFilter this$0;
public void handleEvent(Event event)
{
FileDialog dialog = new FileDialog(parent.getShell(), 0x10000);
dialog.setFilterPath(pathParameter.getValue());
dialog.setText(MessageText.getString("ConfigView.section.ipfilter.autoload.file"));
dialog.setFilterExtensions(new String[] {
(new StringBuilder()).append("*.dat").append(File.pathSeparator).append("*.p2p").append(File.pathSeparator).append("*.p2b").append(File.pathSeparator).append("*.txt").toString(), "*.*"
});
dialog.setFileName("ipfilter.dat");
String file = dialog.open();
if (file != null)
pathParameter.setValue(file);
}
{
this$0 = ConfigSectionIPFilter.this;
parent = composite;
pathParameter = stringparameter;
super();
}
});
browse.setLayoutData(new GridData());
final Button btnLoadNow = new Button(gAutoLoad, 8);
Messages.setLanguageText(btnLoadNow, "ConfigView.section.ipfilter.autoload.loadnow");
btnLoadNow.addListener(13, new Listener() {
final Button val$btnLoadNow;
final ConfigSectionIPFilter this$0;
public void handleEvent(Event event)
{
try
{
btnLoadNow.getShell().setCursor(btnLoadNow.getDisplay().getSystemCursor(1));
COConfigurationManager.setParameter("Ip Filter Autoload Last Date", 0);
filter.reload();
btnLoadNow.getShell().setCursor(btnLoadNow.getDisplay().getSystemCursor(0));
}
catch (Exception e)
{
e.printStackTrace();
}
}
{
this$0 = ConfigSectionIPFilter.this;
btnLoadNow = button;
super();
}
});
btnLoadNow.setLayoutData(new GridData());
Label lblAutoLoadInfo = new Label(gAutoLoad, 64);
Messages.setLanguageText(lblAutoLoadInfo, "ConfigView.section.ipfilter.autoload.info");
lblAutoLoadInfo.setLayoutData(Utils.getWrappableLabelGridData(4, 0));
if (userMode > 0)
{
gridData = new GridData();
BooleanParameter enableDesc = new BooleanParameter(gFilter, "Ip Filter Enable Description Cache");
enableDesc.setLayoutData(gridData);
Messages.setLanguageText(enableDesc.getControl(), "ConfigView.section.ipfilter.enable.descriptionCache");
}
table = new Table(gFilter, 0x10010804);
String headers[] = {
"ConfigView.section.ipfilter.description", "ConfigView.section.ipfilter.start", "ConfigView.section.ipfilter.end"
};
int sizes[] = {
110, 110, 110
};
int aligns[] = {
16384, 0x1000000, 0x1000000
};
for (int i = 0; i < headers.length; i++)
{
TableColumn tc = new TableColumn(table, aligns[i]);
tc.setText(headers[i]);
tc.setWidth(sizes[i]);
Messages.setLanguageText(tc, headers[i]);
}
TableColumn columns[] = table.getColumns();
columns[0].setData(new Integer(0));
columns[1].setData(new Integer(1));
columns[2].setData(new Integer(2));
Listener listener = new Listener() {
final IpFilterManager val$ipFilterManager;
final ConfigSectionIPFilter this$0;
public void handleEvent(Event e)
{
TableColumn tc = (TableColumn)e.widget;
int field = ((Integer)tc.getData()).intValue();
comparator.setField(field);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -