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>
191 lines
5.6 KiB
Bash
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
|