公司出于业务扩展的考虑,准备把原先基于FMS为后台的程序,改为用开源的Red5作为视频音频服务,而由Socket作为数据交换服务。
公司服务端的人忙着处理其他事情,于是公司安排我做Red5的架设工作。在网上找了些资料,Red5配置起来还是比较简单的。网上的教程有一堆,这里就不累述了。
因为flash客户端用NetConnection连接Red5的时候,是不需要像连接socket或者是http那样要提交一个<request-policy-file/>的请求去请求一个crossdomain的字符串。
而视频,音频服务在我们整个服务中所占的IO是最大的。如果Red5服务没有做任何连接的验证,其他人通过反编我们的swf文件,得到我们的red5服务的地址后,就很容易让其他人来使用我们的服务器。
对于这种问题,通常可以使用连接Red5时,要求客户端提交一个由服务端生成的密钥来做验证,但是这样就涉及到Red5和Socket直接的通信问题(或者是通过查询临时表等方法),无疑会给本来已经事情很多的服务端的同事们增加麻烦。
于是我采取通过检测flash客户端的swf文件URL这种基于域的检测方式。
首先,需要自己先写一个Red5的应用,并且把WEB-INF中red5-web.xml里面<bean id="web.handler" class="xxx.xxx.xxxx" />的class指定为你写的这个应用。
让你的应用继承ApplicationAdapter,然后重写connect
我在应用的根目录放置了一个crossdomain.properties文件。
package com._3tion.live;
import java.io.IOException;
import java.util.Arrays;
import java.util.Map;
import java.util.Properties;
import org.red5.server.adapter.ApplicationAdapter;
import org.red5.server.api.IConnection;
import org.red5.server.api.IScope;
import org.springframework.core.io.Resource;
/**
* @author 3tion
*
*/
public class Application extends ApplicationAdapter {
private static String swfUrl[];
//域检测文件名
private static final String CROSS_DOMAIN_FILE_NAME = "crossdomain.properties";
private static final String SEPARATOR = ";";
@Override
public synchronized boolean connect(IConnection conn, IScope scope,
Object[] params) {
if( swfUrl == null )
{
//检查策略文件
Resource resource = getResource(CROSS_DOMAIN_FILE_NAME);//resource的目录结构是从当前应用的根目录开始
if(resource.exists())
{
Properties props = new Properties();
try {
props.load(resource.getInputStream());
swfUrl = props.getProperty("swfUrl").toLowerCase().split(SEPARATOR);
} catch (IOException e) {
e.printStackTrace();
}
}
else //如果没有域安全文件,则视为所有域都允许通过
{
swfUrl = new String[1];
swfUrl[0] = "*";
}
}
Map<String,Object> map = conn.getConnectParams();
//检查连接参数中swfUrl的地址是否在安全文件中
if( Arrays.binarySearch(swfUrl,"*") > -1 || Arrays.binarySearch(swfUrl, map.get("swfUrl").toString().toLowerCase()) > -1 )
{
return super.connect(conn, scope, params);
}
else
{
return false;
}
}
}
这样,就可以在crossdomain.properties中控制你red5应用允许访问的文件了,如果写*,就允许任意文件访问。
允许http://test/Main.swf和http://test1/Main.swf访问。
则crossdomain.properties:
swfUrl = http/://test/Main.swf;/
http/://test1/Main.swf
相关推荐
Red5对发布端进行权限控制
实现IStreamPublishSecurity接口,可自行设置过滤条件,如对发布端的ip进行验证,不满足的不允许发布流到服务器上
red5配置文件精讲
Red5 是建立在Jetty6(servlet engine) , Mina (networking)基础之上的,并通过使用Spring框架将起整合起来的.因此我们需要有一些配置文件.我们可能的通过载入properties 文件来简化配置,因此用户不需要深入了解XML.该文档就是要新手们去熟悉这些配置文件,其中一些需要改动,一些不必关心.Jetty Config--
red5服务器的windows安装配置与项目部署
red5服务器的windows安装配置与项目部署
【转载】Red5流媒体服务基于域的安全策略
文章来之:http://hi.baidu.com/3tion/blog/item/9ce3e219fdd4be4f43a9adb5.html 公司出于业务扩展的考虑,准备把原先基于FMS为后台的程序,改为用开源的Red5作为视频音频服务,而由Socket作为数据交换服务。公司服务端的人忙着处理其他事情,于是公司安排我做Red5的架设工作。在网上找了些资料,Red5配置起来还是比较简单的。网...
流媒体服务器Red5的扩展设计、测试与优化
流媒体服务器Red5的扩展设计、测试与优化 流媒体服务器Red5的扩展设计、测试与优化
red5 中文api 参考文档
red5 中文api 参考文档 翻译的不是很准 但相比英文的还是不错
Red 5 中让你猝不及防的一个坑
本文简单介绍了 red 5 服务器的入门知识以及自己部署时遇到的一个坑
STM32+ESP8266接入OneNet物联网平台全流程
MQTT协议是物联网设备与云平台通信的主流轻量级消息传输标准,其发布/订阅模型天然适配嵌入式资源受限场景;OneJSON作为中国移动OneNet平台定制的数据格式,在标准JSON基础上精简Schema、降低解析开销,显著提升STM32等MCU的处理效率。该技术组合兼顾安全性、低功耗与工程可量产性,广泛应用于环境监测、智能仪表、工业传感器等远程数据采集系统。实际落地需协同完成云平台物模型定义、Token动态认证、MQTT Topic严格构造、AT指令可靠交互及单总线传感器数据融合等关键环节。本文以DS18B2
如何快速上手 shortcuts-js:从安装到第一个快捷指令的完整教程
shortcuts-js 是一个强大的 JavaScript 库,专为 iOS 12+ 快捷指令设计,让开发者能够轻松创建、编辑和管理 iOS 快捷指令。本教程将带你从环境搭建到创建第一个实用快捷指令,全程仅需 10 分钟,即使是新手也能快速掌握! ## 🚀 准备工作:安装 shortcuts-js 在开始之前,请确保你的开发环境满足以下要求: - Node.js 10.0 或更高版本 -
二次开发vba_CATIA VBA(VBS)二次开发:使用Search批量选择元素
在CATIA二次开发中很多在程序中进行自动交互的方法或函数都需要使用选择集作为参数,将几何元素按照要求批量添加到选择集中也是实现程序自动运行的有效方法。在前面的文章《CATIA使用VBA(VBS)二次开发时用户的交互选择》和《CATIA使用VBA(VBS)二次开发时工程图和草图位置的交互选择函数Indicate2D》中介绍了在CATIA VBA(VBS)二次开发中用户和选择集之间的交互操...
VisionMaster4.2.0与C#控件开发实战:从入门到精通的完整指南
本文详细介绍了VisionMaster4.2.0与C#控件开发的实战指南,从基础环境搭建到核心控件使用,再到高级功能实现。通过VmFrontendControl、VmGlobalToolControl等核心控件的深入解析,帮助开发者快速掌握机器视觉应用开发技巧,提升开发效率。特别适合需要集成VisionMaster4.2.0 SDK进行视觉系统开发的C#程序员。
Red5 0.6 安全
Red5 0.6 安全 HOWTO-Security_zh_CN.txt------------------------Red5 0.6 安全------------------------:author: Joachim Bauch:contact: jojo@struktur.de
linux操作系统使用以太网连接ubuntu,设置固定ipv4
首先,您需要确定要配置的网络接口。可以使用ifconfig -a或ip addr命令来列出当前系统上的所有网络接口及其相关信息。找到您要配置的网络接口名称,例如eth0、ens33或enp0s3;保存并关闭文件后,您需要重启网络服务以使更改生效。在linux操作系统中,要使用交换机连接以太网可以直接使用交互界面;如果你的操作系统没有交互界面,你可以使用命令方式配置;点击ipv4,方式为手动,可以设置ip和子网了;开头,后接网络接口名称。第三步:点击有线最右边圆形控件;第二步:点击有线设置;
Red5 学习
Red5 学习 Red5的初次安装与配置 http://yaofeng911.iteye.com/blog/1059851 (测试可用) Red5 plugin for Eclipse V0.2的安装及配置 http://xlh1221it.blog.163.com/blog/static/129587224201032871841814/ Red5的官方网站(下载) htt...
PID详解
1、什么是PID及其作用 设定一个输出目标,反馈系统传回输出值,如与目标不一致,则存在一个误差,PID 根据此误差调整输入值,直至输出达到设定值. 为什么需要PID呢,比如控制温度,我们需要设置一个要达到的目标温度值,当将温度稳定在目标温度值 例如,我们希望水的目标温度值为70°,其希望无非就是可以快速而且无抖动的达到70°,并稳定在70° 如果我们使用普通的方式加热,当温度到达70°后就以及停止加热,岂不是简单快速,当然用在要求不高的场合也可以,但是如果要求更高的场合呢,会出现温度到达70°后......
Windows server Database 2025 安装 i225/i226 网卡驱动
Windows server Database 2025 安装 i225/i226 网卡驱动 windows这比坏得很,intel消费级网卡不准在服务器系统上安装。你要说他是异构不支持?他就纯粹恶心人。 之前已经安装过一次,但是今天database预览版一更新,又给我把网卡驱动杀了,气死,写一篇教程。 到这里就完成了,总之还是想辱骂windows,提供便捷的同时又人为制造困难,多少有点(隔壁linux内核直接自带全家桶了就一省心) 并且近年Intel的新U安装显卡驱动和普通声卡驱动都不会出声
《Red5 用户参考手册》之十一:Red5 核心技术第四章 安全
官方最新《Red5 用户参考手册》全套下载地址 本文介绍了由版本 0.6 引入的保护对流或者共享对象的访问的 Red5 API,类似于由 Client.readAccess 和 Client.writeAccess 在 Macromedia Flash Communication Server / Flash Media Server 2 所提供的那样。 流安全
Isaac Lab & GR00T N1 入门教程(七)人形机器人推理与技能学习策略基准测试
本文介绍了IsaacLab设计的工业机器人操作评估系统,包含两项任务:螺母倾倒(成功率91%)和排气管分拣(成功率95%)。系统支持通过IsaacGR00TN1模型进行策略闭环评估,提供完整的开发环境配置指南(需Ubuntu22.04、CUDA12.8等环境),数据集下载方式(HuggingFace平台托管),以及模型微调流程。评估支持并行化测试(建议10-30个并行环境),并给出详细硬件配置建议(推荐RTX A6000 Ada显卡)。文档还包含常见问题解决方案,特别说明当前暂不支持Blackwell GP
【转载】Red5 0.6 安全
本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/ma_yan368/archive/2008/08/01/2753383.aspx 序言==========================此文档描述Red5 API,介绍在0.6版中对流和/或共享对象的访问保护。类似`Client.readAccess`和`Client.writeAccess`在 Macro...
基于Multisim/TINA的H桥电机驱动电路设计与仿真分析
摘要 本文基于Multisim/TINA仿真平台,对H桥电机驱动电路进行了系统设计与分析。研究重点包括H桥拓扑结构的工作原理、PWM调速控制方法以及两种驱动方案对比分析。通过光耦隔离驱动与IR2110专用驱动IC的仿真对比,验证了IR2110自举电路在高低侧驱动中的优势。仿真实验着重分析了死区时间对防止直通现象的关键作用,并建立了直流电机的R-L-E等效模型进行动态特性仿真。结果表明,采用IR2110驱动方案配合适当的栅极电阻和自举电容参数,能够实现电机的高效双向调速控制。本研究为实际电机驱动系统的设计提供
廖雪峰Python教程[完整版]
廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白
Ant Media Server Docker容器化部署终极指南:从零到生产环境
Ant Media Server作为现代化的实时流媒体引擎,通过Docker容器化部署能够显著简化运维流程,提升系统可扩展性。本教程将详细介绍如何快速完成Ant Media Server的Docker部署,打造专业级的低延迟直播平台。 ## 🚀 为什么选择Docker部署Ant Media Server? Docker容器化部署为Ant Media Server带来了革命性的优势: - *
SAP B1中文培訓教材_SDK
公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说
前端摄像头到远端平台的实现过程
设备上线:摄像头/NVR/网关通过互联网连接到云端平台,进行身份认证和注册。建立连接:设备通过RTMP或GB/T28181协议,与云端的流媒体接入服务建立稳定连接,并开始推送视频流。流媒体处理:云端接收流,可能进行转码、AI分析,并转换为HLS/FLV等格式,通过CDN进行分发。用户观看:用户登录Web或App,业务逻辑服务验证权限后,返回一个视频播放地址(如HLS URL)。视频播放:用户端的播放器根据地址从CDN/流媒体服务拉取视频流并解码播放。存储与回放:视频流同时被录制到对象存储中,供用户后续回放。
数学建模模型总结
这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!
Probability and Statistics - 4th edition
Probability and Statistics - 4th edition
安卓安全启动与验证机制:从硬件信任根到dm-verity的完整解析
安全启动是现代计算设备的基础安全机制,其核心原理是建立一条从硬件到软件的信任链。该机制始于硬件信任根,通常基于eFuse或ROM中的不可变密钥,确保设备上电后执行的第一行代码可信。通过逐级验证引导加载程序、操作系统内核和系统分区,它构建了设备启动过程的安全基石。在安卓生态中,这一理念通过Verified Boot和AVB标准得以工程化实现,其中dm-verity技术提供了运行时的分区完整性保护,防止系统文件被篡改。这些技术共同构成了移动设备抵御底层攻击、保护支付凭证和生物识别信息等数字资产的关键防线。本文以
Unity WebGL实战:AVProVideo集成海康M3U8监控流与XChart数据可视化
在工业物联网和数字孪生领域,实时数据可视化与流媒体集成是构建监控大屏的核心需求。其技术原理通常涉及通过WebGL技术在浏览器中渲染3D场景,并结合流媒体协议(如HLS/M3U8)实现视频流的实时播放,同时利用数据可视化库动态展示设备运行状态。这种技术组合的价值在于能够创建沉浸式、一体化的监控界面,显著提升态势感知和决策效率。在智慧工厂、智慧园区等应用场景中,开发者常面临在WebGL环境下稳定播放监控视频流并同步更新数据图表的挑战。本文聚焦于使用AVProVideo插件处理海康威视的M3U8流媒体,并结合XC
1500



被折叠的 条评论
为什么被折叠?



