Failed to save the file to the "xx" directory.

Failed to save the file to the "ll" directory.

Failed to save the file to the "mm" directory.

Failed to save the file to the "wp" directory.

403WebShell
403Webshell
Server IP : 66.29.132.124  /  Your IP : 18.191.178.145
Web Server : LiteSpeed
System : Linux business141.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64
User : wavevlvu ( 1524)
PHP Version : 7.4.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /proc/thread-self/root/opt/alt/php83/usr/include/php/ext/swoole/include/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /proc/thread-self/root/opt/alt/php83/usr/include/php/ext/swoole/include/swoole_static_handler.h
/*
  +----------------------------------------------------------------------+
  | Swoole                                                               |
  +----------------------------------------------------------------------+
  | This source file is subject to version 2.0 of the Apache license,    |
  | that is bundled with this package in the file LICENSE, and is        |
  | available through the world-wide-web at the following url:           |
  | http://www.apache.org/licenses/LICENSE-2.0.html                      |
  | If you did not receive a copy of the Apache2.0 license and are unable|
  | to obtain it through the world-wide-web, please send a note to       |
  | license@swoole.com so we can mail you a copy immediately.            |
  +----------------------------------------------------------------------+
  | Author: Tianfeng Han  <rango@swoole.com>                             |
  +----------------------------------------------------------------------+
*/

#pragma once

#include "swoole_server.h"
#include "swoole_http.h"
#include "swoole_mime_type.h"

#include <string>
#include <set>

namespace swoole {
namespace http_server {
class StaticHandler {
  private:
    Server *serv;
    std::string request_url;
    std::string dir_path;
    std::set<std::string> dir_files;
    std::string index_file;
    typedef struct {
        off_t offset;
        size_t length;
        char part_header[SW_HTTP_SERVER_PART_HEADER];
    } task_t;
    std::vector<task_t> tasks;

    size_t l_filename = 0;
    char filename[PATH_MAX];
    struct stat file_stat;
    bool last = false;
    std::string content_type;
    std::string boundary;
    std::string end_part;
    size_t content_length = 0;

  public:
    int status_code = SW_HTTP_OK;
    StaticHandler(Server *_server, const char *url, size_t url_length) : request_url(url, url_length) {
        serv = _server;
    }

    /**
     * @return true: continue to execute backwards
     * @return false: break static handler
     */
    bool hit();
    bool hit_index_file();

    bool is_modified(const std::string &date_if_modified_since);
    bool is_modified_range(const std::string &date_range);
    size_t make_index_page(String *buffer);
    bool get_dir_files();
    bool set_filename(const std::string &filename);

    bool has_index_file() {
        return !index_file.empty();
    }

    bool is_enabled_auto_index() {
        return serv->http_autoindex;
    }

    std::string get_date();

    time_t get_file_mtime() {
#ifdef __MACH__
        return file_stat.st_mtimespec.tv_sec;
#else
        return file_stat.st_mtim.tv_sec;
#endif
    }

    std::string get_date_last_modified();

    const char *get_filename() {
        return filename;
    }

    const char *get_boundary() {
        if (boundary.empty()) {
            boundary = std::string(SW_HTTP_SERVER_BOUNDARY_PREKEY);
            swoole_random_string(boundary, SW_HTTP_SERVER_BOUNDARY_TOTAL_SIZE - sizeof(SW_HTTP_SERVER_BOUNDARY_PREKEY));
        }
        return boundary.c_str();
    }

    const char *get_content_type() {
        if (tasks.size() > 1) {
            content_type = std::string("multipart/byteranges; boundary=") + get_boundary();
            return content_type.c_str();
        } else {
            return get_mimetype();
        }
    }

    const char *get_mimetype() {
        return swoole::mime_type::get(get_filename()).c_str();
    }

    std::string get_filename_std_string() {
        return std::string(filename, l_filename);
    }

    size_t get_filesize() {
        return file_stat.st_size;
    }

    const std::vector<task_t> &get_tasks() {
        return tasks;
    }

    bool is_dir() {
        return S_ISDIR(file_stat.st_mode);
    }

    size_t get_content_length() {
        return content_length;
    }

    const char *get_end_part() {
        return end_part.c_str();
    }

    void parse_range(const char *range, const char *if_range);
};

};  // namespace http_server
};  // namespace swoole

Youez - 2016 - github.com/yon3zu
LinuXploit