MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame^] | 1 | // MorgenGrauen MUDlib |
| 2 | // |
| 3 | // mail.c |
| 4 | // |
| 5 | // $Id: mail.c 6081 2006-10-23 14:12:34Z Zesstra $ |
| 6 | |
| 7 | /* |
| 8 | * VERSION 1.0 |
| 9 | * udp module for the UDP MAIL system (Author: Alvin@Sushi) |
| 10 | * Requires INETD V0.60 or higher (INETD Author: Nostradamus@Zebedee) |
| 11 | */ |
| 12 | |
| 13 | #include <udp.h> |
| 14 | #include <udp_mail.h> |
| 15 | |
| 16 | /* |
| 17 | #define DEBUG(msg) if (find_player("hate")) tell_object(find_player("hate"),msg) |
| 18 | */ |
| 19 | #undef DEBUG |
| 20 | #define DEBUG(x) |
| 21 | |
| 22 | void udp_mail(mapping data) |
| 23 | { |
| 24 | DEBUG(sprintf("UDPMAIL %O\n",data)); |
| 25 | if(!member(data,RECIPIENT) || !data[RECIPIENT]) |
| 26 | { |
| 27 | log_file("INETD","Invalid udp_mail packet. No Recipient.\n"); |
| 28 | return; |
| 29 | } |
| 30 | |
| 31 | if(!LOCAL_MAILER->query_recipient_ok(data[RECIPIENT])) |
| 32 | { |
| 33 | INETD->_send_udp(data[NAME], ([ |
| 34 | REQUEST: REPLY, |
| 35 | RECIPIENT: data[SENDER], |
| 36 | UDPM_STATUS: UDPM_STATUS_UNKNOWN_PLAYER, |
| 37 | UDPM_WRITER: data[UDPM_WRITER], |
| 38 | UDPM_SPOOL_NAME: data[UDPM_SPOOL_NAME], |
| 39 | ID: data[ID], |
| 40 | DATA: "Reason: Unknown player \""+capitalize(data[RECIPIENT])+ |
| 41 | "\"\n\nINCLUDED MESSAGE FOLLOWS :-\n\n"+ |
| 42 | "Subject: "+data[UDPM_SUBJECT]+"\n"+data[DATA] |
| 43 | ]) ); |
| 44 | |
| 45 | return; |
| 46 | } |
| 47 | |
| 48 | LOCAL_MAILER->deliver_mail( |
| 49 | data[RECIPIENT], /* To */ |
| 50 | data[UDPM_WRITER]+"@"+data[NAME], /* From */ |
| 51 | data[UDPM_SUBJECT], /* Subj */ |
| 52 | data[DATA] /* Mail Body */ |
| 53 | ); |
| 54 | |
| 55 | INETD->_send_udp(data[NAME], ([ |
| 56 | REQUEST: REPLY, |
| 57 | RECIPIENT: data[SENDER], |
| 58 | UDPM_STATUS: UDPM_STATUS_DELIVERED_OK, |
| 59 | UDPM_WRITER: data[UDPM_WRITER], |
| 60 | UDPM_SPOOL_NAME: data[UDPM_SPOOL_NAME], |
| 61 | ID: data[ID], |
| 62 | DATA: data[RECIPIENT] |
| 63 | ]) ); |
| 64 | } |