<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: server code</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Sat, 26 Jul 2008 15:37:01 GMT</pubDate>
    <description>DZone Snippets: server code</description>
    <item>
      <title>Push your public key to a server</title>
      <link>http://snippets.dzone.com/posts/show/5730</link>
      <description>If you've already created your ssh keys locally do this to push the public key to a server so you won't have to login to the server everytime you ssh or cap deploy. &lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt; cat .ssh/id_rsa.pub | ssh deploy@myserver.com "cat &gt;&gt; .ssh/authorized_keys2"&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Mon, 07 Jul 2008 11:42:26 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5730</guid>
      <author>humblefrog (Steve)</author>
    </item>
    <item>
      <title>Sample .htaccess</title>
      <link>http://snippets.dzone.com/posts/show/5563</link>
      <description>###############################################################################&lt;br /&gt;&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;#    Copyright (c) 2006 SeQuential Partners. All rights reserved.   &lt;br /&gt;&lt;br /&gt;#    This file and code/text contained herein is the property of SeQuential &lt;br /&gt;&lt;br /&gt;#	Partners, Indianapolis, IN. It may not be reprinted or published&lt;br /&gt;&lt;br /&gt;#  without written consent.  You are free to use for personal use!&lt;br /&gt;&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;#  Latest:      http://www.askapache.com/htaccess.txt                      &lt;br /&gt;&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;###############################################################################&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;### Section 1: Main Settings and Options&lt;br /&gt;&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;# Options: ALL,ExecCGI,FollowSymLinks,Includes,IncludesNOEXEC,Indexes&lt;br /&gt;&lt;br /&gt;# MultiViews, SymLinksIfOwnerMatch.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;# Main Defaults.&lt;br /&gt;&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;Options +ExecCGI -Indexes&lt;br /&gt;&lt;br /&gt;DirectoryIndex index.html index.htm index.php&lt;br /&gt;&lt;br /&gt;DefaultLanguage en-US&lt;br /&gt;&lt;br /&gt;AddDefaultCharset UTF-8&lt;br /&gt;&lt;br /&gt;ServerSignature Off&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;### ENVIRONMENT VARIABLES ###&lt;br /&gt;&lt;br /&gt;#SetEnv PHPRC /webroot/includes&lt;br /&gt;&lt;br /&gt;#SetEnv TZ America/Indianapolis&lt;br /&gt;&lt;br /&gt;#SetEnv SERVER_ADMIN webmaster@domain.tld&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;### MIME TYPES ###&lt;br /&gt;&lt;br /&gt;AddType video/x-flv .flv&lt;br /&gt;&lt;br /&gt;AddType application/x-shockwave-flash .swf&lt;br /&gt;&lt;br /&gt;AddType image/x-icon .ico&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;### FORCE FILE TO DOWNLOAD INSTEAD OF APPEAR IN BROWSER ###&lt;br /&gt;&lt;br /&gt;#-&gt; http://www.htaccesselite.com/htaccess/addtype-addhandler-action-vf6.html&lt;br /&gt;&lt;br /&gt;#AddType application/octet-stream .mov .mp3 .zip &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;### ERRORDOCUMENTS ###&lt;br /&gt;&lt;br /&gt;ErrorDocument 404 "404 error"&lt;br /&gt;&lt;br /&gt;ErrorDocument 400 "400 error"&lt;br /&gt;&lt;br /&gt;ErrorDocument 401 "401 error"&lt;br /&gt;&lt;br /&gt;ErrorDocument 403 "403 error"&lt;br /&gt;&lt;br /&gt;ErrorDocument 405 "405 error"&lt;br /&gt;&lt;br /&gt;ErrorDocument 406 "406 error"&lt;br /&gt;&lt;br /&gt;ErrorDocument 409 "409 error"&lt;br /&gt;&lt;br /&gt;ErrorDocument 413 "413 error"&lt;br /&gt;&lt;br /&gt;ErrorDocument 414 "414 error"&lt;br /&gt;&lt;br /&gt;ErrorDocument 500 "500 error"&lt;br /&gt;&lt;br /&gt;ErrorDocument 501 "501 error"&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;#=============================================================================#&lt;br /&gt;&lt;br /&gt;#          SCRIPTING, ACTION, ADDHANDLER&lt;br /&gt;&lt;br /&gt;#=============================================================================#&lt;br /&gt;&lt;br /&gt;# Handlers be builtin, included in a module, or added with Action directive&lt;br /&gt;&lt;br /&gt;# default-handler: default, handles static content (core)&lt;br /&gt;&lt;br /&gt;#      send-as-is: Send file with HTTP headers (mod_asis)&lt;br /&gt;&lt;br /&gt;#      cgi-script: treat file as CGI script (mod_cgi)&lt;br /&gt;&lt;br /&gt;#       imap-file: Parse as an imagemap rule file (mod_imap)&lt;br /&gt;&lt;br /&gt;#     server-info: Get server config info (mod_info)&lt;br /&gt;&lt;br /&gt;#   server-status: Get server status report (mod_status)&lt;br /&gt;&lt;br /&gt;#        type-map: type map file for content negotiation (mod_negotiation)&lt;br /&gt;&lt;br /&gt;#  fastcgi-script: treat file as fastcgi script (mod_fastcgi) &lt;br /&gt;&lt;br /&gt;###########&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;### PARSE AS CGI ###&lt;br /&gt;&lt;br /&gt;#AddHandler cgi-script .cgi .pl .spl&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;### RUN PHP AS APACHE MODULE ###&lt;br /&gt;&lt;br /&gt;#AddHandler application/x-httpd-php .php .htm&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;### RUN PHP AS CGI ###&lt;br /&gt;&lt;br /&gt;#AddHandler php-cgi .php .htm&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;### CGI PHP WRAPPER FOR CUSTOM PHP.INI ###&lt;br /&gt;&lt;br /&gt;#AddHandler phpini-cgi .php .htm&lt;br /&gt;&lt;br /&gt;#Action phpini-cgi /cgi-bin/php5-custom-ini.cgi&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;### FAST-CGI SETUP WITH PHP-CGI WRAPPER FOR CUSTOM PHP.INI ###&lt;br /&gt;&lt;br /&gt;#AddHandler fastcgi-script .fcgi&lt;br /&gt;&lt;br /&gt;#AddHandler php-cgi .php .htm&lt;br /&gt;&lt;br /&gt;#Action php-cgi /cgi-bin/php5-wrapper.fcgi&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;### CUSTOM PHP CGI BINARY SETUP ###&lt;br /&gt;&lt;br /&gt;#AddHandler php-cgi .php .htm&lt;br /&gt;&lt;br /&gt;#Action php-cgi /cgi-bin/php.cgi&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;### PROCESS SPECIFIC FILETYPES WITH CGI-SCRIPT ###&lt;br /&gt;&lt;br /&gt;#Action image/gif /cgi-bin/img-create.cgi&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;### CREATE CUSTOM HANDLER FOR SPECIFIC FILE EXTENSIONS ###&lt;br /&gt;&lt;br /&gt;#AddHandler custom-processor .ssp&lt;br /&gt;&lt;br /&gt;#Action custom-processor /cgi-bin/myprocessor.cgi&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;#=============================================================================#&lt;br /&gt;&lt;br /&gt;#          HEADERS, CACHING AND OPTIMIZATION&lt;br /&gt;&lt;br /&gt;#=============================================================================#&lt;br /&gt;&lt;br /&gt;#-&gt; http://www.htaccesselite.com/htaccess/cache-control-http-headers-vt65.html&lt;br /&gt;&lt;br /&gt;#      300   5 M&lt;br /&gt;&lt;br /&gt;#     2700  45 M&lt;br /&gt;&lt;br /&gt;#     3600   1 H&lt;br /&gt;&lt;br /&gt;#    54000  15 H&lt;br /&gt;&lt;br /&gt;#    86400   1 D&lt;br /&gt;&lt;br /&gt;#   518400   6 D&lt;br /&gt;&lt;br /&gt;#   604800   1 W&lt;br /&gt;&lt;br /&gt;#  1814400   3 W&lt;br /&gt;&lt;br /&gt;#  2419200   1 M&lt;br /&gt;&lt;br /&gt;# 26611200  11 M&lt;br /&gt;&lt;br /&gt;# 29030400   1 Y (never expire)&lt;br /&gt;&lt;br /&gt;###########&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;#### HEADER CACHING ####&lt;br /&gt;&lt;br /&gt;#-&gt; http://www.htaccesselite.com/htaccess/caching-using-header-vt2.html&lt;br /&gt;&lt;br /&gt;#&lt;FilesMatch "\.(flv|gif|jpg|jpeg|png|ico)$"&gt;&lt;br /&gt;&lt;br /&gt;#   Header set Cache-Control "max-age=2592000"&lt;br /&gt;&lt;br /&gt;#&lt;/FilesMatch&gt;&lt;br /&gt;&lt;br /&gt;#&lt;FilesMatch "\.(js|css|pdf|swf)$"&gt;&lt;br /&gt;&lt;br /&gt;#   Header set Cache-Control "max-age=604800"&lt;br /&gt;&lt;br /&gt;#&lt;/FilesMatch&gt;&lt;br /&gt;&lt;br /&gt;#&lt;FilesMatch "\.(html|htm|txt)$"&gt;&lt;br /&gt;&lt;br /&gt;#   Header set Cache-Control "max-age=600"&lt;br /&gt;&lt;br /&gt;#&lt;/FilesMatch&gt;&lt;br /&gt;&lt;br /&gt;#&lt;FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$"&gt;&lt;br /&gt;&lt;br /&gt;#   Header unset Cache-Control&lt;br /&gt;&lt;br /&gt;#&lt;/FilesMatch&gt;&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;### ALTERNATE EXPIRES CACHING ###&lt;br /&gt;&lt;br /&gt;#-&gt; htaccesselite.com/d/use-htaccess-to-speed-up-your-site-discussion-vt67.html&lt;br /&gt;&lt;br /&gt;#ExpiresActive On&lt;br /&gt;&lt;br /&gt;#ExpiresDefault A604800&lt;br /&gt;&lt;br /&gt;#ExpiresByType image/x-icon A2592000&lt;br /&gt;&lt;br /&gt;#ExpiresByType application/x-javascript A2592000&lt;br /&gt;&lt;br /&gt;#ExpiresByType text/css A2592000&lt;br /&gt;&lt;br /&gt;#ExpiresByType text/html A300&lt;br /&gt;&lt;br /&gt;#&lt;FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$"&gt;&lt;br /&gt;&lt;br /&gt;#   ExpiresActive Off&lt;br /&gt;&lt;br /&gt;#&lt;/FilesMatch&gt;&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;### META HTTP-EQUIV REPLACEMENTS ###&lt;br /&gt;&lt;br /&gt;#&lt;FilesMatch "\.(html|htm|php)$"&gt;&lt;br /&gt;&lt;br /&gt;#   Header set imagetoolbar "no"&lt;br /&gt;&lt;br /&gt;#&lt;/FilesMatch&gt;&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;#=============================================================================#&lt;br /&gt;&lt;br /&gt;#          REWRITES AND REDIRECTS&lt;br /&gt;&lt;br /&gt;#=============================================================================#&lt;br /&gt;&lt;br /&gt;# REQUEST METHODS: GET,POST,PUT,DELETE,CONNECT,OPTIONS,PATCH,PROPFIND,&lt;br /&gt;&lt;br /&gt;#                  PROPPATCH,MKCOL,COPY,MOVE,LOCK,UNLOCK&lt;br /&gt;&lt;br /&gt;###########&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;### REWRITE DEFAULTS ###&lt;br /&gt;&lt;br /&gt;#RewriteEngine On&lt;br /&gt;&lt;br /&gt;#RewriteBase /&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;### REQUIRE SUBDOMAIN ###&lt;br /&gt;&lt;br /&gt;#RewriteCond %{HTTP_HOST} !^$&lt;br /&gt;&lt;br /&gt;#RewriteCond %{HTTP_HOST} !^subdomain\.domain\.tld$ [NC]&lt;br /&gt;&lt;br /&gt;#RewriteRule ^/(.*)$ http://subdomain.domain.tld/$1 [L,R=301]&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;### SEO REWRITES ###&lt;br /&gt;&lt;br /&gt;#RewriteRule ^(.*)/ve/(.*)$    $1/voluntary-employee/$2 [L,R=301]&lt;br /&gt;&lt;br /&gt;#RewriteRule ^(.*)/hsa/(.*)$     $1/health-saving-account/$2 [L,R=301]&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;### WORDPRESS ###&lt;br /&gt;&lt;br /&gt;#RewriteCond %{REQUEST_FILENAME} !-f    # Existing File&lt;br /&gt;&lt;br /&gt;#RewriteCond %{REQUEST_FILENAME} !-d    # Existing Directory&lt;br /&gt;&lt;br /&gt;#RewriteRule . /index.php [L]&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;### ALTERNATIVE ANTI-HOTLINKING ###&lt;br /&gt;&lt;br /&gt;#RewriteCond %{HTTP_REFERER} !^$&lt;br /&gt;&lt;br /&gt;#RewriteCond %{HTTP_REFERER} !^http://(subdomain\.)?domain.tld/.*$ [NC]&lt;br /&gt;&lt;br /&gt;#RewriteRule ^.*\.(bmp|tif|gif|jpg|jpeg|jpe|png)$ - [F] &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;### REDIRECT HOTLINKERS ###&lt;br /&gt;&lt;br /&gt;#RewriteCond %{HTTP_REFERER} !^$&lt;br /&gt;&lt;br /&gt;#RewriteCond %{HTTP_REFERER} !^http://(subdomain\.)?domain.tld/.*$ [NC]&lt;br /&gt;&lt;br /&gt;#RewriteRule ^.*\.(bmp|tif|gif|jpg|jpeg|jpe|png)$ http://google.com [R] &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;### DENY REQUEST BASED ON REQUEST METHOD ###&lt;br /&gt;&lt;br /&gt;#RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS|HEAD)$ [NC]&lt;br /&gt;&lt;br /&gt;#RewriteRule ^.*$ - [F] &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;### REDIRECT UPLOADS ###&lt;br /&gt;&lt;br /&gt;#RewriteCond %{REQUEST_METHOD} ^(PUT|POST)$ [NC]&lt;br /&gt;&lt;br /&gt;#RewriteRule ^(.*)$ /cgi-bin/form-upload-processor.cgi?p=$1 [L,QSA] &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;### REQUIRE SSL EVEN WHEN MOD_SSL IS NOT LOADED ###&lt;br /&gt;&lt;br /&gt;#RewriteCond %{HTTPS} !=on [NC]&lt;br /&gt;&lt;br /&gt;#RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;#### ALTERNATATIVE TO USING ERRORDOCUMENT ###&lt;br /&gt;&lt;br /&gt;#-&gt; http://www.htaccesselite.com/d/htaccess-errordocument-examples-vt11.html&lt;br /&gt;&lt;br /&gt;#RewriteCond %{REQUEST_FILENAME} !-f&lt;br /&gt;&lt;br /&gt;#RewriteCond %{REQUEST_FILENAME} !-d&lt;br /&gt;&lt;br /&gt;#RewriteRule ^.*$ /error.php [L]&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;### SEO REDIRECTS ###&lt;br /&gt;&lt;br /&gt;#Redirect 301 /2006/oldfile.html http://subdomain.domain.tld/newfile.html&lt;br /&gt;&lt;br /&gt;#RedirectMatch 301 /o/(.*)$ http://subdomain.domain.tld/s/dl/$1&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;#=============================================================================#&lt;br /&gt;&lt;br /&gt;#          AUTHENTICATION AND SECURITY&lt;br /&gt;&lt;br /&gt;#=============================================================================#&lt;br /&gt;&lt;br /&gt;# http://www.htaccesselite.com/htaccess/basic-authentication-example-vt17.html&lt;br /&gt;&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;# Require (user|group|valid-user) (username|groupname)&lt;br /&gt;&lt;br /&gt;###########&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;### BASIC PASSWORD PROTECTION ###&lt;br /&gt;&lt;br /&gt;#AuthType basic&lt;br /&gt;&lt;br /&gt;#AuthName "prompt"&lt;br /&gt;&lt;br /&gt;#AuthUserFile /.htpasswd&lt;br /&gt;&lt;br /&gt;#AuthGroupFile /dev/null&lt;br /&gt;&lt;br /&gt;#Require valid-user&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;### ALLOW FROM IP OR VALID PASSWORD ###&lt;br /&gt;&lt;br /&gt;#Require valid-user&lt;br /&gt;&lt;br /&gt;#Allow from 192.168.1.23&lt;br /&gt;&lt;br /&gt;#Satisfy Any&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;### PROTECT FILES ###&lt;br /&gt;&lt;br /&gt;#&lt;FilesMatch "\.(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$"&gt;&lt;br /&gt;&lt;br /&gt;#  Order Allow,Deny&lt;br /&gt;&lt;br /&gt;#  Deny from all&lt;br /&gt;&lt;br /&gt;#&lt;/FilesMatch&gt;&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;### PREVENT HOTLINKING ###&lt;br /&gt;&lt;br /&gt;#SetEnvIfNoCase Referer "^http://subdomain.domain.tld/" good&lt;br /&gt;&lt;br /&gt;#SetEnvIfNoCase Referer "^$" good&lt;br /&gt;&lt;br /&gt;#&lt;FilesMatch "\.(png|jpg|jpeg|gif|bmp|swf|flv)$"&gt;&lt;br /&gt;&lt;br /&gt;#   Order Deny,Allow&lt;br /&gt;&lt;br /&gt;#   Deny from all&lt;br /&gt;&lt;br /&gt;#   Allow from env=good&lt;br /&gt;&lt;br /&gt;#   ErrorDocument 403 http://www.google.com/intl/en_ALL/images/logo.gif&lt;br /&gt;&lt;br /&gt;#   ErrorDocument 403 /images/you_bad_hotlinker.gif&lt;br /&gt;&lt;br /&gt;#&lt;/FilesMatch&gt;&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;### LIMIT UPLOAD FILE SIZE TO PROTECT AGAINST DOS ATTACK ###&lt;br /&gt;&lt;br /&gt;#LimitRequestBody 10240000 #bytes, 0-2147483647(2GB) &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;#=============================================================================#&lt;br /&gt;&lt;br /&gt;#          SSL SECURITY&lt;br /&gt;&lt;br /&gt;#=============================================================================#&lt;br /&gt;&lt;br /&gt;#-&gt; http://htaccesselite.com/d/redirecting-all-or-part-of-a-server-to-ssl-vt61&lt;br /&gt;&lt;br /&gt;###########&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;### MOST SECURE WAY TO REQUIRE SSL ###&lt;br /&gt;&lt;br /&gt;#-&gt; http://www.askapache.com/2006/htaccess/apache-ssl-in-htaccess-examples.html&lt;br /&gt;&lt;br /&gt;#SSLOptions +StrictRequire&lt;br /&gt;&lt;br /&gt;#SSLRequireSSL&lt;br /&gt;&lt;br /&gt;#SSLRequire %{HTTP_HOST} eq "domain.tld"&lt;br /&gt;&lt;br /&gt;#ErrorDocument 403 https://domain.tld &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;#=============================================================================#&lt;br /&gt;&lt;br /&gt;#          SITE UNDER CONSTRUCTION&lt;br /&gt;&lt;br /&gt;#=============================================================================#&lt;br /&gt;&lt;br /&gt;# Heres some awesome htaccess to use when you are developing a site&lt;br /&gt;&lt;br /&gt;###########&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;### COMBINED DEVELOPER HTACCESS CODE-USE THIS ###&lt;br /&gt;&lt;br /&gt;#&lt;FilesMatch "\.(flv|gif|jpg|jpeg|png|ico|js|css|pdf|swf|html|htm|txt)$"&gt;&lt;br /&gt;&lt;br /&gt;#   Header set Cache-Control "max-age=5"&lt;br /&gt;&lt;br /&gt;#&lt;/FilesMatch&gt;&lt;br /&gt;&lt;br /&gt;#AuthType basic&lt;br /&gt;&lt;br /&gt;#AuthName "Ooops! Temporarily Under Construction..."&lt;br /&gt;&lt;br /&gt;#AuthUserFile /.htpasswd&lt;br /&gt;&lt;br /&gt;#AuthGroupFile /dev/null&lt;br /&gt;&lt;br /&gt;#Require valid-user           # password prompt for everyone else&lt;br /&gt;&lt;br /&gt;#Order Deny,Allow&lt;br /&gt;&lt;br /&gt;#Deny from all&lt;br /&gt;&lt;br /&gt;#Allow from 192.168.64.5      # Your, the developers IP address&lt;br /&gt;&lt;br /&gt;#Allow from w3.org            # css/xhtml check jigsaw.w3.org/css-validator/&lt;br /&gt;&lt;br /&gt;#Allow from googlebot.com     # Allows google to crawl your pages&lt;br /&gt;&lt;br /&gt;#Satisfy Any                  # no password required if host/ip is Allowed&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;### DONT HAVE TO EMPTY CACHE OR RELOAD TO SEE CHANGES ###&lt;br /&gt;&lt;br /&gt;#ExpiresDefault A5 #If using mod_expires&lt;br /&gt;&lt;br /&gt;#&lt;FilesMatch "\.(flv|gif|jpg|jpeg|png|ico|js|css|pdf|swf|html|htm|txt)$"&gt;&lt;br /&gt;&lt;br /&gt;#   Header set Cache-Control "max-age=5"&lt;br /&gt;&lt;br /&gt;#&lt;/FilesMatch&gt;&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;### ALLOW ACCESS WITH PASSWORD OR NO PASSWORD FOR SPECIFIC IP/HOSTS ###&lt;br /&gt;&lt;br /&gt;#AuthType basic&lt;br /&gt;&lt;br /&gt;#AuthName "Ooops! Temporarily Under Construction..."&lt;br /&gt;&lt;br /&gt;#AuthUserFile /.htpasswd&lt;br /&gt;&lt;br /&gt;#AuthGroupFile /dev/null&lt;br /&gt;&lt;br /&gt;#Require valid-user           # password prompt for everyone else&lt;br /&gt;&lt;br /&gt;#Order Deny,Allow&lt;br /&gt;&lt;br /&gt;#Deny from all&lt;br /&gt;&lt;br /&gt;#Allow from 192.168.64.5      # Your, the developers IP address&lt;br /&gt;&lt;br /&gt;#Allow from w3.org            # css/xhtml check jigsaw.w3.org/css-validator/&lt;br /&gt;&lt;br /&gt;#Allow from googlebot.com     # Allows google to crawl your pages&lt;br /&gt;&lt;br /&gt;#Satisfy Any                  # no password required if host/ip is Allowed</description>
      <pubDate>Sat, 31 May 2008 19:56:18 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5563</guid>
      <author>johnloy (John Loy)</author>
    </item>
    <item>
      <title>One-line web server in Ruby</title>
      <link>http://snippets.dzone.com/posts/show/5424</link>
      <description>&lt;code&gt;&lt;br /&gt;&lt;br /&gt;# From: http://www.ntecs.de/blog/articles/2008/02/09/the-worlds-smallest-webserver&lt;br /&gt;# Author: Michael Neumann&lt;br /&gt;# ... point your browser to http://localhost:3125/etc/motd&lt;br /&gt;&lt;br /&gt;ruby -rsocket -e 's=TCPServer.new(5**5);loop{_=s.accept;_&lt;&lt;"HTTP/1.0 200 OK\r\n\r\n#{File.read(_.gets.split[1])rescue nil}";_.close}'&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Wed, 23 Apr 2008 13:22:36 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5424</guid>
      <author>ntk ()</author>
    </item>
    <item>
      <title>Run TCPServer as a simple Web server</title>
      <link>http://snippets.dzone.com/posts/show/5345</link>
      <description>A TCPServer accepts incoming TCP connections. Here is a Web server that listens on a given port and returns the time.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;require 'socket'&lt;br /&gt;port = (ARGV[0] || 80).to_i&lt;br /&gt;server = TCPServer.new('localhost', port)&lt;br /&gt;while (session = server.accept)&lt;br /&gt;  puts "Request: #{session.gets}"&lt;br /&gt;  session.print "HTTP/1.1 200/OK\r\nContent-type: text/html\r\n\r\n"&lt;br /&gt;  session.print "&lt;html&gt;&lt;body&gt;&lt;h1&gt;#{Time.now}&lt;/h1&gt;&lt;/body&gt;&lt;/html&gt;\r\n"&lt;br /&gt;  session.close&lt;br /&gt;end&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;This code was copied from &lt;a href="http://www.rubycentral.com/pickaxe/lib_network.html"&gt;Programming Ruby: The Pragmatic Programmer's Guide&lt;/a&gt; [rubycentral.com] while looking for information on Ruby CGI global variables.</description>
      <pubDate>Thu, 10 Apr 2008 14:05:56 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5345</guid>
      <author>jrobertson (James Robertson)</author>
    </item>
    <item>
      <title>Introduction to Distributed Ruby</title>
      <link>http://snippets.dzone.com/posts/show/5233</link>
      <description>This code demonstrates a client server architecture. I executed the file simple_service.rb on my Ubuntu server (Donatello - 192.168.1.10), then from the CLI output I copied the server uri into the clipboard. I then executed the simple_client.rb on my Ubuntu desktop (Cryton - 192.168.1.3) while passing in the uri as an argument. &lt;br /&gt;&lt;code&gt;&lt;br /&gt;#!/usr/bin/env ruby -w&lt;br /&gt;# simple_service.rb&lt;br /&gt;# A simple DRb service&lt;br /&gt;&lt;br /&gt;# load DRb&lt;br /&gt;require 'drb'&lt;br /&gt;&lt;br /&gt;# start up the DRb service&lt;br /&gt;DRb.start_service nil, []&lt;br /&gt;&lt;br /&gt;# We need the uri of the service to connect a client&lt;br /&gt;puts DRb.uri&lt;br /&gt;&lt;br /&gt;# wait for the DRb service to finish before exiting&lt;br /&gt;DRb.thread.join&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;output: druby://donatello.mydomain.com:47159&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#!/usr/bin/env ruby -w&lt;br /&gt;# simple_client.rb&lt;br /&gt;# A simple DRb client&lt;br /&gt;&lt;br /&gt;require 'drb'&lt;br /&gt;&lt;br /&gt;DRb.start_service&lt;br /&gt;&lt;br /&gt;# attach to the DRb server via a URI given on the command line&lt;br /&gt;remote_array = DRbObject.new nil, ARGV.shift&lt;br /&gt;&lt;br /&gt;puts remote_array.size&lt;br /&gt;&lt;br /&gt;remote_array &lt;&lt; 1&lt;br /&gt;&lt;br /&gt;puts remote_array.size&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;from the command line&lt;br /&gt;&gt; ./simple_client.rb druby://192.168.1.10:47159&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;output:&lt;br /&gt;0&lt;br /&gt;1&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Note: I substituted the domain name with the ip address because the name in question was not stored within the DNS settings.&lt;br /&gt;&lt;br /&gt;Reference: &lt;a href="http://segment7.net/projects/ruby/drb/introduction.html"&gt;Introduction to Distributed Ruby (DRb)&lt;/a&gt; [segment7.net]</description>
      <pubDate>Sat, 15 Mar 2008 00:59:13 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5233</guid>
      <author>jrobertson (James Robertson)</author>
    </item>
    <item>
      <title>Runt.rb</title>
      <link>http://snippets.dzone.com/posts/show/5009</link>
      <description>// A tiny Ruby web server.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#!/usr/bin/env ruby&lt;br /&gt;&lt;br /&gt;require "webrick"&lt;br /&gt;&lt;br /&gt;s=WEBrick::HTTPServer.new(&lt;br /&gt;        :BindAddress =&gt; "localhost",&lt;br /&gt;        :Port =&gt; 8080,&lt;br /&gt;        :DocumentRoot =&gt; File.dirname($0)+"/"+"www/"&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;trap("INT") { s.shutdown }&lt;br /&gt;&lt;br /&gt;s.start&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Sat, 19 Jan 2008 06:46:42 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5009</guid>
      <author>mcandre (Andrew Pennebaker)</author>
    </item>
    <item>
      <title>Is site down script</title>
      <link>http://snippets.dzone.com/posts/show/4995</link>
      <description>// Tests if site is down/server is offline by trying to connect in specified time&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;import socket&lt;br /&gt;import urllib2&lt;br /&gt;&lt;br /&gt;def timeout(site, timeout):&lt;br /&gt;  save = socket.getdefaulttimeout() &lt;br /&gt;  try:&lt;br /&gt;    response = urllib2.urlopen(site)&lt;br /&gt;    socket.setdefaulttimeout(save)&lt;br /&gt;  except urllib2.URLError, err:&lt;br /&gt;    socket.setdefaulttimeout(save)&lt;br /&gt;    if err.__class__.__name__ == "URLError":&lt;br /&gt;      if isinstance(err[0], socket.timeout):&lt;br /&gt;        return True&lt;br /&gt;  return False&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;if timeout("http://www.dummy-site.com/test_timeout.html", 10):&lt;br /&gt;  print "Timeout detected"&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;</description>
      <pubDate>Thu, 17 Jan 2008 15:05:28 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4995</guid>
      <author>techtonik (anatoly)</author>
    </item>
    <item>
      <title>SCGI connector (Java)</title>
      <link>http://snippets.dzone.com/posts/show/4304</link>
      <description>&lt;code&gt;&lt;br /&gt;import java.io.IOException;&lt;br /&gt;import java.io.InputStream;&lt;br /&gt;import java.nio.ByteBuffer;&lt;br /&gt;import java.nio.charset.Charset;&lt;br /&gt;import java.util.HashMap;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt; * SCGI connector.&lt;br&gt;&lt;br /&gt; * Version: 1.0&lt;br&gt;&lt;br /&gt; * Home page: http://snippets.dzone.com/posts/show/4304&lt;br /&gt; */&lt;br /&gt;public class SCGI {&lt;br /&gt;  public static class SCGIException extends IOException {&lt;br /&gt;    private static final long serialVersionUID = 1L;&lt;br /&gt;&lt;br /&gt;    public SCGIException(String message) {&lt;br /&gt;      super(message);&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  /** Used to decode the headers. */&lt;br /&gt;  public static final Charset ISO_8859_1 = Charset.forName("ISO-8859-1");&lt;br /&gt;&lt;br /&gt;  /**&lt;br /&gt;   * Read the &lt;a href="http://python.ca/scgi/protocol.txt"&gt;SCGI&lt;/a&gt; request headers.&lt;br&gt;&lt;br /&gt;   * After the headers had been loaded,&lt;br /&gt;   * you can read the body of the request manually from the same {@code input} stream:&lt;pre&gt;&lt;br /&gt;   *   // Load the SCGI headers.&lt;br /&gt;   *   Socket clientSocket = socket.accept();&lt;br /&gt;   *   BufferedInputStream bis = new BufferedInputStream(clientSocket.getInputStream(), 4096);&lt;br /&gt;   *   HashMap&lt;String, String&gt; env = SCGI.parse(bis);&lt;br /&gt;   *   // Read the body of the request.&lt;br /&gt;   *   bis.read(new byte[Integer.parseInt(env.get("CONTENT_LENGTH"))]);&lt;br /&gt;   * &lt;/pre&gt;&lt;br /&gt;   * @param input an efficient (buffered) input stream.&lt;br /&gt;   * @return strings passed via the SCGI request.&lt;br /&gt;   */&lt;br /&gt;  public static HashMap parse(InputStream input) throws IOException {&lt;br /&gt;    StringBuilder lengthString = new StringBuilder(12);&lt;br /&gt;    String headers = "";&lt;br /&gt;    for (;;) {&lt;br /&gt;      char ch = (char) input.read();&lt;br /&gt;      if (ch &gt;= '0' &amp;&amp; ch &lt;= '9') {&lt;br /&gt;        lengthString.append(ch);&lt;br /&gt;      } else if (ch == ':') {&lt;br /&gt;        int length = Integer.parseInt(lengthString.toString());&lt;br /&gt;        byte[] headersBuf = new byte[length];&lt;br /&gt;        int read = input.read(headersBuf);&lt;br /&gt;        if (read != headersBuf.length)&lt;br /&gt;          throw new SCGIException("Couldn't read all the headers (" + length + ").");&lt;br /&gt;        headers = ISO_8859_1.decode(ByteBuffer.wrap(headersBuf)).toString();&lt;br /&gt;        if (input.read() != ',') throw new SCGIException("Wrong SCGI header length: " + lengthString);&lt;br /&gt;        break;&lt;br /&gt;      } else {&lt;br /&gt;        lengthString.append(ch);&lt;br /&gt;        throw new SCGIException("Wrong SCGI header length: " + lengthString);&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;    HashMap env = new HashMap();&lt;br /&gt;    while (headers.length() != 0) {&lt;br /&gt;      int sep1 = headers.indexOf(0);&lt;br /&gt;      int sep2 = headers.indexOf(0, sep1 + 1);&lt;br /&gt;      env.put(headers.substring(0, sep1), headers.substring(sep1 + 1, sep2));&lt;br /&gt;      headers = headers.substring(sep2 + 1);&lt;br /&gt;    }&lt;br /&gt;    return env;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Mon, 16 Jul 2007 13:50:45 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4304</guid>
      <author>ArtemGr (Artem Gr Kozarezov)</author>
    </item>
    <item>
      <title>'ant' build file for HelloWorldServlet and JettyLauncher</title>
      <link>http://snippets.dzone.com/posts/show/4096</link>
      <description>A pretty straightforward 'ant' build file. You will need to edit the jetty.home property to indicate where you installed Jetty.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;br /&gt;&lt;project basedir="." default="compile" name="hello-servlet"&gt;&lt;br /&gt;  &lt;property name="build.dir"	location="classes" /&gt;&lt;br /&gt;  &lt;property name="src.dir"	location="src/main/java" /&gt;&lt;br /&gt;  &lt;property name="jetty.home"	location="/home/mrw/projects/jetty-6.1.3" /&gt;&lt;br /&gt;  &lt;property name="jetty.lib"	location="${jetty.home}/lib" /&gt;&lt;br /&gt;&lt;br /&gt;  &lt;path id="jetty.lib.path"&gt;&lt;br /&gt;    &lt;pathelement path="${jetty.lib}/jetty-6.1.3.jar" /&gt;&lt;br /&gt;    &lt;pathelement path="${jetty.lib}/jetty-util-6.1.3.jar" /&gt;&lt;br /&gt;    &lt;pathelement path="${jetty.lib}/servlet-api-2.5-6.1.3.jar" /&gt;&lt;br /&gt;  &lt;/path&gt;&lt;br /&gt;&lt;br /&gt;  &lt;target name="compile" description="Compile the project"&gt;&lt;br /&gt;    &lt;mkdir dir="${build.dir}" /&gt;&lt;br /&gt;    &lt;javac debug="true" destdir="${build.dir}" srcdir="${src.dir}"&lt;br /&gt;	classpathref="jetty.lib.path"&gt;&lt;br /&gt;      &lt;compilerarg value="-Xlint:unchecked" /&gt;&lt;br /&gt;      &lt;compilerarg value="-Xlint:deprecation" /&gt;&lt;br /&gt;    &lt;/javac&gt;&lt;br /&gt;  &lt;/target&gt;&lt;br /&gt;&lt;br /&gt;  &lt;target name="all"  depends="clean,compile"&lt;br /&gt;      description="Recompile from scratch"/&gt;&lt;br /&gt;&lt;br /&gt;  &lt;target name="server" depends="compile" description="Launch the server"&gt;&lt;br /&gt;    &lt;java classname="com.babblemind.JettyLauncher" fork="true"&lt;br /&gt;	classpathref="jetty.lib.path"&gt;&lt;br /&gt;      &lt;classpath&gt;&lt;br /&gt;	&lt;pathelement path="${build.dir}" /&gt;&lt;br /&gt;      &lt;/classpath&gt;&lt;br /&gt;    &lt;/java&gt;&lt;br /&gt;  &lt;/target&gt;&lt;br /&gt;&lt;br /&gt;  &lt;target name="clean" description="Delete all files created by compile"&gt;&lt;br /&gt;    &lt;delete dir="${build.dir}" /&gt;&lt;br /&gt;    &lt;delete dir="docs/api" /&gt;&lt;br /&gt;  &lt;/target&gt;&lt;br /&gt;&lt;/project&gt;&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Sat, 02 Jun 2007 11:15:45 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4096</guid>
      <author>mikewilsonuk (Mike Wilson)</author>
    </item>
    <item>
      <title>Minimal Java servlet</title>
      <link>http://snippets.dzone.com/posts/show/4095</link>
      <description>There is nothing particularly original here -- there are variations of this all over the place. This works nicely with my JettyLauncher class (see my other posts on DZone Snippets).&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;package com.babblemind;&lt;br /&gt;&lt;br /&gt;import javax.servlet.ServletException;&lt;br /&gt;import javax.servlet.http.HttpServlet;&lt;br /&gt;import javax.servlet.http.HttpServletRequest;&lt;br /&gt;import javax.servlet.http.HttpServletResponse;&lt;br /&gt;import java.io.IOException;&lt;br /&gt;import java.io.PrintWriter;&lt;br /&gt;&lt;br /&gt;public class HelloWorldServlet extends HttpServlet{&lt;br /&gt;    protected void doGet(HttpServletRequest httpServletRequest,&lt;br /&gt;	HttpServletResponse httpServletResponse)&lt;br /&gt;	    throws ServletException, IOException {&lt;br /&gt;&lt;br /&gt;        httpServletResponse.setContentType("text/plain");&lt;br /&gt;        PrintWriter out = httpServletResponse.getWriter();&lt;br /&gt;        out.println("Hello World!");&lt;br /&gt;        out.close();&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Sat, 02 Jun 2007 11:13:54 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4095</guid>
      <author>mikewilsonuk (Mike Wilson)</author>
    </item>
  </channel>
</rss>
