#!/bin/sh

# gallery postinstall script
# required parameters: 
# admin_fullname, admin_login, admin_passwd,
# admin_email, gallery_name, locale
#
# there are also some standard parameters, that must be specified:
# vhost_path - full path to vhost root directory
# domain_name - name of domain
# install_prefix - path of application inside vhost directory
# ssl_target_directory - true, if application is in httpsdocs

read_parameters()
{
var=`cat | awk '{
	eqpos=index($0, "=");
	if (eqpos>1) {
		var=substr($0, 1, eqpos-1);
		val=substr($0, eqpos+1);

		tmp="[\x5c\x5c]";
		tmp2="\x5c\x5c\x5c\x5c";
		gsub(tmp,tmp2,val);


		tmp2="\x5c\x5c\x5c\x22";
		gsub("\"",tmp2,val);
		print var "=\"" val "\"";
	};
}'`

eval $var

}

check_standard_parameters()
{
	if [ "X${vhost_path}" = "X" ]; then
		echo "postinstall: no vhost_path parameter specified for application"
		exit 1
	fi
	if [ "X${domain_name}" = "X" ]; then
		echo "postinstall: no domain_name parameter specified for application"
		exit 1
	fi
	if [ "X${install_prefix}" = "X" ]; then
		echo "postinstall: no install_prefix parameter specified for application"
		exit 1
	fi
	if [ "X${ssl_target_directory}" = "X" ]; then
		echo "postinstall: no ssl_target_directory parameter specified for application"
		exit 1
	fi
};

parse_standard_parameters()
{
	if [ "X${ssl_target_directory}" = "Xtrue" ]; then
		proto="https"
		documents_directory="httpsdocs"
	else
		# don't forget to fix it
		proto="http"
		documents_directory="httpdocs"
	fi
};

create_dirs() 
{
	if [ ! -d "${gallery_path}/tmp" ] ; then
		mkdir "${gallery_path}/tmp"
	fi
	# set guid to be able to perform recursive delete
	chmod 2777 "${gallery_path}/tmp"
	if [ ! -d "${gallery_path}/albums" ] ; then
		mkdir "${gallery_path}/albums"
	fi
	chmod 0777 "${gallery_path}/albums"
	rm -rf "${gallery_path}/albums/.users"
	mkdir "${gallery_path}/albums/.users"
	chmod 0777 "${gallery_path}/albums/.users"
}

backup_original_config()
{
	if [ -f "${gallery_config}" ] ; then
		if [ ! -f "${gallery_config}.orig" ] ; then
			cp ${gallery_config} ${gallery_config}.orig
		fi
	fi
}

read_conf()
{	
for file in "/etc/httpd/conf/httpd.conf" "/etc/psa/psa.conf"; do
	if [ -r "$file" ]; then
		while read var val; do
		case "$var" in
			[A-Z]*) eval "$var"='"$val"';
		esac; 
		done <"$file"
	fi
done;
apache_user="${User}"
}

generate_gallery_config()
{
	# apache config
	echo "Order deny, allow" >> "${gallery_path}/albums/.users/.htaccess"
	echo "Deny from all" >> "${gallery_path}/albums/.users/.htaccess"
	chmod 0666 "${gallery_path}/albums/.users/.htaccess"
	# forming additional files
	rm -f ${gallery_path}/albums/.users/userdb.dat	
	echo -n 'O:14:"gallery_userdb":5:{s:7:"version";i:5;s:7:"userMap";a:8:{s:5:"admin";s:21:"1069858368_1755202938";s:21:"1069858368_1755202938";s:5:"admin";s:9:"EVERYBODY";s:9:"everybody";s:9:"everybody";s:9:"EVERYBODY";s:8:"LOGGEDIN";s:8:"loggedin";s:8:"loggedin";s:8:"LOGGEDIN";s:6:"NOBODY";s:6:"nobody";s:6:"nobody";s:6:"NOBODY";}s:6:"nobody";O:10:"nobodyuser":5:{s:8:"username";s:6:"NOBODY";s:8:"fullname";s:6:"Nobody";s:7:"isAdmin";b:0;s:15:"canCreateAlbums";b:0;s:3:"uid";s:6:"nobody";}s:9:"everybody";O:13:"everybodyuser":5:{s:8:"username";s:9:"EVERYBODY";s:8:"fullname";s:14:"Anonymous User";s:7:"isAdmin";b:0;s:15:"canCreateAlbums";b:0;s:3:"uid";s:9:"everybody";}s:8:"loggedIn";O:12:"loggedinuser":5:{s:8:"username";s:8:"LOGGEDIN";s:8:"fullname";s:14:"Anonymous User";s:7:"isAdmin";b:0;s:15:"canCreateAlbums";b:0;s:3:"uid";s:8:"loggedin";}}' >> "${gallery_path}/albums/.users/userdb.dat"
	chmod 0644 "${gallery_path}/albums/.users/userdb.dat"
	admin_email_size=`echo ${admin_email} | awk '{ print length($0) }'`
	admin_fullname_size=`echo ${admin_fullname} | awk '{ print length($0) }'`
	admin_login_size=`echo ${admin_login} | awk '{ print length($0) }'`
	rm -f ${gallery_path}/albums/.users/1069858368_1755202938
	echo -n 'O:12:"gallery_user":11:{s:7:"isAdmin";b:1;s:15:"canCreateAlbums";b:1;s:3:"uid";s:21:"1069858368_1755202938";s:15:"defaultLanguage";s:5:"'${locale}'";s:7:"version";i:5;s:8:"username";s:'${admin_login_size}':"'${admin_login}'";s:8:"password";s:36:"XXXX'${admin_hash}'";s:8:"fullname";s:'${admin_fullname_size}':"'${admin_fullname}'";s:5:"email";s:'${admin_email_size}':"'${admin_email}'";s:10:"lastAction";s:5:"login";s:14:"lastActionDate";i:1069884720;}' >> "${gallery_path}/albums/.users/1069858368_1755202938"
	chmod 0777 "${gallery_path}/albums/.users/1069858368_1755202938"
	# .htaccess
	cat >"$gallery_path/.htaccess" <<-EOF
		php_value post_max_size 20971520
		php_value upload_max_filesize 20971520
		php_value magic_quotes_gpc off
		php_value session.save_handler files

		<IfModule sapi_apache2.c>
		php_value session.bug_compat_warn off
		</IfModule>

		<IfModule mod_php4.c>
		php_flag session.bug_compat_warn off
		</IfModule>


		Options -Indexes +FollowSymLinks
		<IfModule mod_rewrite.c>
		RewriteEngine On
		RewriteBase /$install_prefix/
		RewriteCond %{REQUEST_FILENAME} !-d
		RewriteRule ^([^\.\?/]+)/([0-9]+)\$	/$install_prefix/view_photo.php?set_albumName=\$1&index=\$2	[QSA]
		RewriteCond %{REQUEST_FILENAME} !-d		
		RewriteRule ^([^\.\?/]+)/([A-Za-z_0-9\-]+)\$	/$install_prefix/view_photo.php?set_albumName=\$1&id=\$2	[QSA]
		RewriteCond %{REQUEST_FILENAME} !-d		
		RewriteRule ^([^\.\?/]+)/\$	/$install_prefix/\$1	[R]
		RewriteCond %{REQUEST_FILENAME} !-d		
		RewriteRule ^([^\.\?/]+)\$	/$install_prefix/view_album.php?set_albumName=\$1	[QSA]
		</IfModule>
	EOF
	chmod 644 "$gallery_path/.htaccess"
	# gallery's config
	if [ -x /usr/bin/composite ]; then 
		graphics="ImageMagick"
		prefix=/usr
	elif test -x /usr/bin/pngtopnm; then
		prefix=/usr
		graphics="NetPBM"
	else
		prefix=${gallery_path}/pbm
		graphics="NetPBM"
		inc_lib="putenv(\"LD_LIBRARY_PATH=${gallery_path}/pbm/lib:LD_LIBRARY_PATH\");"
#		echo " Could not find graphic utilities" >&2
#		exit 1
	fi
	rm -f "${gallery_config}"
	echo -n '<?php
 /* 
 * Protect against very old versions of 4.0 (like 4.0RC1) which  
 * dont implicitly create a new stdClass() when you use a variable 
 * like a class. 
 */ 
'${inc_lib}'

if (!isset($gallery)) { 
        $gallery = new stdClass(); 
}
if (!isset($gallery->app)) { 
        $gallery->app = new stdClass(); 
}

/* Version  */
$gallery->app->config_version = '82';

/* Features */
$gallery->app->feature["zip"] = 1;
$gallery->app->feature["rewrite"] = 1;
$gallery->app->feature["mirror"] = 0; // (missing <i>mirrorSites</i> -- its optional)

/* Constants */

$gallery->app->galleryTitle = "'${gallery_name}'"; //Album
$gallery->app->skinname = "bubbles";
$gallery->app->uploadMode = "form";
$gallery->app->albumDir = "'${gallery_path}'/albums";
$gallery->app->tmpDir = "'${gallery_path}'/tmp";
$gallery->app->photoAlbumURL = "'${proto}://${domain_name}/${install_prefix}'";
$gallery->app->albumDirURL = "'${proto}://${domain_name}/${install_prefix}'/albums";
// optional <i>watermarkDir</i> missing
$gallery->app->movieThumbnail = "'${gallery_path}'/images/movie.thumb.jpg";
// optional <i>mirrorSites</i> missing
$gallery->app->embedded_inside_type = "";
$gallery->app->geeklog_dir = "/path/to/geeklog/public_html";
$gallery->app->graphics = "'${graphics}'";
$gallery->app->pnmDir = "'$prefix'/bin";
$gallery->app->pnmtojpeg = "pnmtojpeg";
$gallery->app->ImPath = "/usr/bin";
$gallery->app->autorotate = "yes";
$gallery->app->jpegImageQuality = "90";
$gallery->app->showAlbumTree = "no";
$gallery->app->highlight_size = "200";
$gallery->app->showOwners = "no";
$gallery->app->albumsPerPage = "5";
$gallery->app->showSearchEngine = "yes";
$gallery->app->slowPhotoCount = "no";
$gallery->app->gallery_thumb_frame_style = "simple_book";
$gallery->app->zipinfo = "/usr/bin/zipinfo";
$gallery->app->unzip = "/usr/bin/unzip";
// optional <i>use_exif</i> missing
$gallery->app->cacheExif = "no";
$gallery->app->use_jpegtran = "/usr/bin/jpegtran";
$gallery->app->default_language = "'${locale}'";
$gallery->app->ML_mode = "0";
$gallery->app->available_lang[] = "en_US";
$gallery->app->show_flags = "no";
$gallery->app->dateString = "%x";
$gallery->app->dateTimeString = "%c";
$gallery->app->emailOn = "no";
// optional <i>adminEmail</i> missing
// optional <i>senderEmail</i> missing
$gallery->app->emailSubjPrefix = "[Gallery]";
// optional <i>emailGreeting</i> missing
$gallery->app->selfReg = "no";
$gallery->app->selfRegCreate = "no";
$gallery->app->multiple_create = "no";
$gallery->app->adminCommentsEmail = "no";
$gallery->app->adminOtherChangesEmail = "no";
// optional <i>email_notification</i> missing
$gallery->app->gallery_slideshow_type = "off";
$gallery->app->gallery_slideshow_length = "20";
$gallery->app->gallery_slideshow_loop = "yes";
$gallery->app->slideshowMode = "high";
$gallery->app->comments_enabled = "yes";
$gallery->app->comments_indication = "photos";
$gallery->app->comments_indication_verbose = "no";
$gallery->app->comments_anonymous = "no";
$gallery->app->comments_display_name = "!!FULLNAME!! (!!USERNAME!!)";
$gallery->app->comments_addType = "popup";
$gallery->app->comments_length = "300";
$gallery->app->comments_overview_for_all = "no";
$gallery->app->timeLimit = "30";
$gallery->app->blockRandomCache = "86400";
$gallery->app->debug = "no";
$gallery->app->devMode = "no";
$gallery->app->useSyslog = "no";
$gallery->app->use_flock = "yes";
$gallery->app->expectedExecStatus = "0";
$gallery->app->sessionVar = "gallery_session";
$gallery->app->rssEnabled = "yes";
$gallery->app->rssMode = "basic";
// optional <i>rssHighlight</i> missing
$gallery->app->rssMaxAlbums = "25";
$gallery->app->rssVisibleOnly = "yes";
$gallery->app->rssDCDate = "no";
$gallery->app->rssBigPhoto = "no";
$gallery->app->rssPhotoTag = "yes";
$gallery->app->userDir = "'"${gallery_path}/albums/.users"'";
$gallery->app->maximumAlbumDepth = "50";

/* Defaults */
$gallery->app->default["bordercolor"] = "black";
$gallery->app->default["border"] = "1";
$gallery->app->default["font"] = "arial";
$gallery->app->default["cols"] = "3";
$gallery->app->default["rows"] = "3";
$gallery->app->default["thumb_size"] = "150";
$gallery->app->default["resize_size"] = "640";
$gallery->app->default["resize_file_size"] = "0";
$gallery->app->default["max_size"] = "off";
$gallery->app->default["max_file_size"] = "0";
$gallery->app->default["useOriginalFileNames"] = "yes";
$gallery->app->default["add_to_beginning"] = "no";
$gallery->app->default["fit_to_window"] = "no";
$gallery->app->default["use_fullOnly"] = "no";
$gallery->app->default["print_photos"]["photoaccess"]["checked"] = "checked";
$gallery->app->default["print_photos"]["shutterfly"]["checked"] = "checked";
$gallery->app->default["print_photos"]["fotokasten"]["checked"] = "checked";
$gallery->app->default["print_photos"]["ezprints"]["checked"] = "checked";
$gallery->app->default["returnto"] = "yes";
$gallery->app->default["defaultPerms"] = "everybody";
$gallery->app->default["display_clicks"] = "yes";
$gallery->app->default["extra_fields"] = "Description";
$gallery->app->default["showDimensions"] = "no";
$gallery->app->default["item_owner_modify"] = "yes";
$gallery->app->default["item_owner_delete"] = "yes";
$gallery->app->default["item_owner_display"] = "no";
$gallery->app->default["voter_class"] = "Nobody";
$gallery->app->default["poll_type"] = "critique";
$gallery->app->default["poll_scale"] = "3";
$gallery->app->default["poll_hint"] = "Vote for this image";
$gallery->app->default["poll_show_results"] = "no";
$gallery->app->default["poll_num_results"] = "3";
$gallery->app->default["poll_orientation"] = "vertical";
$gallery->app->default["poll_nv_pairs"][0]["name"] = "Excellent";
$gallery->app->default["poll_nv_pairs"][0]["value"] = "5";
$gallery->app->default["poll_nv_pairs"][1]["name"] = "Very Good";
$gallery->app->default["poll_nv_pairs"][1]["value"] = "4";
$gallery->app->default["poll_nv_pairs"][2]["name"] = "Good";
$gallery->app->default["poll_nv_pairs"][2]["value"] = "3";
$gallery->app->default["poll_nv_pairs"][3]["name"] = "Average";
$gallery->app->default["poll_nv_pairs"][3]["value"] = "2";
$gallery->app->default["poll_nv_pairs"][4]["name"] = "Poor";
$gallery->app->default["poll_nv_pairs"][4]["value"] = "1";
$gallery->app->default["poll_nv_pairs"][5]["name"] = "";
$gallery->app->default["poll_nv_pairs"][5]["value"] = "";
$gallery->app->default["poll_nv_pairs"][6]["name"] = "";
$gallery->app->default["poll_nv_pairs"][6]["value"] = "";
$gallery->app->default["poll_nv_pairs"][7]["name"] = "";
$gallery->app->default["poll_nv_pairs"][7]["value"] = "";
$gallery->app->default["poll_nv_pairs"][8]["name"] = "";
$gallery->app->default["poll_nv_pairs"][8]["value"] = "";
$gallery->app->default["slideshow_type"] = "ordered";
$gallery->app->default["slideshow_recursive"] = "no";
$gallery->app->default["slideshow_loop"] = "yes";
$gallery->app->default["slideshow_length"] = "0";
$gallery->app->default["album_frame"] = "simple_book";
$gallery->app->default["thumb_frame"] = "solid";
$gallery->app->default["image_frame"] = "solid";
?>' >> ${gallery_config}
chmod 0644 ${gallery_config}
}

set_perm()
{
	
	chmod 755 $gallery_path/setup
	chmod 766 ${gallery_config}
	chmod 766 ".htaccess"
}
read_parameters
read_conf

cd "$vhost_path"

# now we have full set of parameters, stored in variables

parse_standard_parameters
check_standard_parameters

gallery_path=${vhost_path}/${documents_directory}/${install_prefix}
gallery_config=${vhost_path}/${documents_directory}/${install_prefix}/config.php

backup_original_config
create_dirs
generate_gallery_config
set_perm
cd "$gallery_path"
#sh ./secure.sh

exit 0
