iamjhlee has asked for the wisdom of the Perl Monks concerning the following question:

Hello, perl monks! We are currently using Filter to protect our code of cgi, it's working good if fastcgi, but if I use mod_perl, it will get the error says (http error log):

(Tue Mar 20 17:13:01 2001) (error) Unrecognized character \033 at /home/httpd/cgibin/replyForm.cgi

which is filtered by Filter module, does any one has successful experience of this kind?

mod_perl seems not to filter the code first... how can I solve this?

Replies are listed 'Best First'.
Re: How can I protect my code?
by arturo (Vicar) on Mar 20, 2001 at 18:48 UTC

    I'll spare you the gnashing of the teeth over why you're doing this, since it's causing problems. One thing you need to know about scripts running under Apache::Registry (which I assume is what you're doing) is that they run in a different environment than regular CGI scripts. Basically, your script is turned into a subroutine, which can often have unforeseen side-effects. So, in no particular order, here are some things you might try:

    • use Apache::PerlRun instead of Apache::Registry
      • Apache::PerlRun takes another approach, but I'm not sure it's different in the right way to let you use the filter module. But you might as well try it.
    • Load the Filter::Util module in your Apache perl startup file
      • I doubt this will help either, but if your source filter isn't being applied, maybe the problem is that it's being applied too late in the process.
    • Similarly, you might look into Apache::RegistryLoader, which loads and compiles Apache::Registry scripts at server startup.
      • At best, this would probably be just a piece of the puzzle. If your scripts aren't working now, then compiling them, unchanged, at server startup probably won't help either.

    Those are things to try, and you might take a look at this FAQ as well, but perhaps some mod_perl guru will have more definitive things to say. I think you'll really learn about the internals of mod_perl before you're done if you proceed with this project!

    HTH

    Philosophy can be made out of anything. Or less -- Jerry A. Fodor

      Hi, arturo: Actually these still don't work #_#, but thanks a lot for your help, and this does help me discover more about mod_perl.. To protecting code is company policy, I guess the main reason is to protecting our product in commercial use.. Best regards, Jerry