AnonSec Team
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) :  /../usr/bin/

[  Home  ][  C0mmand  ][  Upload File  ]

Current File : //../usr/bin/wp-setup
#!/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

AnonSec - 2021