As far as I know, using the Async commands, the FTP component not
ready error occurs if you initiate a command before the previous
one has generated the RequestDone event.
Yes, the State variable is checked to ensure the next command can be
performed safely.
I have one customer who is
The original problem is that the FTP component not ready just
turns up very occasionally from doing a series of getAsync commands.
So assuming that the error might be from a PORT or PASV, should the
sequence of events I take be to call ftp.Abort followed by some
sort of restart of my state
There is a new release of the TMagFtp and TMagFileCopy components for ICS
V8 today, that may be downloaded from:
http://www.magsys.co.uk/delphi/magxfer.asp
Main changes are as follows, also XE4 packages added:
Added IgnorePaths to SelectCopyFileList and TMagFileCopy to ignore files
where
This works as long as the connection is'nt idle for longer than the
value configured in KeepAliveTimeSec (which defaults to 10 sec). In
that case the connection is terminated by the server
Never really looked at KeepAlive. From the naming it sounds like a means
of keeping an idle
Is there an easy way to support SSH for ICS? Just need secure telnet to
a 30 year old Unix application.
I've looked at the OpenSSH pages, but this seems to be tools rather than
APIs. I understand the OpenSSL DLLs provide all the encryption needed.
Has anyone tried to use SSHTNEMULVT from
I call SendStream() on the connection having created the full
DocStream
It is usual to set the stream, then:
Flags = hgSendStream
so the component does the hard work.
To be honest I don't know (am struggling to assert) whether the
data is being gzip or not before it is sent.
Gzip is
We want to implement something like push notifications to custom
applications from our backend server to custom clients.
To an extent, this depends on how many clients are connected, since servers
have limits.
If low, you can keep TCP/IP connections open and just design your own protocol
I am working on a project that was originally written in D5. And
the project using a free IRC component, SlyIrc by Steve Williams,
were it has used TWSocket v434 for its wsocket needs.
So, once I
edit this line to correctly use the FWSocket I now get the
following hard error:
Can not tell you if it actually works
Should have said that since you want to use XE3, you also have to undertake a
Unicode conversion of the source code, since all the PChars and Strings will
now become wide by default. You can trying changing them all to PAnsiChar and
AnsiString, but you'll
Thank you . It compiled without errors using XE5 and returned this
result.
PresentationURL : http://192.168.0.105/index.html
Have you only got a single lamp? Most installations would come back with
multiple lamps.
Now you have the IP address of the lamp, and can use the HTTP client GET
The HUE bulbs are linked via ZigBee and unfortunately Philips has not
published that specification. That means any of my other custom
lights cannot be connected through the HUE Ethernet/ZigBee bridge
which is what the ICS application reported.
OK, so you are talking to a bridge, which is
*Subject:* [twsocket] ICS-SSL / Proxy, Must I add something ?
*From:* Bruno Mannina bmann...@free.fr
I try to use HTTP-SSL behind a proxy server, so I give
host/port/user/pwd to the httpssl component.
But it seems to not work.
Does a browser like Firefox work through the same proxy server
I don't think so (though I will double check), as this is happening
about 30 seconds in to the process, I've already iterated through
all the directories and put together a list of files I need to
download and downloaded quite a few of them.
Never the less, your log shows a connected
Angus, trying to change the code to use your components. Does the
TMagFtp component support a CopyType := FCTypeDates ;
Sorry, seems like I never supported specific date ranges for FTP which is
mostly used to synchronise remote and local directories, or for specific files.
if so, how does
*Subject:* Re: [twsocket] FTP Client - reconnecting
Now trying with your components and although it's much better
behaved and fails gracefully, it still fails (in my app or the
supplied demo app).
However as both your app and my app fail with my hosted FTP server
and both work with your
Sometimes client can disconnect on multithreaded server while send,
after that I receive Range check error or Socket is not
connected (#10057 in Send)
SVN for V8 is updated with Francois' cast fix in various PostMessages to avoid
the range check error (some were already cast correctly). The
Well, I said how to vote: You can cast your vote by sending a
tweet
So it's effectively a survey of Twitter followers about their favourite
language, excluding the many people who don't use
Twitter g
If they wanted a properly representative survey, there would be several voting
methods.
Has anyone got a solid method of converting RFC 822 date times
(e.g. Thu, 30 Jan 2014 05:48:07 +0800) to a TDateTime.
There are RFC1123 date parsing functions in OverbyteIcsSmtpSrv.pas and
OverbyteIcsHttpProt.pas, but neither handle the time zone.
Angus
--
To unsubscribe or change your
{ V8.03 InternalReady happens between multiple commands, ignore it }
if FState in [ftpReady {, ftpInternalReady}] then begin
Include ftpInternalReady in the check and it should work again.
@Angus, why did you change it?
For the reason documented in the code, the longer version is
I have enabled content encoding on my THTTPServer:
And return content to my client using AnswerString
pClientCnx-AnswerString(Flags,
200 OK,
application/json,
sResponseHeader,
Not used JSON myself, but I'd guess if it's a compressable response
then 'application/json' needs to added to that line so compression is
not skipped.
SVN was updated a couple of days ago with this JSON fix in the HTTP Server,
also now compressing Javascript, and recognising both as MIME
is there anybody who can and will explain to me if the socket
handshake protocol is implemented
GET /chat HTTP/1.1
Host: server.example.com
Upgrade: websocket
Sorry, websockets is not supported by the ICS HTTP components.
Another ICS user stas...@orc.ru has implemented
The process should be as follows:
1) Use HTTP POST to pass username and password parameters to login URL
2) A token string is returned if login was successful
3) The token is then used as Basic Authentication using HTTP GET to
retrieve JSON from different API URL
Step 1 and 2 are
I encountered that the socket handshake, as described in RFC 6455,
is not implemented in the ICS components of overbyte.
That standard is websockets, not sockets, totally different.
Websockets is not supported by ICS, see the answer I gave you yesterday which
you ignored, I suggest an ICS
I have a server with an UDP socket listening.
Some Clients connect with the Ip address of the server : Direct
Addressing.
Some Clients do not know the Ip address of the server, therefore
they connect by sending a broadcast.
In OnDataAvailable event, i would like to know which Clients have
Never noticed them before, but Microsoft has two network traffic monitoring or
sniffer tools.
The older one is Microsoft Network Monitor 3.4 for XP and later, and Microsoft
Message Analyzer 1.0 for Windows 7 and later, both free from the download
center.
Has anyone tried either?
I note that
Any technical reason for discarding this functionality I submitted
some time ago?
How do we test it? There is no sample to run. Nothing to test against. I
don't have time to read the Google Drive API,
Angus
--
To unsubscribe or change your settings for TWSocket mailing list
please goto
asked me about it), this server is private (hosting in US :
atomicvps.com)
So you are using a public server on a WAN, with a NAT routers or a firewall on
either end of the connection?
as another test i also installed local filezilla server and was
able to reproduce same problem with it
It's exactly the same code as for POST and PUT. Only the HTTP
method name changes.
So there is no way for us to test the changes, without extra development to
change our web samples?
I also can not make TortoiseSVN recognise your patch file, which is either
faulty or badly formatted, or
16:34, Angus Robertson - Magenta Systems Ltd wrote:
So there is no way for us to test the changes, without extra development to
change our web samples?
I also can not make TortoiseSVN recognise your patch file, which is either
faulty or badly formatted, or maybe I just don't know how to use SVN
To improve handling and reporting of PEM SSL certificates, there is a new
component class TX509Ex derived from TX509Base adding properties for most
common certificate entries including extensions, there are the properties
reported for my code signing certificate, as reported by the updated
The Transmit method returns failure even though the file is
successfully uploaded. Notice how the request is 18, the StatusCode
is 226 but an Error 500 is returned with a winsock error of #10053).
226 is success, so no idea why you get 500 as well.
The transmit method does several
Not sure if this gives us more information to go on. Any ideas?
Assuming you are logging OnError, I can see no errors reported, so all we have
is the error code 500 after a sequence of FTP events that all appear to have
completed correctly. Are you logging the ErrorMessage property at the end,
I would be happy to share my work if you'd like and you think it
might be helpful to others...
Probably, but we really need all three missing BCB versions tested, which needs
someone with all these versions installed, which is not trivial. I have Windows
7 VM that is currently 120 gigs with
Note messages are only deleted when the mailbox is actually
closed with the QUIT command.
I think that is the issue. This is a 24/7 program and I do not
issue the quit until the program is stopped.
POP3 mailboxes are rarely dynamic, they show a snapshot of the content when
opened, and
This subject doesn't deserve not even a reply?!
I'm the only one able to fix things here at the moment, and I have a lot of
other priorities. But I'll put it on my list for next month.
Angus
--
To unsubscribe or change your settings for TWSocket mailing list
please goto
Not easy to get it from the RFCs or from the online discussions,
but I've now checked how Firefox and Chrome are implementing it
Exactly, each browser has implemented redirection in different ways for
different requests, there is no general consensus
If you can just check MSIE as well,
The linchpin of all this is, that the program itself is up and
running, doesn't hang and that it can
still response. Otherwise, days can go by and no data is recorded.
I hope your application is already a Windows service, you can then make use of
the various service restart options if it
This message is intended to start a dialog about future improvements to ICS
components for Windows, in particular the HTTP client and server components
where the world is moving ahead of us.
Currently, new features tend to get added as needed by the main ICS developers
for specific projects, for
which component can be used as client to talk to the above server
component.
Building an http server into my program sounds good but is way too
much for what I need.
Look at free Magenta Systems IP Log Streaming Component at:
http://www.magsys.co.uk/delphi/magics.asp
which is a high level
basic http server that handles requests but process them on
different and configurable number of threads. Anyone?
Have you looked at the existing threaded components and demos:
OverbyteIcsWSocketTS.pas - Winsock component for building multithreaded servers
OverbyteIcsThrdSrv.dpr - Basic
Version 2.0 of the Magenta Systems IP Log Streaming Component may now be freely
downloaded from:
http://www.magsys.co.uk/delphi/magics.asp
Version 2.0 adds IPv6 and SSL support including certificate checking
using a PEM bundle file or Windows Certificate Store, adds host name
support for
Not easy to get it from the RFCs or from the online discussions,
Can we please make a final decision if further redirect changes are needed now,
just doing other updates.
Angus
--
To unsubscribe or change your settings for TWSocket mailing list
please goto
The Overbyte web sites have finally returned to life, so the new OpenSSL
binaries are also available on the wiki download page:
http://wiki.overbyte.be/wiki/index.php/ICS_Download
Angus
--
To unsubscribe or change your settings for TWSocket mailing list
please goto
Because Embarcadero is still trying to get it's forums and newsgroups running
after two weeks downtime, some may have missed a security vulnerability in the
VCL graphics unit processing bitmaps:
http://blog.marcocantu.com/blog/2014_august_buffer_overflow_bitmap.html
The bug needs a two line fix
For a current project I need to build an HTTP server to which data
can be POSTed, so I build one using OverbyteIcsWebServ.dpr as an
example.
I ran into stability problems, and starting slimming my code down
to isolate the problem.
Please try uploading your file to one of my public
Thanks for the idea, can I upload files from software instead of
using the webpage?
This is explained when you read the web page.
Angus
--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website
No, I can't reproduce using that URL
You did not succeed in saving any files on the server, because my application
ignores all upload file names with file path delimiters. It will be a better
test if you strip off the path and just leave the XML file name.
12:42:59 Request:
I've tried a number of times with this url
http://www1.telecom-tariffs.co.uk/testing/uploadfile.htm?FileName=me
rijn.test
Can you please confirm if the upload went ok?
Received Post Data File, Size 4,550, Content Type: application/binary
FileName: merijn.test/cgi-bin/FileUpload/books.xml
yes, I've looked at the example. But if I try to implement this to
my application the OnPostedData-Event is never raised. I don't know
why :-(.
Is there a Handler for POST-Data, that I have to register first?
You do need an AddPostHandler page handler for each POST page you need, maybe
as
I'm trying to make TWSocketServer pworking in a separate thread
Why not start with TWSocketThrdServer?
Look at the sample OverbyteIcsThrdSrvV3.dpr which uses it.
Angus
--
To unsubscribe or change your settings for TWSocket mailing list
please goto
However the question is: why events
are not raised in case of moving TWSocketServer out of main
application thread?
Because you need a message handler in the thread. There are lots of samples
that show how to use threads.
Angus
--
To unsubscribe or change your settings for TWSocket
see how much I can remove to get just the
core functionality and minimum property seting needed to simply
automatically send a emailed newletter.
Please do look at the Mail Queue Component I mentioned, the demo is actually a
cut down version of a mailing list application I wrote 15 years ago
The .exe in the zip runs ok but no matter which host and
corresponding user/password I use it always reports
Can Not Open Mail Server: name of the mail server:25 - 426 Timeout
Without SSL, you won't be able to connect to Gmail, see below.
Just tested the original binary, all I did was
I agree with Angus, you would be better off to send the e-mails
individually to the recipients' mail servers.
My main point was it's better to send individually addressed emails, than bulk
BCC, they are less likely to be intercepted as spam, even if it takes longer to
do so.
I did mention
I do not want to close the connection, and not destroy it, must
leave all connected clients and access them when needed to send
data and information,
I do not need to use Cliente.Free? it will not overload the memory?
No, your Cliente is simply a pointer to the real client in the component,
I've tried several combinations (Using delphi with TSslSmtpCli)
sending both through gmail and through my own ISP's server to both
hotmail and a pop3 address. I can't seem to get the right 'from'
email to show up when going through gmail. It keeps showing the
real gmail account email
Is it necessary for me to create a separate TSslContext each time I
create a new TSslSmtpCliWithFEhloCount
No, an SslContext set-up for SSL client or a single SSL server certificate can
be shared by multiple socket components.
The only issue is in SSL servers using MultiListen, where
There has been recent press about an SSL server exploit called Poodle, which
only effect SSLv3, not the more recent TLS 1.x protocols.
Disabling SSLv3 in servers can be done by setting:
SslContext.SslVersionMethod := sslV23_SERVER;
SslContext.SslOptions := [sslOpt_NO_SSLv2, sslOpt_NO_SSLv3,
I see you speak of fixing web servers in regard to the poodle
exploit. Is there any problem with clients? I see mine are set to
sslv23. I believe that was the default. Should I change this and if
so, to what?
The issue with clients is they usually need to access a wide range of servers,
From next summer, it will be possible for applications to automatically request
and install free SSL/TLS web domain certificates, using infrastructure from
Let's Encrypt certificate authority:
https://www.letsencrypt.org/
Essentially, the client runs an application that creates the SSL private
I'm trying to use the IcsLogger to trace down an SSL problem, but
I'm only getting this one line in the log file:
15:21:49:633 InitCtx OpenSSL version: OpenSSL 1.0.1i 6 Aug 2014
You also need to attach the logger to any socket or other components you are
using, they should all have an
I have been unable to establish if ICS supports
TLSv1.1 and TLSv1.2. I expect it does, but would appreciate your
confirming this.
Yes, OpenSSL supports TLSv1.1 and TLSv1.2, you should see this reported in the
handshake completed event like:
Secure connection with TLSv1.2, cipher AES128-SHA,
I have one client that is always getting problems with the FTP
transfers we are performing.
Any clues as to what could cause the error at 18:10:37.544
It looks like you are opening a second FTP control connection to a different IP
address before closing the first connection.
Angus
--
To
Am looking for a quick dirty way to get users MS ping from main
chat server to client I seen a ping demo in src but seams over
complex is there a easier way to get users ping speed?
No easier way, ping does not require much code, this is a cut down example from
the IP Logger component I
Will you please send your eight sample messages to
icstes...@ftptest.org
I received several MIME emails:
Content-Type: application/octet-stream; Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=SSL SMTP Component Message 01.eml
I was expecting emails composed and
3. I received numerous errors concerning TSmtpSslType and
TSslSmtpCli.
Most likely you don't have ICS SSL installed, remove the dot from the $DEFINE
USE_SSL line in OverbyteIcsDefs.inc.
Angus
--
To unsubscribe or change your settings for TWSocket mailing list
please goto
Is there a reason why C++ Builder 6 doesn't/can't support the
building of ICSv8?
Sorry, we don't currently support C++ Builder for new ICS versions, none of us
have the sufficient C++ knowledge to do so.
The earliest Delphi we still support is 7 due to new language features in that
release, I
Thanks to RTT p...@sapo.pt for recompiling the OpenSSL 1.0.1k binaries so
there are no external dependencies with Microsoft runtime libraries.
1.0.1k contains eight security fixes.
These need to be used with the latest ICS v8 from the SVN, which has been
updated to support 1.0.1k and earlier.
I am testing with the OverbyteIcsSslWebServ1 demo using version
7.51.
If I test with HTTP it fails with: [12:33:26 127.0.0.1]
SslHandshake failed. No other error, nothing else logged.
Most likely you don't have valid SSL certificates set-up, that always causes
SSL to fail.
But you are also
I have a user who wants to change the FTP Port number to something
like 14581.
Component wise there is no problem using strange ports, I use 2100 for testing
stuff.
But NAT routers may be less forgiving, they need to modify IP addresses in the
control channel to forward packets and know
I want use the Overbyte ICS component for sending Mails with SSL.
The demo is running fine (I can send Mails).
Now I wanted to create my own certificates (according to the
instructions in the directory SSlCerts File IcsSslBuildCerts.bat).
SSL client applications generally don't need SSL
ICS v8 has been updated to support OpenSSL 1.0.2 and DH and EC keys,
and to better support TLSv1.1 and TLSv1.2 protocols. The changes
may be downloaded from the SVN repository or the overnight zip file at:
http://www.magsys.co.uk/delphi/magics.asp
Sorry, François's ISP is still unable to get
ICS v8 has been updated to support OpenSSL 1.0.2a and 1.0.1m, which include
various security advisory fixes.
The changes and OpenSSL zips may be downloaded from the SVN repository or the
overnight zip file at:
http://www.magsys.co.uk/delphi/magics.asp
These SMPT and POP3 mail components now
Are there any ICS versions that will work with Lazarus and FPC?
Windows only would be fine.
ICS has been used with FPC in the past and still contains some conditions
relating to FPC.
But I've never used FPC myself so I've no idea if changes have been made that
are FPC incompatible.
due to the BannerTooBusy string that is sent
These banners do cause trouble, I might clear them, I got caught a long time
ago with a new server.
It is therefore necessary to change the 'Client.Close;' line to
'Client.CloseDelayed;' in 'OverbyteIcsWSocketS.pas'
I'll have a look at that,
My ICS has revised date: Sept 3, 2014. It's a nightly snapshot. I
have OpenSSL 1.0.1k (compiled by you).
You may have have them, but it's unlikely you are using them together since
1.0.1k was only released on 19th January 2015 and needs a nightly snapshot
dated then or later to install it.
I have a high security email program that I'm trying to correct for
POODLE in. It also uses https.
Which version of ICS TWSocket are you using, and which OpenSSL version? 1.0.1j
fixed Poodle. Is this a client or server?
A client has much less control over ciphers than a server, the latest
- What OS - I am using Win7 Ultimate and a Win Server 2008 for
testing.
Both 64-bit with at least 8GB? Windows Server 2008 (aka Vista) is getting old
now, from 2008 R2 onwards 32-bit was abandoned.
Local testing is however representative of both operation
on a Win Server installation and
I want to ask if there will be a new version of ICS for Delphi XE7?
ICS V8 was updated for XE7 on 3rd September 2014 and announced in this mailing
list.
Just download the overnight SVN V8 version, normally from the Wiki site but the
ISP is still trying to fix it, also from:
Title says it basically am in need of a demo showing how to use
Overbyte to stream a image over network
There are no such samples with ICS. The concept of 'streaming' is inherent in
networking, but there are numerous ways of doing it with either TCP or UDP.
Angus
--
To unsubscribe or
looked at the Wiki (when that was working
The SVN over night zips last successfully uploaded to the wiki server a week
ago, I've asked François to chase his ISP.
The SVN zips can also be downloaded from:
http://www.magsys.co.uk/delphi/magics.asp
but have not changed in the last week.
I
But, the server private key, must be present as a file on the local
PC running the application. This means that the private key is
anything but.
Currently, SslContext only reads keys and certificates from files, not streams
or anything else. That was how I added DHParams last month, but in
The Stable Version ICS V8.16 can now be downloaded and installed from within
XE8, using Tools, GetIt, along with other various open source components.
GetIt downloads from our wiki download page, unzips, builds and installs the
packages and adds the source path.
Currently, only planning for
I've seen a list of SSL Options here:
Are there recommended options that should be set? (I'm using the
latest Open SSL version 1.0.2a).
I don't think many of these Options matter now, many are historic for old
browsers and bugs.
For my public web site https://www.telecom-tariffs.co.uk/ I
Delphi XE8 has been announced today:
http://www.embarcadero.com/products/delphi
ICS has been tested with XE8 and new packages are available.
I've created a Stable Version ICS V8.16 available from the download page as an
alternative to the daily V8 snapshot that, rarely, does have a bug that
Everything worked fine in my app till 31 May 2015.
FLastProgress : Int64;
if FLastProgress GetTickCount then begin
Do I have to clear the FLastProgress and FProgressCount variables
after upload complete?
Had your program been running for 49 days on 1 June?
GetTickCount returns
I'm using ICS FTP client in an application to upload large files to
a ftp server. In order to know hoe much data from the file has been
transferred I use the onprogress property.
Everything worked fine in my app till 31 May 2015.
Starting from 1 June 2015 i got no reply from the progress.
to Angus: In one of your responses you mentioned that you had an
unpredictable but very slow memory leak in one of your apps using
the ICS multithreaded server - I suspect that this is the issue.
I don't used TWSocketThrdServer or threads for ICS sockets, and don't have any
memory leaks.
The new OpenSSL 1.0.2b and 1.0.1n versions lasted one day, and were replaced
with
1.0.2c and 1.0.1o to fix a bug, which may be downloaded from:
http://wiki.overbyte.be/wiki/index.php/ICS_Download
They can be used with ICS V8 releases later than 25th March 2015 that relax the
check for minor
OpenSSL has released new versions this week, ICS versions of OpenSSL 1.0.2b and
1.0.1n may be downloaded from:
http://wiki.overbyte.be/wiki/index.php/ICS_Download
These new OpenSSL versions fix several moderate security holes.
They can be used with ICS V8 releases later than 25th March 2015
I tried to load MagentaXferXE4Run.dpk and MagentaXferXE4Design.dpk
packages into Delphi XE7 unsuccessfully
In what way? What error message?
You don't actually need to install the packages to run the demo, it creates the
components at run time.
No idea what you mean by 'SendFile'.
This
After discovering ICS, I have tried to load and run Magenta Systems
File Transfer components and samples or SendFile from your web site
None of them can be compiled with ICS V8.16 out of the box.
Which web site? The main web site for Magenta Systems File Transfer Components
is:
Can BCB5 run ICS-SSL?
I downloaded ICS-V5
BCB5 is equal to Delphi 5, which ICS has not supported for a long time.
In theory the old ICS V5 does support BCB5, but we no longer support it, and
the SSL
version it supported is being obsoleted in four months time.
Angus
--
To unsubscribe or
This seems to have fixed the problem:
SslContext-SslOptions=SslContext-SslOptions sslOpt_NO_SSLv2
sslOpt_NO_SSLv3;
I suppose I will just leave it and hope it doesn't cause any issues
for my customers.
Most SSL web servers will have disabled SSLv3 to stop the Poodle and Beast
exploits,
Seems to work here with the OverbyteIcsHttpsTst sample, connects
with:
Hmm... Strange. I'll have to make sure I'm using the right
version.
how do I try connecting with TLSv1.2?
Did you try the sample application?
It shows how to restrict which SSL/TLS versions are used, and how
Should I be calling MessageLoop or ProcessMessages?
Neither, Delphi windows services are message driven just like Windows
applications.
Most of my windows services are actually dual GUI/service, with a simple GUI
that
does not require any interaction when run as a service. This makes testing
In a console app's thread, I make a valid connection, I call
SslWSocket-Send, followed by MessageLoop.
Once I receive OnDataSent message I call
SslWSocket-PostQuitMessage();
And the data is sent and the control returns to the thread -
perfect.
The second time I want to send data
In fact I am not exiting the thread but I am calling:
SslWSocket-PostQuitMessage();
to break out of the socket MessageLoop
In doing so this sets the SslWSocket Terminated to true
Don't call it then!
I thought PostQuitMessage was to break a thread, it posts WM_QUIT which is
generally
the
Ever wondered how Windows knows whether your PC has network connectivity? It's
something called Network connection Status Indicator, or NCSI, described here:
http://blogs.technet.com/b/networking/archive/2012/12/20/the-network-connection-statu
s-icon.aspx
Essentially, Windows contacts a
1 - 100 of 418 matches
Mail list logo