// initialize it with known data..
// that should wipe out dupes.
- var matches = this.execute("SELECT count(id) as nid FROM Attachment WHERE id = %d".printf(
+ var matches = this.execute("SELECT id FROM Attachment WHERE id = %d".printf(
int.parse(sid)));
- if (matches !="") {
+ if (matches == "") {
// our old mailfort code deleted the crap out of old records...
// if this occurs we will need to create the record again..
this.fix_deleted_attachment_db(int.parse(sid),attachment);
var filename = attachment.get_header("X-strip-content-name");
var file_path = attachment.get_header("X-strip-path");
- var content_type = attachment.get_header("X-strip-content-type");
-
- GLib.error("GOT FN: %s | PATH: %s | CT: %s", filename, file_path, content_type);
-
- /*
- this.query("""
- INSERT INTO Attachments
- (id, exim_msg?, chksum, filesize)
- values
- (
- %d, '%s', '%s', '%s', %d
- )
-
+ var fn = StripApplication.opt_target_path + "/" + file_path;
+ var chksum = this.md5_file(fn);
+ var mime_type = attachment.get_header("X-strip-content-type");
+
+ var fileinfo = File.new_for_path(fn)
+ .query_info(GLib.FileAttribute.STANDARD_SIZE+","+GLib.FileAttribute.TIME_MODIFIED
+ ,GLib.FileQueryInfoFlags.NONE,null);
+ var file_size = (int) fileinfo.get_size();
+
+
+
+ this.real_query(-1, """
+
+
+ INSERT INTO Attachment (
+ id,
+
+ msgid ,
+ queue_id ,
+ mime_filename ,
+ mime_type,
+
+ stored_filename ,
+ mime_charset ,
+ mime_cdisp ,
+ mime_is_cover ,
+
+ mime_is_multi ,
+ mime_is_mail,
+ mime_size ,
+ filesize,
+
+ checksum,
+ created
+
+ ) VALUES (
+ %d, -- id
+
+ '%s' , -- msgid
+ 0,
+ '%s' , -- filename
+ '%s', -- mimetype
+
+ '%s', -- stored file anme
+ '', -- charset
+ 'attachment',
+ 0,
+ 0,
+ 0,
+ %d, -- size
+ %d, -- size
+
+ '%s', -- checkum
+ '%s' -- created:
+ )
+
+
""".printf(
id,
this.mysql_escape(this.active_message_exim_id),
+ this.mysql_escape(filename),
+ this.mysql_escape(mime_type),
+ this.mysql_escape(file_path),
+ file_size,
+ file_size,
this.mysql_escape(chksum),
- this.mysql_escape(mime_filename),
- int.parse(filesize)
- ));
- */
+ this.created_date
+ ));
+ // this is done to fix the queue_id or maillog_id ??
+ this.query("""
+ SELECT attachment_update(
+ %d, -- in_id INT(11),
+ '', -- mime type
+ '%s', -- in_created DATETIME,
+ '%s' -- in_mailfort_sig varchar(64)
+ )
+ """.printf(
+ id,
+ this.created_date,
+ this.mysql_escape(this.active_message_x_mailfort_sig)
+
+ )
+ );
+ // GLib.error("added attachment?");
}
}
public string query(string str)
{
- return this.real_query(true, str);
+ return this.real_query(1, str);
}
public string execute(string str)
{
- return this.real_query(false, str);
+ return this.real_query(0, str);
}
- public string real_query(bool need_return, string str)
+ /**
+ * need_return
+ 0 = no
+ 1 = yes
+ -1 = don't try.
+ */
+ public string real_query(int need_return, string str)
{
GLib.debug("Before Query : %u : %s\n", this.mysql.errno(), this.mysql.error());
Posix.exit(1);
}
-
+ if (need_return == -1) {
+ return "";
+ }
var rs = mysql.use_result();
//GLib.debug("got %d rows", (int) rs.num_rows());
ret = row[0];
}
- if (!need_return) {
+ if (need_return == 0) {
if (StripApplication.opt_debug_sql) {
GLib.debug("got %s", got_row ? "=Nothing=" : ret);
}