Giter VIP home page Giter VIP logo

content-docs's Introduction

Content logo

CircleCI Language grade: JavaScript Language grade: Python

Cortex XSOAR Content Developer Docs

This repo holds Cortex XSOAR Content Developer Docs. The Content Developer Docs provide information on how to develop and contribute content to the Cortex XSOAR platform. The actual content is hosted at the following repo: https://github.com/demisto/content.

This website is built using Docusaurus 2, a modern static website generator.

You can access the generated website at: https://xsoar.pan.dev/

Running the site locally

Node Setup

We use node 14.x for running the project. It is recommended to use nvm. See: https://github.com/nvm-sh/nvm for install instructions. It is recommended to setup auto use as specified here: https://github.com/nvm-sh/nvm#calling-nvm-use-automatically-in-a-directory-with-a-nvmrc-file . The root dir of the project contains a proper .nvmrc file with the recommended version to use.

Install and Start

Install all dependencies:

npm install

Start the development server on: http://localhost:3000

npm start

Start writing docs...

Generating Reference Docs

Reference docs are generated from the Cortex XSOAR Content repository. If you are working on general site docs which are not reference docs from the Content repo, you don't need to run this step to preview your docs.

To generate the docs we use pipenv. Make sure to install pipenv by running: pip3 install pipenv.

When working locally you can generate the reference docs by running:

npm run reference-docs

This task will checkout the content repository and generate the docs. The generated docs are ignored by .gitignore and shouldn't be checked in as they are generated during the build.

When generating the docs the master branch of the content repo will be used unless there is a matching branch with the same name as the current branch of content-docs, that branch will be used.

If you have the content repo checked out locally and you want to use it for generating the reference docs (for example when working on a Content Integration Doc), you can set the path to your content repo dir with the environment variable: CONTENT_REPO_DIR. For example:

 CONTENT_REPO_DIR=~/dev/demisto/content npm run reference-docs

Additional env vars that affect the generation of the docs:

  • FILE_REGEX: specify a regex to select which docs to generate docs for. For example:
    FILE_REGEX=Proofpoint CONTENT_REPO_DIR=~/dev/demisto/content npm run reference-docs
  • MAX_FILES: max files to generate in each category. Set this for faster generation when developing. Note also in CI builds on branches this is automatically set to speed up the preview site if there are only modifications related to docs. For example:
    MAX_FILES=10 CONTENT_REPO_DIR=~/dev/demisto/content npm run reference-docs
  • UPDATE_PACK_DOCS: set this when you want to update pack-docs.md with the supported tags. Make sure NOT to check-in the modified doc.
  • SKIP_DEPRECATED: skip calculating and generating deprecated doc. Set this for faster file generation when developing. For example:
    SKIP_DEPRECATED=true MAX_FILES=10 CONTENT_REPO_DIR=~/dev/demisto/content npm run reference-docs

Generation Code

Code used for generating content reference docs is written in Python and resides in the content-repo folder. To set up a development environment we use pipenv. Make sure to install pipenv by running: pip3 install pipenv. Setup a proper Python env by running:

pipenv install --dev

To run linting and unit tests you can use npm:

npm run test

Linting and unit tests are run on each commit using Github Actions. They are required to pass in-order to merge PRs.

Build

$ npm run build

This command generates static content into the build directory and can be served using any static contents hosting service.

Contributing

Contributions are welcome and appreciated. If you find a bug or have suggestions for improvements, feel free to open an Issue or (better yet) submit a Pull Request.

Before merging any PRs, we need all contributors to sign a contributor license agreement. By signing a contributor license agreement, we ensure that the community is free to use your contributions.

When you open a new pull request, a bot will evaluate whether you have signed the CLA. If required, the bot will comment on the pull request, including a link to accept the agreement. The CLA document is also available for review as a PDF.

If the license/cla status check remains on Pending, even though all contributors have accepted the CLA, you can recheck the CLA status by visiting the following link (replace [PRID] with the ID of your PR): https://cla-assistant.io/check/demisto/content-docs?pullRequest=[PRID] .

content-docs's People

Contributors

amshamah419 avatar anara123 avatar bakatzir avatar csestito avatar daryakoval avatar deanarbel avatar dorschw avatar edik24 avatar fvigo avatar glicht avatar idovandijk avatar itay4 avatar jochman avatar judahschwartz avatar julieschwartz18 avatar kgal-pan avatar marcellarichmond avatar mayagoldb avatar mchasepan avatar michal-dagan avatar moishce-zz avatar mosheeichler avatar reutshal avatar richardbluestone avatar shahafbenyakir avatar shellyber avatar shirleydenkberg avatar sserrata avatar tschanfeld avatar yaron-libman avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

content-docs's Issues

Issue with "AutoFocus Feed" in @site/docs/reference/integrations/auto-focus-feed.md

Describe the problem

The explanation in the video about the Autofocus "Samples Search" is not accurate. It instructs the users to click on:

_ API

However, the correct/easiest way to grab the JSON query is to click on the "Export Search" button.

Screenshots

Environment

  • OS: [e.g. Windows]
  • Browser: [e.g. chrome, safari, firefox..]
  • Browser Version:

Suggested fix

It would be nice if you could edit the video and at least modify the voice over to provide the right instructions

Issue with "HashiCorp Vault" in @site/docs/reference/integrations/hashi-corp-vault.md

The manage credentials link at the top of the doc points to the old docs. We need to point here:
https://xsoar.pan.dev/docs/reference/articles/managing-credentials

Describe the problem

Screenshots

Environment

  • OS: [e.g. Windows]
  • Browser: [e.g. chrome, safari, firefox..]
  • Browser Version:

Suggested fix

Issue with "Linting" in @site/docs/linting.md

Thank you for taking the time to help us improve our documentation! Please describe the problem and a suggested fix below and we'll get back to you as soon as we can. --DevRel

Describe the problem

Table of contents menu is appearing in the wrong place on the doc page.

Suggested fix

Identify the code block that is causing the issue. As with similar issues in the past, it's likely due to a code block not wrapping properly which extends the width, resulting in the overflow.

Issue with "VirusTotal - Private API" in @site/docs/reference/integrations/virus-total---private-api.md

Describe the problem

The parameter " Do not use by default " is not documented.

Screenshots

Environment

  • OS: [e.g. Windows]
  • Browser: [e.g. chrome, safari, firefox..]
  • Browser Version:

Suggested fix

Please explain the purpose of this setting and its effect(s).

Issue with "Microsoft Graph Security" in @site/docs/reference/integrations/microsoft-graph.md

Describe the problem

Directory.ReadWrite.All application permission for Microsoft Graph basically grants the application "God Mode" privileges on Azure AD and this certainly should not be needed, or if it is needed there should be really good justification as to why it is needed and other lesser privileged permissions can't be utilized instead to follow a least privileged model.

User.ReadWrite.All is also problematic here, unless there is a good reason for it.

Screenshots

image (12)

Environment

  • OS: [e.g. Windows]
  • Browser: [e.g. chrome, safari, firefox..]
  • Browser Version:

Suggested fix

Update the docs to illustrate why these permissions are needed, or implement a new set of permissions to better follow a least privilege model.

Issue with "CommandResults" in /docs/integrations/code-conventions.md

Describe the problem

There are typos in https://xsoar.pan.dev/docs/integrations/code-conventions#commandresults.

results = CommandResults(
    outputs='VirusTotal.IP',
    outputs_key_field='Address',
    outputs={
        'Address': '8.8.8.8',
        'ASN': 12345
    }
)
return_results(results)

It is not possible to set the same keyword argument(outputs).
Apparently, the first outputs is a typo of outputs_prefix.

Screenshots

Screen Shot 2020-07-20 at 17 24 38

Environment

  • OS: macOS
  • Browser: Chrome
  • Browser Version: Version 83.0.4103.116 (Official Build) (64-bit)

Suggested fix

Replace outputs with outputs_prefix.

Broken links

dark mode search box: text not visible

Describe the problem

In Dark Mode the search box text is almost non-visible.

Screenshots

In the screenshot I typed test in the search box:
image

Environment

  • OS: [e.g. Windows]
  • Browser: chrome
  • Browser Version:

Suggested fix

Change css so text in search bar with dark mode is visable

"npm run build" breaks local folders

When running npm run build locally, the build function does:

"build": "copyfiles -E -V -f docs/doc_imgs/* static/doc_imgs/. && replace 'doc_imgs' '/doc_imgs' docs/* --include='*.md*' && docusaurus build",

This has two issues:

  1. Replacing the relative links from 'doc_imgs' to '/doc_imgs' in the md files locally changes all the files, so git detects all of them as changed.
  2. static/doc_imgs/* gets added to the repo, which are detected as new files by git. This can probably be fixed easily by adding static/doc_imgs to .gitignore.

With this issues, if you test the build locally then you need to revert before adding files to staging and committing.

Issues with links to subdirectories in docs

Describe the problem

Due to new docs structure, some links seem to be broken, I found one as example

Screenshots

Tutorials

Environment

  • OS: [e.g. Windows]
  • Browser: [e.g. chrome, safari, firefox..]
  • Browser Version:

Suggested fix

Fix all links, verify they lead somewhere

Issue with "Integration Logo Standards" in @site/docs/integrations/integration-logo.md

Describe the problem

The various pages show inconsistent size limits for the integration logo (4KB vs 10KB).

Pages affected:

Screenshots

demisto-logo

Environment

  • OS: [e.g. Windows]
  • Browser: [e.g. chrome, safari, firefox..]
  • Browser Version:

Suggested fix

Settle on a single size limit.

Issue with "OTRS" in @site/docs/reference/integrations/otrs.md

Describe the problem

OTRS needs to be configured correctly for pyOTRS (and our integration) to work.

Suggested fix

We should link to/or mirror the advice under the prerequisites section at https://pypi.org/project/PyOTRS/

In particular - ensuring that the following is provided:

This YAML configuration template includes the Route: /TicketList endpoint that is required for PyOTRS but which is not included in the default OTRS webservice setup.

demisto-sdk command line argument does not exists

Hi, everyone.

I am reading documentation at this link. There is one step, where I should run

demisto-sdk lint

command on the folder Packs/HelloWorld/Integrations/HelloWorld using -d option.

Command:

demisto-sdk lint -d /path/to/demisto/content/Packs/HelloWorld/Integrations/HelloWorld/

Command result:

Usage: demisto-sdk lint [OPTIONS]

Error: no such option: -d

But, when I run command with -i argument, everything works fine.

demisto-sdk lint -i /path/to/demisto/content/Packs/HelloWorld/Integrations/HelloWorld/

Maybe something changes, and requires documentation update ?

I am using python 3.8.3 and demisto_sdk 1.1.2.

Thanks.

Missing image in docs/integration-docs.md

Missing image in: /docs/integration-docs

There is a link to: /doc_imgs/65404184-313ced00-dde0-11e9-9257-e61e2943fd75.gif that is missing in the doc_imgs directory.

I've tried to find the original image in the content repo but couldn't find it.

Issue with "PhishingDemo-Onboarding" in @site/docs/reference/playbooks/phishing-demo-onboarding.md

Describe the problem

The description paragraph is saying "For more information, refer to the on-boarding walkthroughs in the help section."
however, there is no help section with walkthrough available.

Screenshots

image

Suggested fix

Either delete this line or link for the help section (it's not on the product as well)

remove images from base directory

Describe the problem

Images were published to the base directory

Screenshots

Environment

  • OS: [e.g. Windows]
  • Browser: [e.g. chrome, safari, firefox..]
  • Browser Version:

Suggested fix

Add to static/img or remove.

Issue with "PyCharm IDE Plugin" in @site/docs/integrations/pycharm-plugin.md

tried your tutorial step by step integrate demisto to PyCharm and everything is fine event when i set the apikey it returns seuccessfull when i verify it but when i try to run it like what you said on the video it returns result below.

Please contact me @ [email protected]
We are trying to integrate our mailing phishing using demisto and I believe i am missing something here

DBot
June 8, 2020 4:52 PM
Scripts returned an error
Command:

!Hi5DevTeam dev="Shachar"
Hide reason
Reason
Error from Scripts is : Script failed to run: Runner request timeout reached (script timeout) for script [Hi5DevTeam]. timeout: [5m0s] (2618) (2603)

Issue with "is/is not" due to Python 2/3 versions incompatibility in @site/docs/tutorials/tut-integration-ui.md

Describe the problem

Yoda Speak integration code written with Python 2.x and produce errors when running within the newer Python 3.x oriented versions of Cortex XSOAR 5.5+

Suggest either at least mention that code have to be run under Python 2.x
Or as a best solution to provide the code for Python 3.x versions as well by substituting (is -> ==) and (is not -> !=)

Suggested fix

I could provide PR by adding separate sections for Python 2 and 3 code correspondingly.

Issue with "Cortex Data Lake" in @site/docs/reference/integrations/cortex-data-lake.md

Describe the problem

Backticks in example command syntax for !cdl-query-logs get rendered as markdown styling elements when viewed in the browser and do not come through when copying/pasting text to another window. This causes the requirement of backticks in the query to be unclear in the documentation.

Screenshots

Environment

  • OS: [e.g. Windows]
  • Browser: [e.g. chrome, safari, firefox..]
  • Browser Version:

Suggested fix

Escape the backticks in the example SQL syntax for the cdl-query-logs command so they are visible in the browser.

Issue with "Create an Integration" in @site/docs/tutorials/tut-integration-ui.md

Describe the problem

The current Create an Integration tutorial uses a code conventions different from those described in Code Conventions.

Screenshots

Tutorial page:

import requests
import json
import collections
# disable insecure warnings
requests.packages.urllib3.disable_warnings()
PROXY = demisto.params().get('proxy')
INSECURE = demisto.params().get('insecure')
BASE_URL = demisto.params().get('url')
API_KEY = demisto.params().get('apikey')
URL_SUFFIX = 'yoda'
if not demisto.params().get('proxy', False):
    del os.environ['HTTP_PROXY']
    del os.environ['HTTPS_PROXY']
    del os.environ['http_proxy']
    del os.environ['https_proxy']
'''HELPER FUNCTIONS'''
def http_request(method, URL_SUFFIX, json=None):
    if method is 'GET':
        headers = {}
    elif method is 'POST':
        if not API_KEY:
            headers = {
                'Content-Type': 'application/json',
                'Accept': 'application/json'
            }
        else:
            headers = {
                'Content-Type': 'application/json',
                'Accept': 'application/json',
                'X-FunTranslations-Api-Secret': API_KEY
            }
    r = requests.request(
        method,
        BASE_URL + URL_SUFFIX,
        data=json,
        headers=headers,
        verify=INSECURE
    )
    if r.status_code is not 200:
        return_error('Error in API call [%d] - %s' % (r.status_code, r.reason))
    return r.json()
# Allows nested keys to be accesible
def makehash():
    return collections.defaultdict(makehash)
'''MAIN FUNCTIONS'''
def translate(text):
    query = { 'text': text }
    search = json.dumps(query)
    r = http_request('POST', URL_SUFFIX, search)
    return r
def translate_command():
    text = demisto.args().get('text')
    contxt = makehash()
    human_readable = makehash()
    res = translate(text)
    contents = res['contents']
    if 'translated' in contents:
        human_readable['Original'] = text
        human_readable['Translation'] = contents['translated']
        contxt['Original'] = text
        contxt['Translation'] = contents['translated']
    ec = {'YodaSpeak.TheForce(val.Original && val.Original == obj.Original)': contxt}
    demisto.results({
        'Type': entryTypes['note'],
        'ContentsFormat': formats['markdown'],
        'Contents': res,
        'HumanReadable': tableToMarkdown('Yoda Says...', human_readable),
        'EntryContext': ec
    })
''' EXECUTION '''
LOG('command is %s' % (demisto.command(), ))
try:
    if demisto.command() == 'yoda-speak-translate':
        translate_command()
    elif demisto.command() == 'test-module':
        text = 'I have the high ground!'
        translate(text)
        demisto.results('ok')
except Exception, e:
    demisto.debug('The Senate? I am the Senate!')
    LOG(e.message)
    LOG.print_log()
    return_error(e.message)

Code convention page:

def main():
    """
        PARSE AND VALIDATE INTEGRATION PARAMS
    """
    username = demisto.params().get('credentials').get('identifier')
    password = demisto.params().get('credentials').get('password')
    # Remove trailing slash to prevent wrong URL path to service
    base_url = urljoin(demisto.params()['url'], '/api/v1/suffix')
    verify_certificate = not demisto.params().get('insecure', False)
    # How many time before the first fetch to retrieve incidents
    first_fetch_time = demisto.params().get('fetch_time', '3 days').strip()
    proxy = demisto.params().get('proxy', False)
    LOG(f'Command being called is {demisto.command()}')
    try:
        client = Client(
            base_url=base_url,
            verify=verify_certificate,
            auth=(username, password),
            proxy=proxy)
        if demisto.command() == 'test-module':
            # This is the call made when pressing the integration Test button.
            result = test_module(client)
            demisto.results(result)
        elif demisto.command() == 'fetch-incidents':
            # Set and define the fetch incidents command to run after activated via integration settings.
            next_run, incidents = fetch_incidents(
                client=client,
                last_run=demisto.getLastRun(),
                first_fetch_time=first_fetch_time)
            demisto.setLastRun(next_run)
            demisto.incidents(incidents)
        elif demisto.command() == 'helloworld-say-hello':
            return_outputs(*say_hello_command(client, demisto.args()))
    # Log exceptions
    except Exception as e:
        return_error(f'Failed to execute {demisto.command()} command. Error: {str(e)}')
if __name__ in ('__main__', '__builtin__', 'builtins'):
    main()

Environment

  • OS: MacOS
  • Browser: Chrome
  • Browser Version: -

Suggested fix

Update the tutorial content or add clarifying statement regarding coding style.

Issue with "Cortex Data Lake" in @site/docs/reference/integrations/cortex-data-lake.md

Describe the problem

Required URLs to open in Proxies are not listed in the integration doc.

Environment

  • Last CDL integration version
  • XSOAR 5.5

Suggested fix

Add a section with requirements including below URLs:

oproxy.demisto.ninja (license validation)
api.us.cdl.paloaltonetworks.com (mandatory)
api.nl.cdl.paloaltonetworks.com (optional, if CDL is in Europe)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.