#include "UserClient.h"
#include "ConfigParser.h"
#include "tools.h"
+#include "IRCClient.h"
static struct UserSession *usersessions = NULL;
return session;
}
-/*
static void usersession_close(struct UserSession *session) {
if(session->client)
userclient_close(session->client);
+ if(session->irc)
+ ircclient_close(session->irc);
if(session->prev)
session->prev->next = session->next;
free(session->username);
free(session->password);
free(session->nick);
+ if(session->realname)
+ free(session->realname);
free(session);
}
-*/
-/* ****************** SESSION FUNCTIONS ****************** */
+/* ****************** EXTERNAL EVENTS ****************** */
-static void usersession_initialize_session(struct UserSession *session) {
-
+void usersession_error(struct UserSession *session, char *error) {
+ if(session->client) {
+ iohandler_printf(session->client->iofd, ":*TransparentIRC!TransIRC@TransparentIRC.system.notification NOTICE %s :[TransparentIRC] ERROR: %s", session->nick, error);
+ }
+ usersession_close(session);
}
-/* ****************** EXTERNAL EVENTS ****************** */
-
void usersession_client_close(struct UserSession *session) {
session->client = NULL;
session->idle_since = time(0);
}
+void usersession_client_raw(struct UserSession *session, char *raw) {
+ if(session->client) {
+ iohandler_printf(session->client->iofd, "%s", raw);
+ }
+}
+
void usersession_client_notification(struct UserSession *session, char *notification) {
if(session->client) {
iohandler_printf(session->client->iofd, ":*TransparentIRC!TransIRC@TransparentIRC.system.notification NOTICE %s :[TransparentIRC] %s", session->nick, notification);
userclient_login_failed(login, "Could not create Session.");
return;
}
+ active_session->client = login->client;
+ active_session->realname = strdup(login->realname);
+ ircclient_initialize(active_session, login);
userclient_login_successful(login, active_session, 0);
- usersession_initialize_session(active_session);
}
}
if(argc < 2) return;
if(!stricmp(argv[0], "CLASS")) {
login->session_class = strdup(argv[1]);
+ } else if(!stricmp(argv[0], "SERVER")) {
+ login->server_address = strdup(argv[1]);
+ if(argc > 2) {
+ login->server_override_port = 1;
+ if(argv[2][0] == '+') {
+ argv[2]++;
+ login->server_ssl = 1;
+ }
+ login->server_port = atoi(argv[2]);
+ }
+ } else if(!stricmp(argv[0], "BIND")) {
+ login->bind_address = strdup(argv[1]);
}
}