1 | /*************************************** 2 | $Revision: 1.9 $ 3 | 4 | NT (Notifications) module 5 | 6 | Status: NOT REVIEWED, NOT TESTED 7 | 8 | Author(s): Engin Gunduz 9 | 10 | ******************/ /****************** 11 | Modification History: 12 | engin (06/07/2000) Created. 13 | ******************/ /****************** 14 | Copyright (c) 2000 RIPE NCC 15 | 16 | All Rights Reserved 17 | 18 | Permission to use, copy, modify, and distribute this software and its 19 | documentation for any purpose and without fee is hereby granted, 20 | provided that the above copyright notice appear in all copies and that 21 | both that copyright notice and this permission notice appear in 22 | supporting documentation, and that the name of the author not be 23 | used in advertising or publicity pertaining to distribution of the 24 | software without specific, written prior permission. 25 | 26 | THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING 27 | ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS; IN NO EVENT SHALL 28 | AUTHOR BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY 29 | DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN 30 | AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 31 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 32 | ***************************************/ 33 | 34 | 35 | #include <stdarg.h> 36 | #include <stdio.h> 37 | #include <strings.h> 38 | #include <unistd.h> 39 | #include <stdlib.h> 40 | #include <time.h> 41 | #include <glib.h> 42 | #include "UP_util.h" 43 | 44 | typedef struct { 45 | GSList * less_spec; 46 | GSList * exact_match; 47 | GSList * more_spec; 48 | } overlap_routes; 49 | 50 | 51 | extern int tracing; 52 | extern int reading_from_mail; 53 | /* global config variables */ 54 | extern char *mailcmd; 55 | extern char *tmpdir; 56 | extern char *notitxt; 57 | extern char *fwtxt; 58 | extern char *humailbox; 59 | extern char *notimailtxt; 60 | extern char *fwmailtxt; 61 | extern char *mtfwheader; 62 | extern char *mtfwtxt; 63 | extern char *query_host; 64 | extern int query_port; 65 | extern char *cn_subject_add; 66 | extern char *cn_subject_del; 67 | extern char *cn_explain_add; 68 | extern char *cn_explain_del; 69 | extern char *cn_overlap_add; 70 | extern char *cn_overlap_del; 71 | extern char *cno_subject_add; 72 | extern char *cno_subject_del; 73 | extern char *cno_explain_add; 74 | extern char *cno_explain_del; 75 | extern char *cno_overlap_add; 76 | extern char *cno_overlap_del; 77 | 78 | #define ADDITION 0 79 | #define DELETION 1 80 | 81 | char * NT_ntfy_filename_generate( const char * tmpdir, const char * e_mail); 82 | 83 | char * NT_forwd_filename_generate( const char * tmpdir, const char * e_mail); 84 | 85 | char * NT_crossntfy_filename_generate( const char * tmpdir, const char * e_mail); 86 | 87 | void NT_add_to_ntfy( char * filename, char * fmt, ... ); 88 | 89 | void NT_send_ntfy( const char * filename, const char * to_address, const char * mailercommand); 90 | 91 | void NT_log_ntfy( const char * filename, const char * logfilename); 92 | 93 | void NT_delete_ntfy( const char * filename); 94 | 95 | void NT_send_ntfy_list( GHashTable * filehash, char * mailercommand); 96 | 97 | void NT_log_ntfy_list( GHashTable * filehash, char * log_file); 98 | 99 | void NT_delete_ntfy_list( GHashTable * filehash); 100 | 101 | GSList * NT_gather_ntfy_addresses( const char * old_object, const char * new_object); 102 | 103 | void NT_write_all_ntfs(char * old_object, char * new_object, /*const char * notif_log, 104 | const char * forw_log, const char * cross_log,*/ const char * tempdir, 105 | GHashTable * ntfy_hash, GHashTable * forwd_hash, GHashTable * cross_hash, 106 | char * from_address); 107 | 108 | void NT_write_all_frwds(char * old_object, char * new_object, /*const char * notif_log, 109 | const char * forw_log, const char * cross_log,*/ const char * tempdir, 110 | GHashTable * ntfy_hash, GHashTable * forwd_hash, GHashTable * cross_hash, 111 | const char * from_address); 112 | 113 | void NT_forw_create_req(const char * object); 114 |