Re: [twsocket] Midware create serverobject 'problem'.

2011-01-23 Thread Francois PIETTE

Got the first server working now, so that is fine.


:-)

Despite of the demo's i see for ADO and BDE, i am using another database 
(absolutedatabase  :

www.componentace.com), which is a BDE replacement.
Is this just as easy to connect as the examples that are included with 
Midware,

or do i need to create my own 'BDE' serverobject?


Yes, it is just as easy with any database component. Midware at server side 
is simply not concerned by the component you use. Use whatever you like ! 
And client side is completely independent of what you use at server side.


Please not that many developer are falling in a frequent design error when 
dealing with multitier: they are transporting SQL request from client to 
server. This works of course but this is really not the design for 3-tier 
programming. Transporting SQL request is simple 2-tier (classical 
client/server).


To really befenit from 3-Tier architecture, you have to think at a higher 
level. The client do not "know" anything about database, storage and similar 
topics. It only "knows" about high level concepts of curse much of these 
high level concept can be expressed as SQL request, but don't do it at 
client side ! All SQL must go to server side. The client must not know the 
database, the tables, fields and indexes ! It only knows things such as 
"GetClient" and how to pass parameters which refines the search, it knows 
about "SaveDocument" and send the document. The server know where and how 
the documents are stored and what has to be verifyed to accept a document.


Best regards,
--
francois.pie...@overbyte.be
The author of the freeware multi-tier middleware MidWare
The author of the freeware Internet Component Suite (ICS)
http://www.overbyte.be

--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be


Re: [twsocket] SocketSpy to C++ Problem

2011-01-23 Thread Arno Garrels
Richard, 
 
> I was looking over my project and see that the processmessages loop I
> said allows the program to complete successfully is enabled. To allow
> the error this needs to be commented out. It's at the end of
> WSocketServerClientConnect.

I removed these lines.
However it works (basically) with the changes posted in my previous
message with latest ICSv7 and C++ Builder 2007. 

Tested with NNTP and HTTP (8 local clients). But since you use 
LineMode there's a problem with binary data because DataAvailable
might not trigger when LineEnd is not received. Use LineMode only 
if the protocol is 100% line-based. 

There's also a bug with shutting down the local client.
After a call to ShutDown(1) it is no longer allowed to send data,
however there might be still data in component's send buffer, so
in order to avoid a socket exception and to make sure the local 
client gets everything add a flag to your client class and handle
event OnDataSent, something like: 

void __fastcall TSocketWin::ClientDataSent(TObject *Sender, WORD ErrCode)
{
  [..]
  if (client->closeflag)
  client->Shutdown(1);
}

and 

void __fastcall TSocketWin::RemoteSessionClosed(TObject *Sender, WORD Error)
{
   [..]
   if (client->AllSent)
   client->Shutdown(1);
   else
   client->closeflag = true;
}

-- 
Arno Garrels
--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be


Re: [twsocket] FTPCli problem.

2011-01-23 Thread Antol
Hello Arno,

Friday, January 21, 2011, 8:51:33 PM, you wrote:

AG> My first guess is that it is a server issue. The server has to send a
AG> response on the control socket, either success or failure. 
AG> Or for some reason that response was sent however doesn't get thru?
AG> If you can get a RDP connection to user's PC you could install
AG> Wireshark and check that.

I cannot access that computer. I gave that user login and password to
my own FTP server and the result is the same - works in active mode
well and hangs at the end of the passive transfer, when the file is
completely  uploaded.  So  the  server  is  not  to  blame. Besides, I
uploaded  from  the same program to HIS ftp server in passive mode and
had  no  problems.  Futhermore,  I  installed Windows XP to WMWARE and
uploaded files from it, and it also uploaded OK. This is strange.

>> PS: when the user runs the same program with ICS v5 component, it
>> works on that problematic computer ALWAYS ok, i.e. it never hangs.

AG> Hmm, that's indeed strange, are you sure it's the same mode 
AG> passive/active?

Yes,  I'm  sure. The program uses "presets" so the settings are always
the  same. The user only replaces exe file. The old one works, the new
one  hangs.  When  the user replaces the old one back, it works again.
The settings are the same.

But  I  see  there  were a lot of structural changes between V5 and V7
(filenameschanged   and   some   properties   to   FTP   component
added/removed). Can it be that there were some code changes between V5
and V7 that can cause this behavior?




-- 
Best regards,
 Antolmailto:spama...@mail.ru

--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be


Re: [twsocket] Midware create serverobject 'problem'.

2011-01-23 Thread Ruud Kerstens

Hi Francois,

Well, you caught me there, as I was thinking the Tier-2 way as well. Now 
after reading your email I fully understand the idea behind the Midware. 
This will make life much easier for me as you can create as many different 
clients as you like, all just ask for items they need. The good thing is 
indeed that I don't care what the 'server' does, as long as it gets what it 
needs.
What is perfect as well, is that in that case only server needs to be 
changed when things need to alter, and the client does not really need 
updating (unless new items to be displayed etc).


Thank you for the reply, and explanation,

Best regards,

Ruud

-Oorspronkelijk bericht- 
From: Francois PIETTE

Sent: Sunday, January 23, 2011 8:59 AM
To: ICS support mailing
Subject: Re: [twsocket] Midware create serverobject 'problem'.


Got the first server working now, so that is fine.


:-)

Despite of the demo's i see for ADO and BDE, i am using another database 
(absolutedatabase  :

www.componentace.com), which is a BDE replacement.
Is this just as easy to connect as the examples that are included with 
Midware,

or do i need to create my own 'BDE' serverobject?


Yes, it is just as easy with any database component. Midware at server side
is simply not concerned by the component you use. Use whatever you like !
And client side is completely independent of what you use at server side.

Please not that many developer are falling in a frequent design error when
dealing with multitier: they are transporting SQL request from client to
server. This works of course but this is really not the design for 3-tier
programming. Transporting SQL request is simple 2-tier (classical
client/server).

To really befenit from 3-Tier architecture, you have to think at a higher
level. The client do not "know" anything about database, storage and similar
topics. It only "knows" about high level concepts of curse much of these
high level concept can be expressed as SQL request, but don't do it at
client side ! All SQL must go to server side. The client must not know the
database, the tables, fields and indexes ! It only knows things such as
"GetClient" and how to pass parameters which refines the search, it knows
about "SaveDocument" and send the document. The server know where and how
the documents are stored and what has to be verifyed to accept a document.

Best regards,
--
francois.pie...@overbyte.be
The author of the freeware multi-tier middleware MidWare
The author of the freeware Internet Component Suite (ICS)
http://www.overbyte.be

--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be 


--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be


Re: [twsocket] FTPCli problem.

2011-01-23 Thread Arno Garrels
Antol,

We realy need a reproducible test case. I searched the source 
again but was not able to find a change that could lead to the
problem. Double check that you use latest ICSv7 from: 
http://wiki.overbyte.be/wiki/index.php/ICS_Download

My OverbyteIcsFtpCli.pas is V7.17

-- 
Arno Garrels

Antol wrote:
> Hello Arno,
> 
> Friday, January 21, 2011, 8:51:33 PM, you wrote:
> 
>> My first guess is that it is a server issue. The server has to send a
>> response on the control socket, either success or failure.
>> Or for some reason that response was sent however doesn't get thru?
>> If you can get a RDP connection to user's PC you could install
>> Wireshark and check that.
> 
> I cannot access that computer. I gave that user login and password to
> my own FTP server and the result is the same - works in active mode
> well and hangs at the end of the passive transfer, when the file is
> completely  uploaded.  So  the  server  is  not  to  blame. Besides, I
> uploaded  from  the same program to HIS ftp server in passive mode and
> had  no  problems.  Futhermore,  I  installed Windows XP to WMWARE and
> uploaded files from it, and it also uploaded OK. This is strange.
> 
>>> PS: when the user runs the same program with ICS v5 component, it
>>> works on that problematic computer ALWAYS ok, i.e. it never hangs.
> 
>> Hmm, that's indeed strange, are you sure it's the same mode
>> passive/active?
> 
> Yes,  I'm  sure. The program uses "presets" so the settings are always
> the  same. The user only replaces exe file. The old one works, the new
> one  hangs.  When  the user replaces the old one back, it works again.
> The settings are the same.
> 
> But  I  see  there  were a lot of structural changes between V5 and V7
> (filenameschanged   and   some   properties   to   FTP   component
> added/removed). Can it be that there were some code changes between V5
> and V7 that can cause this behavior?
> 
> 
> 
> 
> --
> Best regards,
> Antolmailto:spama...@mail.ru
--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be


Re: [twsocket] SocketSpy to C++ Problem

2011-01-23 Thread Richard Christman
Hi Arno,

> -Original Message-
> From: twsocket-boun...@elists.org [mailto:twsocket-boun...@elists.org]
> On Behalf Of Arno Garrels
> Sent: Sunday, January 23, 2011 1:09 AM
> To: ICS support mailing
> Subject: Re: [twsocket] SocketSpy to C++ Problem
> 
> Richard,
> 
> > I was looking over my project and see that the processmessages loop I
> > said allows the program to complete successfully is enabled. To allow
> > the error this needs to be commented out. It's at the end of
> > WSocketServerClientConnect.
> 
> I removed these lines.
> However it works (basically) with the changes posted in my previous
> message with latest ICSv7 and C++ Builder 2007.

I'm not sure which changes you refer to. Do you mean not sending a banner?
I've looked at the archives in case I missed a message. It looks like I
didn't, but I'm not sure what you're referring to. I think I've somehow
missed something.
 
> Tested with NNTP and HTTP (8 local clients). But since you use
> LineMode there's a problem with binary data because DataAvailable
> might not trigger when LineEnd is not received. Use LineMode only
> if the protocol is 100% line-based.

My purpose for translating socketspy was to just get it working in C++. My
intentions are to create a component that does what socketspy does, but it
will be used strictly with NNTP. Sorry I didn't mention that. I know the
logging to a richedit dramatically slows the redirection. That's just for
testing.

I want to build a simple NNTP proxy. However, I only need to intercept the
POST command and then grab the message. I've done this and I've found it
easy to accomplish. Do you think this slight variation of socketspy is
actually useable, or do I need a more robust proxy? I was unable to find a
NNTP proxy in Delphi/Cbuilder anywhere. I do like the simplicity of
socketspy. I could build on it if I should need more in the future.
 
> There's also a bug with shutting down the local client.
> After a call to ShutDown(1) it is no longer allowed to send data,
> however there might be still data in component's send buffer, so
> in order to avoid a socket exception and to make sure the local
> client gets everything add a flag to your client class and handle
> event OnDataSent, something like:

Thanks so much for this info, I'll sure fix that immediately.

Richard

> void __fastcall TSocketWin::ClientDataSent(TObject *Sender, WORD
> ErrCode)
> {
>   [..]
>   if (client->closeflag)
>   client->Shutdown(1);
> }
> 
> and
> 
> void __fastcall TSocketWin::RemoteSessionClosed(TObject *Sender, WORD
> Error)
> {
>[..]
>if (client->AllSent)
>client->Shutdown(1);
>else
>client->closeflag = true;
> }
> 
> --
> Arno Garrels
> --
> To unsubscribe or change your settings for TWSocket mailing list
> please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
> Visit our website at http://www.overbyte.be

--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be


[twsocket] ICS group on social networks LinkedIn and FaceBook

2011-01-23 Thread Francois PIETTE

Hi !

Every ICS user is invited to be part of ICS-group on Linked-In. 
See http://www.linkedin.com/e/gis/136245
Why ? 
Just to have a little bit more visibility for everyone of us and for  ICS.


There is another one on FaceBook:
http://www.facebook.com/pages/ICS-Internet-Component-Suite/39493622127

btw: You may also be part of "Powered by Delphi" group on Linked-In.
http://www.linkedin.com/e/gis/48600

--
francois.pie...@overbyte.be
The author of the freeware multi-tier middleware MidWare
The author of the freeware Internet Component Suite (ICS)
http://www.overbyte.be

--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be


Re: [twsocket] FTPCli problem.

2011-01-23 Thread Antol
Hello Arno,

Sunday, January 23, 2011, 10:09:00 PM, you wrote:

AG> Antol,

AG> We realy need a reproducible test case. I searched the source 
AG> again but was not able to find a change that could lead to the
AG> problem. Double check that you use latest ICSv7 from: 
AG> http://wiki.overbyte.be/wiki/index.php/ICS_Download

AG> My OverbyteIcsFtpCli.pas is V7.17

No, it is V7.12. I downloaded it with this pack:
Download ICS-V7 Distribution (October, 2010)
http://www.overbyte.be/frame_index.html?redirTo=/products/ics.html


Now I looked more carefully and found daily sources archive with 7.17.
I'll try it and let you know if there are any changes.

Additional info from the user:
Note:  2.20  uses  ICS5,  2.30 uses ICS7, TEM is The Evil Machine that
doesn't work in passive mode.

==
Still, 2.20 in passive mode worked--and still works--from TEM but 2.30 in 
passive mode does not.  That is most curious.  Yes, routers are not very 
consistent, which I well understand.  But, between 2.20 and 2.30 on TEM the 
router does not change nor does the operating system... only the software 
changes.
Even stranger still is that passive mode was developed to resolve a NAT issue.  
Testing any particular router by using active and then passive mode, it would 
be more likely active mode would fail.  (The TEM router is, by the way, an old 
D-Link DIR-624 which was sold in UK not US.)
==




-- 
Best regards,
 Antolmailto:spama...@mail.ru

--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be


Re: [twsocket] FTPCli problem.

2011-01-23 Thread daniel cc

Hi Antol,
I am using a ICS built ftp client which has been several times updated and
worked very good.
I don't know if this is any help but,
I had problems with 2 different models of D-Link routers and had to change
them because my app did work in everywhere else but not in the machines
behind of D-Link routers.
That was exactly the "Passive mode" problem I unfortunately don't remember
the errors anymore.

I believe you will be able to find the problem if you switch D-Link router
with something else.

-Original Message- 
From: Antol

Sent: Monday, January 24, 2011 7:11 AM
To: ICS support mailing
Subject: Re: [twsocket] FTPCli problem.

Hello Arno,

Sunday, January 23, 2011, 10:09:00 PM, you wrote:

AG> Antol,

AG> We realy need a reproducible test case. I searched the source
AG> again but was not able to find a change that could lead to the
AG> problem. Double check that you use latest ICSv7 from:
AG> http://wiki.overbyte.be/wiki/index.php/ICS_Download

AG> My OverbyteIcsFtpCli.pas is V7.17

No, it is V7.12. I downloaded it with this pack:
Download ICS-V7 Distribution (October, 2010)
http://www.overbyte.be/frame_index.html?redirTo=/products/ics.html


Now I looked more carefully and found daily sources archive with 7.17.
I'll try it and let you know if there are any changes.

Additional info from the user:
Note:  2.20  uses  ICS5,  2.30 uses ICS7, TEM is The Evil Machine that
doesn't work in passive mode.

==
Still, 2.20 in passive mode worked--and still works--from TEM but 2.30 in 
passive mode does not.  That is most curious.  Yes, routers are not very 
consistent, which I well understand.  But, between 2.20 and 2.30 on TEM the 
router does not change nor does the operating system... only the 
software changes.
Even stranger still is that passive mode was developed to resolve a NAT 
issue.  Testing any particular router by using active and then passive mode, 
it would be more likely active mode would fail.  (The TEM router is, by the 
way, an old D-Link DIR-624 which was sold in UK not US.)

==




--
Best regards,
Antolmailto:spama...@mail.ru

--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be 


--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be


Re: [twsocket] FTPCli problem.

2011-01-23 Thread Arno Garrels
Antol,

>> We realy need a reproducible test case. I searched the source
>> again but was not able to find a change that could lead to the
>> problem. Double check that you use latest ICSv7 from:
>> http://wiki.overbyte.be/wiki/index.php/ICS_Download
> 
>> My OverbyteIcsFtpCli.pas is V7.17
> 
> No, it is V7.12. I downloaded it with this pack:
> Download ICS-V7 Distribution (October, 2010)
> http://www.overbyte.be/frame_index.html?redirTo=/products/ics.html
> 
> 
> Now I looked more carefully and found daily sources archive with 7.17.
> I'll try it and let you know if there are any changes.

One big change in FtpCli V7.00 was increase of component's 
internal buffer size. I plan to commit my private change like 
below that allows to compile with different buffer sizes, for other
reasons. Though the chance is low that the big buffers cause the
problem, they might affect router behaviour, how knows? Add this
change and define for instance "FTPCLI_BUFFER_OLD" in your project
options to get back ICSV5 buffer sizes. Rebuild the project, a 
simple compile won't be enough. 

const
//  BLOCK_SIZE   = 1460; { 1514 - TCP header size }

{$IFDEF FTPCLI_BUFFER_OLD}
  FTP_SND_BUF_SIZE = 1460;  { arno V7.18 }
  FTP_RCV_BUF_SIZE = 4096;  { arno V7.18 }
{$ELSE}
  {$IFDEF FTPCLI_BUFFER_SMALL}
FTP_SND_BUF_SIZE = 8192;  { arno V7.18 }
FTP_RCV_BUF_SIZE = 8192;  { arno V7.18 }
  {$ELSE}
{$IFDEF FTPCLI_BUFFER_MEDIUM}
  FTP_SND_BUF_SIZE = 16384;  { arno V7.18 }
  FTP_RCV_BUF_SIZE = 16384;  { arno V7.18 }
{$ELSE}
  FTP_SND_BUF_SIZE = 32768;  { angus V7.00 increased from 1460 }
  FTP_RCV_BUF_SIZE = 32768;  { angus V7.00 increased from 4096 }
{$ENDIF}
  {$ENDIF}
{$ENDIF}

-- 
Arno Garrels

> 
> Additional info from the user:
> Note:  2.20  uses  ICS5,  2.30 uses ICS7, TEM is The Evil Machine that
> doesn't work in passive mode.
> 
> ==
> Still, 2.20 in passive mode worked--and still works--from TEM but
> 2.30 in passive mode does not.  That is most curious.  Yes, routers
> are not very consistent, which I well understand.  But, between 2.20
> and 2.30 on TEM the router does not change nor does the operating
> system... only the software changes. Even stranger still is that
> passive mode was developed to resolve a NAT issue.  Testing any
> particular router by using active and then passive mode, it would be
> more likely active mode would fail.  (The TEM router is, by the way,
> an old D-Link DIR-624 which was sold in UK not US.)
> ==   
> 
> 
> 
> 
> --
> Best regards,
> Antolmailto:spama...@mail.ru
--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be


Re: [twsocket] NNTP / SMTP / POP3 proxy/tunnel

2011-01-23 Thread Francois PIETTE

I want to build a simple NNTP proxy. However, I only need to intercept the
POST command and then grab the message. I've done this and I've found it
easy to accomplish. Do you think this slight variation of socketspy is
actually useable, or do I need a more robust proxy? I was unable to find a
NNTP proxy in Delphi/Cbuilder anywhere. I do like the simplicity of
socketspy. I could build on it if I should need more in the future.


I wrote a SMTP/POP3 proxy server with HTTP tunnelling. You could use similar 
code in your NNTP proxy. Initially I wanted to implement NNTP the same way 
but had no time to do it yet.


The goal of my application (OverbyteGateway and OverbyteGatewayServer as I 
named the beast) is to allow someone to use standard SMTP/POP3 client such 
as Windows Mail Client within an organization where only HTTP is allowed 
with the help of a second program running on another computer. Any computer 
or server is OK. I even use a dynamic IP by the way of DynDNS service.


Instead of starting from SocketSpy I started at a higher level. I mean, 
SocketSpy works at the TCP level, not knowing anything about what is 
transported while the code I wrote understand SMTP and POP3 commands. This 
makes things easier as soon as you must intercept some specific command.


When I said "understand SMTP and POP3 commands", I don't mean complete 
command implementation. Since my proxy is mainly a tunnel, one side of the 
tunnel (client side) listen for POP3/SMTP commands, roughly decode it, 
encapsulate it into a HTTP request, send the the server side which in turn 
send it to the actual external SMTP/POP3 server. The code was fairly easy to 
write. Actually I implemented only the commands used by Windows Mail Client 
which I use. Other client program could require other commands altough it is 
likely not.


I have not yet had time to publish this code. It probably need some cleaning 
and some commenting. Anyway, if you or someone else want it, I can build a 
zip file and email it. No waranty and no commitment to support it altough I 
will do my best to answer questions in twsocket mailing list. The license is 
almost the same as TWSocket: you can use it freely for whatever legal you 
want but you cannot claim you wrote the code. You must include a notice in 
your software (source code, about box and documentation) that you used my 
code, with clear reference to me and my website.


And by the way, you can buy consulting or custom developement from me if you 
want me to customize that code for you, or private email support if you 
don't want to talk in public about your project. Email me for prices.


--
francois.pie...@overbyte.be
The author of the freeware multi-tier middleware MidWare
The author of the freeware Internet Component Suite (ICS)
http://www.overbyte.be



--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be