/* * File : BlockedIpsWindow.java * Created : 17 d�c. 2003} * By : Olivier * * Azureus - a Java Bittorrent client * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details ( see the LICENSE file ). * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ package org.gudy.azureus2.ui.swt; import org.eclipse.swt.SWT; import org.eclipse.swt.events.DisposeListener; import org.eclipse.swt.events.DisposeEvent; import org.eclipse.swt.custom.StyledText; import org.eclipse.swt.layout.FormAttachment; import org.eclipse.swt.layout.FormData; import org.eclipse.swt.layout.FormLayout; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Shell; import com.aelitis.azureus.core.*; import org.gudy.azureus2.core3.internat.MessageText; import org.gudy.azureus2.core3.ipfilter.*; import org.gudy.azureus2.core3.util.Constants; import org.gudy.azureus2.core3.util.DisplayFormatters; /** * @author Olivier * */ public class BlockedIpsWindow { static AzureusCore azureus_core; static Shell instance; private BlockedIpsWindow(){} public static void show( AzureusCore _azureus_core, Display display, String ipsBlocked, String ipsBanned) { if(instance == null || instance.isDisposed()) { instance = create(_azureus_core, display, ipsBlocked, ipsBanned); instance.addDisposeListener(new DisposeListener() { public void widgetDisposed(DisposeEvent event) { instance = null; } }); } else { instance.open(); } } private static Shell create( AzureusCore _azureus_core, Display display, String ipsBlocked, String ipsBanned) { azureus_core = _azureus_core; final int styles; if(Constants.isOSX) { styles = SWT.SHELL_TRIM; } else { styles = SWT.DIALOG_TRIM | SWT.MAX | SWT.RESIZE | SWT.APPLICATION_MODAL; } final Shell window = org.gudy.azureus2.ui.swt.components.shell.ShellFactory.createShell(display,styles); Messages.setLanguageText(window,"ConfigView.section.ipfilter.list.title"); Utils.setShellIcon(window); FormLayout layout = new FormLayout(); try { layout.spacing = 5; } catch (NoSuchFieldError e) { /* Ignore for Pre 3.0 SWT.. */ } layout.marginHeight = 5; layout.marginWidth = 5; window.setLayout(layout); FormData formData; // text blocked area final StyledText textBlocked = new StyledText(window,SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL); Button btnClear = new Button(window,SWT.PUSH); textBlocked.setEditable(false); final StyledText textBanned = new StyledText(window,SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL); Button btnOk = new Button(window,SWT.PUSH); Button btnReset = new Button(window,SWT.PUSH); textBanned.setEditable(false); formData = new FormData(); formData.left = new FormAttachment(0,0); formData.right = new FormAttachment(100,0); formData.top = new FormAttachment(0,0); formData.bottom = new FormAttachment(40,0); textBlocked.setLayoutData(formData); textBlocked.setText(ipsBlocked); // label blocked area Label blockedInfo = new Label(window, SWT.NULL); Messages.setLanguageText(blockedInfo,"ConfigView.section.ipfilter.blockedinfo"); formData = new FormData(); formData.top = new FormAttachment(textBlocked); formData.right = new FormAttachment(btnClear); formData.left = new FormAttachment(0,0); blockedInfo.setLayoutData( formData ); // clear button Messages.setLanguageText(btnClear,"Button.clear"); formData = new FormData(); formData.top = new FormAttachment(textBlocked); formData.right = new FormAttachment(95,0 ); //formData.bottom = new FormAttachment(textBanned); formData.width = 70; btnClear.setLayoutData(formData); btnClear.addListener(SWT.Selection,new Listener() { public void handleEvent(Event e) { azureus_core.getIpFilterManager().getIPFilter().clearBlockedIPs(); textBlocked.setText( "" ); } }); // text banned area formData = new FormData(); formData.left = new FormAttachment(0,0); formData.right = new FormAttachment(100,0); formData.top = new FormAttachment(btnClear); formData.bottom = new FormAttachment(btnOk); textBanned.setLayoutData(formData); textBanned.setText(ipsBanned); // label banned area Label bannedInfo = new Label(window, SWT.NULL); Messages.setLanguageText(bannedInfo,"ConfigView.section.ipfilter.bannedinfo"); formData = new FormData(); formData.right = new FormAttachment(btnReset); formData.left = new FormAttachment(0,0); formData.bottom = new FormAttachment(100,0); bannedInfo.setLayoutData( formData ); // reset button Messages.setLanguageText(btnReset,"Button.reset"); formData = new FormData(); formData.right = new FormAttachment(btnOk); formData.bottom = new FormAttachment(100,0); formData.width = 70; btnReset.setLayoutData(formData); btnReset.addListener(SWT.Selection,new Listener() { public void handleEvent(Event e) { azureus_core.getIpFilterManager().getIPFilter().clearBannedIps(); azureus_core.getIpFilterManager().getBadIps().clearBadIps(); textBanned.setText( "" ); } }); // ok button Messages.setLanguageText(btnOk,"Button.ok"); formData = new FormData(); formData.right = new FormAttachment(95,0); formData.bottom = new FormAttachment(100,0); formData.width = 70; btnOk.setLayoutData(formData); btnOk.addListener(SWT.Selection,new Listener() { public void handleEvent(Event e) { window.dispose(); } }); window.setDefaultButton( btnOk ); window.addListener(SWT.Traverse, new Listener() { public void handleEvent(Event e) { if ( e.character == SWT.ESC){ window.dispose(); } } }); if (!Utils.linkShellMetricsToConfig(window, "BlockedIpsWindow")) { window.setSize(620, 450); if (!Constants.isOSX) Utils.centreWindow(window); } window.layout(); window.open(); return window; } public static void showBlockedIps( AzureusCore azureus_core, Shell mainWindow) { StringBuffer sbBlocked = new StringBuffer(); StringBuffer sbBanned = new StringBuffer(); BlockedIp[] blocked = azureus_core.getIpFilterManager().getIPFilter().getBlockedIps(); String inRange = MessageText.getString("ConfigView.section.ipfilter.list.inrange"); String notInRange = MessageText.getString("ConfigView.section.ipfilter.list.notinrange"); String bannedMessage = MessageText.getString( "ConfigView.section.ipfilter.list.banned" ); String badDataMessage = MessageText.getString( "ConfigView.section.ipfilter.list.baddata" ); for(int i=0;i<blocked.length;i++){ BlockedIp bIp = blocked[i]; if (!bIp.isLoggable()){ continue; } sbBlocked.append(DisplayFormatters.formatTimeStamp(bIp.getBlockedTime())); sbBlocked.append("\t["); sbBlocked.append( bIp.getTorrentName() ); sbBlocked.append("] \t"); sbBlocked.append(bIp.getBlockedIp()); IpRange range = bIp.getBlockingRange(); if(range == null) { sbBlocked.append(' '); sbBlocked.append(notInRange); sbBlocked.append('\n'); } else { sbBlocked.append(' '); sbBlocked.append(inRange); sbBlocked.append(range.toString()); sbBlocked.append('\n'); } } BannedIp[] banned_ips = azureus_core.getIpFilterManager().getIPFilter().getBannedIps(); for(int i=0;i<banned_ips.length;i++){ BannedIp bIp = banned_ips[i]; sbBanned.append(DisplayFormatters.formatTimeStamp(bIp.getBanningTime())); sbBanned.append("\t["); sbBanned.append( bIp.getTorrentName() ); sbBanned.append("] \t" ); sbBanned.append( bIp.getIp()); sbBanned.append( " " ); sbBanned.append( bannedMessage ); sbBanned.append( "\n"); } BadIp[] bad_ips = azureus_core.getIpFilterManager().getBadIps().getBadIps(); for(int i=0;i<bad_ips.length;i++){ BadIp bIp = bad_ips[i]; sbBanned.append(DisplayFormatters.formatTimeStamp(bIp.getLastTime())); sbBanned.append( "\t" ); sbBanned.append( bIp.getIp()); sbBanned.append( " " ); sbBanned.append( badDataMessage ); sbBanned.append( " " ); sbBanned.append( bIp.getNumberOfWarnings()); sbBanned.append( "\n" ); } if(mainWindow == null || mainWindow.isDisposed()) return; BlockedIpsWindow.show(azureus_core,mainWindow.getDisplay(),sbBlocked.toString(),sbBanned.toString()); } }