|
|
1.1 root 1: /* Synchronet Control Panel (GUI Borland C++ Builder Project for Win32) */
2:
1.1.1.2 ! root 3: /* $Id: ClientFormUnit.cpp,v 1.12 2004/11/16 06:21:33 rswindell Exp $ */
1.1 root 4:
5: /****************************************************************************
6: * @format.tab-size 4 (Plain Text/Source Code File Header) *
7: * @format.use-tabs true (see http://www.synchro.net/ptsc_hdr.html) *
8: * *
1.1.1.2 ! root 9: * Copyright 2004 Rob Swindell - http://www.synchro.net/copyright.html *
1.1 root 10: * *
11: * This program is free software; you can redistribute it and/or *
12: * modify it under the terms of the GNU General Public License *
13: * as published by the Free Software Foundation; either version 2 *
14: * of the License, or (at your option) any later version. *
15: * See the GNU General Public License for more details: gpl.txt or *
16: * http://www.fsf.org/copyleft/gpl.html *
17: * *
18: * Anonymous FTP access to the most recent released source is available at *
19: * ftp://vert.synchro.net, ftp://cvs.synchro.net and ftp://ftp.synchro.net *
20: * *
21: * Anonymous CVS access to the development source and modification history *
22: * is available at cvs.synchro.net:/cvsroot/sbbs, example: *
23: * cvs -d :pserver:[email protected]:/cvsroot/sbbs login *
24: * (just hit return, no password is necessary) *
25: * cvs -d :pserver:[email protected]:/cvsroot/sbbs checkout src *
26: * *
27: * For Synchronet coding style and modification guidelines, see *
28: * http://www.synchro.net/source.html *
29: * *
30: * You are encouraged to submit any modifications (preferably in Unix diff *
31: * format) via e-mail to [email protected] *
32: * *
33: * Note: If this box doesn't appear square, then you need to fix your tabs. *
34: ****************************************************************************/
35:
36: //---------------------------------------------------------------------------
37:
38: #include <vcl.h>
39: #pragma hdrstop
40:
41: #include <stdio.h> // sprintf
42: #include <winsock.h> // closesocket
43: #include "ClientFormUnit.h"
1.1.1.2 ! root 44: #include "sbbs.h" // filter_ip
1.1 root 45:
1.1.1.2 ! root 46: void socket_open(void*, BOOL open);
1.1 root 47: //---------------------------------------------------------------------------
48: #pragma package(smart_init)
49: #pragma resource "*.dfm"
50: TClientForm *ClientForm;
51: //---------------------------------------------------------------------------
52: __fastcall TClientForm::TClientForm(TComponent* Owner)
53: : TForm(Owner)
54: {
55: MainForm=(TMainForm*)Application->MainForm;
56: ListMutex=CreateMutex(NULL,false,NULL);
57: }
58: //---------------------------------------------------------------------------
59: void __fastcall TClientForm::FormHide(TObject *Sender)
60: {
61: MainForm->ViewClients->Checked=false;
62: }
63: //---------------------------------------------------------------------------
64: void __fastcall TClientForm::TimerTimer(TObject *Sender)
65: {
66: char str[64];
67: int i;
68: time_t t;
69:
70: if(WaitForSingleObject(ListMutex,1)!=WAIT_OBJECT_0)
71: return;
72: for(i=0;i<ListView->Items->Count;i++) {
73: t=time(NULL)-(ulong)ListView->Items->Item[i]->Data;
74: if(t/(60*60))
75: sprintf(str,"%d:%02d:%02d",t/(60*60),(t/60)%60,t%60);
76: else
77: sprintf(str,"%d:%02d",(t/60)%60,t%60);
78: ListView->Items->Item[i]->SubItems->Strings[5]=str;
79:
80: }
81: ReleaseMutex(ListMutex);
82:
83: }
84: //---------------------------------------------------------------------------
85:
86: void __fastcall TClientForm::CloseSocketMenuItemClick(TObject *Sender)
87: {
88: TListItem* ListItem;
89: TItemStates State;
90:
91: ListItem=ListView->Selected;
92: State << isSelected;
93:
94: while(ListItem!=NULL) {
1.1.1.2 ! root 95: closesocket(atoi(ListItem->Caption.c_str()));
! 96: ListItem=ListView->GetNextItem(ListItem,sdAll,State);
! 97: }
! 98: }
! 99: //---------------------------------------------------------------------------
! 100:
! 101: void __fastcall TClientForm::FilterIpMenuItemClick(TObject *Sender)
! 102: {
! 103: char str[256];
! 104: int res;
! 105: TListItem* ListItem;
! 106: TItemStates State;
! 107:
! 108: ListItem=ListView->Selected;
! 109: State << isSelected;
! 110:
! 111: while(ListItem!=NULL) {
! 112:
! 113: AnsiString prot = ListItem->SubItems->Strings[0];
! 114: AnsiString username = ListItem->SubItems->Strings[1];
! 115: AnsiString ip_addr = ListItem->SubItems->Strings[2];
! 116: AnsiString hostname = ListItem->SubItems->Strings[3];
! 117:
! 118: wsprintf(str,"Disallow future connections from %s"
! 119: ,ip_addr);
! 120: res=Application->MessageBox(str,"Filter IP?"
! 121: ,MB_YESNOCANCEL|MB_ICONQUESTION);
! 122: if(res==IDCANCEL)
! 123: break;
! 124: if(res==IDYES)
! 125: filter_ip(&MainForm->cfg,prot.c_str(),"abuse",hostname.c_str()
! 126: ,ip_addr.c_str(),username.c_str(),NULL);
! 127: if(ListView->Selected == NULL)
! 128: break;
1.1 root 129: ListItem=ListView->GetNextItem(ListItem,sdAll,State);
130: }
131: }
132: //---------------------------------------------------------------------------
133:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.