!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)

/var/www/html/wincloud_gateway/node_modules/strapi-generate-new/lib/utils/   drwxr-xr-x
Free 13.27 GB of 57.97 GB (22.89%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


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

const fetch = require('node-fetch');
const tar = require('tar');
const parseGitUrl = require('git-url-parse');
const chalk = require('chalk');

const stopProcess = require('./stop-process');

function parseShorthand(template) {
  // Determine if it is comes from another owner
  if (template.includes('/')) {
    const [owner, partialName] = template.split('/');
    const name = `strapi-template-${partialName}`;
    return {
      name,
      fullName: `${owner}/${name}`,
    };
  }

  const name = `strapi-template-${template}`;
  return {
    name,
    fullName: `strapi/${name}`,
  };
}

/**
 * @param {string} repo The full name of the repository.
 */
async function getDefaultBranch(repo) {
  const response = await fetch(`https://api.github.com/repos/${repo}`);
  if (!response.ok) {
    stopProcess(
      `Could not find the information for ${chalk.yellow(
        repo
      )}. Make sure it is publicly accessible on github.`
    );
  }

  const { default_branch } = await response.json();
  return default_branch;
}

/**
 * @param {string} template GitHub URL or shorthand to a template project.
 */
async function getRepoInfo(template) {
  const { name, full_name: fullName, ref, filepath, protocols, source } = parseGitUrl(template);

  if (protocols.length === 0) {
    const repoInfo = parseShorthand(template);
    return {
      ...repoInfo,
      branch: await getDefaultBranch(repoInfo.fullName),
      usedShorthand: true,
    };
  }

  if (source !== 'github.com') {
    stopProcess(`GitHub URL not found for: ${chalk.yellow(template)}.`);
  }

  let branch;
  if (ref) {
    // Append the filepath to the parsed ref since a branch name could contain '/'
    // If so, the rest of the branch name will be considered 'filepath' by 'parseGitUrl'
    branch = filepath ? `${ref}/${filepath}` : ref;
  } else {
    branch = await getDefaultBranch(fullName);
  }

  return { name, fullName, branch };
}

/**
 * @param {string} repoInfo GitHub repository information (full name, branch...).
 * @param {string} tmpDir Path to the destination temporary directory.
 */
async function downloadGitHubRepo(repoInfo, tmpDir) {
  // Download from GitHub
  const { fullName, branch } = repoInfo;
  const codeload = `https://codeload.github.com/${fullName}/tar.gz/${branch}`;
  const response = await fetch(codeload);
  if (!response.ok) {
    throw Error(`Could not download the ${chalk.yellow(fullName)} repository.`);
  }

  await new Promise(resolve => {
    response.body.pipe(tar.extract({ strip: 1, cwd: tmpDir })).on('close', resolve);
  });
}

module.exports = { getRepoInfo, downloadGitHubRepo };

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