1 | #include <stdio.h>
|
---|
2 | #include <stdint.h>
|
---|
3 | #include <stdbool.h>
|
---|
4 | #include <unistd.h>
|
---|
5 | #include <dirent.h>
|
---|
6 |
|
---|
7 | #include "quickmail.h"
|
---|
8 | #include "mailFromGui.h"
|
---|
9 |
|
---|
10 | #define TO "ae-support@oni2.net"
|
---|
11 | #define SMTPSERVER "mail.illy.bz"
|
---|
12 | #define SUBJECT "AE support request"
|
---|
13 | #define SMTPPORT 25
|
---|
14 | #define SMTPUSER NULL
|
---|
15 | #define SMTPPASS NULL
|
---|
16 |
|
---|
17 | static void appendString(char** buffer, unsigned int* bufsize, char* append) {
|
---|
18 | if ((strlen(*buffer) + strlen(append) + 2) >= *bufsize) {
|
---|
19 | unsigned int addon = (strlen(append) > 500 ? strlen(append)+500 : 500);
|
---|
20 | *bufsize += addon;
|
---|
21 |
|
---|
22 | char* temp = malloc(*bufsize);
|
---|
23 |
|
---|
24 | strcpy(temp, *buffer);
|
---|
25 |
|
---|
26 | free(*buffer);
|
---|
27 | *buffer = temp;
|
---|
28 | }
|
---|
29 | strcat(*buffer, append);
|
---|
30 | }
|
---|
31 |
|
---|
32 | static char* buildDirectoryListing(char* path, int level) {
|
---|
33 | unsigned int bufsize = 500;
|
---|
34 | char* strbuf = malloc(bufsize);
|
---|
35 | strbuf[0] = 0;
|
---|
36 |
|
---|
37 | if (level >= 4)
|
---|
38 | return strbuf;
|
---|
39 |
|
---|
40 | struct dirent *dp;
|
---|
41 | DIR *dfd = opendir(path);
|
---|
42 | if(dfd != NULL) {
|
---|
43 | while((dp = readdir(dfd)) != NULL) {
|
---|
44 | if (strcmp(".", dp->d_name) != 0 && strcmp("..", dp->d_name) != 0) {
|
---|
45 | char* name = malloc(strlen(path) + strlen(dp->d_name) + 2);
|
---|
46 | sprintf(name, "%s/%s", path, dp->d_name);
|
---|
47 |
|
---|
48 | appendString(&strbuf, &bufsize, name);
|
---|
49 | strcat(strbuf, "\n");
|
---|
50 |
|
---|
51 | //printf("%2d: %s\n", level, name);
|
---|
52 |
|
---|
53 | char* sub = buildDirectoryListing(name, level+1);
|
---|
54 | appendString(&strbuf, &bufsize, sub);
|
---|
55 | }
|
---|
56 | }
|
---|
57 | closedir(dfd);
|
---|
58 | }
|
---|
59 | return strbuf;
|
---|
60 | }
|
---|
61 |
|
---|
62 | static void sendMail() {
|
---|
63 | char message[500] = "";
|
---|
64 |
|
---|
65 | quickmail_initialize();
|
---|
66 | quickmail mailobj = quickmail_create(emailFrom, SUBJECT);
|
---|
67 | quickmail_add_to(mailobj, TO);
|
---|
68 | if (isCCSelected) {
|
---|
69 | quickmail_add_cc(mailobj, emailFrom);
|
---|
70 | }
|
---|
71 |
|
---|
72 | if (access("AEInstaller/updater_output.log", F_OK) != 0) {
|
---|
73 | strcat(message, "updater_output.log does not exist!\n");
|
---|
74 | }
|
---|
75 | if (access("AEInstaller/AEI-ProxySettings.xml", F_OK) != 0) {
|
---|
76 | strcat(message, "AEI-ProxySettings.xml does not exist!\n");
|
---|
77 | }
|
---|
78 |
|
---|
79 |
|
---|
80 | quickmail_set_body(mailobj, message);
|
---|
81 |
|
---|
82 | quickmail_add_attachment_file(mailobj, "AEInstaller/updater_output.log", "text/plain");
|
---|
83 | quickmail_add_attachment_file(mailobj, "AEInstaller/AEI-ProxySettings.xml", "text/xml");
|
---|
84 |
|
---|
85 | char* dirList = buildDirectoryListing(".", 0);
|
---|
86 | quickmail_add_attachment_memory(mailobj, "DirListing.txt", "text/plain", dirList, strlen(dirList)+1, 1);
|
---|
87 |
|
---|
88 | const char* errmsg;
|
---|
89 | quickmail_set_debug_log(mailobj, stderr);
|
---|
90 | if ((errmsg = quickmail_send(mailobj, SMTPSERVER, SMTPPORT, SMTPUSER, SMTPPASS)) != NULL)
|
---|
91 | fprintf(stderr, "Error sending e-mail: %s\n", errmsg);
|
---|
92 | quickmail_destroy(mailobj);
|
---|
93 | }
|
---|
94 |
|
---|
95 | int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
|
---|
96 | {
|
---|
97 | if (access("AEInstaller/", F_OK) != 0 || access("AEInstaller/AEInstaller2Updater.jar", F_OK) != 0) {
|
---|
98 | MessageBox(NULL,
|
---|
99 | "Please put this program in your Oni/AE folder!",
|
---|
100 | "Invalid location",
|
---|
101 | MB_OK | MB_ICONERROR);
|
---|
102 | } else {
|
---|
103 | mailFromGui(hInstance, nShowCmd);
|
---|
104 |
|
---|
105 | if (isSendSelected)
|
---|
106 | sendMail();
|
---|
107 | }
|
---|
108 |
|
---|
109 | return EXIT_SUCCESS;
|
---|
110 | }
|
---|
111 |
|
---|