Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
John McEleney
/
mailutils
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
Commit
5c987eb1
...
5c987eb1e85c30c4eefef7fe8dfda57258bda78d
authored
2001-12-13 03:29:41 +0000
by
Sam Roberts
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
First crack at including wicket_t's ticket, not tested.
1 parent
db7d2457
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
97 additions
and
18 deletions
sieve/sieve.c
sieve/sieve.c
View file @
5c987eb
...
...
@@ -63,7 +63,8 @@ mu_copy_debug_level (const mailbox_t from, mailbox_t to)
}
int
mu_save_to
(
const
char
*
toname
,
message_t
mesg
,
const
char
**
errmsg
)
mu_save_to
(
const
char
*
toname
,
message_t
mesg
,
ticket_t
ticket
,
const
char
**
errmsg
)
{
int
res
=
0
;
mailbox_t
to
=
0
;
...
...
@@ -74,6 +75,29 @@ mu_save_to (const char *toname, message_t mesg, const char **errmsg)
if
(
res
==
ENOENT
)
*
errmsg
=
"no handler for this type of mailbox"
;
if
(
ticket
)
{
folder_t
folder
=
NULL
;
authority_t
auth
=
NULL
;
if
(
!
res
)
{
*
errmsg
=
"mailbox_get_folder"
;
res
=
mailbox_get_folder
(
to
,
&
folder
);
}
if
(
!
res
)
{
*
errmsg
=
"folder_get_authority"
;
res
=
folder_get_authority
(
folder
,
&
auth
);
}
if
(
!
res
)
{
*
errmsg
=
"authority_set_ticket"
;
res
=
authority_set_ticket
(
auth
,
ticket
);
}
}
if
(
!
res
)
{
if
(
message_get_mailbox
(
mesg
,
&
from
)
==
0
)
...
...
@@ -101,6 +125,9 @@ mu_save_to (const char *toname, message_t mesg, const char **errmsg)
}
mailbox_destroy
(
&
to
);
if
(
res
==
0
)
*
errmsg
=
0
;
return
res
;
}
...
...
@@ -135,7 +162,7 @@ sv_errno (int rc)
/** sieve context structures
The object relationship diagram is this, with the names in
[]
The object relationship diagram is this, with the names in
""
being the argument name when the context's are provided as
arguments to callback functions.
...
...
@@ -159,15 +186,19 @@ arguments to callback functions.
typedef
struct
sv_interp_ctx_t
{
/* cmd line options */
int
opt_no_actions
;
int
opt_verbose
;
int
opt_no_run
;
int
opt_watch
;
char
*
opt_mbox
;
char
*
opt_script
;
int
opt_no_actions
;
int
opt_verbose
;
int
opt_no_run
;
int
opt_watch
;
char
*
opt_mbox
;
char
*
opt_tickets
;
char
*
opt_script
;
int
print_mask
;
FILE
*
print_stream
;
int
print_mask
;
FILE
*
print_stream
;
/* Ticket for use by mailbox URLs for implicit authentication. */
ticket_t
ticket
;
/* mailutils debug handle, we need to destroy it */
mu_debug_t
debug
;
...
...
@@ -446,7 +477,7 @@ sv_fileinto (void *ac, void *ic, void *sc, void *mc, const char **errmsg)
if
(
!
i
->
opt_no_actions
)
{
res
=
mu_save_to
(
a
->
mailbox
,
m
->
msg
,
errmsg
);
res
=
mu_save_to
(
a
->
mailbox
,
m
->
msg
,
i
->
ticket
,
errmsg
);
}
if
(
res
&&
!
errmsg
)
*
errmsg
=
strerror
(
res
);
...
...
@@ -652,26 +683,30 @@ sieve_register_mailutils (sieve_interp_t * i)
return
res
;
}
const
char
USAGE
[]
=
"usage: sieve [-hnvcd] [-D mask] [-f mbox] script
\n
"
;
const
char
USAGE
[]
=
"usage: sieve [-hnvcd] [-D mask] [-f mbox] [-t tickets] script
\n
"
;
const
char
HELP
[]
=
" -h print this helpful message and exit.
\n
"
" -n no actions taken, implies -v.
\n
"
" -v verbose, print actions taken, more v's, more verbose.
\n
"
" -c compile script but don't run it against an mbox.
\n
"
" -f the mbox to sieve, defaults to the users spool file.
\n
"
" -t a ticket file to use for authentication to mailboxes.
\n
"
" -d daemon mode, sieve mbox, then go into background and sieve.
\n
"
" new message as they are delivered to mbox.
\n
"
" -D debug mask, see source for meaning (sorry).
\n
"
" -f the mbox to sieve, defaults to the users spool file.
\n
"
;
;
int
main
(
int
argc
,
char
*
argv
[])
{
list_t
bookie
=
0
;
list_t
bookie
=
0
;
mailbox_t
mbox
=
0
;
wicket_t
wicket
=
0
;
sieve_interp_t
*
interp
;
sieve_script_t
*
script
;
sieve_interp_t
*
interp
=
0
;
sieve_script_t
*
script
=
0
;
sv_interp_ctx_t
ic
=
{
0
,
};
sv_script_ctx_t
sc
=
{
0
,
};
...
...
@@ -679,12 +714,12 @@ main (int argc, char *argv[])
size_t
count
=
0
;
int
i
=
0
;
int
res
;
int
res
=
0
;
FILE
*
f
=
0
;
int
opt
;
while
((
opt
=
getopt
(
argc
,
argv
,
"hnvc
df:
D:"
))
!=
-
1
)
while
((
opt
=
getopt
(
argc
,
argv
,
"hnvc
f:t:d
D:"
))
!=
-
1
)
{
switch
(
opt
)
{
...
...
@@ -703,6 +738,9 @@ main (int argc, char *argv[])
case
'f'
:
ic
.
opt_mbox
=
optarg
;
break
;
case
't'
:
ic
.
opt_tickets
=
optarg
;
break
;
case
'd'
:
ic
.
opt_watch
=
1
;
break
;
...
...
@@ -728,6 +766,21 @@ main (int argc, char *argv[])
case
2
:
ic
.
print_mask
|=
SV_PRN_ACT
;
break
;
default:
ic
.
print_mask
=
~
0
;
break
;
}
if
(
ic
.
opt_tickets
)
{
if
((
res
=
wicket_create
(
&
wicket
,
ic
.
opt_tickets
))
!=
0
)
{
fprintf
(
stderr
,
"wicket create <%s> failed: %s
\n
"
,
ic
.
opt_tickets
,
strerror
(
res
));
return
1
;
}
if
((
res
=
wicket_get_ticket
(
wicket
,
&
ic
.
ticket
,
0
,
0
))
!=
0
)
{
fprintf
(
stderr
,
"ticket get failed: %s
\n
"
,
strerror
(
res
));
return
1
;
}
}
registrar_get_list
(
&
bookie
);
list_append
(
bookie
,
path_record
);
...
...
@@ -742,6 +795,7 @@ main (int argc, char *argv[])
ic
.
opt_mbox
?
ic
.
opt_mbox
:
"default"
,
strerror
(
res
));
return
1
;
}
if
(
ic
.
print_mask
&
SV_PRN_MU
)
{
if
((
res
=
mu_debug_create
(
&
ic
.
debug
,
&
ic
)))
...
...
@@ -761,6 +815,31 @@ main (int argc, char *argv[])
}
mailbox_set_debug
(
mbox
,
ic
.
debug
);
}
if
(
ic
.
ticket
)
{
folder_t
folder
=
NULL
;
authority_t
auth
=
NULL
;
if
((
res
=
mailbox_get_folder
(
mbox
,
&
folder
)))
{
fprintf
(
stderr
,
"mailbox_get_folder failed: %s"
,
strerror
(
res
));
return
1
;
}
if
((
res
=
folder_get_authority
(
folder
,
&
auth
)))
{
fprintf
(
stderr
,
"folder_get_authority failed: %s"
,
strerror
(
res
));
return
1
;
}
if
((
res
=
authority_set_ticket
(
auth
,
ic
.
ticket
)))
{
fprintf
(
stderr
,
"authority_set_ticket failed: %s"
,
strerror
(
res
));
return
1
;
}
}
if
(
ic
.
opt_no_actions
)
res
=
mailbox_open
(
mbox
,
MU_STREAM_READ
);
else
...
...
Please
register
or
sign in
to post a comment