This means I have to modify orbited to send the PASS argument. This
ofcourse, is bad. I don't like changing the core (for updates and
such) but I see no other way really. Here is what I was thinking:
1. When orbited registers a new connection and opens a connection
to the IRC server it automatically sends the pass command.
But I am not sure where I would place this, and also how to get the
users IP. I was thinking about adding a send command in connectionMade
in proxy.py, similar to:
self.outgoingConn.transport.write('PASS ' + user_ip)
Am I missing something here?
You have set forth an interesting problem -- I have an idea on how we can solve it:
Add something to the TCPSocket API that allows us to inject the browser's ip address into the stream as needed. For instance:
conn = new Orbited.TCPSocket()
conn.open(...)
...
conn.write('PASS ' + Orbited.TCPSocket.insertions.MY_IP + '\n')
Where MY_IP causes a special frame to be sent to the server, which in turn injects the clients ip address into the stream.
I'm not sure about that api though -- We might be forced to not allow you to put the MY_IP constant directly into the write command, and instead do something like this:
conn.write("PASS ")
conn.insert(Orbited.TCPSocket.insertions.MY_IP)
conn.write("\n")
What do other people think?
-Michael Carter
Why don't you just have the users connect to some server in between
Orbited and the IRC server, basically another simple proxy, that just
injects that info? If we try to solve this via Michael's method, I
don't see that anything stops the user from still just sending
whatever IP they want, and not using the special injection call.
It strikes me that patching Orbited to "support" CGI:IRC is the wrong way to go.
–Jacob