summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/Doxyfile.cmake1
-rw-r--r--src/libicalcap/CMakeLists.txt22
-rw-r--r--src/libicalcap/client.c196
-rw-r--r--src/libicalcap/icalcap.c40
-rw-r--r--src/libicalcap/icalcap.h47
-rw-r--r--src/libicalcap/icalcap_impl.h34
-rw-r--r--src/libicalcap/icalcap_message.c222
-rw-r--r--src/libicalcap/icalcap_message_impl.h33
-rw-r--r--src/libicalcap/icalcap_rr.c544
-rw-r--r--src/libicalcap/icalcap_server.c53
-rw-r--r--src/libicalcap/icalcap_server.h19
-rw-r--r--src/libicalcap/icalcap_server_impl.h31
-rw-r--r--src/libicalcap/icalcap_session.c63
-rw-r--r--src/libicalcap/icalcap_session.h15
-rw-r--r--src/libicalcap/icalcap_session_impl.h36
-rw-r--r--src/libicalcap/icalcap_utils.c142
-rw-r--r--src/libicalss/libicalss.dsp4
17 files changed, 0 insertions, 1502 deletions
diff --git a/doc/Doxyfile.cmake b/doc/Doxyfile.cmake
index d1db158a..80cfdd89 100644
--- a/doc/Doxyfile.cmake
+++ b/doc/Doxyfile.cmake
@@ -89,7 +89,6 @@ FILE_PATTERNS = *.cpp \
*.dox
RECURSIVE = YES
EXCLUDE = @CMAKE_SOURCE_DIR@/src/java \
- @CMAKE_SOURCE_DIR@/src/libicalcap \
@CMAKE_SOURCE_DIR@/src/php \
@CMAKE_SOURCE_DIR@/src/python
EXCLUDE_SYMLINKS = NO
diff --git a/src/libicalcap/CMakeLists.txt b/src/libicalcap/CMakeLists.txt
deleted file mode 100644
index 23907891..00000000
--- a/src/libicalcap/CMakeLists.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-include_directories(${CMAKE_SOURCE_DIR}/src ${CMAKE_SOURCE_DIR}/src/libical)
-
-########### next target ###############
-
-set(client_SRCS client.c)
-
-add_executable(client ${client_SRCS})
-
-target_link_libraries(client)
-
-########### install files ###############
-
-install(FILES
- icalcap.h
- icalcap_impl.h
- icalcap_message_impl.h
- icalcap_server.h
- icalcap_server_impl.h
- icalcap_session.h
- icalcap_session_impl.h
- DESTINATION ${INCLUDE_INSTALL_DIR}/libicalcap
-)
diff --git a/src/libicalcap/client.c b/src/libicalcap/client.c
deleted file mode 100644
index 204823c4..00000000
--- a/src/libicalcap/client.c
+++ /dev/null
@@ -1,196 +0,0 @@
-/*-
- * $Id: client.c,v 1.3 2008-01-02 20:07:33 dothebart Exp $
- *
- * See the file LICENSE for redistribution information.
- * If you have not received a copy of the license, please contact CodeFactory
- * by email at info@codefactory.se, or on the web at http://www.codefactory.se/
- * You may also write to: CodeFactory AB, SE-903 47, Umeå, Sweden.
- *
- * Copyright (c) 2002 Jonas Borgström <jonas@codefactory.se>
- * Copyright (c) 2002 Daniel Lundin <daniel@codefactory.se>
- * Copyright (c) 2002 CodeFactory AB. All rights reserved.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "icalcap.h"
-#include "icalcap_session.h"
-
-#include <stdlib.h>
-
-#include <librr/rr.h>
-
-#define CLIENT_CAPABILITY \
-"Content-Type: text/html\n\n\
-BEGIN:VCALENDAR\n\
-VERSION:2.0\n\
-PRODIR:rrcap-client\n\
-CMD:REPLY\n\
-BEGIN:VREPLY\n\
-CAP-VERSION:1.0\n\
-PRODID:rrcap-client\n\
-QUERY-LEVEL:CAL-QL-NONE\n\
-CAR-LEVEL:CAR-FULL-NONE\n\
-DATE-MAX:99991231T235959Z\n\
-DATE-MIN:00000101T000000Z\n\
-MAX-COMPONENT-SIZE:0\n\
-COMPONENTS:VCALENDAR,VTODO,VJOURNAL,VEVENT,VCAR,\n\
- VALARM,VFREEBUSY,VTIMEZONE,STANDARD,DAYLIGHT,VREPLY\n\
-ITIP-VERSION:2447\n\
-RECUR-ACCEPTED:TRUE\n\
-RECUR-EXPAND:TRUE\n\
-RECUR-LIMIT:0\n\
-STORES-EXPANDED:FALSE\n\
-END:VREPLY\n\
-END:VCALENDAR\n"
-
-
-icalcomponent *
-icalcap_send_cmd(const icalcap *cap, const gchar *cmd, const gchar *id, int timeout) {
-
- icalcap_message*capmsg;
- icalcomponent *comp, *ret = NULL;
- icalproperty *prop;
-
- prop = icalproperty_vanew_cmd(
- icalproperty_string_to_enum(cmd),
- icalparameter_new_id(id),
- 0);
-
- if (timeout > 0) {
- char buf[16];
-
- snprintf(buf, 16, "%d", timeout);
- icalproperty_add_parameter(prop,
- icalparameter_new_latency(buf));
-
- icalproperty_add_parameter(prop,
- icalparameter_new_actionparam(ICAL_ACTIONPARAM_ABORT));
- }
-
- comp = icalcomponent_vanew(
- ICAL_VCALENDAR_COMPONENT,
- icalproperty_new_version("2.0"),
- icalproperty_new_prodid("-//I.Net spa//NONSGML//EN"),
- prop,
- 0);
-
- capmsg = icalcap_message_new(cap, comp);
- ret = icalcap_message_sync_send(capmsg, timeout);
- icalcap_message_free(capmsg);
- icalcomponent_free(comp);
-
- return ret;
-}
-
-icalcomponent *
-icalcap_new_reply_component(const char *id, const icalcomponent *comp) {
-
- if (comp == NULL)
- return NULL;
-
- return icalcomponent_vanew(
- ICAL_VCALENDAR_COMPONENT,
- icalproperty_new_version("2.0"),
- icalproperty_new_prodid("-//I.Net spa//NONSGML//EN"),
- icalproperty_vanew_cmd(
- ICAL_CMD_REPLY,
-/* icalparameter_new_id(id), */
- 0),
- comp,
- 0);
-}
-
-
-static int
-msg_handler(const icalcap_message *capmsg) {
-
- icalcomponent *reply;
- char *temp;
-
- temp = icalcomponent_as_ical_string_r(capmsg->comp);
- g_message("Got: %s", temp);
- free(temp);
-
- /* FIXME Check it's a GET-CAPABILITY */
-
- reply = icalcap_new_reply_component(NULL, capmsg->comp);
- if (reply == NULL) {
- return FALSE;
- }
-
- icalcomponent_add_property(reply,
- icalproperty_new_prodid("client"));
-
- icalcomponent_free(reply);
- return TRUE;
-}
-
-int
-main (gint argc, gchar **argv)
-{
- icalcap_session*conn;
- icalcap *cap;
- icalcomponent *comp;
-
- int i, n;
- int verbose = 0;
-
- if ((conn = icalcap_session_new()) == NULL) {
- fprintf(stderr, "Init failed\n");
- exit(0);
- }
-
- if (!icalcap_session_connect(conn, "gundam.inet.it", 0)) {
- fprintf(stderr, "Connect failed\n");
- exit(0);
- }
-
- if (!icalcap_session_login(conn, "user@example.com", "user@example.com", "password")) {
- fprintf(stderr, "Login failed\n");
- exit(0);
- }
-
- if ((cap = icalcap_session_start(conn, msg_handler)) == NULL) {
- fprintf(stderr, "Start failed\n");
- exit(0);
- }
-
- if (argc > 1 && *argv[1] == '1')
- n = 100;
- else
- n = 1;
-
- for (i=0; i<n; i++) {
- g_print("Test 1: %d\n", i);
-
- if ((comp = icalcap_send_cmd(cap, "GET-CAPABILITY", "zero",15))
- == NULL) {
- fprintf(stderr, "Send failed\n");
- exit(0);
- }
-
- if (verbose) {
- char *obj = icalcomponent_as_ical_string_r(comp);
- g_print("Got %s\n", obj);
- g_free(obj);
- }
-
- if (comp)
- icalcomponent_free(comp);
- }
-
- if (!icalcap_stop(cap)) {
- fprintf(stderr, "Stop failed\n");
- exit(0);
- }
-
- if (!icalcap_session_disconnect(conn)) {
- fprintf(stderr, "Disconnect failed\n");
- exit(0);
- }
-
- return 0;
-}
diff --git a/src/libicalcap/icalcap.c b/src/libicalcap/icalcap.c
deleted file mode 100644
index 4c504078..00000000
--- a/src/libicalcap/icalcap.c
+++ /dev/null
@@ -1,40 +0,0 @@
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "icalcap.h"
-#include "icalcap_impl.h"
-#include "icalcap_session_impl.h" /* FIXME */
-
-#include <stdlib.h>
-
-void
-icalcap_free(icalcap *cap) {
-
-#ifdef WITH_RR
- icalcap_free_rr(cap);
-#endif
-}
-
-int
-icalcap_stop(icalcap *cap) {
-
-#ifdef WITH_RR
- return icalcap_stop_rr(cap);
-#else
- return 0;
-#endif
-}
-
-const char *
-icalcap_get_username(const icalcap *cap) {
-
-#ifdef WITH_RR
- if (cap == NULL || cap->username == NULL)
- return NULL;
-
- return cap->username;
-#else
- return NULL;
-#endif
-}
diff --git a/src/libicalcap/icalcap.h b/src/libicalcap/icalcap.h
deleted file mode 100644
index 8d1928f3..00000000
--- a/src/libicalcap/icalcap.h
+++ /dev/null
@@ -1,47 +0,0 @@
-#ifndef ICALCAP_H
-#define ICALCAP_H
-
-#include <libical/ical.h>
-
-/*
- * Opaque objects
- */
-typedef struct _icalcap icalcap;
-typedef struct _icalerror icalerror;
-typedef struct _icalcap_message icalcap_message;
-
-/*
- * Callback
- */
-typedef int (*icalcap_msg_handler)(const icalcap_message *msg);
-
-/*
- * icalcap member functions
- */
-void icalcap_free(icalcap *cap);
-int icalcap_stop(icalcap *cap);
-const char *icalcap_get_username(const icalcap *cap);
-
-/*
- * icalcap_message member functions
- */
-
-struct _icalcap_message {
- icalcap *cap;
- int type;
-
- icalcomponent *comp;
-};
-
-icalcap_message*icalcap_message_new(const icalcap *cap, const icalcomponent *comp);
-icalcap_message*icalcap_message_new_reply(const icalcap_message *capmsg, const icalcomponent *comp);
-void icalcap_message_free(icalcap_message *capmsg);
-
-int icalcap_message_reply_error(const icalcap_message *orig, enum icalrequeststatus status,
- const char *msg, const char *debug);
-int icalcap_message_reply_component(const icalcap_message *orig, icalcomponent *comp);
-
-int icalcap_message_send(icalcap_message *capmsg);
-icalcomponent *icalcap_message_sync_send(icalcap_message *capmsg, int timeout);
-
-#endif
diff --git a/src/libicalcap/icalcap_impl.h b/src/libicalcap/icalcap_impl.h
deleted file mode 100644
index fc3de267..00000000
--- a/src/libicalcap/icalcap_impl.h
+++ /dev/null
@@ -1,34 +0,0 @@
-#ifndef ICALCAP_IMPL_H
-#define ICALCAP_IMPL_H
-
-#include "icalcap_session.h"
-
-#ifdef WITH_RR
-
-#include <librr/rr.h>
-#include <librrsasl/rr-sasl.h>
-#include <librrtls/rr-tls.h>
-#include <librrcap/rr-cap.h>
-
-struct _icalcap {
- RRCAP *chan;
- const char *username,
- *authname;
-};
-
-struct _icalerror {
- GError *err;
-};
-
-
-void icalcap_free_rr(icalcap *cap);
-
-int icalcap_stop_rr(icalcap *cap);
-
-icalcomponent *icalcap_send_component_rr(const icalcap *cap, const icalcomponent *comp, int timeout);
-
-#else
-#error "No implementation of icalcap found!"
-#endif
-
-#endif
diff --git a/src/libicalcap/icalcap_message.c b/src/libicalcap/icalcap_message.c
deleted file mode 100644
index edfc09ff..00000000
--- a/src/libicalcap/icalcap_message.c
+++ /dev/null
@@ -1,222 +0,0 @@
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "ical.h"
-#include "icalcap.h"
-#include "icalcap_message_impl.h"
-
-/**
- * constructor
- *
- * Create a new icalcap_message from a component. This represents a command.
- */
-icalcap_message *
-icalcap_message_new(const icalcap *cap, const icalcomponent *comp) {
-
- icalcap_message *ret = NULL;
-
-#ifdef WITH_RR
- ret = icalcap_message_new_rr(cap, comp);
-#else
- ret = NULL;
-#endif
- return ret;
-}
-
-/**
- * constructor
- *
- * Create a new icalcap_message from a component. This represents a reply.
- */
-icalcap_message *
-icalcap_message_new_reply(const icalcap_message *capmsg, const icalcomponent *comp) {
-
-#ifdef WITH_RR
- return icalcap_message_new_reply_rr(capmsg, comp);
-#else
- return NULL;
-#endif
-}
-
-/**
- * destructor
- *
- * Delete icalcap_message
- */
-void
-icalcap_message_free(icalcap_message *capmsg) {
-
-#ifdef WITH_RR
- icalcap_message_free_rr(capmsg);
-#else
-#endif
-}
-
-/**
- * Send the icalcap_message and wait for an answer.
- * The icalcap_message will be invalid after this call, and only valid call will be
- * icalcap_message_free().
- */
-icalcomponent *
-icalcap_message_sync_send(icalcap_message *capmsg, int timeout) {
-
- g_return_val_if_fail(capmsg, NULL);
-
-#ifdef WITH_RR
- return icalcap_message_sync_send_rr(capmsg, timeout);
-#else
- return NULL;
-#endif
-}
-
-/**
- * Send the icalcap_message.
- * The icalcap_message will be invalid after this call, and only valid call will be
- * icalcap_message_free().
- */
-int
-icalcap_message_send(icalcap_message *capmsg)
-{
- int rc;
- char *str;
-
- g_return_val_if_fail(capmsg, FALSE);
-
-#ifdef WITH_RR
- rc = icalcap_message_send_reply_rr(capmsg);
-#else
- rc = FALSE;
-#endif
-
- return rc;
-}
-
-/**
- * Convenience method to send a component in reply to the given icalcap_message.
- * The icalcomponent is not modified in any way.
- *
- * FIXME should be const icalcomponent *
- */
-int
-icalcap_message_reply_component(const icalcap_message *orig, icalcomponent *in) {
-
- icalcap_message*reply;
- int rc;
-
- reply = icalcap_message_new_reply(orig, in);
- if (reply == NULL)
- return FALSE;
-
- rc = icalcap_message_send(reply);
- icalcap_message_free(reply);
-
- return rc;
-}
-
-/* Only used by icalcap_message_reply_error */
-static icalcomponent *new_reply_component(const icalcap_message *capmsg, const icalcomponent *comp);
-
-/**
- * Convenience method to send an error in reply to the given icalcap_message.
- */
-int
-icalcap_message_reply_error(const icalcap_message *orig, enum icalrequeststatus status,
- const char *msg, const char *debug) {
-
- struct icalreqstattype stat;
- icalcomponent *comp, *vreply;
- int rc;
-
- /* Prepare the REQUEST-STATUS */
- stat = icalreqstattype_from_string(
- icalenum_reqstat_code(status));
-
- if (msg != NULL) {
- /* FIXME we used to do
- stat.desc = strdup(msg);
- but this created a memory leak. Maybe the destructor for reqstat? */
- stat.desc = msg;
- } else {
- stat.desc = icalenum_reqstat_desc(status);
- }
-
- if (debug != NULL)
- stat.debug = debug;
-
- /* Prepare a VREPLY component */
- vreply = icalcomponent_vanew(
- ICAL_VREPLY_COMPONENT,
- icalproperty_new_requeststatus(stat),
- 0);
- if (vreply == NULL) {
- /* FIXME */
- return FALSE;
- }
-
- comp = new_reply_component(orig, vreply);
-
- rc = icalcap_message_reply_component(orig, comp);
-
- icalcomponent_free(comp);
- icalcomponent_free(vreply);
-
- return rc;
-}
-
-
-/* internal use */
-
-/* only used by new_reply_component */
-static const char *
-get_id(icalcomponent *comp) {
-
- icalproperty *prop;
- icalparameter *param;
-
- prop = icalcomponent_get_first_property(comp, ICAL_CMD_PROPERTY);
- if (prop == NULL)
- return NULL;
-
- param = icalproperty_get_first_parameter(prop, ICAL_ID_PARAMETER);
- if (param == NULL)
- return NULL;
-
- return icalparameter_get_id(param);
-}
-
-/* only used by icalcap_message_reply_error */
-static icalcomponent *
-new_reply_component(const icalcap_message *capmsg, const icalcomponent *comp) {
-
- icalcomponent *clone, *cal, *root;
- icalproperty *cmd;
- const char *id;
-
- cmd = icalproperty_new_cmd(ICAL_CMD_REPLY);
-
- if (capmsg->comp != NULL) {
- id = get_id(capmsg->comp);
-
- if (id != NULL)
- icalproperty_add_parameter(cmd, icalparameter_new_id(id));
- }
-
- cal = icalcomponent_vanew(
- ICAL_VCALENDAR_COMPONENT,
- icalproperty_new_version("2.0"),
- icalproperty_new_prodid("-//I.Net spa//NONSGML//EN"),
- cmd,
- 0);
-
- if (comp != NULL) {
- clone = icalcomponent_new_clone(comp);
- icalcomponent_add_component(cal, clone);
- }
-
- root = icalcomponent_vanew(
- ICAL_XROOT_COMPONENT,
- cal,
- 0);
- return root;
-}
diff --git a/src/libicalcap/icalcap_message_impl.h b/src/libicalcap/icalcap_message_impl.h
deleted file mode 100644
index ca69de87..00000000
--- a/src/libicalcap/icalcap_message_impl.h
+++ /dev/null
@@ -1,33 +0,0 @@
-#ifndef ICALCAP_MESSAGE_IMPL_H
-#define ICALCAP_MESSAGE_IMPL_H
-
-#ifdef WITH_RR
-
-#include <libical/ical.h>
-#include <librr/rr.h>
-
-#define ICALCAP_MESSAGE_CMD 1
-#define ICALCAP_MESSAGE_REPLY 1
-
-struct _icalcap_message_rr {
- const icalcap *cap;
- int type;
-
- icalcomponent *comp;
-
- RRFrame *frame;
- RRMessage *msg;
-};
-
-icalcap_message*icalcap_message_new_rr(const icalcap *cap, const icalcomponent *comp);
-icalcap_message*icalcap_message_new_reply_rr(const icalcap_message *capmsg, const icalcomponent *comp);
-void icalcap_message_free_rr(icalcap_message *capmsg);
-
-int icalcap_message_send_reply_rr(icalcap_message *capmsg);
-icalcomponent *icalcap_message_sync_send_rr(icalcap_message *capmsg, int timeout);
-
-#else
-#error "No implementation of icalcap found!"
-#endif
-
-#endif
diff --git a/src/libicalcap/icalcap_rr.c b/src/libicalcap/icalcap_rr.c
deleted file mode 100644
index 61726574..00000000
--- a/src/libicalcap/icalcap_rr.c
+++ /dev/null
@@ -1,544 +0,0 @@
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "icalcap.h"
-#include "icalcap_session.h"
-#include "icalcap_server.h"
-
-#include "icalcap_impl.h"
-#include "icalcap_message_impl.h"
-#include "icalcap_session_impl.h"
-#include "icalcap_server_impl.h"
-
-#include <stdlib.h>
-
-icalcomponent *icalcap_component_new_from_string(const char *data);
-
-static int default_msg_handler(RRCAP *cap, RRFrame *frame, GError **error);
-static void client_final_handler(RRCAP *cap);
-
-/**
- * Implementation of functions in icalcap
- */
-void
-icalcap_free_rr(icalcap *cap) {
-
- g_return_if_fail(cap);
-
- if (cap->username)
- free(cap->username);
-
- if (cap->authname)
- free(cap->authname);
-
- g_free(cap);
-}
-
-/**
- * Implementation of functions in icalcap_session
- */
-icalcap_session *
-icalcap_session_new_rr(void) {
-
- icalcap_session *sess;
- GError *error = NULL;
-
- /* Initialize roadrunner */
- if (!rr_init(0, NULL, &error))
- return 0;
-
- if ((sess = g_new0(icalcap_session, 1)) == NULL) {
- /* FIXME return an error */
- return NULL;
- }
-
- sess->cfg = rr_cap_config_new();
-
- /* Tell roadrunner which profiles we want to support */
- sess->profreg = rr_profile_registry_new();
- rr_profile_registry_add_profile(sess->profreg, RR_TYPE_CAP, NULL);
- rr_profile_registry_add_profile(sess->profreg, RR_TYPE_TLS, NULL);
- rr_profile_registry_add_profile(sess->profreg, RR_TYPE_SASL_DIGEST_MD5, NULL);
-
- return sess;
-}
-
-int
-icalcap_session_connect_rr(icalcap_session *sess, const char *hostname, const int port) {
-
- GError *error = NULL;
-
- if (sess == NULL) {
- /* FIXME return the error */
- return FALSE;
- }
-
- /* Create a connection object */
- sess->connection = rr_tcp_connection_new(sess->profreg, hostname, port, &error);
- if (sess->connection == NULL) {
- /* FIXME return the error */
- return FALSE;
- }
-
- return TRUE;
-}
-
-int
-icalcap_session_login_rr(icalcap_session *sess, const char *username, const char *authname,
- const char *password) {
-
- /* assert cap != NULL */
- GError *error = NULL;
-
- rr_sasl_set_username(sess->connection, username);
- rr_sasl_set_authname(sess->connection, authname);
- rr_sasl_set_password(sess->connection, password);
-
- /* FIXME */
- if (!rr_sasl_login(sess->connection, RR_TYPE_SASL_DIGEST_MD5,
- "foo.example.com", NULL, &error)) {
- /* FIXME return the error */
- return 0;
- }
-
- return 1;
-}
-
-icalcap *
-icalcap_session_start_rr(const icalcap_session *sess, icalcap_msg_handler handler) {
-
- /* assert sess != NULL */
- icalcap *cap;
- RRCAP *channel;
- GError *error = NULL;
-
- if ((cap = g_new0(icalcap, 1)) == NULL) {
- /* FIXME return an error */
- return NULL;
- }
-
- if (handler != NULL) {
- rr_cap_config_set_msg_handler(sess->cfg, default_msg_handler, (void *)handler);
- /* FIXME rr_cap_config_set_final_handler(cfg, client_final_handler); */
- }
-
- if ((channel = rr_cap_client_start(sess->connection, sess->cfg, &error)) == NULL) {
- /* FIXME return the error */
- goto FAILED;
- }
-
- cap->chan = channel;
- channel->hl = cap;
-
- return cap;
-
-FAILED:
- g_free(cap);
- return NULL;
-}
-
-int
-icalcap_stop_rr(icalcap *cap) {
-
- /* assert cap != NULL */
- GError *error = NULL;
-
- if (!rr_cap_close(cap->chan, &error)) {
- /* FIXME return the error */
- return 0;
- }
-
- cap->chan = NULL;
- g_free(cap);
-
- return 1;
-}
-
-int
-icalcap_session_disconnect_rr(icalcap_session *sess) {
-
- /* assert cap != NULL */
- GError *error = NULL;
-
- if (!rr_connection_disconnect(sess->connection, &error)) {
- /* FIXME return the error */
- return 0;
- }
-
- sess->connection = NULL;
- g_free(sess);
-
- if (!rr_exit(&error)) {
- /* FIXME return the error */
- return 0;
- }
-
- return 1;
-}
-
-/**
- * Implementation of functions in icalcap_server
- */
-
-/**
- * If the user properly authenticated (via SASL), initialize the channel
- * credentials. Otherwise, refuse to open the channel.
- */
-static int
-server_init_handler(RRCAP *chan, const gchar *piggyback, GError **error) {
-
- icalcap *cap;
- RRConnection *connection;
-
- icalcap_auth_handler func;
- const gchar *username, *authname;
- int rc;
-
- g_return_val_if_fail(chan, FALSE);
- g_return_val_if_fail(chan->cfg, FALSE);
- g_return_val_if_fail(chan->cfg->server_init_data, FALSE);
-
- connection = rr_channel_get_connection(RR_CHANNEL(chan));
- if ((username = rr_sasl_get_username(connection)) == NULL)
- return FALSE;
- if ((authname = rr_sasl_get_authname(connection)) == NULL)
- return FALSE;
-
- if ((cap = g_new0(icalcap, 1)) == NULL) {
- return FALSE;
- }
-
- cap->chan = chan;
- chan->hl = cap;
-
- cap->username = strdup(username);
- cap->authname = strdup(authname);
-
- func = (icalcap_auth_handler)chan->cfg->server_init_data;
- return func(cap, piggyback);
-}
-
-static void
-server_confirmation_handler(RRCAP *chan) {
-
- icalcap_chanup_handler func;
-
- g_return_if_fail(chan);
- g_return_if_fail(chan->cfg);
- g_return_if_fail(chan->cfg->server_confirmation_data);
-
- func = (icalcap_chanup_handler)chan->cfg->server_confirmation_data;
-
- func(chan->hl);
-}
-
-static gboolean
-server_frame_handler(RRCAP *cap, RRFrame *frame, GError **error)
-{
- if (frame->type == RR_FRAME_TYPE_MSG)
- /* FIXME */
- return default_msg_handler(cap, frame, error);
- else
- return FALSE;
-}
-
-static void
-server_final_handler(RRCAP *cap)
-{
- g_return_if_fail(cap);
- g_return_if_fail(RR_CAP(cap));
-
- if (cap->hl != NULL) {
- icalcap_free(cap->hl);
- cap->hl = NULL;
- }
-}
-
-/*
- * FIXME Do we want to pass argc and argv in?
- */
-icalcap_server *
-icalcap_server_new_rr(icalcap_auth_handler auth_cb, icalcap_chanup_handler chanup_cb,
- icalcap_msg_handler msg_cb) {
-
- icalcap_server *serv;
- GError *error = NULL;
-
- /* Initialize roadrunner */
- if (!rr_init(0, NULL, &error))
- return 0;
-
- if ((serv = g_new0(icalcap_server, 1)) == NULL) {
- /* FIXME return an error */
- return NULL;
- }
- serv->handler = msg_cb;
-
- /* This is somewhat hackish */
- serv->cfg = rr_cap_config_new();
- rr_cap_config_set_msg_handler(serv->cfg, NULL, (void *)msg_cb);
- rr_cap_config_set_frame_handler(serv->cfg, server_frame_handler);
- rr_cap_config_set_final_handler(serv->cfg, server_final_handler);
- rr_cap_config_set_server_init_handler(serv->cfg, server_init_handler, (void *)auth_cb);
- rr_cap_config_set_server_confirmation_handler(serv->cfg,
- server_confirmation_handler, (void *)chanup_cb);
-
- /* Tell roadrunner which profiles we want to support */
- serv->profreg = rr_profile_registry_new();
- rr_profile_registry_add_profile(serv->profreg, RR_TYPE_CAP, serv->cfg);
- rr_profile_registry_add_profile(serv->profreg, RR_TYPE_TLS, NULL);
- rr_profile_registry_add_profile(serv->profreg, RR_TYPE_SASL_DIGEST_MD5, NULL);
-
- return serv;
-}
-
-int
-icalcap_server_listen_rr(icalcap_server *serv, const char *hostname, const int port) {
-
- GError *error = NULL;
- g_return_val_if_fail(serv, FALSE);
-
- /* Create a listener object */
- serv->listener = rr_tcp_listener_new(serv->profreg, hostname, port, &error);
- if (serv->listener == NULL) {
- /* FIXME return the error */
- return FALSE;
- }
-
- return TRUE;
-}
-
-int
-icalcap_server_run_rr(const icalcap_server *serv) {
-
- /* assert cap != NULL */
- GError *error = NULL;
-
- if (!rr_wait_until_done(&error)) {
- /* FIXME return the error */
- return FALSE;
- }
-
- return TRUE;
-}
-
-int
-icalcap_server_shutdown_rr(icalcap_server *serv) {
-
- /* assert cap != NULL */
- GError *error = NULL;
-
- if (!rr_listener_shutdown(serv->listener, &error)) {
- /* FIXME return the error */
- return 0;
- }
-
- serv->listener = NULL;
- g_free(serv);
-
- return 1;
-}
-
-/*
- * icalcap_message.c
- */
-
-/*
- * Internal constructor
- */
-static struct _icalcap_message_rr *
-_icalcap_message_new_from_component_rr(const icalcap *cap, int type, icalcomponent *comp) {
-
- struct _icalcap_message_rr *ret;
-
- if ((ret = g_new0(struct _icalcap_message_rr, 1)) == NULL) {
- /* FIXME return an error */
- return NULL;
- }
-
- ret->cap = cap;
- ret->type = type;
-
- ret->comp = comp;
-
- return ret;
-}
-
-static icalcap_message *
-_icalcap_message_new_from_frame_rr(const icalcap *cap, int type, RRFrame *frame) {
-
- struct _icalcap_message_rr *ret;
-
- if ((ret = g_new0(struct _icalcap_message_rr, 1)) == NULL) {
- /* FIXME return an error */
- return NULL;
- }
-
- ret->cap = cap;
- ret->type = type;
- ret->frame = frame;
-
- ret->comp = icalcap_component_new_from_string(ret->frame->payload);
-
- return (icalcap_message *)ret;
-}
-
-icalcap_message *
-icalcap_message_new_rr(const icalcap *cap, const icalcomponent *comp) {
-
- struct _icalcap_message_rr *ret;
- gchar *str, *obj;
-
- if (comp == NULL) {
- /* FIXME return an error */
- return NULL;
- }
-
- ret = _icalcap_message_new_from_component_rr(cap, ICALCAP_MESSAGE_CMD, NULL);
-
- obj = icalcomponent_as_ical_string_r(comp);
- str = g_strdup_printf("%s\n\n%s",
- "Content-Type: text/calendar",
- obj);
- free(obj);
-
- ret->msg = rr_message_static_new(RR_FRAME_TYPE_MSG, str, strlen(str), TRUE);
-
- return (icalcap_message *)ret;
-}
-
-/*
- * This method and its implementation are critical. It has the responsibility for
- * serializing the component. The tricky part is that we have a options for encoding XROOT.
- */
-icalcap_message *
-icalcap_message_new_reply_rr(const icalcap_message *orig, const icalcomponent *comp) {
-
- struct _icalcap_message_rr *in, *ret;
- icalcomponent *cc;
- GString *str;
-
- if ((in = (struct _icalcap_message_rr *)orig) == NULL) {
- /* FIXME return an error */
- return NULL;
- }
-
- ret = _icalcap_message_new_from_component_rr(in->cap, ICALCAP_MESSAGE_REPLY, NULL);
-
- /* FIXME */
- if (icalcomponent_isa(comp) != ICAL_XROOT_COMPONENT)
- return NULL;
-
- /* FIXME don't hardcode */
- str = g_string_new("Content-Type: text/calendar\n\n");
-
- for (cc = icalcomponent_get_first_component(comp,
- ICAL_VCALENDAR_COMPONENT);
- cc != NULL;
- cc = icalcomponent_get_next_component(comp,
- ICAL_VCALENDAR_COMPONENT)) {
- char *obj;
- obj = icalcomponent_as_ical_string_r(cc);
- g_string_append(str, obj);
- free(obj);
- }
-
- ret->msg = rr_message_static_new(RR_FRAME_TYPE_RPY, str->str, strlen(str->str), TRUE);
- /* FIXME this should now be ok but if change the API we need to change */
- ret->msg->msgno = in->frame->msgno;
-
- return (icalcap_message *)ret;
-}
-
-void
-icalcap_message_free_rr(icalcap_message *in) {
-
- struct _icalcap_message_rr *capmsg = (struct _icalcap_message_rr *)in;
- g_return_if_fail(capmsg);
-
- if (capmsg->comp != NULL) {
- icalcomponent_free(capmsg->comp);
- capmsg->comp = NULL;
- }
-
- if (capmsg->msg != NULL) {
- g_free(capmsg->msg);
- }
-
- g_free(capmsg);
-}
-
-int
-icalcap_message_send_reply_rr(icalcap_message *in) {
-
- struct _icalcap_message_rr *capmsg = (struct _icalcap_message_rr *)in;
- GError *error = NULL;
- int rc;
-
- if ((rc = rr_channel_send_message(RR_CHANNEL(capmsg->cap->chan), capmsg->msg, &error)) == 0)
- g_message("error = %s", error->message);
- /* FIXME handle error */
-
- capmsg->msg = NULL;
-
- return rc;
-}
-
-icalcomponent *
-icalcap_message_sync_send_rr(icalcap_message *in, int timeout)
-{
- struct _icalcap_message_rr *capmsg = (struct _icalcap_message_rr *)in;
- icalcomponent *comp;
-
- gchar *str2;
- GError *error = NULL;
- int rc;
-
- /* FIXME */
- rc = rr_cap_cmd(capmsg->cap->chan, capmsg->msg, 3 * timeout, &str2, &error);
- capmsg->msg = NULL;
- if (rc == 0) {
- g_message("error = %s", error->message);
- /* FIXME handle error */
- return 0;
- }
-
- comp = icalcap_component_new_from_string(str2);
- g_free(str2);
- return comp;
-}
-
-/*
- *
- */
-
-/*
- * FIXME We assume we can safely create an icalcap_message derived object
- * without calls to the base object
- */
-int
-default_msg_handler(RRCAP *cap, RRFrame *frame, GError **error) {
-
- icalcap_msg_handler func;
- icalcap_message *msg;
- int ret;
-
- g_return_val_if_fail(cap, FALSE);
- g_return_val_if_fail(cap->cfg, FALSE);
- g_return_val_if_fail(cap->cfg->msg_handler_data, FALSE);
-
- func = (icalcap_msg_handler)cap->cfg->msg_handler_data;
-
- msg = _icalcap_message_new_from_frame_rr(cap->hl, ICALCAP_MESSAGE_CMD, frame);
- if (msg == NULL) {
- /* FIXME */
- g_message("error");
- return FALSE;
- }
-
- ret = func(msg);
- icalcap_message_free(msg);
-
- return ret;
-}
diff --git a/src/libicalcap/icalcap_server.c b/src/libicalcap/icalcap_server.c
deleted file mode 100644
index 61475f15..00000000
--- a/src/libicalcap/icalcap_server.c
+++ /dev/null
@@ -1,53 +0,0 @@
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "icalcap.h"
-#include "icalcap_server.h"
-#include "icalcap_server_impl.h"
-
-icalcap_server *
-icalcap_server_new(icalcap_auth_handler auth_cb, icalcap_chanup_handler chanup_cb,
- icalcap_msg_handler msg_cb) {
-
-#ifdef WITH_RR
- return icalcap_server_new_rr(auth_cb, chanup_cb, msg_cb);
-#else
- return NULL;
-#endif
-}
-
-int
-icalcap_server_listen(icalcap_server *cap, const char *hostname, const int _port) {
-
- int port = _port;
-
- if (port <= 0)
- port = 1026;
-
-#ifdef WITH_RR
- return icalcap_server_listen_rr(cap, hostname, port);
-#else
- return 0;
-#endif
-}
-
-int
-icalcap_server_run(const icalcap_server *cap) {
-
-#ifdef WITH_RR
- return icalcap_server_run_rr(cap);
-#else
- return 0;
-#endif
-}
-
-int
-icalcap_server_shutdown(icalcap_server *cap) {
-
-#ifdef WITH_RR
- return icalcap_server_shutdown_rr(cap);
-#else
- return 0;
-#endif
-}
diff --git a/src/libicalcap/icalcap_server.h b/src/libicalcap/icalcap_server.h
deleted file mode 100644
index 08fa350b..00000000
--- a/src/libicalcap/icalcap_server.h
+++ /dev/null
@@ -1,19 +0,0 @@
-#ifndef ICALCAP_SERVER_H
-#define ICALCAP_SERVER_H
-
-#include "icalcap.h"
-
-typedef struct _icalcap_server icalcap_server;
-
-typedef int (*icalcap_auth_handler)(const icalcap *cap, const char *piggyback);
-typedef void (*icalcap_chanup_handler)(const icalcap *cap);
-
-icalcap_server*icalcap_server_new(icalcap_auth_handler auth_cb,
- icalcap_chanup_handler chanup_cb,
- icalcap_msg_handler msg_cb);
-
-int icalcap_server_listen(icalcap_server *cap, const char *hostname, const int port);
-int icalcap_server_run(const icalcap_server *cap);
-int icalcap_server_shutdown(icalcap_server *cap);
-
-#endif
diff --git a/src/libicalcap/icalcap_server_impl.h b/src/libicalcap/icalcap_server_impl.h
deleted file mode 100644
index 8f784878..00000000
--- a/src/libicalcap/icalcap_server_impl.h
+++ /dev/null
@@ -1,31 +0,0 @@
-#ifndef ICALCAP_SERVER_IMPL_H
-#define ICALCAP_SERVER_IMPL_H
-
-#ifdef WITH_RR
-
-#include <librr/rr.h>
-#include <librrsasl/rr-sasl.h>
-#include <librrtls/rr-tls.h>
-#include <librrcap/rr-cap.h>
-
-struct _icalcap_server {
- RRProfileRegistry *profreg;
- RRListener *listener;
- RRCAPConfig *cfg;
- icalcap_msg_handler handler;
-};
-
-icalcap_server *icalcap_server_new_rr(icalcap_auth_handler auth_cb,
- icalcap_chanup_handler chanup_cb,
- icalcap_msg_handler msg_cb);
-int icalcap_server_listen_rr(icalcap_server *cap,
- const char *hostname,
- const int port);
-int icalcap_server_run_rr(const icalcap_server *cap);
-int icalcap_server_shutdown_rr(icalcap_server *cap);
-
-#else
-#error "No implementation of icalcap found!"
-#endif
-
-#endif
diff --git a/src/libicalcap/icalcap_session.c b/src/libicalcap/icalcap_session.c
deleted file mode 100644
index fd21ad54..00000000
--- a/src/libicalcap/icalcap_session.c
+++ /dev/null
@@ -1,63 +0,0 @@
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "icalcap.h"
-#include "icalcap_session.h"
-#include "icalcap_session_impl.h"
-
-icalcap_session *
-icalcap_session_new(void) {
-
-#ifdef WITH_RR
- return icalcap_session_new_rr();
-#else
- return NULL;
-#endif
-}
-
-int
-icalcap_session_connect(icalcap_session *sess, const char *hostname, const int _port) {
-
- int port = _port;
-
- if (port <= 0)
- port = 1026;
-
-#ifdef WITH_RR
- return icalcap_session_connect_rr(sess, hostname, port);
-#else
- return 0;
-#endif
-}
-
-int
-icalcap_session_login(icalcap_session *sess, const char *username, const char *authname,
- const char *password) {
-
-#ifdef WITH_RR
- return icalcap_session_login_rr(sess, username, authname, password);
-#else
- return 0;
-#endif
-}
-
-icalcap *
-icalcap_session_start(const icalcap_session *sess, icalcap_msg_handler handler) {
-
-#ifdef WITH_RR
- return icalcap_session_start_rr(sess, handler);
-#else
- return 0;
-#endif
-}
-
-int
-icalcap_session_disconnect(icalcap_session *sess) {
-
-#ifdef WITH_RR
- return icalcap_session_disconnect_rr(sess);
-#else
- return 0;
-#endif
-}
diff --git a/src/libicalcap/icalcap_session.h b/src/libicalcap/icalcap_session.h
deleted file mode 100644
index 01ad5a38..00000000
--- a/src/libicalcap/icalcap_session.h
+++ /dev/null
@@ -1,15 +0,0 @@
-#ifndef ICALCAP_SESSION_H
-#define ICALCAP_SESSION_H
-
-#include "icalcap.h"
-
-typedef struct _icalcap_session icalcap_session;
-
-icalcap_session*icalcap_session_new(void);
-int icalcap_session_connect(icalcap_session *cap, const char *hostname, const int port);
-int icalcap_session_login(icalcap_session *cap, const char *username, const char *authname,
- const char *password);
-icalcap*icalcap_session_start(const icalcap_session *cap, icalcap_msg_handler handler);
-int icalcap_session_disconnect(icalcap_session *cap);
-
-#endif
diff --git a/src/libicalcap/icalcap_session_impl.h b/src/libicalcap/icalcap_session_impl.h
deleted file mode 100644
index 23390809..00000000
--- a/src/libicalcap/icalcap_session_impl.h
+++ /dev/null
@@ -1,36 +0,0 @@
-#ifndef ICALCAP_SESSION_IMPL_H
-#define ICALCAP_SESSION_IMPL_H
-
-#ifdef WITH_RR
-
-#include <librr/rr.h>
-#include <librrsasl/rr-sasl.h>
-#include <librrtls/rr-tls.h>
-#include <librrcap/rr-cap.h>
-
-struct _icalcap_session {
- RRProfileRegistry *profreg;
- RRConnection *connection;
- RRCAPConfig *cfg;
- icalcap_msg_handler handler;
-
- char *username;
-};
-
-icalcap_session*icalcap_session_new_rr(void);
-int icalcap_session_connect_rr(icalcap_session *cap,
- const char *hostname,
- const int port);
-int icalcap_session_login_rr(icalcap_session *cap,
- const char *username,
- const char *authname,
- const char *password);
-icalcap *icalcap_session_start_rr(const icalcap_session *cap,
- icalcap_msg_handler handler);
-int icalcap_session_disconnect_rr(icalcap_session *cap);
-
-#else
-#error "No implementation of icalcap found!"
-#endif
-
-#endif
diff --git a/src/libicalcap/icalcap_utils.c b/src/libicalcap/icalcap_utils.c
deleted file mode 100644
index 799b10f1..00000000
--- a/src/libicalcap/icalcap_utils.c
+++ /dev/null
@@ -1,142 +0,0 @@
-/*-
- * $Id: icalcap_utils.c,v 1.3 2008-01-02 20:07:38 dothebart Exp $
- *
- * See the file LICENSE for redistribution information.
- *
- * Copyright (c) 2002 Andrea Campi <a.campi@inet.it>
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "icalcap.h"
-
-#define CONTENT_TYPE "Content-Type: text/calendar"
-
-icalcomponent *
-icalcap_component_new_from_string(const char *data) {
-
- icalcomponent *ret = NULL;
- char *mtype;
-
- /* FIXME split the check */
- if (strncmp(data, CONTENT_TYPE, strlen(CONTENT_TYPE))) {
- return NULL;
- }
-
- mtype = (char *)data+strlen(CONTENT_TYPE);
-
- ret = icalcomponent_new_from_string(mtype);
- if (ret == NULL) {
- return NULL;
- }
-
-#ifdef DEBUG
- g_message("icalcap_component_new_from_string icalcomponent_new_from_string = %p", ret);
-#endif
-
- /* FIXME
- * Validate here: should check at least the version
- */
- if (icalcomponent_isa(ret) != ICAL_VCALENDAR_COMPONENT &&
- icalcomponent_isa(ret) != ICAL_XROOT_COMPONENT) {
- icalcomponent_free(ret);
-
- return NULL;
- }
-
- return ret;
-}
-
-#if 0
-RRCAPCmdArgs *
-msg_parse(RRCAP *cap, icalcomponent *comp) {
-
- icalproperty *prop;
- icalparameter *param;
- icalvalue *value;
- RRCAPCmdArgs *ret = g_new0(RRCAPCmdArgs, 1);
- char *str;
-
- ret->comp = comp;
-
- /* Find the command */
- if ((prop = icalcomponent_get_first_property(comp, ICAL_CMD_PROPERTY)) == NULL) {
- rr_cap_send_error(cap, NULL, ICAL_9_0_UNRECOGNIZED_COMMAND,
- "No CMD sent", NULL);
- goto FAILED;
- }
- if ((value = icalproperty_get_value(prop)) == NULL) {
- str = icalproperty_as_ical_string_r(prop);
- rr_cap_send_error(cap, NULL, ICAL_9_0_UNRECOGNIZED_COMMAND,
- "CMD has no value", str);
- free(str);
- goto FAILED;
- }
- ret->cmd = icalvalue_get_cmd(value);
-
- /* Look for params */
-
- /* ID */
- if ((param = icalproperty_get_first_parameter(prop,
- ICAL_ID_PARAMETER)) != NULL) {
- if ((ret->id = icalparameter_get_id(param)) == NULL) {
- str = icalproperty_as_ical_string_r(prop);
- rr_cap_send_error(cap, NULL,
- ICAL_9_0_UNRECOGNIZED_COMMAND,
- "ID param is garbled",
- str);
- free(str);
- goto FAILED;
- }
- }
-
- /* LATENCY */
- if ((param = icalproperty_get_first_parameter(prop,
- ICAL_LATENCY_PARAMETER)) != NULL) {
- const char *tmp;
- if ((tmp = icalparameter_get_latency(param)) == NULL) {
- str = icalproperty_as_ical_string_r(prop);
- rr_cap_send_error(cap, NULL,
- ICAL_9_0_UNRECOGNIZED_COMMAND,
- "LATENCY is garbled",
- str);
- free(str);
- goto FAILED;
- }
-
- ret->latency = atoi(tmp);
- }
-
- /* ACTION */
- if ((param = icalproperty_get_first_parameter(prop,
- ICAL_ACTIONPARAM_PARAMETER)) != NULL) {
- if ((ret->action = icalparameter_get_actionparam(param))
- == NULL) {
- str = icalproperty_as_ical_string_r(prop);
- rr_cap_send_error(cap, NULL,
- ICAL_9_0_UNRECOGNIZED_COMMAND,
- "ACTION is garbled",
- str);
- free(str);
- goto FAILED;
- }
- }
-
- if ((ret->latency >= 0) ^ (ret->action != ICAL_ACTIONPARAM_NONE)) {
- str = icalproperty_as_ical_string_r(prop);
- rr_cap_send_error(cap, NULL, ICAL_9_0_UNRECOGNIZED_COMMAND,
- "LATENCY and ACTION must be both present",
- str);
- free(str);
- goto FAILED;
- }
-
- return ret;
-
-FAILED:
- g_free(ret);
- return NULL;
-}
-#endif
diff --git a/src/libicalss/libicalss.dsp b/src/libicalss/libicalss.dsp
index 356aad3a..1693bea0 100644
--- a/src/libicalss/libicalss.dsp
+++ b/src/libicalss/libicalss.dsp
@@ -145,10 +145,6 @@ SOURCE=.\icalcalendar.h
# End Source File
# Begin Source File
-SOURCE=.\icalcaputil.h
-# End Source File
-# Begin Source File
-
SOURCE=.\icalclassify.h
# End Source File
# Begin Source File