-
- /** Then schedule it to happen again a minute from now if the user is idle. */
- wprintf("<script type=\"text/javascript\"> "
- " function HandleSslp(sslg_xmlresponse) { "
- " sslg_response = sslg_xmlresponse.responseText.substr(0, 1); "
- " if (sslg_response == 'Y') { "
- " var oWin = window.open('static/instant_messenger.html', 'CTDL_MESSENGER', "
- " 'width=700,height=400'); "
- " if (oWin==null || typeof(oWin)==\"undefined\") { "
- " PopUpFailed(); "
- " } "
- " } "
- " } "
- " function CheckPager() { "
- " new Ajax.Request('sslg', { method: 'get', parameters: CtdlRandomString(), "
- " onSuccess: HandleSslp } ); "
- " } "
- " new PeriodicalExecuter(CheckPager, 30); "
- "</script> "
- );
-}
-
-
-
-/**
- * \brief Support function for chat
- * make sure the chat socket is connected
- * and in chat mode.
- */
-int setup_chat_socket(void) {
- char buf[SIZ];
- int i;
- int good_chatmode = 0;
-
- if (WC->chat_sock < 0) {
-
- if (!strcasecmp(ctdlhost, "uds")) {
- /** unix domain socket */
- sprintf(buf, "%s/citadel.socket", ctdlport);
- WC->chat_sock = uds_connectsock(buf);
- }
- else {
- /** tcp socket */
- WC->chat_sock = tcp_connectsock(ctdlhost, ctdlport);
- }
-
- if (WC->chat_sock < 0) {
- return(errno);
- }
-
- /** Temporarily swap the serv and chat sockets during chat talk */
- i = WC->serv_sock;
- WC->serv_sock = WC->chat_sock;
- WC->chat_sock = i;
-
- serv_getln(buf, sizeof buf);
- if (buf[0] == '2') {
- serv_printf("USER %s", WC->wc_username);
- serv_getln(buf, sizeof buf);
- if (buf[0] == '3') {
- serv_printf("PASS %s", WC->wc_password);
- serv_getln(buf, sizeof buf);
- if (buf[0] == '2') {
- serv_printf("GOTO %s", WC->wc_roomname);
- serv_getln(buf, sizeof buf);
- if (buf[0] == '2') {
- serv_puts("CHAT");
- serv_getln(buf, sizeof buf);
- if (buf[0] == '8') {
- good_chatmode = 1;
- }
- }
- }
- }
- }
-
- /** Unswap the sockets. */
- i = WC->serv_sock;
- WC->serv_sock = WC->chat_sock;
- WC->chat_sock = i;
-
- if (!good_chatmode) close(WC->serv_sock);
-
- }
- return(0);