|
Server IP : 161.35.85.9 / Your IP : 216.73.217.134 Web Server : nginx/1.30.1 System : Linux cheapdeb-ams3 7.0.9+deb14-amd64 #1 SMP PREEMPT_DYNAMIC Debian 7.0.9-1 (2026-05-22) x86_64 User : root ( 0) PHP Version : 8.2.18 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON Directory (0755) : /dev/../bin/ |
| [ Home ] | [ C0mmand ] | [ Upload File ] |
|---|
#!/bin/sh
WP_CONTENT_DIR=/var/lib/wordpress/wp-content
WP_CONTENT_ORIG_DIR=/usr/share/wordpress/wp-content
WP_CONTENT_SUBDIRS="themes plugins languages"
set -e
usage() {
cat <<END
$0 <action> [<options>...]
Actions:
--sync-wp-content Update $WP_CONTENT_DIR based on files
available in $WP_CONTENT_ORIG_DIR
--purge-wp-content Purge $WP_CONTENT_DIR of symlinks
pointing to $WP_CONTENT_ORIG_DIR
END
}
purge_wp_content() {
for subdir in $WP_CONTENT_SUBDIRS; do
list=$(purge_wp_content_subdir "$subdir")
print_if_needed "Removed from $WP_CONTENT_DIR/$subdir" "$list"
done
}
print_if_needed() {
local message="$1"
local list="$2"
if [ -n "$list" ]; then
echo "$message: $list"
fi
}
purge_wp_content_subdir() {
local subdir=$1
for dir in $WP_CONTENT_DIR/$subdir/*; do
if is_symlink_to_standard_directory "$dir"; then
remove_symlink "$dir"
fi
done
}
is_symlink_to_standard_directory() {
local symlink="$1"
if [ ! -h "$symlink" ]; then
return 1
fi
target=$(readlink "$symlink")
if [ "$target" = "${target##$WP_CONTENT_ORIG_DIR}" ]; then
return 1
fi
return 0
}
remove_symlink() {
local symlink="$1"
echo -n "$(basename "$symlink") "
rm -f "$symlink"
}
sync_wp_content() {
for subdir in $WP_CONTENT_SUBDIRS; do
ensure_wp_content_subdir_exists "$subdir"
list=$(add_new_wp_content_files "$subdir")
print_if_needed "Added to $WP_CONTENT_DIR/$subdir" "$list"
list=$(drop_removed_wp_content_files "$subdir")
print_if_needed "Removed from $WP_CONTENT_DIR/$subdir" "$list"
done
}
ensure_wp_content_subdir_exists() {
local subdir="$1"
[ -e $WP_CONTENT_DIR ] || setup_wp_content
mkdir -p "$WP_CONTENT_DIR/$subdir"
}
setup_wp_content() {
mkdir -p $WP_CONTENT_DIR/blogs.dir $WP_CONTENT_DIR/uploads
chown www-data:www-data $WP_CONTENT_DIR/blogs.dir $WP_CONTENT_DIR/uploads
}
add_new_wp_content_files() {
local subdir="$1"
for dir in $WP_CONTENT_ORIG_DIR/$subdir/*; do
if [ ! -e "$dir" ]; then
continue
fi
name="$(basename "$dir")"
symlink_path="$WP_CONTENT_DIR/$subdir/$name"
if [ -e "$symlink_path" ]; then
continue
fi
echo -n "$name "
ln -sf "$dir" "$symlink_path"
done
}
drop_removed_wp_content_files() {
local subdir="$1"
for dir in $WP_CONTENT_DIR/$subdir/*; do
if ! is_symlink_to_standard_directory "$dir"; then
continue
fi
# Ensure the symlink is broken before removing it
if [ -e "$dir" ]; then
continue
fi
remove_symlink "$dir"
done
}
TEMP=$(getopt -o sp -l sync-wp-content,purge-wp-content -- "$@")
eval set -- "$TEMP"
while true; do
case "$1" in
--sync-wp-content)
action="$1"
shift
;;
--purge-wp-content)
action="$1"
shift
;;
--)
shift
break
;;
*)
echo "$0: error: invalid option '$1'" >&2
usage
exit 1
;;
esac
done
case "$action" in
--sync-wp-content)
sync_wp_content
;;
--purge-wp-content)
purge_wp_content
;;
*)
echo "$0: error: no action specified!" >&2
usage
exit 1
;;
esac
# Script documentation follows
: <<=cut
=encoding UTF-8
=head1 NAME
wp-setup - wordpress setup for Debian
=head1 SYNOPSIS
B<wp-setup> I<action>
=head1 DESCRIPTION
This script's purpose is to make it easier to manage Wordpress
installations on Debian systems. For now, it's mainly for the
package's internal usage though.
=head1 ACTIONS
=over 4
=item B<--sync-wp-content>
Update /var/lib/wordpress/wp-content/{plugins,themes}/ based on what's
available in /usr/share/wordpress/wp-content/{plugins,themes}. This
command is run by the package's postinst script every time that dpkg
installs a package that modifies something in
/usr/share/wordpress/wp-content/.
=item B<--purge-wp-content>
Remove all symlinks from /var/lib/wordpress/wp-content/{plugins,themes}/
that point to corresponding directories in
/usr/share/wordpress/wp-content/{plugins,themes}. This command is run by
the package's prerm script to ensure everything is properly removed.
=back
=head1 AUTHOR
Raphaƫl Hertzog <hertzog@debian.org>
=cut