DZone Snippets is a public source code repository. Easily build up your personal collection of code snippets, categorize them with tags / keywords, and share them with the world

Snippets

  • submit to reddit

Recent Snippets

                    If you use vi to edit files, it leaves your backup copies with tildes at the end.  Adding this to your .htaccess file (or virtual host directive in your apache conf) stops people being able to access them.

(Requires mod_rewrite)

RewriteEngine on
RewriteRule  ~$   - [F]

                
                    
require 'digest/sha1'
sha1 = Digest::SHA1.hexdigest('something secret')
                
                    I put this in 
profile.d/
:

 ####################
#limit amount of virtula memory, 
#CPU time and number of processes
#used by normal users.
#
if [ $UID -ge 500 ]
then
    ulimit -m 1000000
    ulimit -v 1000000
    ulimit -u 150
fi
#####################
 

With this script, I am able to survive http://www.bigbold.com/snippets/posts/show/78                
                    A PHP cgi binary compiled with fcgi support

> /usr/local/www/cgi-bin/php5-fcgi -v
PHP 5.0.3 (cgi-fcgi) (built: Dec 30 2004 22:44:32)

Central config in httpd.conf

<IfModule mod_fastcgi.c>
FastCgiIpcDir /usr/local/www/fcgi_ipc/tmp
AddHandler fastcgi-script .fcgi
FastCgiSuexec /usr/local/sbin/suexec
FastCgiConfig -singleThreshold 100 -killInterval 300 -autoUpdate -idle-timeout 240 -pass-header HTTP_AUTHORIZATION
</IfModule>
<Location /php-fastcgi/>
Options ExecCGI        
SetHandler fastcgi-script
</Location>

In a virtual host

SuexecUserGroup ${USER} ${GROUP}
ScriptAlias /php-fastcgi/ ${HOME}/php-fastcgi/ 
AddType application/x-httpd-fastphp .php
Action application/x-httpd-fastphp /php-fastcgi/php5-fcgi

And then the ${HOME}/php-fastcgi/php5-fcgi wrapper	

#!/bin/sh 
PHPRC="/usr/local/etc" 
export PHPRC 
PHP_FCGI_CHILDREN=8 
export PHP_FCGI_CHILDREN 
PHP_FCGI_MAX_REQUESTS=5000 
export PHP_FCGI_MAX_REQUESTS 
exec /usr/local/www/cgi-bin/php5-fcgi 

The PHPRC environment sets the directory where php.ini is to be found                
                    a generic object type thing for perl where you can use setanything and getanything to set and get properties via the AUTOLOAD method.
package thing;

use strict;

sub new {
	my %self;
	my ($class,@rest) = @_;
	unless ($#rest%2) { die "Odd parameter count\n"}
	for (my $k=0; $k<@rest; $k+=2) {
		my $wotsit = lc($rest[$k]);
		$wotsit =~ s/-//;
		$self{$wotsit} = $rest[$k+1];
		}
	bless \%self,$class;
}

sub AUTOLOAD {
        my ($where,$val) = @_;
        our $AUTOLOAD;
        $AUTOLOAD =~ s/.*://;
        my ($dirn,$what) = ($AUTOLOAD =~ /(...)(.*)/);
        if ($dirn eq "get") {
                return $$where{lc($what)};
        } elsif ($dirn eq "set") {
                $$where{lc($what)} = $val;
        }
        return 1;
}

1;


Here's a quick example of usage
use thing

$house = new thing("type","building","rooms",12,"foundations", "yes");

print $house -> gettype();
$house -> settype("tree");
print " " . $house -> gettype();

                
                    Suppose that you have a draggable list as described at http://tool-man.org/examples/sorting.html. To send that list from a form, do

function listToXml(){
	var vList = document.getElementById('phonetic');
        var vLen  = vList.childNodes.length;
	var vXml  = "<ul>";
        for(var i = 0; i < vLen - 1; i++){
	  if(vList.childNodes[i].innerHTML){
	    vXml = vXml + '<li>' + vList.childNodes[i].innerHTML + '</li>';
	  }
        }
	vXml = vXml + '</ul>';
	document.myform.listfield.value = vXml;
}

...

	<ul id="phonetic" class="sortable boxy" style="margin-left: 1em;">
		<li>alpha</li>
		<li>bravo</li>
		<li>charlie</li>
		<li>delta</li>
		<li>echo</li>
		<li>foxtrot</li>
        </ul>

<form name="myform">
<input type="text" name="listfield" value="" size="60">
<input type="button" value="submit2" name="submit2" onClick="listToXml()">
</form>

                
                    <b>Warning from admin: Some users have reported this snippet LOCKED UP THEIR COMPUTERS. Do NOT run it unless you accept this as a possible consequence!!</b>

Guaranteed to work on mandrake, even at security level 4 (5 being the highest).

dfdeshom@localhost$ :(){ :|:& };:
                
                    Handy shorthand syntax for php. From: http://www.tech-recipes.com/php_programming_tips288.html


A compact (if cryptic) shorthand is useful: 

echo "var is ".($var < 0 ? "negative" : "positive"); 

is equivalent to: 

echo "var is "; 
if ($var < 0) 
    echo "negative"; 
else 
    echo "positive"; 

The shorthand can be considered (expression ? true_value : false_value) where 'expression' is evaluated and, if true, the 'true_value' is returned, otherwise the 'false_value' is returned.



                
                    
<?php
// simple script to download mp3's from a password protected site using a playlist file 
//remote username
$username = 'username';
// remote password
$password = 'password';

// m3u file
$get = file("file.m3u"); // m3u (playlist) file contains paths to  remote files

foreach($get as $url){
        $trim_url = rtrim($url); // trim newline
        $explode_url = explode("//", $trim_url); //explode url so you can insert username:password for wget
        $fixed_url = 'http://' . $username . ':' . $password . '@' . $explode_url[1];

        exec("wget $fixed_url"); // downloads to current directory
}



?>
                
                    I run 
./blacklist_builder.py > .htaccess 
 every week or so... 
 """
    blacklist_builder.py
    Get the entries from a blacklist
    and print them to standard output
    """
  
    latest = urllib2.urlopen("http://www.unknowngenius.com/blog/blacklist/")
    
     str = ''
    
     begin = "RewriteCond %{HTTP_REFERER} ^.*"
     for line in latest:
         str+= begin+ re.sub('(\s#:url:|\s#:regex-url:|\s#:rbl:)',
                                   ".*$ [OR]\n",line)
            
        return str

Output looks like this...
RewriteCond %{HTTP_REFERER} ^.*zpics.net.*$ [OR]
RewriteCond %{HTTP_REFERER} ^.*zt148.com.*$ [OR]
RewriteCond %{HTTP_REFERER} ^.*zum-bestpreis.de.*$ [OR]
RewriteCond %{HTTP_REFERER} ^.*zxyzxy.com.*$ [OR]
RewriteCond %{HTTP_REFERER} ^.*fondos-pantalla..*$ [OR]
RewriteCond %{HTTP_REFERER} ^.*.kucko.com.*$ [OR]
RewriteCond %{HTTP_REFERER} ^.*.gogof-ck.com.*$ [OR]

 .....