Skip to content

Feeds page: add IntelOwl analysis link for each IOC. Closes #292#865

Merged
mlodic merged 6 commits intoGreedyBear-Project:developfrom
rootp1:fix/issue-292
Feb 27, 2026
Merged

Feeds page: add IntelOwl analysis link for each IOC. Closes #292#865
mlodic merged 6 commits intoGreedyBear-Project:developfrom
rootp1:fix/issue-292

Conversation

@rootp1
Copy link
Copy Markdown
Contributor

@rootp1 rootp1 commented Feb 23, 2026

Description

Adds an optional "Analyze" column to the Feeds table. When the new VITE_INTELOWL_URL environment variable is set, each row displays the IntelOwl icon. Clicking it opens the IntelOwl scan page in a new tab with the IOC value pre-filled in the observable field.

VITE_INTELOWL_URL is a Vite build-time variable (the VITE_ prefix is required by Vite), so it is baked into the frontend bundle at docker compose build time. Set it in docker/env_file_template before building:

# Optional IntelOwl base URL. When set, a link to analyze each IOC on IntelOwl
# will appear in the Feeds table.
# Example: https://your-intelowl-instance.example.com
VITE_INTELOWL_URL=

The generated link format is:

{VITE_INTELOWL_URL}/scan?observable_name={ioc_value}

The feature is fully opt-in — if VITE_INTELOWL_URL is empty or unset, the column is not rendered and existing deployments are unaffected.

Files changed

File Change
docker/env_file_template Added VITE_INTELOWL_URL with inline documentation
frontend/src/constants/environment.js Exported INTELOWL_URL constant (supports both Vite and test environments)
frontend/src/components/feeds/tableColumns.jsx Added conditional "Analyze" column using INTELOWL_URL
frontend/public/intelowl.png IntelOwl icon served as a static public asset

Related issues

Closes #292

Type of change

  • Bug fix (non-breaking change which fixes an issue).
  • New feature (non-breaking change which adds functionality).
  • Breaking change (fix or feature that would cause existing functionality to not work as expected).

Checklist

  • I have read and understood the rules about how to Contribute to this project.
  • The pull request is for the branch develop.
  • I have added documentation of the new features.
  • Linter (Ruff) gave 0 errors. If you have correctly installed pre-commit, it does these checks and adjustments on your behalf.
  • I have added tests for the feature/bug I solved. All the tests (new and old ones) gave 0 errors.
  • If changes were made to an existing model/serializer/view, the docs were updated and regenerated (check CONTRIBUTE.md).
  • If the GUI has been modified:
    • I have provided a screenshot of the result in the PR.
    • I have created new frontend tests for the new component or updated existing ones.
image

@rootp1
Copy link
Copy Markdown
Contributor Author

rootp1 commented Feb 23, 2026

@regulartim can you please review

Copy link
Copy Markdown
Member

@regulartim regulartim left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good, all in all. Can you add at least one test case that checks if the column appears when INTELOWL_URL is set and is absent when not?

Cell: ({ row }) => (
<div className="d-flex justify-content-center">
<a
href={`${INTELOWL_URL}/scan?observable_name=${row.original.value}`}
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please use URL encoding for row.original.value.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

added

Comment thread docker/env_file_template
@rootp1
Copy link
Copy Markdown
Contributor Author

rootp1 commented Feb 24, 2026

Looks good, all in all. Can you add at least one test case that checks if the column appears when INTELOWL_URL is set and is absent when not?
sure, Tim.

@rootp1
Copy link
Copy Markdown
Contributor Author

rootp1 commented Feb 24, 2026

@regulartim passed all checks and made all the changes.
VITE_ is required by vite, I tried without it, but faced a "undefined" error

Copy link
Copy Markdown
Member

@regulartim regulartim left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me! 👍

@mlodic , could you take a look? If this is what you wanted, please merge and close the issue.

title={`Analyze ${row.original.value} on IntelOwl`}
>
<img
src={`${PUBLIC_URL}/intelowl.png`}
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would use the owl icon instead of the big "IntelOwl" image. It is smaller and fits better the page.

Aside from that, it is good change, thanks.
Please provide new screenshot after such change

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sure

@rootp1
Copy link
Copy Markdown
Contributor Author

rootp1 commented Feb 27, 2026

image @mlodic This is how it looks like, after changing the image

@mlodic mlodic merged commit 80c45a2 into GreedyBear-Project:develop Feb 27, 2026
5 checks passed
cclts pushed a commit to cclts/GreedyBear that referenced this pull request Mar 11, 2026
…r-Project#292 (GreedyBear-Project#865)

* added intelowl column

* url encoding

* 3 new testcases

* fix: prettier formatting in TableColumns.test.jsx

* new image

* new
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants