secubox-openwrt/package/secubox/secubox-app-cyberfeed/files/usr/bin/rss-bridge-setup
CyberMind-FR 22f6f26a01 feat(cyberfeed): Add CyberFeed RSS aggregator packages for OpenWrt
New packages:
- secubox-app-cyberfeed: Core RSS aggregator service
  - Pure shell script, OpenWrt compatible
  - Cyberpunk emoji injection based on content keywords
  - Caching with configurable TTL
  - JSON and HTML output with neon/glitch effects
  - RSS-Bridge support for social media (Facebook, Twitter, YouTube)

- luci-app-cyberfeed: LuCI dashboard with cyberpunk theme
  - Dashboard with stats, quick actions, recent items
  - Feed management with add/delete
  - RSS-Bridge templates for easy social media setup
  - Preview with category filtering
  - Settings page for service configuration

Features:
- Auto-emojification (security, tech, mystical themes)
- Dark neon UI with scanlines and glitch effects
- RSS-Bridge integration for Facebook/Twitter/YouTube
- Category-based filtering
- Auto-refresh via cron (5 min default)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 22:02:07 +01:00

191 lines
5.6 KiB
Bash

#!/bin/sh
# ╔═══════════════════════════════════════════════════════════════════╗
# ║ RSS-Bridge Setup for CyberFeed ║
# ║ Enables Facebook, Twitter, YouTube feeds via RSS-Bridge ║
# ╚═══════════════════════════════════════════════════════════════════╝
RSSBRIDGE_DIR="/srv/rss-bridge"
RSSBRIDGE_PORT=$(uci -q get cyberfeed.rssbridge.port || echo 3000)
print_banner() {
echo ""
echo "╔═══════════════════════════════════════════════════════════╗"
echo "║ 🌉 RSS-BRIDGE SETUP FOR CYBERFEED 🌉 ║"
echo "╚═══════════════════════════════════════════════════════════╝"
echo ""
}
check_deps() {
echo "📦 Checking dependencies..."
local missing=""
command -v php >/dev/null 2>&1 || missing="$missing php8"
command -v php-cgi >/dev/null 2>&1 || missing="$missing php8-cgi"
if [ -n "$missing" ]; then
echo "⚠️ Missing packages:$missing"
echo ""
echo "Install with:"
echo " opkg update"
echo " opkg install$missing php8-mod-curl php8-mod-json php8-mod-mbstring php8-mod-simplexml"
return 1
fi
echo "✅ Dependencies OK"
return 0
}
install_rssbridge() {
print_banner
if ! check_deps; then
return 1
fi
echo ""
echo "📥 Downloading RSS-Bridge..."
mkdir -p "$RSSBRIDGE_DIR"
# Download latest release
wget -q -O /tmp/rss-bridge.zip \
"https://github.com/RSS-Bridge/rss-bridge/releases/latest/download/rss-bridge.zip" || {
echo "❌ Download failed"
return 1
}
echo "📦 Extracting..."
unzip -q -o /tmp/rss-bridge.zip -d "$RSSBRIDGE_DIR"
rm -f /tmp/rss-bridge.zip
# Configure whitelist (enable common bridges)
cat > "${RSSBRIDGE_DIR}/whitelist.txt" << 'EOF'
Facebook
Twitter
Youtube
Mastodon
Reddit
Instagram
Telegram
Bandcamp
SoundCloud
*
EOF
# Create init script
cat > /etc/init.d/rss-bridge << 'INITEOF'
#!/bin/sh /etc/rc.common
START=96
STOP=10
USE_PROCD=1
RSSBRIDGE_DIR="/srv/rss-bridge"
start_service() {
local enabled port
config_load cyberfeed
config_get enabled rssbridge enabled 0
config_get port rssbridge port 3000
[ "$enabled" = "1" ] || return 0
procd_open_instance
procd_set_param command php-cgi -b 127.0.0.1:9000 -d cgi.fix_pathinfo=1
procd_set_param respawn
procd_set_param stdout 1
procd_set_param stderr 1
procd_close_instance
# Also start simple HTTP server for RSS-Bridge
procd_open_instance rss-bridge-http
procd_set_param command php -S 0.0.0.0:${port} -t ${RSSBRIDGE_DIR}
procd_set_param respawn
procd_set_param stdout 1
procd_set_param stderr 1
procd_close_instance
}
INITEOF
chmod +x /etc/init.d/rss-bridge
echo ""
echo "╔═══════════════════════════════════════════════════════════╗"
echo "║ ✅ RSS-BRIDGE INSTALLED ║"
echo "╠═══════════════════════════════════════════════════════════╣"
echo "║ 📁 Location: /srv/rss-bridge ║"
printf "║ 🌐 URL: http://your-router:%s ║\n" "$RSSBRIDGE_PORT"
echo "║ ║"
echo "║ To enable: ║"
echo "║ uci set cyberfeed.rssbridge.enabled=1 ║"
echo "║ uci commit cyberfeed ║"
echo "║ /etc/init.d/rss-bridge start ║"
echo "╚═══════════════════════════════════════════════════════════╝"
}
start_rssbridge() {
local enabled=$(uci -q get cyberfeed.rssbridge.enabled || echo 0)
if [ "$enabled" != "1" ]; then
echo "⚠️ RSS-Bridge is disabled"
echo "Enable with: uci set cyberfeed.rssbridge.enabled=1 && uci commit"
return 1
fi
if [ ! -d "$RSSBRIDGE_DIR" ]; then
echo "❌ RSS-Bridge not installed. Run: rss-bridge-setup install"
return 1
fi
/etc/init.d/rss-bridge start
echo "✅ RSS-Bridge started on port $RSSBRIDGE_PORT"
}
stop_rssbridge() {
/etc/init.d/rss-bridge stop 2>/dev/null
echo "⏹️ RSS-Bridge stopped"
}
status_rssbridge() {
local enabled=$(uci -q get cyberfeed.rssbridge.enabled || echo 0)
local running="false"
if pgrep -f "rss-bridge" >/dev/null 2>&1 || pgrep -f "php.*$RSSBRIDGE_PORT" >/dev/null 2>&1; then
running="true"
fi
cat << EOF
{
"installed": $([ -d "$RSSBRIDGE_DIR" ] && echo "true" || echo "false"),
"enabled": $enabled,
"running": $running,
"port": $RSSBRIDGE_PORT,
"path": "$RSSBRIDGE_DIR"
}
EOF
}
case "$1" in
install)
install_rssbridge
;;
start)
start_rssbridge
;;
stop)
stop_rssbridge
;;
status)
status_rssbridge
;;
*)
echo "Usage: $0 {install|start|stop|status}"
echo ""
echo "RSS-Bridge converts social media pages to RSS feeds:"
echo " - Facebook pages/groups"
echo " - Twitter/X accounts"
echo " - YouTube channels"
echo " - Mastodon accounts"
echo " - And many more..."
;;
esac