180 if network: |
180 if network: |
181 self.__server = network.getServer() |
181 self.__server = network.getServer() |
182 self.__identityName = network.getIdentityName() |
182 self.__identityName = network.getIdentityName() |
183 identity = self.__ircNetworkManager.getIdentity( |
183 identity = self.__ircNetworkManager.getIdentity( |
184 self.__identityName) |
184 self.__identityName) |
185 self.__userName = identity.getIdent() |
185 if identity: |
186 self.__quitMessage = identity.getQuitMessage() |
186 self.__userName = identity.getIdent() |
187 if self.__server: |
187 self.__quitMessage = identity.getQuitMessage() |
188 useSSL = self.__server.useSSL() |
188 if self.__server: |
189 if useSSL and not SSL_AVAILABLE: |
189 useSSL = self.__server.useSSL() |
190 E5MessageBox.critical( |
190 if useSSL and not SSL_AVAILABLE: |
191 self, |
191 E5MessageBox.critical( |
192 self.tr("SSL Connection"), |
192 self, |
193 self.tr( |
193 self.tr("SSL Connection"), |
194 """An encrypted connection to the IRC""" |
194 self.tr( |
195 """ network was requested but SSL is not""" |
195 """An encrypted connection to the IRC""" |
196 """ available. Please change the server""" |
196 """ network was requested but SSL is not""" |
197 """ configuration.""")) |
197 """ available. Please change the server""" |
198 return |
198 """ configuration.""")) |
199 |
199 return |
200 if useSSL: |
200 |
201 # create SSL socket |
201 if useSSL: |
202 self.__socket = QSslSocket(self) |
202 # create SSL socket |
203 self.__socket.encrypted.connect(self.__hostConnected) |
203 self.__socket = QSslSocket(self) |
204 self.__socket.sslErrors.connect(self.__sslErrors) |
204 self.__socket.encrypted.connect( |
205 else: |
205 self.__hostConnected) |
206 # create TCP socket |
206 self.__socket.sslErrors.connect( |
207 self.__socket = QTcpSocket(self) |
207 self.__sslErrors) |
208 self.__socket.connected.connect(self.__hostConnected) |
208 else: |
209 self.__socket.hostFound.connect(self.__hostFound) |
209 # create TCP socket |
210 self.__socket.disconnected.connect(self.__hostDisconnected) |
210 self.__socket = QTcpSocket(self) |
211 self.__socket.readyRead.connect(self.__readyRead) |
211 self.__socket.connected.connect( |
212 self.__socket.error.connect(self.__tcpError) |
212 self.__hostConnected) |
213 |
213 self.__socket.hostFound.connect( |
214 self.__connectionState = IrcWidget.ServerConnecting |
214 self.__hostFound) |
215 if useSSL: |
215 self.__socket.disconnected.connect( |
216 self.networkWidget.addServerMessage( |
216 self.__hostDisconnected) |
217 self.tr("Info"), |
217 self.__socket.readyRead.connect( |
218 self.tr("Looking for server {0} (port {1})" |
218 self.__readyRead) |
219 " using an SSL encrypted connection" |
219 self.__socket.error.connect( |
220 "...").format(self.__server.getName(), |
220 self.__tcpError) |
221 self.__server.getPort())) |
221 |
222 self.__socket.connectToHostEncrypted( |
222 self.__connectionState = IrcWidget.ServerConnecting |
223 self.__server.getName(), self.__server.getPort()) |
223 if useSSL: |
224 else: |
224 self.networkWidget.addServerMessage( |
225 self.networkWidget.addServerMessage( |
225 self.tr("Info"), |
226 self.tr("Info"), |
226 self.tr("Looking for server {0} (port {1})" |
227 self.tr( |
227 " using an SSL encrypted connection" |
228 "Looking for server {0} (port {1})...").format( |
228 "...").format(self.__server.getName(), |
|
229 self.__server.getPort())) |
|
230 self.__socket.connectToHostEncrypted( |
229 self.__server.getName(), |
231 self.__server.getName(), |
230 self.__server.getPort())) |
232 self.__server.getPort() |
231 self.__socket.connectToHost(self.__server.getName(), |
233 ) |
232 self.__server.getPort()) |
234 else: |
|
235 self.networkWidget.addServerMessage( |
|
236 self.tr("Info"), |
|
237 self.tr( |
|
238 "Looking for server {0} (port {1})...") |
|
239 .format( |
|
240 self.__server.getName(), |
|
241 self.__server.getPort())) |
|
242 self.__socket.connectToHost( |
|
243 self.__server.getName(), |
|
244 self.__server.getPort()) |
233 else: |
245 else: |
234 if silent: |
246 if silent: |
235 ok = True |
247 ok = True |
236 else: |
248 else: |
237 ok = E5MessageBox.yesNo( |
249 ok = E5MessageBox.yesNo( |
304 from .IrcChannelWidget import IrcChannelWidget |
316 from .IrcChannelWidget import IrcChannelWidget |
305 channel = IrcChannelWidget(self) |
317 channel = IrcChannelWidget(self) |
306 channel.setName(name) |
318 channel.setName(name) |
307 channel.setUserName(self.__nickName) |
319 channel.setUserName(self.__nickName) |
308 identity = self.__ircNetworkManager.getIdentity(self.__identityName) |
320 identity = self.__ircNetworkManager.getIdentity(self.__identityName) |
309 channel.setPartMessage(identity.getPartMessage()) |
321 if identity: |
|
322 channel.setPartMessage(identity.getPartMessage()) |
310 channel.setUserPrivilegePrefix(self.__userPrefix) |
323 channel.setUserPrivilegePrefix(self.__userPrefix) |
311 channel.initAutoWho() |
324 channel.initAutoWho() |
312 |
325 |
313 channel.sendData.connect(self.__send) |
326 channel.sendData.connect(self.__send) |
314 channel.sendCtcpRequest.connect(self.__sendCtcpRequest) |
327 channel.sendCtcpRequest.connect(self.__sendCtcpRequest) |
368 from .IrcChannelWidget import IrcChannelWidget |
381 from .IrcChannelWidget import IrcChannelWidget |
369 channel = IrcChannelWidget(self) |
382 channel = IrcChannelWidget(self) |
370 channel.setName(self.__nickName) |
383 channel.setName(self.__nickName) |
371 channel.setUserName(self.__nickName) |
384 channel.setUserName(self.__nickName) |
372 identity = self.__ircNetworkManager.getIdentity(self.__identityName) |
385 identity = self.__ircNetworkManager.getIdentity(self.__identityName) |
373 channel.setPartMessage(identity.getPartMessage()) |
386 if identity: |
|
387 channel.setPartMessage(identity.getPartMessage()) |
374 channel.setUserPrivilegePrefix(self.__userPrefix) |
388 channel.setUserPrivilegePrefix(self.__userPrefix) |
375 channel.setPrivate(True, name) |
389 channel.setPrivate(True, name) |
376 channel.addUsers([name, self.__nickName]) |
390 channel.addUsers([name, self.__nickName]) |
377 |
391 |
378 channel.sendData.connect(self.__send) |
392 channel.sendData.connect(self.__send) |
523 |
537 |
524 self.__registering = True |
538 self.__registering = True |
525 serverPassword = self.__server.getPassword() |
539 serverPassword = self.__server.getPassword() |
526 if serverPassword: |
540 if serverPassword: |
527 self.__send("PASS " + serverPassword) |
541 self.__send("PASS " + serverPassword) |
|
542 |
|
543 identity = self.__ircNetworkManager.getIdentity( |
|
544 self.__identityName) |
528 nick = self.networkWidget.getNickname() |
545 nick = self.networkWidget.getNickname() |
529 if not nick: |
546 if not nick and identity: |
530 self.__nickIndex = 0 |
547 self.__nickIndex = 0 |
531 try: |
548 try: |
532 nick = self.__ircNetworkManager.getIdentity( |
549 nick = identity.getNickNames()[self.__nickIndex] |
533 self.__identityName).getNickNames()[self.__nickIndex] |
|
534 except IndexError: |
550 except IndexError: |
535 nick = "" |
551 nick = "" |
536 if not nick: |
552 if not nick: |
537 nick = self.__userName |
553 nick = self.__userName |
538 self.__nickName = nick |
554 self.__nickName = nick |
539 self.networkWidget.setNickName(nick) |
555 self.networkWidget.setNickName(nick) |
540 realName = self.__ircNetworkManager.getIdentity( |
556 if identity: |
541 self.__identityName).getRealName() |
557 realName = identity.getRealName() |
542 if not realName: |
558 if not realName: |
543 realName = "eric IDE chat" |
559 realName = "eric IDE chat" |
544 self.__send("NICK " + nick) |
560 self.__send("NICK " + nick) |
545 self.__send("USER " + self.__userName + " 0 * :" + realName) |
561 self.__send("USER " + self.__userName + " 0 * :" + realName) |
546 |
562 |
547 def __hostDisconnected(self): |
563 def __hostDisconnected(self): |
548 """ |
564 """ |
549 Private slot to indicate the host was disconnected. |
565 Private slot to indicate the host was disconnected. |
550 """ |
566 """ |
832 def __registerWithServices(self): |
848 def __registerWithServices(self): |
833 """ |
849 """ |
834 Private method to register to services. |
850 Private method to register to services. |
835 """ |
851 """ |
836 identity = self.__ircNetworkManager.getIdentity(self.__identityName) |
852 identity = self.__ircNetworkManager.getIdentity(self.__identityName) |
837 service = identity.getServiceName() |
853 if identity: |
838 password = identity.getPassword() |
854 service = identity.getServiceName() |
839 if service and password: |
855 password = identity.getPassword() |
840 self.__send("PRIVMSG " + service + " :identify " + password) |
856 if service and password: |
|
857 self.__send("PRIVMSG " + service + " :identify " + password) |
841 |
858 |
842 def __autoJoinChannels(self): |
859 def __autoJoinChannels(self): |
843 """ |
860 """ |
844 Private slot to join channels automatically once a server got |
861 Private slot to join channels automatically once a server got |
845 connected. |
862 connected. |
1023 """ |
1040 """ |
1024 Private method to handle a 443 server error at login. |
1041 Private method to handle a 443 server error at login. |
1025 """ |
1042 """ |
1026 self.__nickIndex += 1 |
1043 self.__nickIndex += 1 |
1027 try: |
1044 try: |
1028 nick = self.__ircNetworkManager.getIdentity(self.__identityName)\ |
1045 identity = self.__ircNetworkManager.getIdentity( |
1029 .getNickNames()[self.__nickIndex] |
1046 self.__identityName) |
1030 self.__nickName = nick |
1047 if identity: |
|
1048 nick = identity.getNickNames()[self.__nickIndex] |
|
1049 self.__nickName = nick |
|
1050 else: |
|
1051 self.__connectNetwork("", False, True) |
|
1052 self.__nickName = "" |
|
1053 self.__nickIndex = -1 |
|
1054 return |
1031 except IndexError: |
1055 except IndexError: |
1032 self.networkWidget.addServerMessage( |
1056 self.networkWidget.addServerMessage( |
1033 self.tr("Critical"), |
1057 self.tr("Critical"), |
1034 self.tr( |
1058 self.tr( |
1035 "No nickname acceptable to the server configured" |
1059 "No nickname acceptable to the server configured" |