commit a78f132522f60debce045440c1074720148135db
parent f88db27b9ff5c1d50fb7e1151ada4d095fa6293d
Author: parazyd <parazyd@dyne.org>
Date: Sat, 10 Mar 2018 12:13:46 +0100
Some improvements.
Diffstat:
5 files changed, 35 insertions(+), 21 deletions(-)
diff --git a/bin/rpsieve b/bin/rpsieve
@@ -4,9 +4,10 @@ export PATH="/usr/local/bin:/usr/bin:/bin"
profile="${RPPROFILE:-$HOME/.rp/default}"
usage() {
- printf " * usage: $(basename $0) [-e] [-u]\n"
+ printf " * usage: $(basename $0) [-e] [-u] [-v]\n"
printf "\t-e: edit filters.txt before continuing\n"
printf "\t-u: upload filters.sieve when done\n"
+ printf "\t-v: be verbose\n"
exit 1
}
@@ -18,6 +19,9 @@ for i in $@; do
-u)
upload=true
;;
+ -v)
+ verbose="-v"
+ ;;
*)
usage
;;
@@ -39,6 +43,7 @@ ab="$profile/whitelist.abook"
exit 1
}
+echo " * generating sieve rules"
cat <<EOF > "$fs"
# mailbox supports fileinto :create
require ["fileinto","mailbox","variables"];
@@ -52,8 +57,8 @@ if header :contains "Sender" "mailman-bounce" {
# own filters
EOF
-rohrpost rpsieve < "$ft" >> "$fs"
-rohrpost rpsieve < "$ab" >> "$fs"
+rohrpost rpsieve $verbose < "$ft" >> "$fs"
+rohrpost rpsieve $verbose < "$ab" >> "$fs"
cat <<EOF >> "$fs"
# spam
diff --git a/rohrpost.c b/rohrpost.c
@@ -76,6 +76,5 @@ int main(int argc, char *argv[]) {
}
usage();
-
return 1;
}
diff --git a/sieve.c b/sieve.c
@@ -10,6 +10,7 @@
#include "ind.h"
char *argv0;
+int vflag;
int gento(char *line) {
char *type, *email, *what, *mbox;
@@ -29,7 +30,8 @@ int gento(char *line) {
printf("if header :contains [ \"To\",\"Cc\" ] \"%s\"", email);
printf(" { fileinto :create \"%s\"; stop; }\n", mbox);
- info("to: %s -> %s\n", email, mbox);
+ if (vflag)
+ info("to: %s -> %s\n", email, mbox);
return 0;
}
@@ -52,7 +54,8 @@ int genfrom(char *line) {
printf("if header :contains \"From\" \"%s\"", email);
printf(" { fileinto :create \"%s\"; stop; }\n", mbox);
- info("from: %s -> %s\n", email, mbox);
+ if (vflag)
+ info("from: %s -> %s\n", email, mbox);
return 0;
}
@@ -67,7 +70,8 @@ int genabook(char *line) {
printf("if header :contains \"From\" \"%s\"", email);
printf(" { fileinto :create \"INBOX\"; stop; }\n");
- info("from: %s -> INBOX\n", email);
+ if (vflag)
+ info("from: %s -> INBOX\n", email);
return 0;
}
@@ -76,20 +80,28 @@ int sievemain(int argc, char *argv[]) {
int c = 0;
char l[MAXLINESIZE];
+ ARGBEGIN {
+ case 'v':
+ vflag = 1;
+ break;
+ default:
+ return 1;
+ } ARGEND;
+
while (fgets(l, sizeof(l), stdin)) {
c++;
strtok(l, "\n");
if (!strncmp("to", l, 2)) {
if (gento(l))
- warn("invalid line: %d\n", c);
+ warn("invalid line %d: %s\n", c, l);
}
else if (!strncmp("from", l, 4)) {
if (genfrom(l))
- warn("invalid line: %d\n", c);
-
+ warn("invalid line %d: %s\n", c, l);
}
else if (!strncmp("email=", l, 6)) {
- genabook(l);
+ if (genabook(l))
+ warn("invalid line %d: %s\n", c, l);
}
}
printf("\n");
diff --git a/util.c b/util.c
@@ -38,12 +38,12 @@ int randint(int max) {
return ret % max;
}
-char *randstring(char *str, size_t size) {
+char *randstring(char *str, int size) {
if (size) {
size--;
- for (size_t n = 0; n < size; n++) {
- int key = randint(sizeof(be-1));
- str[n] = be[key];
+ for (int i = 0; i < size; i++) {
+ int key = randint(strlen(be));
+ str[i] = be[key];
}
str[size] = '\0';
}
@@ -60,9 +60,9 @@ int genmsgid(void) {
}
int genmimeb(void) {
- char buf[5];
+ char buf[6];
randstring(buf, sizeof(buf));
- printf("%s-FuNkADeLiC\n", buf);
+ printf("%sFuNkADeLiC\n", buf);
return 0;
}
@@ -112,9 +112,7 @@ getfprend:
}
int utilmain(int argc, char *argv[]) {
- char *runcmd;
-
- runcmd = NULL;
+ char *runcmd = NULL;
ARGBEGIN {
case 'e':
diff --git a/util.h b/util.h
@@ -9,7 +9,7 @@
int utilmain(int argc, char *argv[]);
int *randint(int max);
-char *randstring(char *str, size_t size);
+char *randstring(char *str, int size);
int genmsgid(void);
int genmimeb(void);