grim-reaper 1.0.33 → 1.0.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +105 -0
- data/bin/grim +81 -2
- data/lib/grim_reaper/installer.rb +156 -23
- data/lib/grim_reaper/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3e995dc62a1b7e977043d7356552ca215771c85375621edaaf9b4ee9e62ccdc5
|
4
|
+
data.tar.gz: f01964b9bb32a4d6ca739e4f78ed9da9af81638832bd7967cadf441ae415e83b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9ce86d8d9daee4c5aa4a70d04008bf2608840696b111227c7480535b25208f17766207bd0bf54576896df2ccbb00b9e202797d2ac251eb1267b8c2a6314aa18b
|
7
|
+
data.tar.gz: 74b57781c00e33a617a08b86a3a2c4dffd27b25d60fe9e443649711af5c36057b0090d9bcd5e1e45d06bd193cb28aee5355b40e336a12718c9a02c5326ed136f
|
data/README.md
CHANGED
@@ -8,12 +8,117 @@
|
|
8
8
|
|
9
9
|
Enterprise-grade data protection platform with AI-powered backup decisions, military-grade encryption, multi-algorithm compression, content-based deduplication, real-time monitoring, and automated threat response.
|
10
10
|
|
11
|
+
## 🚀 What's New in v1.0.34
|
12
|
+
|
13
|
+
### 🆕 **Latest.tar.gz Auto-Download System**
|
14
|
+
- **Direct Install**: Now downloads complete Grim system from `get.grim.so/latest.tar.gz`
|
15
|
+
- **Smart Extraction**: Properly handles `graveyard/reaper/` structure with `--strip-components=2`
|
16
|
+
- **Auto-Environment**: Automatically sets `GRIM_ROOT`, `GRIM_LICENSE=FREE`, `GRIM_REAPER=FALSE`
|
17
|
+
- **Intelligent Paths**: Tries `/root/.grim`, `$HOME/.grim`, or local directory
|
18
|
+
- **Executable Scripts**: Automatically makes all scripts executable
|
19
|
+
- **Bashrc Integration**: Adds environment to `~/.bashrc` for persistence
|
20
|
+
|
21
|
+
### 🏗️ **Professional Tier System (July 2025)**
|
22
|
+
Complete overhaul of pricing structure with 6-tier system:
|
23
|
+
|
24
|
+
- **🆓 FREE** ($0) - 1GB storage, 15 commands, encrypted auto-backups
|
25
|
+
- **💼 BASIC** ($19) - 25GB cloud, 35 commands, removes encryption friction
|
26
|
+
- **🚀 PRO** ($49) - 100GB storage, 60 commands, AI-powered decisions
|
27
|
+
- **⚔️ MASTER** ($99) - 1TB storage, 200+ commands, enterprise compliance
|
28
|
+
- **💀 REAPER** ($499) - Unlimited storage, custom development, 24/7 support
|
29
|
+
- **🏢 ENTERPRISE** (Custom) - Global deployment, source code access, strategic partnership
|
30
|
+
|
31
|
+
### 🔧 **Critical Infrastructure Fixes (July 26-27, 2025)**
|
32
|
+
- **SSL Certificate Crisis**: Fixed `up.grim.so` SSL mismatch (was `cyberboost.com`)
|
33
|
+
- **Port Configuration**: Corrected auto-update service from `4745` → `5001`
|
34
|
+
- **Auto-Update Daemon**: Restored background version checking for 5000+ installations
|
35
|
+
- **Nginx Proxy**: Fixed proxy configuration for proper request routing
|
36
|
+
- **Function Dependencies**: Resolved `log_update` function order bugs
|
37
|
+
|
38
|
+
### 🔐 **Enhanced Security Features**
|
39
|
+
- **OTP Authentication**: TOTP support with QR codes and backup codes
|
40
|
+
- **Environment Protection**: Smart environment variable detection and setup
|
41
|
+
- **Secure Downloads**: HTTPS-only downloads with SSL verification
|
42
|
+
- **Permission Management**: Automatic executable permissions for all scripts
|
43
|
+
|
11
44
|
## 🚀 Quick Install
|
12
45
|
|
13
46
|
```bash
|
14
47
|
gem install grim-reaper
|
15
48
|
```
|
16
49
|
|
50
|
+
## 🎯 Quick Start Commands
|
51
|
+
|
52
|
+
```bash
|
53
|
+
# Download and install complete Grim system
|
54
|
+
grim download-latest
|
55
|
+
|
56
|
+
# Setup complete environment (Python, Go, Shell, Scythe)
|
57
|
+
grim setup-complete
|
58
|
+
|
59
|
+
# Check installation status
|
60
|
+
grim check-installation
|
61
|
+
|
62
|
+
# Health check all modules
|
63
|
+
grim health
|
64
|
+
```
|
65
|
+
|
66
|
+
## 🔐 Enhanced OTP Authentication
|
67
|
+
|
68
|
+
Enhanced security with One-Time Password (TOTP) authentication:
|
69
|
+
|
70
|
+
```bash
|
71
|
+
# Setup OTP authentication
|
72
|
+
grim otp-setup
|
73
|
+
|
74
|
+
# Use OTP with commands
|
75
|
+
grim health --otp 123456
|
76
|
+
grim setup-complete --otp 789012
|
77
|
+
|
78
|
+
# Check OTP status
|
79
|
+
grim otp-status
|
80
|
+
|
81
|
+
# Verify OTP code
|
82
|
+
grim otp-verify 123456
|
83
|
+
```
|
84
|
+
|
85
|
+
## 🎯 Ruby Integration
|
86
|
+
|
87
|
+
```ruby
|
88
|
+
require 'grim_reaper'
|
89
|
+
|
90
|
+
# Initialize with auto-download
|
91
|
+
grim = GrimReaper.new
|
92
|
+
|
93
|
+
# Download latest if not installed
|
94
|
+
installer = GrimReaper::Installer.new
|
95
|
+
installer.download_latest_grim unless installer.find_grim_root
|
96
|
+
|
97
|
+
# Quick operations
|
98
|
+
grim.backup('/important/data')
|
99
|
+
grim.monitor('/var/log')
|
100
|
+
grim.security
|
101
|
+
```
|
102
|
+
|
103
|
+
## 📥 Installation Options
|
104
|
+
|
105
|
+
### Option 1: Ruby Gem (Recommended)
|
106
|
+
```bash
|
107
|
+
gem install grim-reaper
|
108
|
+
grim download-latest
|
109
|
+
```
|
110
|
+
|
111
|
+
### Option 2: Direct Download
|
112
|
+
```bash
|
113
|
+
curl -sSL get.grim.so | sudo bash
|
114
|
+
```
|
115
|
+
|
116
|
+
### Option 3: Manual Setup
|
117
|
+
```bash
|
118
|
+
gem install grim-reaper
|
119
|
+
grim setup-complete
|
120
|
+
```
|
121
|
+
|
17
122
|
## 🎯 Quick Start
|
18
123
|
|
19
124
|
```ruby
|
data/bin/grim
CHANGED
@@ -94,13 +94,92 @@ class GrimCLI < Thor
|
|
94
94
|
|
95
95
|
begin
|
96
96
|
installer = GrimReaper::Installer.new
|
97
|
-
installer.setup_complete_environment
|
98
|
-
|
97
|
+
if installer.setup_complete_environment
|
98
|
+
puts "✅ Complete Grim Reaper environment setup finished!".colorize(:green)
|
99
|
+
puts "📁 Installation directory: #{ENV['GRIM_ROOT']}".colorize(:blue)
|
100
|
+
puts "🔧 Run 'source ~/.bashrc' to reload environment".colorize(:yellow)
|
101
|
+
else
|
102
|
+
puts "❌ Setup failed".colorize(:red)
|
103
|
+
exit 1
|
104
|
+
end
|
99
105
|
rescue => e
|
100
106
|
puts "❌ Setup failed: #{e.message}".colorize(:red)
|
101
107
|
exit 1
|
102
108
|
end
|
103
109
|
end
|
110
|
+
|
111
|
+
desc "download-latest", "Download and install latest Grim Reaper from get.grim.so"
|
112
|
+
def download_latest
|
113
|
+
if options[:otp] && !validate_otp_access
|
114
|
+
return
|
115
|
+
end
|
116
|
+
|
117
|
+
puts "📥 Downloading latest Grim Reaper...".colorize(:cyan)
|
118
|
+
|
119
|
+
begin
|
120
|
+
installer = GrimReaper::Installer.new
|
121
|
+
if installer.download_latest_grim
|
122
|
+
puts "✅ Download and installation complete!".colorize(:green)
|
123
|
+
puts "📁 Installation directory: #{ENV['GRIM_ROOT']}".colorize(:blue)
|
124
|
+
puts "🔧 Run 'source ~/.bashrc' to reload environment".colorize(:yellow)
|
125
|
+
puts ""
|
126
|
+
puts "Available commands:".colorize(:blue)
|
127
|
+
puts " grim backup <path> - Create backup"
|
128
|
+
puts " grim monitor <path> - Start monitoring"
|
129
|
+
puts " grim security - Security status"
|
130
|
+
puts " grim rb-setup - Setup Ruby environment"
|
131
|
+
else
|
132
|
+
puts "❌ Download failed".colorize(:red)
|
133
|
+
exit 1
|
134
|
+
end
|
135
|
+
rescue => e
|
136
|
+
puts "❌ Download failed: #{e.message}".colorize(:red)
|
137
|
+
exit 1
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
desc "check-installation", "Check if Grim Reaper is properly installed"
|
142
|
+
def check_installation
|
143
|
+
puts "🔍 Checking Grim Reaper installation...".colorize(:cyan)
|
144
|
+
|
145
|
+
begin
|
146
|
+
installer = GrimReaper::Installer.new
|
147
|
+
grim_root = ENV["GRIM_ROOT"]
|
148
|
+
|
149
|
+
if grim_root && Dir.exist?(grim_root)
|
150
|
+
puts "✅ GRIM_ROOT found: #{grim_root}".colorize(:green)
|
151
|
+
|
152
|
+
# Check key components
|
153
|
+
components = [
|
154
|
+
"throne/grim_throne.sh",
|
155
|
+
"install.sh",
|
156
|
+
".rip"
|
157
|
+
]
|
158
|
+
|
159
|
+
components.each do |component|
|
160
|
+
path = File.join(grim_root, component)
|
161
|
+
if File.exist?(path)
|
162
|
+
puts "✅ #{component}".colorize(:green)
|
163
|
+
else
|
164
|
+
puts "❌ #{component} - Missing".colorize(:red)
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
168
|
+
puts ""
|
169
|
+
puts "Environment Variables:".colorize(:blue)
|
170
|
+
puts " GRIM_ROOT=#{ENV['GRIM_ROOT']}".colorize(:blue)
|
171
|
+
puts " GRIM_LICENSE=#{ENV['GRIM_LICENSE']}".colorize(:blue)
|
172
|
+
puts " GRIM_REAPER=#{ENV['GRIM_REAPER']}".colorize(:blue)
|
173
|
+
|
174
|
+
else
|
175
|
+
puts "❌ Grim Reaper not installed".colorize(:red)
|
176
|
+
puts "💡 Run 'grim download-latest' to install".colorize(:yellow)
|
177
|
+
end
|
178
|
+
|
179
|
+
rescue => e
|
180
|
+
puts "❌ Check failed: #{e.message}".colorize(:red)
|
181
|
+
end
|
182
|
+
end
|
104
183
|
|
105
184
|
desc "health", "Check health of all Grim Reaper modules"
|
106
185
|
def health
|
@@ -2,6 +2,8 @@
|
|
2
2
|
|
3
3
|
require "open3"
|
4
4
|
require "fileutils"
|
5
|
+
require "net/http"
|
6
|
+
require "uri"
|
5
7
|
|
6
8
|
module GrimReaper
|
7
9
|
# Ruby-specific installer and dependency manager
|
@@ -12,6 +14,152 @@ module GrimReaper
|
|
12
14
|
@grim_root = find_grim_root
|
13
15
|
@backup_dir = ENV["HOME"] + "/.graveyard"
|
14
16
|
@install_dir = ENV["HOME"] + "/reaper"
|
17
|
+
setup_environment_variables
|
18
|
+
end
|
19
|
+
|
20
|
+
# Setup environment variables
|
21
|
+
def setup_environment_variables
|
22
|
+
# Set GRIM_ROOT if not already set
|
23
|
+
unless ENV["GRIM_ROOT"]
|
24
|
+
if File.writable?("/root/")
|
25
|
+
ENV["GRIM_ROOT"] = "/root/.grim"
|
26
|
+
elsif File.writable?(ENV["HOME"])
|
27
|
+
ENV["GRIM_ROOT"] = ENV["HOME"] + "/.grim"
|
28
|
+
else
|
29
|
+
ENV["GRIM_ROOT"] = Dir.pwd + "/.grim"
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
# Set default license tier to FREE
|
34
|
+
ENV["GRIM_LICENSE"] ||= "FREE"
|
35
|
+
|
36
|
+
# Set GRIM_REAPER to FALSE for normal install
|
37
|
+
ENV["GRIM_REAPER"] ||= "FALSE"
|
38
|
+
|
39
|
+
puts "🗡️ Grim environment configured:"
|
40
|
+
puts " GRIM_ROOT=#{ENV['GRIM_ROOT']}"
|
41
|
+
puts " GRIM_LICENSE=#{ENV['GRIM_LICENSE']}"
|
42
|
+
puts " GRIM_REAPER=#{ENV['GRIM_REAPER']}"
|
43
|
+
end
|
44
|
+
|
45
|
+
# Download and install latest Grim Reaper from get.grim.so
|
46
|
+
def download_latest_grim
|
47
|
+
puts "📥 Downloading latest Grim Reaper from get.grim.so..."
|
48
|
+
|
49
|
+
install_dir = ENV["GRIM_ROOT"] || (ENV["HOME"] + "/.grim")
|
50
|
+
FileUtils.mkdir_p(install_dir)
|
51
|
+
|
52
|
+
temp_file = File.join(install_dir, "grim-latest.tar.gz")
|
53
|
+
|
54
|
+
begin
|
55
|
+
# Download latest.tar.gz
|
56
|
+
uri = URI("https://get.grim.so/latest.tar.gz")
|
57
|
+
Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http|
|
58
|
+
request = Net::HTTP::Get.new(uri)
|
59
|
+
response = http.request(request)
|
60
|
+
|
61
|
+
if response.code == "200"
|
62
|
+
File.open(temp_file, "wb") { |file| file.write(response.body) }
|
63
|
+
puts "✅ Download complete"
|
64
|
+
else
|
65
|
+
raise "Failed to download: HTTP #{response.code}"
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
# Extract with proper graveyard/reaper/ handling (strip 2 components)
|
70
|
+
puts "📦 Extracting Grim Reaper..."
|
71
|
+
success = system("tar", "-xzf", temp_file, "--strip-components=2", "-C", install_dir)
|
72
|
+
|
73
|
+
unless success
|
74
|
+
raise "Failed to extract tarball"
|
75
|
+
end
|
76
|
+
|
77
|
+
# Remove temp file
|
78
|
+
File.delete(temp_file) if File.exist?(temp_file)
|
79
|
+
|
80
|
+
# Make scripts executable
|
81
|
+
make_scripts_executable(install_dir)
|
82
|
+
|
83
|
+
# Setup environment file
|
84
|
+
setup_environment_file(install_dir)
|
85
|
+
|
86
|
+
puts "✅ Grim Reaper installation complete!"
|
87
|
+
puts "📁 Installed to: #{install_dir}"
|
88
|
+
|
89
|
+
return true
|
90
|
+
|
91
|
+
rescue => e
|
92
|
+
puts "❌ Download failed: #{e.message}"
|
93
|
+
File.delete(temp_file) if File.exist?(temp_file)
|
94
|
+
return false
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
# Make scripts executable
|
99
|
+
def make_scripts_executable(install_dir)
|
100
|
+
puts "🔧 Making scripts executable..."
|
101
|
+
|
102
|
+
scripts = [
|
103
|
+
"throne/grim_throne.sh",
|
104
|
+
"throne/sh_grim_throne.sh",
|
105
|
+
"throne/py_grim_throne.sh",
|
106
|
+
"throne/rb_grim_throne.sh",
|
107
|
+
"throne/go_grim_throne.sh",
|
108
|
+
"install.sh",
|
109
|
+
"master-install.sh",
|
110
|
+
"sh_grim/*.sh",
|
111
|
+
"py_grim/*.py",
|
112
|
+
"go_grim/build/*",
|
113
|
+
".rip/*.sh",
|
114
|
+
"auto_backups/*.sh"
|
115
|
+
]
|
116
|
+
|
117
|
+
scripts.each do |script_pattern|
|
118
|
+
Dir.glob(File.join(install_dir, script_pattern)).each do |script|
|
119
|
+
begin
|
120
|
+
File.chmod(0755, script)
|
121
|
+
rescue => e
|
122
|
+
puts "⚠️ Could not make #{script} executable: #{e.message}"
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
# Setup environment file for persistence
|
129
|
+
def setup_environment_file(install_dir)
|
130
|
+
puts "📝 Setting up environment file..."
|
131
|
+
|
132
|
+
env_file = File.join(install_dir, ".grim_env")
|
133
|
+
|
134
|
+
env_content = <<~ENV
|
135
|
+
# Grim Reaper Environment Configuration
|
136
|
+
export GRIM_ROOT="#{ENV['GRIM_ROOT']}"
|
137
|
+
export GRIM_LICENSE="#{ENV['GRIM_LICENSE']}"
|
138
|
+
export GRIM_REAPER="#{ENV['GRIM_REAPER']}"
|
139
|
+
export PATH="$PATH:#{install_dir}/throne:#{install_dir}/sh_grim:#{install_dir}/py_grim"
|
140
|
+
|
141
|
+
# Load Grim functions
|
142
|
+
if [ -f "#{install_dir}/throne/grim_throne.sh" ]; then
|
143
|
+
source "#{install_dir}/throne/grim_throne.sh"
|
144
|
+
fi
|
145
|
+
ENV
|
146
|
+
|
147
|
+
File.write(env_file, env_content)
|
148
|
+
|
149
|
+
# Add to bashrc if possible
|
150
|
+
bashrc_path = ENV["HOME"] + "/.bashrc"
|
151
|
+
if File.exist?(bashrc_path) && File.writable?(bashrc_path)
|
152
|
+
source_line = "[ -f #{env_file} ] && source #{env_file}"
|
153
|
+
bashrc_content = File.read(bashrc_path)
|
154
|
+
|
155
|
+
unless bashrc_content.include?(source_line)
|
156
|
+
File.open(bashrc_path, "a") do |f|
|
157
|
+
f.puts "\n# Grim Reaper Environment"
|
158
|
+
f.puts source_line
|
159
|
+
end
|
160
|
+
puts "✅ Added Grim environment to ~/.bashrc"
|
161
|
+
end
|
162
|
+
end
|
15
163
|
end
|
16
164
|
|
17
165
|
# Find Grim Reaper root directory
|
@@ -54,10 +202,16 @@ module GrimReaper
|
|
54
202
|
raise Error, "Could not find Grim Reaper root directory"
|
55
203
|
end
|
56
204
|
|
57
|
-
# Setup complete Grim Reaper environment (
|
205
|
+
# Setup complete Grim Reaper environment (installs Python, Go, Shell, Scythe components)
|
58
206
|
def setup_complete_environment
|
59
207
|
puts "🗡️ Setting up complete Grim Reaper environment..."
|
60
208
|
|
209
|
+
# First download the latest version
|
210
|
+
unless download_latest_grim
|
211
|
+
puts "❌ Failed to download Grim Reaper"
|
212
|
+
return false
|
213
|
+
end
|
214
|
+
|
61
215
|
# Setup Ruby environment
|
62
216
|
setup_ruby_environment
|
63
217
|
|
@@ -76,10 +230,8 @@ module GrimReaper
|
|
76
230
|
# Create necessary directories
|
77
231
|
create_directories
|
78
232
|
|
79
|
-
# Setup environment file
|
80
|
-
setup_environment_file
|
81
|
-
|
82
233
|
puts "✅ Complete Grim Reaper environment setup finished"
|
234
|
+
return true
|
83
235
|
end
|
84
236
|
|
85
237
|
# Setup Ruby environment
|
@@ -400,25 +552,6 @@ module GrimReaper
|
|
400
552
|
end
|
401
553
|
end
|
402
554
|
|
403
|
-
# Setup environment file
|
404
|
-
def setup_environment_file
|
405
|
-
env_file = File.join(@grim_root, ".env")
|
406
|
-
scythe_dir = File.join(@grim_root, ".graveyard", ".rip", ".scythe")
|
407
|
-
env_content = <<~ENV
|
408
|
-
# Grim Reaper Environment Configuration
|
409
|
-
GRIM_ROOT=#{@grim_root}
|
410
|
-
SCYTHE_DIR=#{scythe_dir}
|
411
|
-
GRIM_BACKUP_DIR=#{@backup_dir}
|
412
|
-
GRIM_HOME=#{@install_dir}
|
413
|
-
GRIM_RUBY_VERSION=#{`ruby -e "puts RUBY_VERSION"`.strip}
|
414
|
-
GRIM_PYTHON_VERSION=#{`python3 --version 2>/dev/null | cut -d' ' -f2` || 'Not installed'}
|
415
|
-
GRIM_GO_VERSION=#{`go version 2>/dev/null | cut -d' ' -f3` || 'Not installed'}
|
416
|
-
ENV
|
417
|
-
|
418
|
-
File.write(env_file, env_content)
|
419
|
-
puts "📄 Created environment file: #{env_file}"
|
420
|
-
end
|
421
|
-
|
422
555
|
# Verify installation
|
423
556
|
def verify_installation
|
424
557
|
puts "🔍 Verifying installation..."
|
data/lib/grim_reaper/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: grim-reaper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.34
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bernie Gengel and his beagle Buddy
|
@@ -220,7 +220,7 @@ metadata:
|
|
220
220
|
source_code_uri: https://github.com/cyber-boost/grim
|
221
221
|
changelog_uri: https://github.com/cyber-boost/grim/blob/main/CHANGELOG.md
|
222
222
|
rubygems_mfa_required: 'true'
|
223
|
-
post_install_message: "\U0001F5E1️ Grim Reaper Ruby Gem v1.0.
|
223
|
+
post_install_message: "\U0001F5E1️ Grim Reaper Ruby Gem v1.0.34 installed successfully!\n\n\U0001F195
|
224
224
|
NEW: OTP (One-Time Password) Authentication Support!\nRun 'grim otp-setup' to enable
|
225
225
|
secure two-factor authentication.\n\nThe gem provides a unified interface to all
|
226
226
|
Grim Reaper modules:\n- Python components (scythe, py_grim)\n- Go components (go_grim)\n-
|