Merge branch '2.0.0' of https://github.com/shuffle/shuffle into 2.0.0
This commit is contained in:
@@ -1,13 +0,0 @@
|
|||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- launch
|
|
||||||
name: release-please
|
|
||||||
jobs:
|
|
||||||
release-please:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: google-github-actions/release-please-action@v3
|
|
||||||
with:
|
|
||||||
release-type: node
|
|
||||||
package-name: release-please-action
|
|
||||||
@@ -4,10 +4,6 @@
|
|||||||
|
|
||||||
Shuffle Automation
|
Shuffle Automation
|
||||||
|
|
||||||
[](https://github.com/Shuffle/Shuffle/actions/workflows/codeql-analysis.yml)
|
|
||||||
[](https://github.com/Shuffle/Shuffle/actions/workflows/dockerbuild.yaml)
|
|
||||||
[](https://deploy.cloud.run/?git_repo=https://github.com/0x0elliot/Shuffle&ref=2.0.0)
|
|
||||||
|
|
||||||
</h1><h4 align="center">
|
</h1><h4 align="center">
|
||||||
|
|
||||||
[Shuffle](https://shuffler.io) is an automation platform for and by the community, focusing on accessibility for anyone to automate. Security operations is complex, but it doesn't have to be.
|
[Shuffle](https://shuffler.io) is an automation platform for and by the community, focusing on accessibility for anyone to automate. Security operations is complex, but it doesn't have to be.
|
||||||
|
|||||||
@@ -1,9 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Shuffle",
|
|
||||||
"description": "Security Automation Platform",
|
|
||||||
"repository": "https://github.com/0x0elliot/Shuffle",
|
|
||||||
"ref": "2.0.0",
|
|
||||||
"scripts": {
|
|
||||||
"postclone": "chmod +x startup.sh && ./startup.sh"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -21,6 +21,7 @@
|
|||||||
"@uiw/codemirror-themes": "^4.21.9",
|
"@uiw/codemirror-themes": "^4.21.9",
|
||||||
"@uiw/react-codemirror": "^4.21.21",
|
"@uiw/react-codemirror": "^4.21.21",
|
||||||
"algoliasearch": "^4.8.3",
|
"algoliasearch": "^4.8.3",
|
||||||
|
"chart.js": "^3.0.0",
|
||||||
"class-transformer": "^0.2.0",
|
"class-transformer": "^0.2.0",
|
||||||
"codemirror": "^6.0.1",
|
"codemirror": "^6.0.1",
|
||||||
"cpx": "^1.5.0",
|
"cpx": "^1.5.0",
|
||||||
@@ -60,7 +61,7 @@
|
|||||||
"react-alice-carousel": "^2.6.4",
|
"react-alice-carousel": "^2.6.4",
|
||||||
"react-avatar-editor": "^11.1.0",
|
"react-avatar-editor": "^11.1.0",
|
||||||
"react-beforeunload": "^2.2.1",
|
"react-beforeunload": "^2.2.1",
|
||||||
"react-chartjs-2": "^5.2.0",
|
"react-chartjs-2": "^5.0.0",
|
||||||
"react-cookie": "^4.0.1",
|
"react-cookie": "^4.0.1",
|
||||||
"react-cytoscapejs": "^2.0.0",
|
"react-cytoscapejs": "^2.0.0",
|
||||||
"react-device-detect": "^2.2.3",
|
"react-device-detect": "^2.2.3",
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ import 'react-toastify/dist/ReactToastify.css';
|
|||||||
|
|
||||||
import Drift from "react-driftjs";
|
import Drift from "react-driftjs";
|
||||||
|
|
||||||
import { AppContext } from './context/contextApi.jsx';
|
import { AppContext } from './context/ContextApi.jsx';
|
||||||
|
|
||||||
// Production - backend proxy forwarding in nginx
|
// Production - backend proxy forwarding in nginx
|
||||||
var globalUrl = window.location.origin;
|
var globalUrl = window.location.origin;
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { Bar } from 'react-chartjs-2';
|
import { Bar } from 'react-chartjs-2';
|
||||||
|
import { Chart, registerables } from 'chart.js';
|
||||||
|
|
||||||
|
Chart.register(...registerables);
|
||||||
|
|
||||||
const HealthBarChart = (props) => {
|
const HealthBarChart = (props) => {
|
||||||
const { globalUrl, filteredData, options, onBarClick } = props;
|
const { globalUrl, filteredData, options, onBarClick } = props;
|
||||||
|
|||||||
@@ -1294,7 +1294,7 @@ const DocsWrapper = memo(({userdata, children })=>{
|
|||||||
return (
|
return (
|
||||||
<div style={{
|
<div style={{
|
||||||
minHeight: 1000, zIndex: 1,
|
minHeight: 1000, zIndex: 1,
|
||||||
maxWidth: Math.min(!userdata.support ? 1920 : leftSideBarOpenByClick ? windowWidth - 300 : windowWidth - 200, 1920),
|
maxWidth: Math.min(!userdata?.support ? 1920 : leftSideBarOpenByClick ? windowWidth - 300 : windowWidth - 200, 1920),
|
||||||
minWidth: isMobile ? null : userdata?.support ? leftSideBarOpenByClick ? 800 : 900 : null, margin: "auto",
|
minWidth: isMobile ? null : userdata?.support ? leftSideBarOpenByClick ? 800 : 900 : null, margin: "auto",
|
||||||
position: userdata?.support && leftSideBarOpenByClick ? "relative" : "static",
|
position: userdata?.support && leftSideBarOpenByClick ? "relative" : "static",
|
||||||
left: userdata?.support && leftSideBarOpenByClick ? 120 : userdata?.support && !leftSideBarOpenByClick ? 80 : 0,
|
left: userdata?.support && leftSideBarOpenByClick ? 120 : userdata?.support && !leftSideBarOpenByClick ? 80 : 0,
|
||||||
|
|||||||
-83
@@ -1,83 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Update and install dependencies
|
|
||||||
apt-get update
|
|
||||||
apt-get install -y docker.io docker-compose curl git
|
|
||||||
|
|
||||||
# Start and enable Docker
|
|
||||||
systemctl start docker
|
|
||||||
systemctl enable docker
|
|
||||||
|
|
||||||
# Clone Shuffle repository
|
|
||||||
git clone --branch 2.0.0 https://github.com/Shuffle/Shuffle.git
|
|
||||||
cd Shuffle
|
|
||||||
|
|
||||||
# Setup directories and permissions
|
|
||||||
mkdir shuffle-database && chmod -R 777 shuffle-database
|
|
||||||
|
|
||||||
# Start services
|
|
||||||
docker-compose up -d
|
|
||||||
|
|
||||||
# Wait for initial startup
|
|
||||||
echo "Waiting 30 seconds for initial startup..."
|
|
||||||
sleep 30
|
|
||||||
|
|
||||||
# Check for restarting containers
|
|
||||||
echo "Checking for restarting containers..."
|
|
||||||
ATTEMPTS=30
|
|
||||||
for i in $(seq 1 $ATTEMPTS); do
|
|
||||||
RESTARTING_CONTAINERS=$(docker ps --filter "status=restarting" --format "{{.Names}}")
|
|
||||||
if [ -n "$RESTARTING_CONTAINERS" ]; then
|
|
||||||
echo "The following containers are restarting:"
|
|
||||||
echo "$RESTARTING_CONTAINERS"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
echo "No containers are restarting. Attempt $i/$ATTEMPTS."
|
|
||||||
sleep 1
|
|
||||||
done
|
|
||||||
echo "No containers were found in a restarting state after $ATTEMPTS checks."
|
|
||||||
|
|
||||||
# Check frontend response
|
|
||||||
echo "Checking frontend response..."
|
|
||||||
RESPONSE=$(curl -s http://localhost:3001)
|
|
||||||
if echo "$RESPONSE" | grep -q "Shuffle"; then
|
|
||||||
echo "The word 'Shuffle' was found in the response."
|
|
||||||
else
|
|
||||||
echo "The word 'Shuffle' was not found in the response."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Register user
|
|
||||||
echo "Attempting to register user..."
|
|
||||||
MAX_RETRIES=30
|
|
||||||
RETRY_INTERVAL=10
|
|
||||||
CONTAINER_NAME="shuffle-backend"
|
|
||||||
|
|
||||||
for (( i=1; i<=$MAX_RETRIES; i++ ))
|
|
||||||
do
|
|
||||||
STATUS_CODE=$(curl -s -o /dev/null -w "%{http_code}" 'http://localhost:3001/api/v1/register' \
|
|
||||||
-H 'Accept: */*' \
|
|
||||||
-H 'Accept-Language: en-US,en;q=0.9' \
|
|
||||||
-H 'Connection: keep-alive' \
|
|
||||||
-H 'Content-Type: application/json' \
|
|
||||||
--data-raw '{"username":"demo@demo.io","password":"supercoolpassword"}')
|
|
||||||
|
|
||||||
if [ "$STATUS_CODE" -eq 200 ]; then
|
|
||||||
echo "User registration was successful with status code 200."
|
|
||||||
exit 0
|
|
||||||
elif [ "$STATUS_CODE" -ne 502 ]; then
|
|
||||||
echo "User registration failed with status code $STATUS_CODE."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Received status code $STATUS_CODE. Retrying in $RETRY_INTERVAL seconds... ($i/$MAX_RETRIES)"
|
|
||||||
echo "Fetching last 30 lines of logs from container $CONTAINER_NAME..."
|
|
||||||
docker logs --tail 30 "$CONTAINER_NAME"
|
|
||||||
echo "Fetching last 30 lines of logs from container shuffle-opensearch..."
|
|
||||||
docker logs --tail 30 shuffle-opensearch
|
|
||||||
|
|
||||||
sleep $RETRY_INTERVAL
|
|
||||||
done
|
|
||||||
|
|
||||||
echo "User registration failed after $MAX_RETRIES attempts."
|
|
||||||
exit 1
|
|
||||||
Reference in New Issue
Block a user