Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F117883832
http_caldav_sched.h
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Authored By
Unknown
Size
6 KB
Referenced Files
None
Subscribers
None
http_caldav_sched.h
View Options
/* http_caldav_sched.h -- Routines for dealing with CALDAV scheduling in httpd
*
* Copyright (c) 1994-2013 Carnegie Mellon University. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The name "Carnegie Mellon University" must not be used to
* endorse or promote products derived from this software without
* prior written permission. For permission or any legal
* details, please contact
* Carnegie Mellon University
* Center for Technology Transfer and Enterprise Creation
* 4615 Forbes Avenue
* Suite 302
* Pittsburgh, PA 15213
* (412) 268-7393, fax: (412) 268-7395
* innovation@andrew.cmu.edu
*
* 4. Redistributions of any form whatsoever must retain the following
* acknowledgment:
* "This product includes software developed by Computing Services
* at Carnegie Mellon University (http://www.cmu.edu/computing/)."
*
* CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO
* THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
* AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE
* FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
* AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
*/
#ifndef HTTP_CALDAV_SCHED_H
#define HTTP_CALDAV_SCHED_H
//#define IOPTEST
#include
<config.h>
#include
<libical/ical.h>
#ifdef WITH_DKIM
#include
<dkim.h>
#ifndef DKIM_CANON_ISCHEDULE
#undef WITH_DKIM
#endif
#endif
/* WITH_DKIM */
#include
"http_dav.h"
#include
"ical_support.h"
#include
"http_caldav.h"
#define NEW_STAG (1<<8)
/* Make sure we skip over PREFER bits */
#define REQSTAT_PENDING "1.0;Pending"
#define REQSTAT_SENT "1.1;Sent"
#define REQSTAT_DELIVERED "1.2;Delivered"
#define REQSTAT_SUCCESS "2.0;Success"
#define REQSTAT_NOUSER "3.7;Invalid calendar user"
#define REQSTAT_NOPRIVS "3.8;Noauthority"
#define REQSTAT_TEMPFAIL "5.1;Service unavailable"
#define REQSTAT_PERMFAIL "5.2;Invalid calendar service"
#define REQSTAT_REJECTED "5.3;No scheduling support for user"
struct
sched_data
{
unsigned
ischedule
;
unsigned
is_reply
;
unsigned
is_update
;
icalcomponent
*
itip
;
icalparameter_scheduleforcesend
force_send
;
const
char
*
status
;
};
/* Scheduling protocol flags */
#define SCHEDTYPE_REMOTE (1<<0)
#define SCHEDTYPE_ISCHEDULE (1<<1)
#define SCHEDTYPE_SSL (1<<2)
struct
proplist
{
icalproperty
*
prop
;
struct
proplist
*
next
;
};
/* Each calendar user address has the following scheduling protocol params */
/* All memory must be freed with sched_param_free. */
struct
caldav_sched_param
{
char
*
userid
;
/* Userid corresponding to calendar address */
char
*
server
;
/* Remote server user lives on */
unsigned
port
;
/* Remote server port, default = 80 */
unsigned
flags
;
/* Flags dictating protocol to use for scheduling */
unsigned
isyou
;
/* true if the user is the same as the authenticated user */
struct
proplist
*
props
;
/* List of attendee iCal properties */
};
extern
void
sched_param_free
(
struct
caldav_sched_param
*
sparam
);
struct
freebusy
{
struct
icalperiodtype
per
;
struct
icaltimetype
recurid
;
icalparameter_fbtype
type
;
};
struct
freebusy_array
{
struct
freebusy
*
fb
;
unsigned
len
;
unsigned
alloc
;
};
struct
vavailability
{
int
priority
;
struct
icalperiodtype
per
;
icalcomponent
*
ical
;
};
struct
vavailability_array
{
struct
vavailability
*
vav
;
unsigned
len
;
unsigned
alloc
;
};
struct
freebusy_filter
{
unsigned
flags
;
struct
icaltimetype
start
;
struct
icaltimetype
end
;
icaltimezone
*
tz
;
struct
freebusy_array
freebusy
;
/* array of found freebusy periods */
struct
vavailability_array
vavail
;
/* array of found vavail components */
};
/* Bitmask of freebusy_filter flags */
enum
{
CHECK_CAL_TRANSP
=
(
1
<<
0
),
CHECK_USER_AVAIL
=
(
1
<<
1
)
};
extern
unsigned
config_allowsched
;
extern
const
char
*
ical_prodid
;
extern
icaltimezone
*
utc_zone
;
extern
struct
strlist
*
cua_domains
;
extern
icalarray
*
rscale_calendars
;
extern
icalcomponent
*
busytime_query_local
(
struct
transaction_t
*
txn
,
struct
propfind_ctx
*
fctx
,
char
mailboxname
[],
icalproperty_method
method
,
const
char
*
uid
,
const
char
*
organizer
,
const
char
*
attendee
);
extern
int
isched_send
(
struct
caldav_sched_param
*
sparam
,
const
char
*
recipient
,
icalcomponent
*
ical
,
xmlNodePtr
*
xml
);
extern
int
sched_busytime_query
(
struct
transaction_t
*
txn
,
struct
mime_type_t
*
mime
,
icalcomponent
*
comp
);
extern
void
sched_request
(
const
char
*
userid
,
const
char
*
organizer
,
icalcomponent
*
oldical
,
icalcomponent
*
newical
);
extern
void
sched_reply
(
const
char
*
userid
,
const
char
*
attendee
,
icalcomponent
*
oldical
,
icalcomponent
*
newical
);
extern
void
sched_deliver
(
const
char
*
recipient
,
void
*
data
,
void
*
rock
);
extern
xmlNodePtr
xml_add_schedresponse
(
xmlNodePtr
root
,
xmlNsPtr
dav_ns
,
xmlChar
*
recipient
,
xmlChar
*
status
);
extern
int
caladdress_lookup
(
const
char
*
addr
,
struct
caldav_sched_param
*
param
,
const
char
*
myuserid
);
#endif
/* HTTP_CALDAV_SCHED_H */
File Metadata
Details
Attached
Mime Type
text/x-c
Expires
Mon, Apr 6, 1:11 AM (3 d, 3 h ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
64/20/18f4799630f22902220b9168ded9
Default Alt Text
http_caldav_sched.h (6 KB)
Attached To
Mode
R111 cyrus-imapd
Attached
Detach File
Event Timeline