Compare commits

..

2 Commits

Author SHA1 Message Date
e56b3f0083 Refactor event handling and policy script error management
Some checks failed
Go / build (push) Has been cancelled
Go / release (push) Has been cancelled
- Removed redundant log statement in HandleEvent for cleaner output.
- Enhanced policy script handling to check for script existence before execution, improving error handling and fallback logic.
- Updated error messages to provide clearer feedback when policy scripts are missing or fail to start.
- Bumped version to v0.21.2 to reflect these changes.
2025-11-01 12:55:42 +00:00
daniyal
9064b3ab5f Fix deployment script issues (#1)
- Fix Go installation by extracting to /tmp first then moving to final destination
- Return to original directory after Go installation
- Add attempt to install secp256k1 from package manager before building from source
- Add missing automake package for autoreconf
- Fix binary build by running go build after embedded web update

Co-authored-by: mleku <me@mleku.dev>
Reviewed-on: https://git.nostrdev.com/mleku/next.orly.dev/pulls/1
Co-authored-by: daniyal <daniyal@nostrdev.com>
Co-committed-by: daniyal <daniyal@nostrdev.com>
2025-10-30 20:05:22 +00:00
5 changed files with 62 additions and 36 deletions

View File

@@ -37,7 +37,6 @@ func (l *Listener) HandleEvent(msg []byte) (err error) {
}
}()
log.I.F("HandleEvent: continuing with event processing...")
if len(msg) > 0 {
log.I.F("extra '%s'", msg)
}

View File

@@ -10,7 +10,6 @@ import (
"os"
"os/exec"
"path/filepath"
"runtime"
"sync"
"time"
@@ -285,16 +284,18 @@ func (p *P) CheckPolicy(access string, ev *event.E, loggedInPubkey []byte, ipAdd
// Check if script is present and enabled
if rule.Script != "" && p.Manager != nil {
if p.Manager.IsEnabled() {
return p.checkScriptPolicy(access, ev, rule.Script, loggedInPubkey, ipAddress)
}
// Script is configured but policy is disabled - use default policy if rule has no other restrictions
hasOtherRestrictions := len(rule.WriteAllow) > 0 || len(rule.WriteDeny) > 0 || len(rule.ReadAllow) > 0 || len(rule.ReadDeny) > 0 ||
rule.SizeLimit != nil || rule.ContentLimit != nil || len(rule.MustHaveTags) > 0 ||
rule.MaxExpiry != nil || rule.Privileged || rule.RateLimit != nil ||
rule.MaxAgeOfEvent != nil || rule.MaxAgeEventInFuture != nil
if !hasOtherRestrictions {
// No other restrictions, use default policy
return p.getDefaultPolicyAction(), nil
// Check if script file exists before trying to use it
if _, err := os.Stat(p.Manager.GetScriptPath()); err == nil {
// Script exists, try to use it
allowed, err := p.checkScriptPolicy(access, ev, rule.Script, loggedInPubkey, ipAddress)
if err == nil {
// Script ran successfully, return its decision
return allowed, nil
}
// Script failed, fall through to apply other criteria
log.W.F("policy script check failed for kind %d: %v, applying other criteria", ev.Kind, err)
}
// Script doesn't exist or failed, fall through to apply other criteria
}
}
@@ -481,24 +482,14 @@ func (p *P) checkScriptPolicy(access string, ev *event.E, scriptPath string, log
if !p.Manager.IsRunning() {
// Check if script file exists
if _, err := os.Stat(p.Manager.GetScriptPath()); os.IsNotExist(err) {
// Script doesn't exist, this is a fatal error
buf := make([]byte, 1024*1024)
n := runtime.Stack(buf, true)
log.E.F("policy script does not exist at %s", p.Manager.GetScriptPath())
fmt.Fprintf(os.Stderr, "FATAL: Policy script required but not found at %s\n", p.Manager.GetScriptPath())
fmt.Fprintf(os.Stderr, "Stack trace:\n%s\n", buf[:n])
os.Exit(1)
// Script doesn't exist, return error so caller can fall back to other criteria
return false, fmt.Errorf("policy script does not exist at %s", p.Manager.GetScriptPath())
}
// Try to start the policy and wait for it
if err := p.Manager.ensureRunning(); err != nil {
// Startup failed, this is a fatal error
buf := make([]byte, 1024*1024)
n := runtime.Stack(buf, true)
log.E.F("failed to start policy script: %v", err)
fmt.Fprintf(os.Stderr, "FATAL: Failed to start policy script: %v\n", err)
fmt.Fprintf(os.Stderr, "Stack trace:\n%s\n", buf[:n])
os.Exit(1)
// Startup failed, return error so caller can fall back to other criteria
return false, fmt.Errorf("failed to start policy script: %v", err)
}
}

View File

@@ -1 +1 @@
v0.21.1
v0.21.2

View File

@@ -71,6 +71,9 @@ check_go_installation() {
install_go() {
log_info "Installing Go $GO_VERSION..."
# Save original directory
local original_dir=$(pwd)
# Determine architecture
local arch=$(uname -m)
case $arch in
@@ -100,13 +103,17 @@ install_go() {
rm -rf "$GOROOT"
fi
# Extract Go
log_info "Extracting Go to $GOROOT..."
tar -xf "$go_archive"
# Extract Go to a temporary location first, then move to final destination
log_info "Extracting Go..."
tar -xf "$go_archive" -C /tmp
mv /tmp/go "$GOROOT"
# Clean up
rm -f "$go_archive"
# Return to original directory
cd "$original_dir"
log_success "Go $GO_VERSION installed successfully"
}
@@ -167,7 +174,10 @@ build_application() {
log_info "Updating embedded web assets..."
./scripts/update-embedded-web.sh
# The update-embedded-web.sh script should have built the binary
# Build the binary in the current directory
log_info "Building binary in current directory..."
CGO_ENABLED=1 go build -o "$BINARY_NAME"
if [[ -f "./$BINARY_NAME" ]]; then
log_success "ORLY relay built successfully"
else

View File

@@ -1,14 +1,40 @@
#!/usr/bin/env bash
set -e
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
apt -y install build-essential autoconf libtool git wget
cd $SCRIPT_DIR
# Update package lists
apt-get update
# Try to install from package manager first (much faster)
echo "Attempting to install secp256k1 from package manager..."
if apt-get install -y libsecp256k1-dev >/dev/null 2>&1; then
echo "✓ Installed secp256k1 from package manager"
exit 0
fi
# Fall back to building from source if package not available
echo "Package not available in repository, building from source..."
# Install build dependencies
apt-get install -y build-essential autoconf automake libtool git wget pkg-config
cd "$SCRIPT_DIR"
rm -rf secp256k1
# Clone and setup secp256k1
git clone https://github.com/bitcoin-core/secp256k1.git
cd secp256k1
git checkout v0.6.0
# Initialize and update submodules
git submodule init
git submodule update
# Build and install
./autogen.sh
./configure --enable-module-schnorrsig --enable-module-ecdh --prefix=/usr
make -j1
sudo make install
make -j$(nproc)
make install
cd "$SCRIPT_DIR"