gsub and regexes on binary files...

K

Kyle Schmitt

I'm having a few issues with gsubbing a regex on a binary file.
With all text, this seems to work great, but with the binary junk in a
file, only some of the instances are replaced, not all.

What this script is supposed to do, is pull mail message out of
quarantine, change who it's going to, and put it back in postfix's
queue to send it on its way.

This is a super-simplified version of the code in question (just
in-case you're wondering, if you really write something like this, you
need to change the ownership and permission of the resulting file,
otherwise postfix won't pick it up).

#!/usr/bin/ruby
message_path="/var/spool/MailScanner/quarantine/20080111/ABCDEFG"
postfix_outgoing_path="/var/spool/postfix/incoming/A/ABCDEFG"
message=File.open(message_path,"rb"){|f| f.read()}
message.gsub(/[a-z][a-z0-9]*@candycompany.foo/i,"(e-mail address removed)")
outgoing_message=File.open(postfix_outgoing_path,"wb"){|f| f.write(message)}

Err. Since the real version of this script is rather lengthy and a
little ugly, mostly due to the command-line-option parsing, anyone
have a suggestion on a good CLI library to use :) my home-grown
attempt is functional at best...

Thanks,
Kyle
 
A

Alex LeDonne

I'm having a few issues with gsubbing a regex on a binary file.
With all text, this seems to work great, but with the binary junk in a
file, only some of the instances are replaced, not all.

Could you send an example where the regex failed? Then we can try to
figure out what's different about the failure case.

-A


What this script is supposed to do, is pull mail message out of
quarantine, change who it's going to, and put it back in postfix's
queue to send it on its way.

This is a super-simplified version of the code in question (just
in-case you're wondering, if you really write something like this, you
need to change the ownership and permission of the resulting file,
otherwise postfix won't pick it up).

#!/usr/bin/ruby
message_path="/var/spool/MailScanner/quarantine/20080111/ABCDEFG"
postfix_outgoing_path="/var/spool/postfix/incoming/A/ABCDEFG"
message=File.open(message_path,"rb"){|f| f.read()}
message.gsub(/[a-z][a-z0-9]*@candycompany.foo/i,"(e-mail address removed)")
outgoing_message=File.open(postfix_outgoing_path,"wb"){|f| f.write(message)}

Err. Since the real version of this script is rather lengthy and a
little ugly, mostly due to the command-line-option parsing, anyone
have a suggestion on a good CLI library to use :) my home-grown
attempt is functional at best...

Thanks,
Kyle
 
K

Kyle Schmitt

I'll grab one off of the machine tomorrow. Due to some of the
security stuff, you can only get console access to that box. Ugh.

Thanks
--Kyle

I'm having a few issues with gsubbing a regex on a binary file.
With all text, this seems to work great, but with the binary junk in a
file, only some of the instances are replaced, not all.

Could you send an example where the regex failed? Then we can try to
figure out what's different about the failure case.

-A



What this script is supposed to do, is pull mail message out of
quarantine, change who it's going to, and put it back in postfix's
queue to send it on its way.

This is a super-simplified version of the code in question (just
in-case you're wondering, if you really write something like this, you
need to change the ownership and permission of the resulting file,
otherwise postfix won't pick it up).

#!/usr/bin/ruby
message_path="/var/spool/MailScanner/quarantine/20080111/ABCDEFG"
postfix_outgoing_path="/var/spool/postfix/incoming/A/ABCDEFG"
message=File.open(message_path,"rb"){|f| f.read()}
message.gsub(/[a-z][a-z0-9]*@candycompany.foo/i,"(e-mail address removed)")
outgoing_message=File.open(postfix_outgoing_path,"wb"){|f| f.write(message)}

Err. Since the real version of this script is rather lengthy and a
little ugly, mostly due to the command-line-option parsing, anyone
have a suggestion on a good CLI library to use :) my home-grown
attempt is functional at best...

Thanks,
Kyle
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads


Members online

Forum statistics

Threads
473,995
Messages
2,570,226
Members
46,815
Latest member
treekmostly22

Latest Threads

Top