hobbyjobs / miranda

Automatically exported from code.google.com/p/miranda
0 stars 0 forks source link

IRC plugin identd is broken #119

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
Miranda Version                  : 0.8.3
Unicode Build                    : Yes
Test Build # (if applicable)     :
Plugin Version # (if applicable) :

What steps will reproduce the problem?
1. Attempt to connect to IRC
2.
3.

What is the expected result?
It should connect.

What happens instead?
IRC server sends back error message directing user to install identd
Connecting with telnet to localhost on port 113 is also impossible.  (ie.
the IRC plugin identd is not even listening.)

Please attach or post your VersionInfo.
( See http://wiki.miranda-im.org/Version_information )
I don't remember, I uninstalled it and went back to version 0.7.17

Other Resources:
Attach a Network Log:  http://wiki.miranda-im.org/Network_log
Attach a Crash Report: http://wiki.miranda-im.org/Crash_report

Original issue reported on code.google.com by jf...@idirect.com on 11 Aug 2009 at 5:46

GoogleCodeExporter commented 9 years ago

Original comment by alex.zif...@gmail.com on 11 Aug 2009 at 6:19

GoogleCodeExporter commented 9 years ago
I think this should be elevated to a higher priority than "medium".  Without 
identd,
the IRC plug-in can not connect to the IRC server.  This bug essentially makes 
the
entire IRC plug-in unusable.

Original comment by jf...@idirect.com on 11 Aug 2009 at 9:26

GoogleCodeExporter commented 9 years ago
can't reproduce.
have you enabled ident in irc options? and set system and port properly?

Original comment by igor.abakumov on 11 Aug 2009 at 10:01

GoogleCodeExporter commented 9 years ago
Yes I have.  I even tried setting the checkbox to activate identd only during
connection process.  Still nothing.  I ran NETSTAT to list all ports after 
trying to
connect to IRC, and a connection to port 113 is listed as CLOSE_WAIT.  I am 
still
unable to connect to port 113 with a telnet client.

I did not have this problem with Miranda 0.7.17 unicode.  IRC connected just 
fine,
and so did telnet to localhost:113

Operating system is Windows XP Professional version 2002 Service Pack 3.  IRC 
plug-in
settings are as follows:
Server name = DALNet.ru: irc.san.ru
Internet address = irc.san.ru
Port range = 6667 -> 6667
Ident = enabled, "UNIX" system, port 113
Other enabled options: Rejoin channel if kicked, Rejoin channels on reconnect, 
Use
server window, Automatically join on invite, Updated online statuses for users 
(every
30s), Updated statuses in channel nicklist, Don't check if more than 50 users, 
Enable
UTF-8 autodetection (this is on the Advanced tab)

Don't know if that helps you.

Original comment by jf...@idirect.com on 12 Aug 2009 at 1:46

GoogleCodeExporter commented 9 years ago
Forgot to mention: I have Windows Firewall completely disabled too.  (I never 
changed
any of my Windows settings when I upgraded from Miranda 0.7.17 to 0.8.3).

Original comment by jf...@idirect.com on 12 Aug 2009 at 1:48

GoogleCodeExporter commented 9 years ago
i tried your settings and that said my network log: 
http://pastie.org/580919
as you see i got ident request, sent response and got connected to server. So 
please 
post your Network log for connection attempt to that server.

Original comment by igor.abakumov on 12 Aug 2009 at 5:23

GoogleCodeExporter commented 9 years ago
This is with Miranda core logging, IRC client-to-client connections, and IRC 
server
connection enabled

http://pastie.org/583620

Original comment by jf...@idirect.com on 14 Aug 2009 at 4:05

GoogleCodeExporter commented 9 years ago
so, 
1. you opened 113 port (UPnp disabled - it means that you connected to internet 
directly, without any router or proxy ?). 
2. got incoming connection and data "3060 , 6667". 
3. Peer port is 6667, as we have seen in connection string("[00:01:00 IRC] 
(424) 
Connected to irc.san.ru:6667"), but local port seem to be wrong (3060), so 
Miranda 
sends answer "INVALID PORT".
4. got server message "[00:01:01 IRC] (01DBDDD0:424) Data received
:irc.san.ru NOTICE AUTH :*** No Ident response"
seems that server sends this message in any case except of getting positive 
ident 
answer.
5. connection closes because your server REQUIRES ident to be answered 
positively.

it seem that you use kind of router/proxy with NAT improperly set.
try this version http://vasilich.org/mim/IRC084ExpIdent.rar - it should show 
expected port (your local port when connected to IRC server), and, please, post 
network log produced with this plugin.

Original comment by igor.abakumov on 14 Aug 2009 at 6:08

GoogleCodeExporter commented 9 years ago
also look to the reason of changing it in 0.8
http://bugs-archive.miranda-im.org/view.php?id=46

Original comment by igor.abakumov on 14 Aug 2009 at 6:16

GoogleCodeExporter commented 9 years ago
Ok I tried that other experimental IRC plugin.  I still get the same error back 
from
the IRC server (to install identd).

Here's the netlog:
http://pastie.org/585444

Original comment by jf...@idirect.com on 16 Aug 2009 at 2:32

GoogleCodeExporter commented 9 years ago
I am behind a NAT router, but it does not support UPnP.  I have not configured 
any
special port mappings; mIRC worked without problems, and so did Miranda 0.7 
when I
installed it.

I always thought the router must have stateful packet inspection for the IRC 
protocol
and automatically sets the dynamic routing table accordingly for ident.  How 
else
could the IRC server connect back to port 113 on my computer before!?

(I know for certain my router does this for FTP; It monitors the FTP control 
channel
packets, and when it detects the client opened a new data channel, it sets a 
dynamic
route.  Then it intercepts the control channel packets and modifies the 
parameters of
the PORT command to the router's external IP address and port for the new route 
it
just set up.)

If I set a static route for port 113, then IRC (from any client; Miranda, mIRC, 
etc.)
will only work from 1 computer behind the router.  This is not desirable.

Original comment by jf...@idirect.com on 16 Aug 2009 at 5:19

GoogleCodeExporter commented 9 years ago
You have problems not with 113 port, but with that port you connect to IRC 
server. 
Ident protocol implementation must verify if your peer port and local port are 
the 
same ports that server says. In your case peer port is 6667, as expected, but 
local 
port is 2898 (as in last Network log). NAT translated that port number to 6996, 
so 
server thinks you connected from port 6996. Ident proto checks port numbers, 
identifies that there is wrong local port number - sending "NO-USER" error. 
This is 
desired and expected behavior. Your NAT doesn't say in any form what outgoing 
port 
number was used, so error message is correct.
And please read thath link i posted above about ident in 0.7 version - there is 
an 
explanation why it works for you.
If you say that mIRC works for you - then please post log from mIRC network 
level, I 
need part where ident request and answers are readable.

Original comment by igor.abakumov on 16 Aug 2009 at 6:33

GoogleCodeExporter commented 9 years ago
I know what's happening now!  I read the manual for my router, and indeed, it 
does
monitor outbound packets destined to port 6667.  When the router detects an IRC
connection being established, it automatically creates a dynamic route for 
inbound
packets to port 113.  That's how mIRC and Miranda 0.7 always worked from any 
computer
behind the router.

You are correct: The IRC server is sending an ident query specifying the 
ROUTER's
outbound IRC port, but Miranda 0.8 identd is expecting the query to specify the
COMPUTER's outbound IRC port.  Unfortunately my router does not intercept and 
modify
the ident packets to alter the port numbers according to the port-mapped route 
for IRC.

Here is a ZIP file of another Miranda netlog, the log from my router during that
connection, then an mIRC log, and the log from my router during the mIRC 
connection.
 (4 files total):
http://rapidshare.com/files/268282312/IRC_logs.zip.html
(I also tried attaching the same file to this post; I've never tried this 
before, so
we'll see how well it works)

I read the discussion about Miranda 0.7 at that link you posted.  Everything 
makes
sense now.

It appears the identd in mIRC does not care what the port numbers are (or at 
least
not the local port number).

And if I may suggest a solution:
Add a checkbox to the Miranda identd settings to send back a valid response
regardless of the local port value.  I know this "breaks the rules" of RFC1413, 
but I
can't change how my router operates.  So I have a non-compliant router, but I'm 
stuck
with it.  :-(   (And I'm not the only one in the world with such a router.)

At least if this mode of operation is a user-configurable setting, the identd 
can
still be set for proper "by-the-rules" operation for RFC1413 purists.

Original comment by jf...@idirect.com on 17 Aug 2009 at 8:10

Attachments:

GoogleCodeExporter commented 9 years ago
Maybe it would be useful if you tell us the Router too.

Original comment by Lastwebpage@gmail.com on 17 Aug 2009 at 8:32

GoogleCodeExporter commented 9 years ago
It's a software router.  Kerio WinRoute 4.2.4
The company does not support it anymore, so it will never have any more updates.

Original comment by jf...@idirect.com on 17 Aug 2009 at 9:26

GoogleCodeExporter commented 9 years ago
2 months passed, and Miranda has had 5 new minor releases since I first 
reported it.
The newest version 0.8.8 IRC plugin is still incompatible with my router.  And 
this
issue is still open on the bug tracker.

Are there any plans to implement the previously discussed work-around?  (or some
other work-around?)

Original comment by jf...@idirect.com on 19 Oct 2009 at 11:23