!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/server/components/cameras/   drwxr-xr-x
Free 13.3 GB of 57.97 GB (22.95%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


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

const _ = require('lodash');

const config = require('../../../services/config/config.service');
const ffmpeg = require('../../services/ffmpeg.service');
const lowdb = require('../../services/lowdb.service');
const ping = require('../../services/ping.service');

const database = () => lowdb.database().then((database_) => database_.get('cameras'));
const database_settings = () => lowdb.database().then((database_) => database_.get('settings'));

exports.list = async () => {
  const Cameras = await database();
  const Settings = await database_settings();
  const cameraSettings = await Settings.get('cameras').value();

  const cameras = await Cameras.value();

  for (const camera of cameras) {
    camera.settings = cameraSettings.find((cameraSetting) => cameraSetting && cameraSetting.name === camera.name);
  }

  return cameras;
};

exports.findByName = async (name) => {
  const Cameras = await database();
  const Settings = await database_settings();
  const cameraSettings = await Settings.get('cameras').value();

  const camera = await Cameras.find({ name: name }).value();

  if (!camera) {
    return;
  }

  camera.settings = cameraSettings.find((cameraSetting) => cameraSetting && cameraSetting.name === camera.name);

  return camera;
};

exports.createCamera = async (cameraData) => {
  const Cameras = await database();

  const pluginConfig = config.getPluginConfig();

  let camExist = pluginConfig.cameras.find((cam) => cam.name === cameraData.name);

  if (!camExist) {
    pluginConfig.cameras.push(cameraData);

    config.saveHbConfig(pluginConfig);

    return await Cameras.push(cameraData).write();
  } else {
    throw new Error('Camera already exists in config.json');
  }
};

exports.patchCamera = async (name, cameraData) => {
  const Cameras = await database();

  const pluginConfig = config.getPluginConfig();

  if (
    cameraData.name &&
    name !== cameraData.name &&
    pluginConfig.cameras.some((camera) => camera.name === cameraData.name)
  ) {
    throw new Error('Camera already exists in config.json');
  }

  let cameraConfig = _.find(pluginConfig.cameras, { name: name });
  _.assign(cameraConfig, cameraData);

  config.saveHbConfig(pluginConfig);

  return await Cameras.find({ name: name }).assign(cameraData).write();
};

exports.pingCamera = async (videoConfig, timeout) => {
  timeout = (Number.parseInt(timeout) || 0) < 1 ? 1 : Number.parseInt(timeout);
  return await ping.status(videoConfig, timeout);
};

exports.requestSnapshot = async (cameraName, videoConfig, timeout) => {
  return await ffmpeg.getAndStoreSnapshot(cameraName, videoConfig, null, null, null, null, null, timeout);
};

exports.removeByName = async (name) => {
  const Cameras = await database();

  const pluginConfig = config.getPluginConfig();

  _.remove(pluginConfig.cameras, (cam) => cam.name === name);

  config.saveHbConfig(pluginConfig);

  return await Cameras.remove((cam) => cam.name === name).write();
};

exports.removeAll = async () => {
  const Cameras = await database();

  const pluginConfig = config.getPluginConfig();

  pluginConfig.cameras = [];

  config.saveHbConfig(pluginConfig);

  return await Cameras.remove(() => true).write();
};

:: 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.006 ]--