├── .gitattributes ├── .gitignore ├── README.md ├── README_English.md ├── do-not-support-web ├── chatDBServer ├── chatRoomServer ├── groupPushHttpProxy ├── groupServer ├── liveProxyServer ├── liveSrcServer ├── liveVdnServer ├── msgServer ├── starrtc.conf ├── start.sh ├── stop.sh ├── supervise ├── supervise.sh ├── videoRecServer └── voipServer ├── doc ├── README.md ├── assets │ ├── 1.png │ ├── 2.png │ ├── 3.png │ ├── 4.png │ ├── 5.png │ ├── 6.png │ └── 7.png └── web私有部署步骤.md ├── server-api ├── README.md ├── server-api-.net │ ├── RouteConfig.cs │ └── StarAVController.cs ├── server-api-go │ └── web.go ├── server-api-java │ └── README.md ├── server-api-node.js │ └── web.js ├── server-api-php │ ├── config.php │ ├── debug.php │ ├── doc │ │ ├── convert_doc.php │ │ ├── convert_doc.sh │ │ ├── get_doc_info.php │ │ └── upload.php │ ├── eventCenter.php │ ├── group │ │ ├── addUsersToGroup.php │ │ ├── create.php │ │ ├── delUsersFromGroup.php │ │ ├── delete.php │ │ ├── list.php │ │ ├── members.php │ │ ├── setPushIgnore.php │ │ └── unsetPushIgnore.php │ ├── include │ │ ├── channel.php │ │ ├── class.upload.php │ │ ├── dbBase.php │ │ ├── doc.php │ │ ├── errCode.php │ │ ├── group.php │ │ ├── group_create.php │ │ ├── group_del.php │ │ ├── group_join.php │ │ ├── group_quit.php │ │ ├── lang │ │ │ ├── class.upload.ca_CA.php │ │ │ ├── class.upload.cs_CS.php │ │ │ ├── class.upload.da_DK.php │ │ │ ├── class.upload.de_DE.php │ │ │ ├── class.upload.el_GR.php │ │ │ ├── class.upload.es_ES.php │ │ │ ├── class.upload.et_EE.php │ │ │ ├── class.upload.fa_IR.php │ │ │ ├── class.upload.fi_FI.php │ │ │ ├── class.upload.fr_FR.php │ │ │ ├── class.upload.he_IL.php │ │ │ ├── class.upload.hr_HR.php │ │ │ ├── class.upload.hu_HU.php │ │ │ ├── class.upload.id_ID.php │ │ │ ├── class.upload.it_IT.php │ │ │ ├── class.upload.ja_JP.php │ │ │ ├── class.upload.lt_LT.php │ │ │ ├── class.upload.mk_MK.php │ │ │ ├── class.upload.nl_NL.php │ │ │ ├── class.upload.no_NO.php │ │ │ ├── class.upload.pl_PL.php │ │ │ ├── class.upload.pt_BR.php │ │ │ ├── class.upload.ro_RO.php │ │ │ ├── class.upload.ru_RU.php │ │ │ ├── class.upload.ru_RU.windows-1251.php │ │ │ ├── class.upload.sk_SK.php │ │ │ ├── class.upload.sr_YU.php │ │ │ ├── class.upload.sv_SE.php │ │ │ ├── class.upload.ta_TA.php │ │ │ ├── class.upload.tr_TR.php │ │ │ ├── class.upload.uk_UA.php │ │ │ ├── class.upload.uk_UA.windows-1251.php │ │ │ ├── class.upload.vn_VN.php │ │ │ ├── class.upload.xx_XX.php │ │ │ ├── class.upload.zh_CN.gb-2312.php │ │ │ ├── class.upload.zh_CN.php │ │ │ └── class.upload.zh_TW.php │ │ ├── pubFun.php │ │ ├── room.php │ │ ├── star_api.php │ │ └── user.php │ ├── list │ │ ├── del.php │ │ ├── query.php │ │ └── save.php │ ├── push_group_msg.php │ ├── push_system_msg.php │ ├── starRTC_private.sql │ └── user │ │ └── is_online.php └── server-api-python │ └── eventCenter.py ├── test.c └── web-supported ├── README.md ├── chatDBServer ├── chatRoomServer ├── groupPushHttpProxy ├── groupServer ├── liveProxyServer ├── liveSrcServer ├── liveVdnServer ├── msgServer ├── starchatroom.key ├── starchatroom.pem ├── starmsg.key ├── starmsg.pem ├── starrtc.conf ├── starsrc.key ├── starsrc.pem ├── start.sh ├── starvdn.key ├── starvdn.pem ├── starvoip.key ├── starvoip.pem ├── stop.sh ├── supervise ├── supervise.sh ├── videoRecServer └── voipServer /.gitattributes: -------------------------------------------------------------------------------- 1 | *.sh linguist-language=C 2 | *.cs linguist-language=C 3 | *.go linguist-language=C 4 | *.php linguist-language=C 5 | *.js linguist-language=C 6 | *.py linguist-language=C 7 | *.java linguist-language=C 8 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | log/ 2 | msgChatDB/ 3 | *.log 4 | *.db -------------------------------------------------------------------------------- /do-not-support-web/chatDBServer: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/starrtc/starrtc-server/62236635e5557f4e864b794ec6104364f649df1d/do-not-support-web/chatDBServer -------------------------------------------------------------------------------- /do-not-support-web/chatRoomServer: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/starrtc/starrtc-server/62236635e5557f4e864b794ec6104364f649df1d/do-not-support-web/chatRoomServer -------------------------------------------------------------------------------- /do-not-support-web/groupPushHttpProxy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/starrtc/starrtc-server/62236635e5557f4e864b794ec6104364f649df1d/do-not-support-web/groupPushHttpProxy -------------------------------------------------------------------------------- /do-not-support-web/groupServer: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/starrtc/starrtc-server/62236635e5557f4e864b794ec6104364f649df1d/do-not-support-web/groupServer -------------------------------------------------------------------------------- /do-not-support-web/liveProxyServer: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/starrtc/starrtc-server/62236635e5557f4e864b794ec6104364f649df1d/do-not-support-web/liveProxyServer -------------------------------------------------------------------------------- /do-not-support-web/liveSrcServer: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/starrtc/starrtc-server/62236635e5557f4e864b794ec6104364f649df1d/do-not-support-web/liveSrcServer -------------------------------------------------------------------------------- /do-not-support-web/liveVdnServer: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/starrtc/starrtc-server/62236635e5557f4e864b794ec6104364f649df1d/do-not-support-web/liveVdnServer -------------------------------------------------------------------------------- /do-not-support-web/msgServer: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/starrtc/starrtc-server/62236635e5557f4e864b794ec6104364f649df1d/do-not-support-web/msgServer -------------------------------------------------------------------------------- /do-not-support-web/starrtc.conf: -------------------------------------------------------------------------------- 1 | #打开下面注释表示开启aec功能,配置后需要重启服务端程序 2 | #aecurl=http://www.starrtc.com/aec/eventCenter.php 3 | 4 | -------------------------------------------------------------------------------- /do-not-support-web/start.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | git config core.fileMode false || echo "git not installed,continue" #忽略文件权限变化 4 | chmod +x supervise.sh supervise 5 | 6 | 7 | if [ ! -f supervise.msgServer ]; then 8 | cp -f supervise supervise.msgServer 9 | fi 10 | 11 | if [ ! -f supervise.chatDBServer ]; then 12 | cp -f supervise supervise.chatDBServer 13 | fi 14 | 15 | if [ ! -f supervise.groupServer ]; then 16 | cp -f supervise supervise.groupServer 17 | fi 18 | 19 | if [ ! -f supervise.chatRoomServer ]; then 20 | cp -f supervise supervise.chatRoomServer 21 | fi 22 | 23 | if [ ! -f supervise.voipServer ]; then 24 | cp -f supervise supervise.voipServer 25 | fi 26 | 27 | if [ ! -f supervise.liveSrcServer ]; then 28 | cp -f supervise supervise.liveSrcServer 29 | fi 30 | 31 | if [ ! -f supervise.liveVdnServer ]; then 32 | cp -f supervise supervise.liveVdnServer 33 | fi 34 | 35 | if [ ! -f supervise.liveProxyServer ]; then 36 | cp -f supervise supervise.liveProxyServer 37 | fi 38 | 39 | if [ ! -f supervise.groupPushHttpProxy ]; then 40 | cp -f supervise supervise.groupPushHttpProxy 41 | fi 42 | 43 | 44 | ./supervise.sh start msgServer 45 | ./supervise.sh start chatDBServer 46 | ./supervise.sh start groupServer 47 | ./supervise.sh start chatRoomServer 48 | ./supervise.sh start voipServer 49 | ./supervise.sh start liveSrcServer 50 | ./supervise.sh start liveVdnServer 51 | ./supervise.sh start liveProxyServer 52 | ./supervise.sh start groupPushHttpProxy 53 | 54 | 55 | ps -aux | grep Server 56 | ps -aux | grep groupPushHttpProxy 57 | 58 | echo "==================================================================================" 59 | echo "Thanks for your support, Please use the following contact information for feedback" 60 | echo "QQ group: 807242783" 61 | echo "Github: https://github.com/starRTC" 62 | echo "TEL: +86 18612946552" 63 | echo "Enjoy Your Work!" 64 | echo "==================================================================================" 65 | 66 | -------------------------------------------------------------------------------- /do-not-support-web/stop.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | 4 | ./supervise.sh stop msgServer 5 | ./supervise.sh stop chatDBServer 6 | ./supervise.sh stop groupServer 7 | ./supervise.sh stop chatRoomServer 8 | ./supervise.sh stop voipServer 9 | ./supervise.sh stop liveSrcServer 10 | ./supervise.sh stop liveVdnServer 11 | ./supervise.sh stop liveProxyServer 12 | ./supervise.sh stop groupPushHttpProxy 13 | 14 | ps -aux | grep Server 15 | ps -aux | grep groupPushHttpProxy 16 | -------------------------------------------------------------------------------- /do-not-support-web/supervise: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/starrtc/starrtc-server/62236635e5557f4e864b794ec6104364f649df1d/do-not-support-web/supervise -------------------------------------------------------------------------------- /do-not-support-web/supervise.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ######################################################################### 4 | # admin@elesos.com 通用进程控制shell脚本 5 | ######################################################################### 6 | 7 | 8 | if [ "$#" -lt "1" ] #参数个数 9 | then 10 | echo "Usage: ./supervise.sh [start|stop] xxxServer" 11 | exit 0; 12 | fi 13 | 14 | BIN=$2 15 | SUP="supervise.$BIN" 16 | 17 | 18 | start() { 19 | stop 20 | ulimit -c unlimited 21 | shift 1 22 | #nohup ./$SUP ./$BIN $* & 23 | if [ ! -d "logs" ]; then 24 | mkdir logs 25 | chmod -R 777 logs 26 | fi 27 | chmod +x $BIN 28 | nohup ./$SUP ./$BIN > logs/${BIN}.log 2>&1 & 29 | } 30 | 31 | stop() { 32 | killall -9 $SUP $BIN >/dev/null 2>&1 33 | } 34 | 35 | case C"$1" in 36 | Cstart) 37 | start 38 | echo "$BIN start Success!" 39 | ;; 40 | Cstop) 41 | stop 42 | echo "$BIN stop Success!" 43 | ;; 44 | C*) 45 | echo "Usage: ./supervise.sh [start|stop] xxxServer" 46 | ;; 47 | esac 48 | -------------------------------------------------------------------------------- /do-not-support-web/videoRecServer: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/starrtc/starrtc-server/62236635e5557f4e864b794ec6104364f649df1d/do-not-support-web/videoRecServer -------------------------------------------------------------------------------- /do-not-support-web/voipServer: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/starrtc/starrtc-server/62236635e5557f4e864b794ec6104364f649df1d/do-not-support-web/voipServer -------------------------------------------------------------------------------- /doc/README.md: -------------------------------------------------------------------------------- 1 | # 用户贡献文档 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /doc/assets/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/starrtc/starrtc-server/62236635e5557f4e864b794ec6104364f649df1d/doc/assets/1.png -------------------------------------------------------------------------------- /doc/assets/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/starrtc/starrtc-server/62236635e5557f4e864b794ec6104364f649df1d/doc/assets/2.png -------------------------------------------------------------------------------- /doc/assets/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/starrtc/starrtc-server/62236635e5557f4e864b794ec6104364f649df1d/doc/assets/3.png -------------------------------------------------------------------------------- /doc/assets/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/starrtc/starrtc-server/62236635e5557f4e864b794ec6104364f649df1d/doc/assets/4.png -------------------------------------------------------------------------------- /doc/assets/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/starrtc/starrtc-server/62236635e5557f4e864b794ec6104364f649df1d/doc/assets/5.png -------------------------------------------------------------------------------- /doc/assets/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/starrtc/starrtc-server/62236635e5557f4e864b794ec6104364f649df1d/doc/assets/6.png -------------------------------------------------------------------------------- /doc/assets/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/starrtc/starrtc-server/62236635e5557f4e864b794ec6104364f649df1d/doc/assets/7.png -------------------------------------------------------------------------------- /doc/web私有部署步骤.md: -------------------------------------------------------------------------------- 1 | # starRTC-web私有部署步骤 2 | 3 | 注意事项: 4 | == 5 | 1. 下载chrome最新版!,web端私有部署目前只支持chrome 浏览器72版本及以上。 6 | 7 | 2. 服务端部署 web文件夹里边的服务,只有web文件夹里边的服务支持web私有部署。 8 | 9 | 一、部署服务端 10 | == 11 | 进入starRtc github 开源仓库,地址:[starRTC • GitHub](https://github.com/starrtc/starrtc-server) 12 | 13 | ![](assets/1.png) 14 | 15 | 进入服务端界面 16 | 17 | ![](assets/2.png) 18 | 19 | Linux系统下 进入web文件夹 20 | 21 | ![](assets/3.png) 22 | 23 | 在终端打开 执行 下面命令 进行部署并开启端口 24 | ```java 25 | nohup ./voipServer > voipServer.log 2>&1 & 26 | nohup ./msgServer > msgServer.log 2>&1 & 27 | nohup ./chatDBServer > chatDBServer.log 2>&1 & 28 | nohup ./groupServer > groupServer.log 2>&1 & 29 | nohup ./chatRoomServer > chatRoomServer.log 2>&1 & 30 | nohup ./liveSrcServer > liveSrcServer.log 2>&1 & 31 | nohup ./liveVdnServer > liveVdnServer.log 2>&1 & 32 | nohup ./liveProxyServer > liveProxyServer.log 2>&1 & 33 | 34 | iptables -I INPUT -p udp --dport 10086 -j ACCEPT 35 | iptables -I INPUT -p tcp --dport 19903 -j ACCEPT 36 | iptables -I INPUT -p tcp --dport 19906 -j ACCEPT 37 | iptables -I INPUT -p udp --dport 19931 -j ACCEPT 38 | iptables -I INPUT -p udp --dport 19928 -j ACCEPT 39 | iptables -I INPUT -p tcp --dport 19932 -j ACCEPT 40 | iptables -I INPUT -p tcp --dport 29991 -j ACCEPT 41 | iptables -I INPUT -p tcp --dport 29992 -j ACCEPT 42 | iptables -I INPUT -p tcp --dport 29993 -j ACCEPT 43 | iptables -I INPUT -p tcp --dport 29994 -j ACCEPT 44 | iptables -I INPUT -p tcp --dport 29995 -j ACCEPT 45 | iptables -I INPUT -p udp --dport 19906 -j ACCEPT 46 | ``` 47 | ![](assets/4.png) 48 | 49 | 没有报错,部署成功! 50 | 51 | 二、修改并启动web端 52 | == 53 | ![](assets/5.png) 54 | 55 | 进入web多人会议、直播、一对一视屏 56 | 57 | 下载demo源码 58 | 59 | 修改index.js 服务端地址 60 | 61 | ![](assets/6.png) 62 | 63 | ![](assets/7.png) 64 | 65 | 修改为刚才部署服务端的linux的IP地址后,启用代码。保存 66 | 67 | 三、配置安卓端 68 | == 69 | 下载最新版安卓客户端,安装后进入设置,服务器配置,在配置切换 70 | 71 | 里切换到私有部署,将ip改为刚才部署服务端的linux的IP地址 保存重新启动,查看配置是否生效。生效后,即可与web进行通讯。 72 | 73 | 感谢群友3509673316贡献此文档 74 | 75 | 76 | 77 | 78 | 79 | -------------------------------------------------------------------------------- /server-api/README.md: -------------------------------------------------------------------------------- 1 | # 服务端业务逻辑api,用于与服务端程序进行交互。 2 | 3 | 服务端api用于保存自己的用户数据,接收事件通知,处理复杂逻辑。 4 | 5 | 具体可参考https://docs.starrtc.com/zh-cn/docs/aec-index.html 6 | 7 | -------------------------------------------------------------------------------- /server-api/server-api-.net/RouteConfig.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Web; 5 | using System.Web.Mvc; 6 | using System.Web.Routing; 7 | using yydrweb.Controllers; 8 | using yydrWeb.IM; 9 | 10 | namespace yydrweb 11 | { 12 | public class RouteConfig 13 | { 14 | public static void RegisterRoutes(RouteCollection routes) 15 | { 16 | routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 17 | routes.MapRoute( 18 | name: "Default", 19 | url: "{controller}/{action}/{id}", 20 | defaults: new { controller = "StarAV", action = "Index", id = UrlParameter.Optional } 21 | ); 22 | //GetAllUserid(); 23 | } 24 | //public static void GetAllUserid() 25 | //{ 26 | // Maticsoft.BLL.y_users ubll=new Maticsoft.BLL.y_users(); 27 | // String sql = "userid <> '' and token <> ''"; 28 | // IMController.userlist= ubll.GetModelList(sql); 29 | //} 30 | 31 | } 32 | } -------------------------------------------------------------------------------- /server-api/server-api-.net/StarAVController.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json.Linq; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.IO; 5 | using System.Linq; 6 | using System.Net; 7 | using System.Text; 8 | using System.Web; 9 | using System.Web.Mvc; 10 | using System; 11 | using System.Collections.Generic; 12 | using System.Linq; 13 | using System.Web; 14 | using System.Web.Mvc; 15 | using System.Security.Cryptography; 16 | using MySql.Data.MySqlClient; 17 | using Newtonsoft.Json; 18 | 19 | namespace StarRTC.Controllers 20 | { 21 | public class StarRTCController : Controller 22 | { 23 | // 24 | // GET: /StarRTC/ 25 | string appID = "your appid"; 26 | string secret = "your secret"; 27 | string guardToken = "your guardToken"; 28 | public class StarAVResponse 29 | { 30 | [JsonProperty] 31 | private string status; 32 | [JsonProperty] 33 | private string data; 34 | 35 | public string getStatus() 36 | { 37 | return status; 38 | } 39 | 40 | public void setStatus(string status) 41 | { 42 | this.status = status; 43 | } 44 | public string getData() 45 | { 46 | return data; 47 | } 48 | 49 | public void setData(string data) 50 | { 51 | this.data = data; 52 | } 53 | public String IM_toString() 54 | { 55 | return JsonConvert.SerializeObject(this); 56 | } 57 | } 58 | 59 | public ActionResult GetSign(string data, string sign) 60 | { 61 | JObject jobject = JObject.Parse(data); 62 | string action = ((string)jobject["action"]).Trim(); 63 | string tsign = HmacSha1Sign(guardToken, data); 64 | if (action.Equals("AEC_ACCESS_VALIDATION")) 65 | { 66 | string echostr = ((string)jobject["echostr"]).Trim(); 67 | StarAVResponse response = new StarAVResponse(); 68 | response.setData(echostr); 69 | response.setStatus("1"); 70 | return Content(response.IM_toString()); 71 | } 72 | return Content("-1"); 73 | } 74 | public static string HmacSha1Sign(string key, string strOrgData) 75 | { 76 | var hmacsha1 = new HMACSHA1(Encoding.UTF8.GetBytes(key)); 77 | var dataBuffer = Encoding.UTF8.GetBytes(strOrgData); 78 | var hashBytes = hmacsha1.ComputeHash(dataBuffer); 79 | return Convert.ToBase64String(hashBytes); 80 | } 81 | [HttpPost] 82 | public ActionResult PushToWeb(string userid) 83 | { 84 | Maticsoft.BLL.y_users bll = new Maticsoft.BLL.y_users(); 85 | StringBuilder sms = new StringBuilder(); 86 | sms.AppendFormat("https://api.starRTC.com/aec/authKey?appid={0}", appID); 87 | sms.AppendFormat("&secret={0}", secret); 88 | sms.AppendFormat("&userid={0}", userid); 89 | byte[] byteArray = Encoding.UTF8.GetBytes(""); 90 | HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(new Uri(sms.ToString())); 91 | webRequest.Method = "GET"; 92 | 93 | HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse(); 94 | StreamReader aspx = new StreamReader(response.GetResponseStream(), Encoding.UTF8); 95 | string ret = aspx.ReadToEnd(); 96 | JObject jobject = JObject.Parse(ret); 97 | int status = ((int)jobject["status"]); 98 | if (status == 1) 99 | { 100 | string authkey = ((string)jobject["data"]).Trim(); 101 | Maticsoft.Model.y_users mod = bll.GetModel(userid); 102 | if (mod != null) 103 | { 104 | mod.authkey = authkey; 105 | bll.Update(mod); 106 | } 107 | } 108 | return Content(ret); 109 | } 110 | } 111 | } 112 | -------------------------------------------------------------------------------- /server-api/server-api-go/web.go: -------------------------------------------------------------------------------- 1 | // author admin@elesos.com 2 | 3 | //请参考:https://docs.starrtc.com/en/docs/aec-index.html 4 | 5 | package main 6 | 7 | import ( 8 | "fmt" 9 | "github.com/gin-gonic/gin" 10 | "net/http" 11 | "io/ioutil" 12 | "strings" 13 | "encoding/json" 14 | "crypto/hmac" 15 | "crypto/sha1" 16 | "encoding/base64" 17 | ) 18 | 19 | func main() { 20 | fmt.Printf("Let's go...") 21 | router := gin.Default() 22 | 23 | 24 | router.GET("/eventCenter", func(c *gin.Context) { 25 | data := c.DefaultQuery("data", "") 26 | if data == "" { 27 | c.JSON(200, gin.H{ 28 | "status":0, 29 | "data":"invalid args", 30 | }) 31 | return 32 | } 33 | 34 | 35 | var data_obj map[string]interface{} 36 | json.Unmarshal([]byte(data), &data_obj) 37 | 38 | 39 | if "AEC_GROUP_CREATE" == data_obj["action"] { 40 | c.JSON(200, gin.H{ 41 | "status":0, 42 | "data":"you have no rights to create group", 43 | }) 44 | return 45 | } 46 | 47 | //TODO process other actions 48 | 49 | 50 | 51 | 52 | c.JSON(200, gin.H{ 53 | "status":0, 54 | "data":"unkown action", 55 | }) 56 | return 57 | }) 58 | 59 | router.Run(":9091") 60 | } 61 | 62 | 63 | -------------------------------------------------------------------------------- /server-api/server-api-java/README.md: -------------------------------------------------------------------------------- 1 | 请参考 https://docs.starrtc.com/en/docs/aec-index.html -------------------------------------------------------------------------------- /server-api/server-api-node.js/web.js: -------------------------------------------------------------------------------- 1 | // author: admin@elesos.com 2 | 3 | //请参考:https://docs.starrtc.com/en/docs/aec-index.html 4 | 5 | const Koa = require('koa'); 6 | const bodyParser = require('koa-bodyparser'); 7 | const router = require('koa-router')(); 8 | const request = require('request'); 9 | 10 | const app = new Koa(); 11 | const crypto = require('crypto'); 12 | 13 | // parse request body 14 | app.use(bodyParser()); 15 | 16 | 17 | //log request url 18 | app.use(async (ctx, next) => { 19 | console.log(`Process ${ctx.request.method} ${ctx.request.url}...`); 20 | await next(); 21 | }); 22 | 23 | 24 | 25 | 26 | router.get('/eventCenter', async (ctx, next) => { 27 | var data = ctx.request.query.data || null; 28 | ctx.response.type = 'json'; 29 | if(!data){ 30 | ctx.response.body = echo_0('invalid args'); 31 | return; 32 | } 33 | 34 | json_obj = JSON.parse(data); 35 | 36 | 37 | if('AEC_GROUP_CREATE' === json_obj.action){ 38 | //TODO 39 | var groupId = 10010; 40 | ctx.response.body = echo_1(groupId); 41 | return; 42 | } 43 | // TODO process other actions 44 | 45 | 46 | ctx.response.body = echo_0('unkown action'); 47 | return; 48 | }); 49 | 50 | 51 | function echo_0(data){ 52 | var obj = {"status":0,"data":data}; 53 | return JSON.stringify(obj); 54 | } 55 | 56 | function echo_1(data){ 57 | var obj = {"status":1,"data":data}; 58 | return JSON.stringify(obj); 59 | } 60 | 61 | //test 62 | router.get('/hello/:name', async (ctx, next) => { 63 | var name = ctx.params.name; 64 | ctx.response.body = `

Hello, ${name}!

`; 65 | }); 66 | 67 | 68 | 69 | app.use(router.routes()); 70 | 71 | app.listen(9090); 72 | console.log('app started at port 9090...'); 73 | -------------------------------------------------------------------------------- /server-api/server-api-php/config.php: -------------------------------------------------------------------------------- 1 | uploaded) { 38 | // yes, the file is on the server 39 | // now, we start the upload 'process'. That is, to copy the uploaded file 40 | // from its temporary location to the wanted location 41 | // It could be something like $handle->Process('/home/www/my_uploads/'); 42 | 43 | $handle->Process($dir_dest); 44 | 45 | // we check if everything went OK 46 | if ($handle->processed) { 47 | // everything was fine ! 48 | 49 | //echo ' File: ' . $handle->file_dst_name . ''; 50 | //echo ' (' . round(filesize($handle->file_dst_pathname)/256)/4 . 'KB)'; 51 | 52 | $ret = save_doc($handle->file_dst_name, $pic_url, $handle->file_dst_path, $handle->file_dst_pathname, $handle->file_dst_name_ext); 53 | if($ret['ret'] != 0){ 54 | echoErr('save_doc_failed:'.$ret['ret']); 55 | } 56 | $upload_id = $ret['data']; 57 | echoK($upload_id); // https://www.starrtc.com/aec/doc/get_doc_info?id=$upload_id 58 | } else { 59 | echoErr('File not uploaded to the wanted location:'.$handle->error); 60 | // one error occured 61 | } 62 | $handle-> Clean();// delete the temporary files 63 | } else { 64 | echoErr('File not uploaded on the server:'.$handle->error); 65 | // if we're here, the upload file failed for some reasons 66 | // i.e. the server didn't receive the file 67 | } 68 | 69 | 70 | 71 | 72 | -------------------------------------------------------------------------------- /server-api/server-api-php/group/addUsersToGroup.php: -------------------------------------------------------------------------------- 1 | prepare($sql))){ 36 | $retArr['ret'] = 12;return $retArr; 37 | } 38 | if($pstmt->execute(array($userId))){ 39 | $result = $pstmt->fetchAll(); 40 | $resNum = count($result); 41 | if($resNum == 0){ 42 | $data = array(); 43 | $retArr['ret'] = 0; 44 | $retArr['data'] = $data; 45 | return $retArr; 46 | } 47 | $groupList = trim($result[0][0]); 48 | if(!empty($groupList)){ 49 | $groupArr = explode(",", $groupList); 50 | $pureGroupArr = array(); 51 | foreach($groupArr as $v){ 52 | $v = getPrefix($v); 53 | array_push($pureGroupArr, $v); 54 | } 55 | 56 | //TODO 可不返回群信息,如果需要可单独请求 57 | 58 | $info = array(); 59 | $index = 0; 60 | foreach ($pureGroupArr as $groupId){ 61 | $itemArr = array(); 62 | $sql = "select groupName, creator from groups where id = ? limit 1"; 63 | if(!($pstmt = $g_writeMdb->prepare($sql))){ 64 | $retArr['ret'] = 14;return $retArr; 65 | } 66 | if($pstmt->execute(array($groupId))){ 67 | $result = $pstmt->fetchAll(); 68 | $resNum = count($result); 69 | if($resNum == 1){ 70 | $itemArr['groupName'] = urlencode($result[0][0]); 71 | $itemArr['creator'] = $result[0][1]; 72 | $itemArr['groupId'] = $groupId; 73 | }else{ 74 | $retArr['ret'] = 20;return $retArr;//该群不存在 75 | } 76 | }else{ 77 | $retArr['ret'] = 15;return $retArr; 78 | } 79 | $info[$index++] = $itemArr; 80 | } 81 | 82 | $retArr['ret'] = 0; 83 | $retArr['data'] = $info; 84 | return $retArr; 85 | }else{//没有群 86 | $data = array(); 87 | $retArr['ret'] = 0; 88 | $retArr['data'] = $data; 89 | return $retArr; 90 | } 91 | }else{ 92 | $retArr['ret'] = 13;return $retArr; 93 | } 94 | }catch(PDOException $e){ 95 | $retArr['ret'] = 11;return $retArr; 96 | } 97 | $retArr['ret'] = 10;return $retArr; 98 | } 99 | 100 | 101 | 102 | 103 | function get_all_group_list(){ 104 | global $g_writeMdb; 105 | $retArr = array(); 106 | try{ 107 | $sql = "select id, groupName, creator from groups"; 108 | if(!($pstmt = $g_writeMdb->prepare($sql))){ 109 | $retArr['ret'] = 12;return $retArr; 110 | } 111 | if($pstmt->execute()){ 112 | $result = $pstmt->fetchAll(); 113 | $resNum = count($result); 114 | 115 | $info = array(); 116 | $index = 0; 117 | 118 | for($i = 0; $i < $resNum; $i++){ 119 | $groupId = $result[$i][0]; 120 | 121 | $groupName = $result[$i][1]; 122 | $userId = $result[$i][2]; 123 | 124 | $item = array(); 125 | $item['groupId'] = $groupId; 126 | $item['groupName'] = urlencode($groupName); 127 | $item['creator'] = $userId; 128 | 129 | $info[$index++] = $item; 130 | 131 | } 132 | 133 | $retArr['ret'] = 0; 134 | $retArr['data'] = $info; 135 | return $retArr; 136 | }else{ 137 | $retArr['ret'] = 13;return $retArr; 138 | } 139 | }catch(PDOException $e){ 140 | $retArr['ret'] = 11;return $retArr; 141 | } 142 | $retArr['ret'] = 10;return $retArr; 143 | } 144 | 145 | -------------------------------------------------------------------------------- /server-api/server-api-php/group/members.php: -------------------------------------------------------------------------------- 1 | prepare($sql))){ 29 | $retArr['ret'] = 12;return $retArr; 30 | } 31 | if($pstmt->execute(array($groupId))){ 32 | $result = $pstmt->fetchAll(); 33 | $resNum = count($result); 34 | if($resNum == 0){ 35 | $retArr['ret'] = 14;return $retArr; 36 | } 37 | 38 | $userIdList = ''; 39 | $isIgnore = 0; 40 | $userList = trim($result[0][0]); 41 | if(!empty($userList)){ 42 | $memberArr = explode(",", $userList); 43 | $pureMemberArr = array(); 44 | foreach($memberArr as $v){ 45 | //userId_ignoreState 46 | $prefix = getPrefix($v); //get userId 47 | $suffix = getSuffix($v); //get ignoreState 48 | 49 | if(!strcasecmp($prefix, $userId)){ 50 | $isIgnore = $suffix; 51 | } 52 | array_push($pureMemberArr, $prefix); 53 | } 54 | 55 | foreach ($pureMemberArr as $userId){ 56 | $userIdList = $userId .','. $userIdList; 57 | } 58 | $userIdList = rtrim($userIdList, ',');//去掉结尾的逗号 59 | 60 | } 61 | 62 | $data = array(); 63 | $data['userIdList'] = $userIdList; 64 | $data['isIgnore'] = $isIgnore; 65 | 66 | $retArr['ret'] = 0; 67 | $retArr['data'] = $data;return $retArr; 68 | }else{ 69 | $retArr['ret'] = 13;return $retArr;//查询失败 70 | } 71 | }catch(PDOException $e){ 72 | $retArr['ret'] = 11;return $retArr; 73 | } 74 | $retArr['ret'] = 10;return $retArr; 75 | } -------------------------------------------------------------------------------- /server-api/server-api-php/group/setPushIgnore.php: -------------------------------------------------------------------------------- 1 | prepare($sql))){ 11 | return 13; 12 | } 13 | if($pstmt->execute(array($userId, $channelId, $channelType, $relateId, $relateType, $specify, $extra, $ctime, $conCurrentNumber, time()))){ 14 | return 0; 15 | }else{ 16 | return 14; 17 | } 18 | }catch(PDOException $e){ 19 | return 11; 20 | } 21 | return 10; 22 | } 23 | 24 | 25 | 26 | 27 | function get_channel_info($channelId){ 28 | global $g_readMdb; 29 | $retArr = array(); 30 | try{ 31 | $sql = "select id, conCurrentNumber, userId, relateId from channels where channelId = ? limit 1"; 32 | if(!($pstmt = $g_readMdb->prepare($sql))){ 33 | $retArr['ret'] = 12;return $retArr; 34 | } 35 | if($pstmt->execute(array($channelId))){ 36 | $result = $pstmt->fetchAll(); 37 | $resNum = count($result); 38 | if($resNum == 0){ 39 | $retArr['ret'] = 14;return $retArr; 40 | } 41 | 42 | $channelInfo = array(); 43 | $channelInfo['id'] = $result[0][0]; 44 | $channelInfo['conCurrentNumber'] = $result[0][1]; 45 | $channelInfo['userId'] = $result[0][2]; 46 | $channelInfo['relateId'] = $result[0][3]; 47 | $retArr['ret'] = 0; 48 | $retArr['data'] = $channelInfo; 49 | return $retArr; 50 | }else{ 51 | $retArr['ret'] = 13;return $retArr; 52 | } 53 | }catch(PDOException $e){ 54 | $retArr['ret'] = 11;return $retArr; 55 | } 56 | $retArr['ret'] = 10;return $retArr; 57 | } 58 | 59 | 60 | 61 | function deleteChannelByUserId($userId, $channelId){ 62 | global $g_writeMdb; 63 | try{ 64 | $sql = "delete from `channels` where `channelId` = ? and userId = ? limit 1"; 65 | if(!($pstmt = $g_writeMdb->prepare($sql))){ 66 | return 12; 67 | } 68 | if($pstmt->execute(array($channelId, $userId))){ 69 | return 0; 70 | }else{ 71 | return 13; 72 | } 73 | }catch(PDOException $e){ 74 | return 11; 75 | } 76 | return 10; 77 | } 78 | 79 | 80 | function deleteChannel($channelId){ 81 | global $g_writeMdb; 82 | try{ 83 | $sql = "delete from `channels` where `channelId` = ? limit 1"; 84 | if(!($pstmt = $g_writeMdb->prepare($sql))){ 85 | return 12; 86 | } 87 | if($pstmt->execute(array($channelId))){ 88 | return 0; 89 | }else{ 90 | return 13; 91 | } 92 | }catch(PDOException $e){ 93 | return 11; 94 | } 95 | return 10; 96 | } 97 | 98 | 99 | 100 | function canCreateChannel($userId){ 101 | global $g_readMdb; 102 | try{ 103 | $sql = "select count(*) as num from channels where userId = ?"; 104 | if(!($pstmt = $g_readMdb->prepare($sql))){ 105 | return 12; 106 | } 107 | if($pstmt->execute(array($userId))){ 108 | $result = $pstmt->fetchAll(); 109 | $resNum = count($result); 110 | 111 | if($resNum == 1){ 112 | $num = $result[0][0]; 113 | if($num <= 500){ 114 | return 0; //返回0表示可以创建 115 | }else{ 116 | return 14; 117 | } 118 | }else{ 119 | return 15; 120 | } 121 | }else{ 122 | return 13; 123 | } 124 | 125 | }catch(PDOException $e){ 126 | return 11; 127 | } 128 | return 10; 129 | } 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | function update_channel_state($channelId, $liveState){ 138 | global $g_writeMdb; 139 | try{ 140 | $sql = "update channels set liveState = ? where channelId = ? limit 1"; 141 | if(!($pstmt = $g_writeMdb->prepare($sql))){ 142 | return 12; 143 | } 144 | if($pstmt->execute(array($liveState, $channelId))){ 145 | return 0; 146 | }else{ 147 | return 13; 148 | } 149 | }catch(PDOException $e){ 150 | return 11; 151 | } 152 | return 10; 153 | } 154 | 155 | 156 | -------------------------------------------------------------------------------- /server-api/server-api-php/include/dbBase.php: -------------------------------------------------------------------------------- 1 | setAttribute(PDO::ATTR_EMULATE_PREPARES, false))){//防SQL注入 Returns TRUE on success or FALSE on failure. 21 | $retArr['ret'] = 10;$retArr['data'] = 'PDO setAttribute failed';return $retArr; 22 | } 23 | if(false === ($db->exec("set names 'utf8'"))){ 24 | $retArr['ret'] = 11;$retArr['data'] = 'PDO exec failed';return $retArr; 25 | } 26 | }catch (PDOException $e) { 27 | logf($e->getMessage()); 28 | $retArr['ret'] = 12; 29 | $retArr['data'] = $e->getMessage(); 30 | return $retArr; 31 | } 32 | $retArr['ret'] = 0; 33 | $retArr['data'] = $db; 34 | return $retArr; 35 | } 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | function getWriteMdb(){ 44 | $retArr =array(); 45 | $ret = linkDatabase(writeServer, database, username, password); 46 | if($ret['ret'] != 0){ 47 | $retArr['ret'] = intval('10'.$ret['ret']); 48 | return $retArr; 49 | } 50 | $mdb = $ret['data']; 51 | $retArr['ret'] = 0; 52 | $retArr['data'] = $mdb; 53 | return $retArr; 54 | } 55 | 56 | function getReadMdb(){ 57 | $retArr =array(); 58 | $ret = linkDatabase(readServer, database, username, password); 59 | if($ret['ret'] != 0){ 60 | $retArr['ret'] = intval('10'.$ret['ret']); 61 | return $retArr; 62 | } 63 | $mdb = $ret['data']; 64 | $retArr['ret'] = 0; 65 | $retArr['data'] = $mdb; 66 | return $retArr; 67 | } 68 | 69 | 70 | -------------------------------------------------------------------------------- /server-api/server-api-php/include/doc.php: -------------------------------------------------------------------------------- 1 | prepare($sql))){ 10 | $retArr['ret'] = 12;return $retArr; 11 | } 12 | if($pstmt->execute(array($doc_name, $pic_url, $local_path, $full_path, $file_ext, $ctime))){ 13 | $retArr['ret'] = 0; 14 | $retArr['data'] = $g_writeMdb->lastInsertId(); 15 | return $retArr; 16 | }else{ 17 | $retArr['ret'] = 13;return $retArr; 18 | } 19 | }catch(PDOException $e){ 20 | $retArr['ret'] = 11;return $retArr; 21 | } 22 | $retArr['ret'] = 10;return $retArr; 23 | } 24 | 25 | 26 | 27 | 28 | function update_doc_convert_state($id, $state){ 29 | global $g_writeMdb; 30 | try{ 31 | $sql = "update docs set state = ? where id = ? limit 1"; 32 | if(!($pstmt = $g_writeMdb->prepare($sql))){ 33 | return 12; 34 | } 35 | if($pstmt->execute(array($state, $id))){ 36 | return 0; 37 | }else{ 38 | return 13; 39 | } 40 | }catch(PDOException $e){ 41 | return 11; 42 | } 43 | return 10; 44 | } 45 | 46 | 47 | function get_doc(){ 48 | global $g_readMdb; 49 | $retArr = array(); 50 | try{ 51 | $sql = "select id, local_path, full_path, file_ext, state, doc_name from docs where state = 0 limit 1"; 52 | //$sql = "select id, local_path, full_path, file_ext, state from docs where state = 0 and file_ext = 'pdf' ORDER BY id DESC limit 1"; 53 | if(!($pstmt = $g_readMdb->prepare($sql))){ 54 | $retArr['ret'] = 12;return $retArr; 55 | } 56 | if($pstmt->execute()){ 57 | $result = $pstmt->fetchAll(); 58 | $resNum = count($result); 59 | if($resNum == 0){ 60 | $retArr['ret'] = 14;return $retArr; 61 | } 62 | 63 | $info = array(); 64 | $info['id'] = $result[0][0]; 65 | $info['local_path'] = $result[0][1]; 66 | $info['full_path'] = $result[0][2]; 67 | $info['file_ext'] = $result[0][3]; 68 | $info['state'] = $result[0][4]; 69 | $info['doc_name'] = $result[0][5]; 70 | 71 | $retArr['ret'] = 0; 72 | $retArr['data'] = $info; 73 | return $retArr; 74 | }else{ 75 | $retArr['ret'] = 13;return $retArr; 76 | } 77 | }catch(PDOException $e){ 78 | $retArr['ret'] = 11;return $retArr; 79 | } 80 | $retArr['ret'] = 10;return $retArr; 81 | } 82 | 83 | function get_doc_by_id($id){ 84 | global $g_readMdb; 85 | $retArr = array(); 86 | try{ 87 | $sql = "select id, local_path, full_path, file_ext, state, url_path from docs where id = ? limit 1"; 88 | if(!($pstmt = $g_readMdb->prepare($sql))){ 89 | $retArr['ret'] = 12;return $retArr; 90 | } 91 | if($pstmt->execute(array($id))){ 92 | $result = $pstmt->fetchAll(); 93 | $resNum = count($result); 94 | if($resNum == 0){ 95 | $retArr['ret'] = 14;return $retArr; 96 | } 97 | 98 | $info = array(); 99 | $info['id'] = $result[0][0]; 100 | $info['local_path'] = $result[0][1]; 101 | $info['full_path'] = $result[0][2]; 102 | $info['file_ext'] = $result[0][3]; 103 | $info['state'] = $result[0][4]; 104 | $info['url_path'] = $result[0][5]; 105 | 106 | $retArr['ret'] = 0; 107 | $retArr['data'] = $info; 108 | return $retArr; 109 | }else{ 110 | $retArr['ret'] = 13;return $retArr; 111 | } 112 | }catch(PDOException $e){ 113 | $retArr['ret'] = 11;return $retArr; 114 | } 115 | $retArr['ret'] = 10;return $retArr; 116 | } 117 | 118 | 119 | 120 | -------------------------------------------------------------------------------- /server-api/server-api-php/include/errCode.php: -------------------------------------------------------------------------------- 1 | prepare($sql))){ 19 | $retArr['ret'] = 12;return $retArr; 20 | } 21 | if($pstmt->execute(array($creator, $groupName, $userList_suffix, $ctime, $curNum))){ 22 | $groupId = $g_writeMdb->lastInsertId(); 23 | 24 | foreach($addUsersArr as $userId){ 25 | $ret = updateUserGroupList($userId, $groupId); //更新每个人的群列表 26 | if($ret['ret'] != 0){ 27 | $retArr['ret'] = intval('14'.$ret['ret']);return $retArr; 28 | } 29 | } 30 | 31 | $item = array(); 32 | $item['groupId'] = $groupId; 33 | $retArr['ret'] = 0; 34 | $retArr['data'] = $item; 35 | return $retArr; 36 | }else{ 37 | $retArr['ret'] = 13;return $retArr;//创建群失败 38 | } 39 | }catch(PDOException $e){ 40 | $retArr['ret'] = 11;return $retArr; 41 | } 42 | $retArr['ret'] = 10;return $retArr; 43 | } 44 | 45 | 46 | function updateUserGroupList($userId, $groupId){ 47 | global $g_writeMdb; 48 | try{ 49 | $sql = "select id, groupList from userGroup where userId = ? limit 1"; 50 | if(!($pstmt = $g_writeMdb->prepare($sql))){ 51 | return 12; 52 | } 53 | if($pstmt->execute(array($userId))){ 54 | $result = $pstmt->fetchAll(); 55 | $resNum = count($result); 56 | if($resNum == 1){ //有记录,更新 57 | $id = $result[0][0]; 58 | $groupList_suffix = trim($result[0][1]); 59 | 60 | if(!empty($groupList_suffix)){ 61 | $groupList_suffix = $groupList_suffix. ',' .$groupId.'_0'; 62 | }else{ 63 | $groupList_suffix = $groupId.'_0'; 64 | } 65 | 66 | $ret = update_userGroup($id, $groupList_suffix); 67 | if($ret != 0){ 68 | return intval('23'.$ret); 69 | } 70 | return 0; 71 | }else{//记录不存在,插入 72 | $ret = insert_userGroup($userId, $groupId); 73 | if($ret != 0){ 74 | return intval('22'.$ret); 75 | } 76 | return 0; 77 | } 78 | }else{ 79 | return 13; 80 | } 81 | }catch(PDOException $e){ 82 | return 11; 83 | } 84 | return 10; 85 | } -------------------------------------------------------------------------------- /server-api/server-api-php/include/group_del.php: -------------------------------------------------------------------------------- 1 | prepare($sql))){ 10 | return 12; 11 | } 12 | if($pstmt->execute(array($groupId, $creator))){ 13 | $result = $pstmt->fetchAll(); 14 | $resNum = count($result); 15 | if($resNum == 0){ 16 | return 14; 17 | } 18 | $userList = $result[0][0]; 19 | 20 | $pureMemberArr = array(); 21 | if(!empty($userList)){ 22 | $memberArr = explode(",", $userList); 23 | foreach($memberArr as $v){ 24 | $prefix = getPrefix($v); 25 | array_push($pureMemberArr, $prefix); 26 | } 27 | foreach ($pureMemberArr as $userId){ 28 | $ret = delGroupIdFromUserGroup($userId, $groupId); //更新每个人的群列表 29 | if($ret != 0){ 30 | return intval('22'.$ret); 31 | } 32 | } 33 | } 34 | 35 | $ret = delGroup($groupId); 36 | if($ret != 0){ 37 | return intval('15'.$ret); 38 | } 39 | 40 | return 0; 41 | }else{ 42 | return 13; 43 | } 44 | }catch(PDOException $e){ 45 | return 11; 46 | } 47 | return 10; 48 | } 49 | 50 | 51 | 52 | function delGroupIdFromUserGroup($userId, $groupId){ 53 | global $g_writeMdb; 54 | try{ 55 | $sql = "select id, groupList from userGroup where userId = ? limit 1"; 56 | if(!($pstmt = $g_writeMdb->prepare($sql))){ 57 | return 12; 58 | } 59 | if($pstmt->execute(array($userId))){ 60 | $result = $pstmt->fetchAll(); 61 | $resNum = count($result); 62 | if($resNum == 0){ 63 | return 0;//该用户未加入任何群 64 | } 65 | 66 | $id = $result[0][0]; 67 | $groupList = trim($result[0][1]); 68 | 69 | if(empty($groupList)){ 70 | return 0; 71 | } 72 | 73 | $groupList = del_from_List($groupList, $groupId); 74 | $sql = "update `userGroup` set `groupList`=? where `id` = ?"; 75 | if(!($pstmt = $g_writeMdb->prepare($sql))){ 76 | return 16; 77 | } 78 | if($pstmt->execute(array($groupList, $id))){ 79 | return 0; 80 | }else{ 81 | return 17; 82 | } 83 | }else{ 84 | return 13; 85 | } 86 | }catch(PDOException $e){ 87 | return 11; 88 | } 89 | return 10; 90 | } 91 | 92 | 93 | 94 | function delGroup($groupId){ 95 | global $g_writeMdb; 96 | try{ 97 | $sql = "delete from `groups` where `id` = ? limit 1"; 98 | if(!($pstmt = $g_writeMdb->prepare($sql))){ 99 | return 12; 100 | } 101 | if($pstmt->execute(array($groupId))){ 102 | return 0; 103 | }else{ 104 | return 13; 105 | } 106 | }catch(PDOException $e){ 107 | return 11; 108 | } 109 | return 10; 110 | } 111 | 112 | -------------------------------------------------------------------------------- /server-api/server-api-php/include/group_join.php: -------------------------------------------------------------------------------- 1 | prepare($sql))){ 13 | return 12; 14 | } 15 | if($pstmt->execute(array($groupId))){ 16 | $result = $pstmt->fetchAll(); 17 | $resNum = count($result); 18 | if($resNum == 0){ 19 | return 20; 20 | } 21 | $dbUserList = $result[0][0]; 22 | if(!empty($dbUserList)){//判断是否已在群中 23 | $dbUserListArr = explode(",", $dbUserList); 24 | $pureDbUserListArr = array(); 25 | foreach($dbUserListArr as $v){//去后缀标记 26 | $v = getPrefix($v); 27 | array_push($pureDbUserListArr, $v); 28 | } 29 | if(in_array($userId, $pureDbUserListArr)){//如果在群里,返回成功 30 | return 0; 31 | } 32 | $userList = $dbUserList . ',' . $userId.'_0'; 33 | }else{ 34 | $userList = $userId.'_0'; 35 | } 36 | }else{ 37 | return 13; 38 | } 39 | 40 | //检查用户的群列表 41 | $sql = "select id, groupList from userGroup where userId = ? limit 1"; 42 | if(!($pstmt = $g_writeMdb->prepare($sql))){ 43 | return 14; 44 | } 45 | if($pstmt->execute(array($userId))){ 46 | $result = $pstmt->fetchAll(); 47 | $resNum = count($result); 48 | if($resNum == 1){ 49 | $id = $result[0][0]; 50 | $groupList = trim($result[0][1]); 51 | if(!empty($groupList)){ 52 | $groupList = $groupList. ',' .$groupId.'_0'; 53 | }else{ 54 | $groupList = $groupId.'_0'; 55 | } 56 | 57 | $ret = update_userGroup($id, $groupList); 58 | if($ret != 0){ 59 | return intval('17'.$ret); 60 | } 61 | }else{//用户还没有加入任何群 62 | $ret = insert_userGroup($userId, $groupId); 63 | if($ret != 0){ 64 | return intval('21'.$ret); 65 | } 66 | } 67 | }else{ 68 | return 15; 69 | } 70 | 71 | //更新群的成员列表 72 | $ret = updateGroup_by_add($groupId, $userList); 73 | if($ret != 0){ 74 | return intval('20'.$ret); 75 | } 76 | return 0; 77 | }catch(PDOException $e){ 78 | return 11; 79 | } 80 | return 10; 81 | } 82 | 83 | 84 | 85 | 86 | 87 | function updateGroup_by_add($groupId, $userList){ 88 | global $g_writeMdb; 89 | try{ 90 | $sql = "update `groups` set `userList` = ?, curNum=curNum+1 where `id` = ? limit 1"; 91 | if(!($pstmt = $g_writeMdb->prepare($sql))){ 92 | return 12; 93 | } 94 | if($pstmt->execute(array($userList, $groupId))){ 95 | return 0; 96 | }else{ 97 | return 13; 98 | } 99 | }catch(PDOException $e){ 100 | return 11; 101 | } 102 | return 10; 103 | } 104 | -------------------------------------------------------------------------------- /server-api/server-api-php/include/group_quit.php: -------------------------------------------------------------------------------- 1 | prepare($sql))){ 11 | return 12; 12 | } 13 | if($pstmt->execute(array($groupId))){ 14 | $result = $pstmt->fetchAll(); 15 | $resNum = count($result); 16 | if($resNum == 1){ 17 | $userList = $result[0][0]; 18 | $creator = $result[0][1]; 19 | if($userId == $creator){ 20 | return 30; //创建者不能删除自已 21 | } 22 | $userList = del_from_List($userList, $userId); 23 | }else{ 24 | return 14; 25 | } 26 | }else{ 27 | return 13; 28 | } 29 | 30 | 31 | // 更新用户的群列表 32 | $sql = "select id, groupList from userGroup where userId = ? limit 1"; 33 | if(!($pstmt = $g_writeMdb->prepare($sql))){ 34 | return 15; 35 | } 36 | if($pstmt->execute(array($userId))){ 37 | $result = $pstmt->fetchAll(); 38 | $resNum = count($result); 39 | if($resNum == 0){ 40 | return 17; //该用户未加入任何群 41 | } 42 | 43 | $id = intval($result[0][0]); 44 | $groupList = trim($result[0][1]); 45 | 46 | if(empty($groupList)){ 47 | return 18; //该用户未加入任何群 48 | } 49 | 50 | $groupList = del_from_List($groupList, $groupId); 51 | $ret = update_userGroup($id, $groupList); 52 | if($ret != 0){ 53 | return intval('30'.$ret); 54 | } 55 | }else{ 56 | return 16; 57 | } 58 | 59 | $ret = updateGroup_by_del($groupId, $userList);//更新群的成员列表 60 | if($ret != 0){ 61 | return intval('20'.$ret); 62 | } 63 | return 0; 64 | }catch(PDOException $e){ 65 | return 11; 66 | } 67 | return 10; 68 | } 69 | 70 | 71 | 72 | function updateGroup_by_del($groupId, $userList){ 73 | global $g_writeMdb; 74 | try{ 75 | $sql = "update `groups` set `userList` = ?, curNum=curNum-1 where `id` = ? limit 1"; 76 | if(!($pstmt = $g_writeMdb->prepare($sql))){ 77 | return 12; 78 | } 79 | if($pstmt->execute(array($userList, $groupId))){ 80 | return 0; 81 | }else{ 82 | return 13; 83 | } 84 | }catch(PDOException $e){ 85 | return 11; 86 | } 87 | return 10; 88 | } 89 | 90 | -------------------------------------------------------------------------------- /server-api/server-api-php/include/lang/class.upload.cs_CS.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /server-api/server-api-php/include/lang/class.upload.de_DE.php: -------------------------------------------------------------------------------- 1 | 84 | -------------------------------------------------------------------------------- /server-api/server-api-php/include/lang/class.upload.et_EE.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /server-api/server-api-php/include/lang/class.upload.he_IL.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /server-api/server-api-php/include/lang/class.upload.ja_JP.php: -------------------------------------------------------------------------------- 1 | 89 | -------------------------------------------------------------------------------- /server-api/server-api-php/include/lang/class.upload.pl_PL.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /server-api/server-api-php/include/lang/class.upload.ro_RO.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /server-api/server-api-php/include/lang/class.upload.ru_RU.php: -------------------------------------------------------------------------------- 1 | 86 | -------------------------------------------------------------------------------- /server-api/server-api-php/include/lang/class.upload.ru_RU.windows-1251.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/starrtc/starrtc-server/62236635e5557f4e864b794ec6104364f649df1d/server-api/server-api-php/include/lang/class.upload.ru_RU.windows-1251.php -------------------------------------------------------------------------------- /server-api/server-api-php/include/lang/class.upload.sk_SK.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /server-api/server-api-php/include/lang/class.upload.sr_YU.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /server-api/server-api-php/include/lang/class.upload.sv_SE.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /server-api/server-api-php/include/lang/class.upload.uk_UA.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /server-api/server-api-php/include/lang/class.upload.uk_UA.windows-1251.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/starrtc/starrtc-server/62236635e5557f4e864b794ec6104364f649df1d/server-api/server-api-php/include/lang/class.upload.uk_UA.windows-1251.php -------------------------------------------------------------------------------- /server-api/server-api-php/include/lang/class.upload.vn_VN.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /server-api/server-api-php/include/lang/class.upload.zh_CN.gb-2312.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /server-api/server-api-php/include/lang/class.upload.zh_CN.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /server-api/server-api-php/include/lang/class.upload.zh_TW.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /server-api/server-api-php/include/pubFun.php: -------------------------------------------------------------------------------- 1 | '1', 'data' => $data); 7 | $json = json_encode($retArr, JSON_UNESCAPED_UNICODE); //JSON_UNESCAPED_UNICODE 8 | echo $json; 9 | if($exit == 1){ 10 | exit; 11 | } 12 | } 13 | 14 | //返回给服务端程序的,用到字符0 15 | function echo_0($msg, $data = errcode_unkown, $exit = 1){ 16 | logf($msg); 17 | $retArr = array('status' => '0', 'data' => $data); 18 | $json = json_encode($retArr); 19 | echo $json; 20 | if($exit == 1){ 21 | exit; 22 | } 23 | } 24 | 25 | 26 | //直接返回给前端的 27 | function echoErr($data, $exit = 1){ 28 | logf($data); 29 | $retArr = array('status'=> 0, 'data'=>$data); 30 | $json = json_encode($retArr); 31 | echo $json; 32 | if($exit == 1){ 33 | exit; 34 | } 35 | } 36 | 37 | //需要自已对data进行编码,如果是数组,需要自已对单个数组元素进行编码 38 | function echoK($data, $exit = 1){ 39 | $retArr = array('status'=>1, 'data'=>$data); 40 | $json = json_encode($retArr); 41 | echo $json; 42 | if($exit == 1){ 43 | exit; 44 | } 45 | } 46 | 47 | 48 | function echoK_zh($data, $exit = 1){ 49 | $retArr = array('status'=>1, 'data'=>$data); 50 | $json = json_encode($retArr); 51 | echo urldecode($json); 52 | if($exit == 1){ 53 | exit; 54 | } 55 | } 56 | 57 | function echoDebug($data, $exit = 0){ 58 | echo '
======
'; 59 | print_r($data); 60 | echo '
======
'; 61 | if($exit == 1){ 62 | exit; 63 | } 64 | } 65 | 66 | function logf($data){ 67 | $fp = fopen(log_file, "a+");//读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。 68 | $time = date('Y-m-d H:i:s'); 69 | fwrite($fp, $time.' '.$data."\r\n");//记得a+w 70 | fclose($fp); 71 | } 72 | 73 | 74 | function addSuffix($ids){ 75 | $ids_arr = explode(",", $ids); 76 | $id_suffix_arr = array(); 77 | foreach($ids_arr as $id){ 78 | array_push($id_suffix_arr, $id.'_0'); 79 | } 80 | $ids_suffix = implode(',', $id_suffix_arr); 81 | return $ids_suffix; 82 | } 83 | 84 | 85 | //获取前缀 86 | function getPrefix($prefix_suffix){ 87 | $index = strpos($prefix_suffix, "_", 0); 88 | if($index){ 89 | $prefix = substr($prefix_suffix, 0, $index); 90 | return $prefix; 91 | } 92 | } 93 | 94 | //获取后缀 95 | function getSuffix($prefix_suffix){ 96 | $index = strpos($prefix_suffix, "_", 0); 97 | if($index){ 98 | $suffix = substr($prefix_suffix, $index+1); 99 | return $suffix; 100 | } 101 | } 102 | 103 | function curl_post($url, $data){ 104 | $ch = curl_init(); 105 | curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 106 | curl_setopt($ch, CURLOPT_URL, $url); 107 | curl_setopt($ch, CURLOPT_POST, 1 ); 108 | //curl_setopt( $ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml')); 109 | curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 110 | $result = curl_exec($ch); 111 | curl_close($ch); 112 | return $result; 113 | } 114 | 115 | 116 | -------------------------------------------------------------------------------- /server-api/server-api-php/include/room.php: -------------------------------------------------------------------------------- 1 | prepare($sql))){ 11 | return 13; 12 | } 13 | 14 | if($pstmt->execute(array($userId, $roomId, $roomName, $roomType, $conCurrentNumber, $ctime, time()))){ 15 | return 0; 16 | }else{ 17 | return 14; 18 | } 19 | }catch(PDOException $e){ 20 | return 11; 21 | } 22 | return 10; 23 | } 24 | //belongId 25 | 26 | 27 | 28 | function delete_chat_room($userId, $roomId){ 29 | global $g_writeMdb; 30 | try{ 31 | $sql = "select id from chatRoom where userId = ? and roomId = ? limit 1"; 32 | if(!($pstmt = $g_writeMdb->prepare($sql))){ 33 | return 13; 34 | } 35 | if($pstmt->execute(array($userId, $roomId))){ 36 | $result = $pstmt->fetchAll(); 37 | $resNum = count($result); 38 | if($resNum == 0){ 39 | return 0;//聊天室不存在,默认删除成功 40 | } 41 | $id = intval($result[0][0]); 42 | 43 | $sql = "delete from `chatRoom` where `id` = ? limit 1"; 44 | if(!($pstmt = $g_writeMdb->prepare($sql))){ 45 | return 16; 46 | } 47 | if($pstmt->execute(array($id))){ 48 | return 0; 49 | }else{ 50 | return 17;//删除失败 51 | } 52 | }else{ 53 | return 14; 54 | } 55 | }catch(PDOException $e){ 56 | return 11; 57 | } 58 | return 10; 59 | } 60 | 61 | 62 | 63 | function isRoomIdExist($roomId){ 64 | global $g_writeMdb; 65 | $retArr = array(); 66 | try{ 67 | $sql = "select userId, conCurrentNumber from chatRoom where roomId = ? limit 1"; 68 | if(!($pstmt = $g_writeMdb->prepare($sql))){ 69 | $retArr['ret'] = 12;return $retArr; 70 | } 71 | if($pstmt->execute(array($roomId))){ 72 | $result = $pstmt->fetchAll(); 73 | $resNum = count($result); 74 | if($resNum == 0){ 75 | $retArr['ret'] = 14;return $retArr;//不存在 76 | } 77 | 78 | $item = array(); 79 | $item['userId'] = $result[0][0]; 80 | $item['conCurrentNumber'] = $result[0][1]; 81 | $retArr['ret'] = 0;//存在 82 | $retArr['data'] = $item; 83 | return $retArr; 84 | }else{ 85 | $retArr['ret'] = 13;return $retArr; 86 | } 87 | }catch(PDOException $e){ 88 | $retArr['ret'] = 11;return $retArr; 89 | } 90 | $retArr['ret'] = 10;return $retArr; 91 | } 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | function get_room_info($roomId){ 100 | global $g_writeMdb; 101 | $retArr = array(); 102 | try{ 103 | $sql = "select id, userId from chatRoom where roomId = ? limit 1"; 104 | if(!($pstmt = $g_writeMdb->prepare($sql))){ 105 | $retArr['ret'] = 12;return $retArr; 106 | } 107 | if($pstmt->execute(array($roomId))){ 108 | $result = $pstmt->fetchAll(); 109 | $resNum = count($result); 110 | if($resNum == 0){ 111 | $retArr['ret'] = 14; return $retArr; 112 | } 113 | 114 | $info = array(); 115 | $info['id'] = $result[0][0]; 116 | $info['userId'] = $result[0][1]; 117 | $retArr['ret'] = 0; 118 | $retArr['data'] = $info; 119 | return $retArr; 120 | }else{ 121 | $retArr['ret'] = 13;return $retArr; 122 | } 123 | }catch(PDOException $e){ 124 | $retArr['ret'] = 11;return $retArr; 125 | } 126 | $retArr['ret'] = 10;return $retArr; 127 | } 128 | -------------------------------------------------------------------------------- /server-api/server-api-php/include/star_api.php: -------------------------------------------------------------------------------- 1 | $msg, 13 | 'digest' => $digest, //摘要 14 | 'toUsers' => $toUsers // 用户,用逗号隔开 15 | ); 16 | 17 | $ret = curl_post($url, $data);// 成功返回的是json {"status":"1"} 18 | return $ret; 19 | } 20 | 21 | 22 | //push群系统消息 23 | function pushGroupMsg($groupId, $msg){ 24 | $url = proxyUrl.'pushGroupMsg'; 25 | $data = array ( 26 | 'groupId' => $groupId, 27 | 'msg' => $msg 28 | ); 29 | $ret = curl_post($url, $data); 30 | return $ret; 31 | } 32 | 33 | 34 | /////////////////////////////group 群操作 需要开启aec //////////////////// 35 | //同步群成员 36 | function syncGroupList($groupId, $groupList, $ignoreList){ 37 | $url = proxyUrl.'syncGroupList'; 38 | 39 | if(empty($groupList)){ 40 | $data = array ( 41 | 'groupId' => $groupId 42 | ); 43 | }else{ 44 | if(empty($ignoreList)){ 45 | $data = array ( 46 | 'groupId' => $groupId, 47 | 'groupList' => $groupList //不传groupList表示清空这个群的成员 48 | ); 49 | }else{ 50 | $data = array ( 51 | 'groupId' => $groupId, 52 | 'groupList' => $groupList, 53 | 'ignoreList' => $ignoreList 54 | ); 55 | } 56 | } 57 | 58 | $ret = curl_post($url, $data); 59 | return $ret; 60 | } 61 | 62 | //添加群好友 63 | //需要先调用 同步群成员 ,服务端才有这个群的记录,然后才能调用 addUsersToGroup 64 | function addUsersToGroup($groupId, $addedUsers){ 65 | $url = proxyUrl.'addUsersToGroup'; 66 | 67 | $data = array ( 68 | 'groupId' => $groupId, 69 | 'addedUsers' => $addedUsers 70 | ); 71 | $ret = curl_post($url, $data); 72 | return $ret; 73 | } 74 | 75 | //删除群好友 76 | function delUsersFromGroup($groupId, $deledUsers){ 77 | $url = proxyUrl.'delUsersFromGroup'; 78 | $data = array ( 79 | 'groupId' => $groupId, 80 | 'deledUsers' => $deledUsers 81 | ); 82 | 83 | $ret = curl_post($url, $data); 84 | return $ret; 85 | } 86 | 87 | 88 | 89 | function setPushIgnore($groupId, $ignoreList){ 90 | $url = proxyUrl.'setPushIgnore'; 91 | $data = array ( 92 | 'groupId' => $groupId, 93 | 'ignoreList' => $ignoreList 94 | ); 95 | 96 | $ret = curl_post($url, $data); 97 | return $ret; 98 | } 99 | 100 | 101 | function unsetPushIgnore($groupId, $ignoreList){ 102 | $url = proxyUrl.'unsetPushIgnore'; 103 | $data = array ( 104 | 'groupId' => $groupId, 105 | 'ignoreList' => $ignoreList 106 | ); 107 | 108 | $ret = curl_post($url, $data); 109 | return $ret; 110 | } 111 | 112 | 113 | -------------------------------------------------------------------------------- /server-api/server-api-php/list/del.php: -------------------------------------------------------------------------------- 1 | prepare($sql))){ 28 | return 12; 29 | } 30 | if($pstmt->execute(array($userId, $listType, $roomId))){ 31 | return 0; 32 | }else{ 33 | return 13; 34 | } 35 | }catch(PDOException $e){ 36 | return 11; 37 | } 38 | return 10; 39 | } -------------------------------------------------------------------------------- /server-api/server-api-php/list/query.php: -------------------------------------------------------------------------------- 1 | prepare($sql))){ 36 | $retArr['ret'] = 12;return $retArr; 37 | } 38 | if($pstmt->execute()){ 39 | $result = $pstmt->fetchAll(); 40 | $resNum = count($result); 41 | 42 | $info = array(); 43 | $index = 0; 44 | 45 | for($i = 0; $i < $resNum; $i++){ 46 | $roomId = $result[$i][0]; 47 | $userId = $result[$i][1]; 48 | $roomName = $result[$i][2]; 49 | 50 | 51 | $item = array(); 52 | $item['roomId'] = $roomId; 53 | $item['creator'] = $userId; 54 | $item['data'] = $roomName; 55 | $info[$index++] = $item; 56 | 57 | } 58 | 59 | 60 | $retArr['ret'] = 0; 61 | $retArr['data'] = $info; 62 | return $retArr; 63 | }else{ 64 | $retArr['ret'] = 13;return $retArr; 65 | } 66 | }catch(PDOException $e){ 67 | $retArr['ret'] = 11;return $retArr; 68 | } 69 | $retArr['ret'] = 10;return $retArr; 70 | } 71 | -------------------------------------------------------------------------------- /server-api/server-api-php/list/save.php: -------------------------------------------------------------------------------- 1 | prepare($sql))){ 54 | return 13; 55 | } 56 | if($pstmt->execute(array($userId, $listType, $roomId, $data, $ctime))){ 57 | return 0; 58 | }else{ 59 | return 14; 60 | } 61 | }catch(PDOException $e){ 62 | return 11; 63 | } 64 | return 10; 65 | } -------------------------------------------------------------------------------- /server-api/server-api-php/push_group_msg.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | int main(){ 4 | printf("hello, starRTC."); 5 | return 0; 6 | } -------------------------------------------------------------------------------- /web-supported/README.md: -------------------------------------------------------------------------------- 1 | 2 | 本目录里面的程序是支持web端通话的服务端程序与自签名证书。 3 | 4 | 5 | -------------------------------------------------------------------------------- /web-supported/chatDBServer: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/starrtc/starrtc-server/62236635e5557f4e864b794ec6104364f649df1d/web-supported/chatDBServer -------------------------------------------------------------------------------- /web-supported/chatRoomServer: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/starrtc/starrtc-server/62236635e5557f4e864b794ec6104364f649df1d/web-supported/chatRoomServer -------------------------------------------------------------------------------- /web-supported/groupPushHttpProxy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/starrtc/starrtc-server/62236635e5557f4e864b794ec6104364f649df1d/web-supported/groupPushHttpProxy -------------------------------------------------------------------------------- /web-supported/groupServer: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/starrtc/starrtc-server/62236635e5557f4e864b794ec6104364f649df1d/web-supported/groupServer -------------------------------------------------------------------------------- /web-supported/liveProxyServer: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/starrtc/starrtc-server/62236635e5557f4e864b794ec6104364f649df1d/web-supported/liveProxyServer -------------------------------------------------------------------------------- /web-supported/liveSrcServer: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/starrtc/starrtc-server/62236635e5557f4e864b794ec6104364f649df1d/web-supported/liveSrcServer -------------------------------------------------------------------------------- /web-supported/liveVdnServer: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/starrtc/starrtc-server/62236635e5557f4e864b794ec6104364f649df1d/web-supported/liveVdnServer -------------------------------------------------------------------------------- /web-supported/msgServer: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/starrtc/starrtc-server/62236635e5557f4e864b794ec6104364f649df1d/web-supported/msgServer -------------------------------------------------------------------------------- /web-supported/starchatroom.key: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | MIIEpAIBAAKCAQEAtYpgXQzDPY9TBXYhmXxx7I5/PU4fBRqIfbsNhwyQEnXinL9h 3 | 8JGwMY1plQJfaCbd1iAtO8IfU67VyGZVb301QSl6AERltZiLs2Qyc6ygfmo6kB53 4 | dU/ShwmKZpZU/aDdfUpgeI9R6OvH8yv6RuYZALcESldbFxCPw9Vgx9f8QgoJu/in 5 | BPBHP0/xqbW1Lujb39VTxcnsoe9ejVLMfwEyy2VQs5A/nMgWzFB5F8fu0Ppi8UI1 6 | NGXJ/J8AJZ4vlNBDTGZq1ZeKtgXPy9NbhhSnwo6D+z22BZF/kWz4+CRL9daTFfOp 7 | /BUWSy/30Qd37AOH/yIAqvWx9DCwVLF3CLBTpwIDAQABAoIBAQCcPHTmX99/kWOv 8 | 5ZTRFUqufYx/5EXKDKW/H0ZrHaK4YIAgyoytj5SFcOCW/y3A4wI0EAkdztlLGcKe 9 | 74NDqgw1Ak8e/75Q5PIF94t8BesyIJY6Bh5k9ceHs+xKkcKfbNxxwZr45s9ll9XD 10 | L+v7LHgEJ34nxLp+RSCVN4RNOVK+OZYGyVHGNC7aMVsgzf0LWBMz8aY5PZyqGo7Y 11 | e5XHLAPJh4vUGA02fJJ8zu2wfQq1KJ61p9PgxA6WMno1YEg6w3Oz9F+fdsQTOYel 12 | hBiHcqumttq4bTt6mdrZd6thajWVgd+QnA1kMJHZszcOkTs80Y6ZJ+qv8Xyk3V3W 13 | noXjTo3RAoGBAN/Z4H6QCD4tZ5LMLWhfMjPcdyJAVXsPFXW2CAjI1bDEFPkUBuAl 14 | E7xDxx73/8apaOG6nV3gqTjZSk5FVWdZag+hZhs/ZvHHRUKr3YI4AsO/8ADavPOg 15 | +I095YAvrOi0kOEY6pB2A8cgnam3+ZRHLXQNWtcNLjv4hQSK5nuukgklAoGBAM+c 16 | 6Dv+eE1qCHH0fB5T2jYNPZg9jRuw3Zc8pHy6zO6i2qJ/ZJ7YeUM03Gt0w47gd0MA 17 | tf2yIHFRzcVwb5KrPOMbLIVrCrM7EfJtWU3IbDMbYX6Zt7UBDfOSsH10AmYiRj5/ 18 | 9KzFl+5lmVGVrjq52PVLf+Kezdukf1m+f6TOWy3bAoGAIC3E3My9spp6UhrxyBgv 19 | Mk9V/OF8qEUB07sIKqMcPN3jGe8sEdqinKStoiEKbrd5sUFPT+h0ywxJZzkGTuYG 20 | nhqYgAA8PzNjHHNyUz7T/um/iY/oK6mPMVadgDDaTVVvojwftAaTAnQI1hXxVcRp 21 | n04wKcvmQo62KHIDMfJlYdUCgYBjPJ8NPj+G0W4j+jbx0Cb3uzB7+r/eQpZI2iXN 22 | sQSP9KwJDFeuTc74vuW1P2TSgJzBHC/hiilTwURYYbwTIWLDM5P+WgINVejoNjh/ 23 | o5OEgkwB1bwn+s8OZEmUTcVvyGZHLaZohzJuM4Yrpx5W18rKxUHlsv63RFPTM+mT 24 | f0e6DQKBgQDIEL2aoHRVnulmcY+PbZ27WZN9YQ52gIFGPdBMF/64/cJTMp63E5vL 25 | E2943q42N0piTp5o4cGP5bIefshrcYoWFZRNrizbBHV3ChkAoALH6FKuObh5A7F5 26 | ZsvX1kVAXooLxln6z3ou0Z12MDjrTyM+hl9Sjk+NIVg8FTVyp7l5Ew== 27 | -----END RSA PRIVATE KEY----- -------------------------------------------------------------------------------- /web-supported/starchatroom.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIFkTCCBHmgAwIBAgIQCqKUY606sGDKHqGx3fBQlTANBgkqhkiG9w0BAQsFADBu 3 | MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 4 | d3cuZGlnaWNlcnQuY29tMS0wKwYDVQQDEyRFbmNyeXB0aW9uIEV2ZXJ5d2hlcmUg 5 | RFYgVExTIENBIC0gRzEwHhcNMTgwNTMwMDAwMDAwWhcNMTkwNTMwMTIwMDAwWjAf 6 | MR0wGwYDVQQDExRjaGF0cm9vbS5zdGFycnRjLmNvbTCCASIwDQYJKoZIhvcNAQEB 7 | BQADggEPADCCAQoCggEBALWKYF0Mwz2PUwV2IZl8ceyOfz1OHwUaiH27DYcMkBJ1 8 | 4py/YfCRsDGNaZUCX2gm3dYgLTvCH1Ou1chmVW99NUEpegBEZbWYi7NkMnOsoH5q 9 | OpAed3VP0ocJimaWVP2g3X1KYHiPUejrx/Mr+kbmGQC3BEpXWxcQj8PVYMfX/EIK 10 | Cbv4pwTwRz9P8am1tS7o29/VU8XJ7KHvXo1SzH8BMstlULOQP5zIFsxQeRfH7tD6 11 | YvFCNTRlyfyfACWeL5TQQ0xmatWXirYFz8vTW4YUp8KOg/s9tgWRf5Fs+PgkS/XW 12 | kxXzqfwVFksv99EHd+wDh/8iAKr1sfQwsFSxdwiwU6cCAwEAAaOCAngwggJ0MB8G 13 | A1UdIwQYMBaAFFV0T7JyT/VgulDR1+ZRXJoBhxrXMB0GA1UdDgQWBBS99LHETazv 14 | rQ07UCeDollpndSqyjAfBgNVHREEGDAWghRjaGF0cm9vbS5zdGFycnRjLmNvbTAO 15 | BgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMEwG 16 | A1UdIARFMEMwNwYJYIZIAYb9bAECMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3 17 | LmRpZ2ljZXJ0LmNvbS9DUFMwCAYGZ4EMAQIBMIGBBggrBgEFBQcBAQR1MHMwJQYI 18 | KwYBBQUHMAGGGWh0dHA6Ly9vY3NwMi5kaWdpY2VydC5jb20wSgYIKwYBBQUHMAKG 19 | Pmh0dHA6Ly9jYWNlcnRzLmRpZ2ljZXJ0LmNvbS9FbmNyeXB0aW9uRXZlcnl3aGVy 20 | ZURWVExTQ0EtRzEuY3J0MAkGA1UdEwQCMAAwggEDBgorBgEEAdZ5AgQCBIH0BIHx 21 | AO8AdgC72d+8H4pxtZOUI5eqkntHOFeVCqtS6BqQlmQ2jh7RhQAAAWOvfZC4AAAE 22 | AwBHMEUCIQC8rrGRrBf8mIXoXEc52YSmx/XBMLODgOsjyVyWR1OTcwIgK6pYoLGn 23 | 1gL6Sqs2FJsEfpJMjYVhUHVV5XskQAX8xA4AdQCHdb/nWXz4jEOZX73zbv9WjUdW 24 | Nv9KtWDBtOr/XqCDDwAAAWOvfZCzAAAEAwBGMEQCIFsDQSeIoFY67Ij+G3KV1wXY 25 | CzwRPy8HTH/EAjzY7BsAAiBOSZC5uX86avwdYyZkV4806Nb6GdvWQbLSlWR0xzxk 26 | ljANBgkqhkiG9w0BAQsFAAOCAQEAkWT8eIc9vGZleLjAoTMG+yTy8oodjG8KN0Td 27 | hQ6byLf/0qa8zLvhOJfvTTp5lbf9YpxhEQoSQa/diXZaeFPp4SMkZvPbeeYWcAYP 28 | h+x99aoQ4IeoqIAd3x/CjrUo5EyiFHYAIgxMdnvq89xS0KahO90xQrEr+VDB+5fy 29 | YxjcvQyIlQwyUp7xAUzxvyw2TTyNSXc75BASRDcnJipHbrt7kDpMcMRaYEgq1cyX 30 | 53EI632SxthD6+Ccov+AGOzIrASPmt55fc058F29hRWu88o7AGAcd4U+vUBd/aKV 31 | ofEagPFT66y3Lf3LJKs+/b0jtO5pEMs9f4m4ZzcB73i/wBj5nw== 32 | -----END CERTIFICATE----- 33 | -----BEGIN CERTIFICATE----- 34 | MIIEqjCCA5KgAwIBAgIQAnmsRYvBskWr+YBTzSybsTANBgkqhkiG9w0BAQsFADBh 35 | MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 36 | d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD 37 | QTAeFw0xNzExMjcxMjQ2MTBaFw0yNzExMjcxMjQ2MTBaMG4xCzAJBgNVBAYTAlVT 38 | MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j 39 | b20xLTArBgNVBAMTJEVuY3J5cHRpb24gRXZlcnl3aGVyZSBEViBUTFMgQ0EgLSBH 40 | MTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALPeP6wkab41dyQh6mKc 41 | oHqt3jRIxW5MDvf9QyiOR7VfFwK656es0UFiIb74N9pRntzF1UgYzDGu3ppZVMdo 42 | lbxhm6dWS9OK/lFehKNT0OYI9aqk6F+U7cA6jxSC+iDBPXwdF4rs3KRyp3aQn6pj 43 | pp1yr7IB6Y4zv72Ee/PlZ/6rK6InC6WpK0nPVOYR7n9iDuPe1E4IxUMBH/T33+3h 44 | yuH3dvfgiWUOUkjdpMbyxX+XNle5uEIiyBsi4IvbcTCh8ruifCIi5mDXkZrnMT8n 45 | wfYCV6v6kDdXkbgGRLKsR4pucbJtbKqIkUGxuZI2t7pfewKRc5nWecvDBZf3+p1M 46 | pA8CAwEAAaOCAU8wggFLMB0GA1UdDgQWBBRVdE+yck/1YLpQ0dfmUVyaAYca1zAf 47 | BgNVHSMEGDAWgBQD3lA1VtFMu2bwo+IbG8OXsj3RVTAOBgNVHQ8BAf8EBAMCAYYw 48 | HQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMBIGA1UdEwEB/wQIMAYBAf8C 49 | AQAwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdp 50 | Y2VydC5jb20wQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL2NybDMuZGlnaWNlcnQu 51 | Y29tL0RpZ2lDZXJ0R2xvYmFsUm9vdENBLmNybDBMBgNVHSAERTBDMDcGCWCGSAGG 52 | /WwBAjAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5jb20vQ1BT 53 | MAgGBmeBDAECATANBgkqhkiG9w0BAQsFAAOCAQEAK3Gp6/aGq7aBZsxf/oQ+TD/B 54 | SwW3AU4ETK+GQf2kFzYZkby5SFrHdPomunx2HBzViUchGoofGgg7gHW0W3MlQAXW 55 | M0r5LUvStcr82QDWYNPaUy4taCQmyaJ+VB+6wxHstSigOlSNF2a6vg4rgexixeiV 56 | 4YSB03Yqp2t3TeZHM9ESfkus74nQyW7pRGezj+TC44xCagCQQOzzNmzEAP2SnCrJ 57 | sNE2DpRVMnL8J6xBRdjmOsC3N6cQuKuRXbzByVBjCqAA8t1L0I+9wXJerLPyErjy 58 | rMKWaBFLmfK/AHNF4ZihwPGOc7w6UHczBZXH5RFzJNnww+WnKuTPI0HfnVH8lg== 59 | -----END CERTIFICATE----- -------------------------------------------------------------------------------- /web-supported/starmsg.key: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | MIIEpQIBAAKCAQEApZuZXv7PAB4XaXm50c44NNq8cPqoOy7AmVnnRTAopjXoW5PX 3 | Mtba85mf5v8W7z9uMYO+/jnkL5HnVgyXs/9g40U4rPqqzHkUe52gGDFEBaYEJKNG 4 | T6NzvpT1OuscewxH4AdUArCix2Q/OTKjI0+e9fAHq8n6zI5ziOSQEJENMjdNMbNR 5 | UjDPavPB61ihiXhXPBgH4DVxG0x65hIfr64/cPKKE3JzVI1yHp03OHal0h+kqvqU 6 | 8TcFiPwS6emL5XAXrj+ad69v6rhUbTBEk5yUFK2QnUtr8/euVSQhXyE3Mz6EST69 7 | fMwnqNEy5ibGNNA3bOoRggwV7Kpi8+P63bfciwIDAQABAoIBAGTj9H3xEj7qFi1F 8 | 4TS2Q3u/vom9yvuzMda69LAr9Le9o78WxEXOqzk44DekNF6w7/ruXk8XCbMJWjwM 9 | E+eur2IF689GLwO+yAG/N6dFbEFcsK15Yv5lf8Adk4C/d2xnQOp0zHOPFLwQkIvS 10 | E50RhrAh+SppNIemSTCevj25gKaUG1W/timjZp4npSsune8JxH+xi/cXkjWViJus 11 | VrE9Ztt/SB+rpNdQ7AfOMM1B/A62E3z84ibqFBOkAP6CcJxr2b4mcQ0Low5DPfL+ 12 | V7Mo+4PZ2oNnD9oGf586SSnPTuFRtS7SF8FZzEiBsNiMMYIq4905hsi9fuHvJIyk 13 | jua7bsECgYEA02ANofeOeJcoO62m4wqJ/w8pYSVAi8j00Oa0oIByGdW8ezxq2o5k 14 | n3HWgBLjupI7XCCuN+sSUVzYHXBPpC26pdC2PVhZCk+Emxi9E8ReFDTl3vV+j2tS 15 | f1lK75hH3ZcS7+w1HYAk6GmshG5izYr97EyYnasMYnLwfF4eNHcrkFECgYEAyJIC 16 | WYq2jDcgOrrHPgr0h0fPeqAbUfTy623jByTzIMQXoTQuxRzCdJHbmfNgdkRhEdph 17 | TBXMtsB1ihKxxpaiKCeUXyOXLoQkoQpNI2LkYgPiBMvjkHGSuDmbqeimOvHKXBOj 18 | paIH6iV++j3fYBJRxh4q7hLo03LdhZ0JWJvAZBsCgYEAnAXfqjloQZ0ZxotUj2w9 19 | FjcjzSBJN6U7CGPy2jJVhrpc6P5cxTysC4Fk2p6W2CWOiV9aGc57c/E7WOeI8eAL 20 | UM/xZPCssM6nTDCDiG6/Ht04/E1rgQOwHm5TwO0/xtH32X8aac8n7yHphMtSRPQe 21 | oGidkmwqtRSwbKywUPvR/TECgYEAtebd5LGOH5p7S2hL/PPYk7xH6lG8lVbO3UAa 22 | z0bujX/qYlQ+Opx7q1cBUB1PFdOsKZHh/iwjLndb4m5T9uR0inBi+un/WbuUsMzz 23 | 6qzsrgwRdwInD8BBLX1ptO3/nKPfQCS7nSNXhD6fa3qj1LCoo0KG8sYJjIO3bk9e 24 | w5L2KJMCgYEAqz4lgUTMQQXdhsw3jEY5ufLAKUDeUgLbYQuQJNv6wLepQUvp7K9I 25 | 7Q9NdJlXiNg5rVVZ3ygCtBBN7PxeC7Hvg17zf+aSUUPF6ZUptAj1Zh7+Uzr6jjdR 26 | Hky/B7/S74GwXTWQZ26zd5Nn/fzyK+rTITfTQwL3qScZOJpfeHkxqhU= 27 | -----END RSA PRIVATE KEY----- -------------------------------------------------------------------------------- /web-supported/starmsg.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIFhzCCBG+gAwIBAgIQCNliWZC6qJHPMKgnN5ck9DANBgkqhkiG9w0BAQsFADBu 3 | MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 4 | d3cuZGlnaWNlcnQuY29tMS0wKwYDVQQDEyRFbmNyeXB0aW9uIEV2ZXJ5d2hlcmUg 5 | RFYgVExTIENBIC0gRzEwHhcNMTgwNTMwMDAwMDAwWhcNMTkwNTMwMTIwMDAwWjAa 6 | MRgwFgYDVQQDEw9tc2cuc3RhcnJ0Yy5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IB 7 | DwAwggEKAoIBAQClm5le/s8AHhdpebnRzjg02rxw+qg7LsCZWedFMCimNehbk9cy 8 | 1trzmZ/m/xbvP24xg77+OeQvkedWDJez/2DjRTis+qrMeRR7naAYMUQFpgQko0ZP 9 | o3O+lPU66xx7DEfgB1QCsKLHZD85MqMjT5718AeryfrMjnOI5JAQkQ0yN00xs1FS 10 | MM9q88HrWKGJeFc8GAfgNXEbTHrmEh+vrj9w8ooTcnNUjXIenTc4dqXSH6Sq+pTx 11 | NwWI/BLp6YvlcBeuP5p3r2/quFRtMESTnJQUrZCdS2vz965VJCFfITczPoRJPr18 12 | zCeo0TLmJsY00Dds6hGCDBXsqmLz4/rdt9yLAgMBAAGjggJzMIICbzAfBgNVHSME 13 | GDAWgBRVdE+yck/1YLpQ0dfmUVyaAYca1zAdBgNVHQ4EFgQUFrZgTGTbVFlYgjgD 14 | Y19l48remrwwGgYDVR0RBBMwEYIPbXNnLnN0YXJydGMuY29tMA4GA1UdDwEB/wQE 15 | AwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwTAYDVR0gBEUwQzA3 16 | BglghkgBhv1sAQIwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQu 17 | Y29tL0NQUzAIBgZngQwBAgEwgYEGCCsGAQUFBwEBBHUwczAlBggrBgEFBQcwAYYZ 18 | aHR0cDovL29jc3AyLmRpZ2ljZXJ0LmNvbTBKBggrBgEFBQcwAoY+aHR0cDovL2Nh 19 | Y2VydHMuZGlnaWNlcnQuY29tL0VuY3J5cHRpb25FdmVyeXdoZXJlRFZUTFNDQS1H 20 | MS5jcnQwCQYDVR0TBAIwADCCAQMGCisGAQQB1nkCBAIEgfQEgfEA7wB1AKS5CZC0 21 | GFgUh7sTosxncAo8NZgE+RvfuON3zQ7IDdwQAAABY699cnUAAAQDAEYwRAIgUq4K 22 | EaBaM3wzILv8/sHhHZWM7eTOo3eTuSLC+m49ZdMCIDGVY94YO+/PQG3xpQ33lnU8 23 | Uiah5IHILbBL5fZxUV3LAHYAh3W/51l8+IxDmV+9827/Vo1HVjb/SrVgwbTq/16g 24 | gw8AAAFjr31zNgAABAMARzBFAiBYw/GdsoBuPDfDzqcFanF5bWj5+rcA9jn3eMgQ 25 | u7dqoAIhAJh2tzV+EqBjbEBx55APXUhTOV8r3xru0OmqtV0iYfQOMA0GCSqGSIb3 26 | DQEBCwUAA4IBAQCO3U4r1+E2qlPSwL8Regr3RCn2MLdKUKCJhdk2QZyDQsxt59Lj 27 | 6pAbyNLWGyA1ehTu0x7ThwZecEomdG33s1A5PoUk1pzLW1FTtiPhgVSZJO76fcyb 28 | WEV64UQHDSXCPeb22ZGboyrtzV68I8R8w9hJ4lxQgHItZRkI0Dn/qLwJ+uyFI9ZD 29 | Fm4L3sJOMumZU3nmgK88+89GtW4tS5thKMuYFPWyyH1lPMLZDIeQJnaLjEKkdU2F 30 | +VTyUbNzdHoiOppc4NoR5vgcTv6I9xmaINaVn0nZs2Esx9VB2p2tIxUjviMBMZZ3 31 | veeUIoA7VnBliRW5dRQVWh/9ZMW7xE+7uWd8 32 | -----END CERTIFICATE----- 33 | -----BEGIN CERTIFICATE----- 34 | MIIEqjCCA5KgAwIBAgIQAnmsRYvBskWr+YBTzSybsTANBgkqhkiG9w0BAQsFADBh 35 | MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 36 | d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD 37 | QTAeFw0xNzExMjcxMjQ2MTBaFw0yNzExMjcxMjQ2MTBaMG4xCzAJBgNVBAYTAlVT 38 | MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j 39 | b20xLTArBgNVBAMTJEVuY3J5cHRpb24gRXZlcnl3aGVyZSBEViBUTFMgQ0EgLSBH 40 | MTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALPeP6wkab41dyQh6mKc 41 | oHqt3jRIxW5MDvf9QyiOR7VfFwK656es0UFiIb74N9pRntzF1UgYzDGu3ppZVMdo 42 | lbxhm6dWS9OK/lFehKNT0OYI9aqk6F+U7cA6jxSC+iDBPXwdF4rs3KRyp3aQn6pj 43 | pp1yr7IB6Y4zv72Ee/PlZ/6rK6InC6WpK0nPVOYR7n9iDuPe1E4IxUMBH/T33+3h 44 | yuH3dvfgiWUOUkjdpMbyxX+XNle5uEIiyBsi4IvbcTCh8ruifCIi5mDXkZrnMT8n 45 | wfYCV6v6kDdXkbgGRLKsR4pucbJtbKqIkUGxuZI2t7pfewKRc5nWecvDBZf3+p1M 46 | pA8CAwEAAaOCAU8wggFLMB0GA1UdDgQWBBRVdE+yck/1YLpQ0dfmUVyaAYca1zAf 47 | BgNVHSMEGDAWgBQD3lA1VtFMu2bwo+IbG8OXsj3RVTAOBgNVHQ8BAf8EBAMCAYYw 48 | HQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMBIGA1UdEwEB/wQIMAYBAf8C 49 | AQAwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdp 50 | Y2VydC5jb20wQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL2NybDMuZGlnaWNlcnQu 51 | Y29tL0RpZ2lDZXJ0R2xvYmFsUm9vdENBLmNybDBMBgNVHSAERTBDMDcGCWCGSAGG 52 | /WwBAjAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5jb20vQ1BT 53 | MAgGBmeBDAECATANBgkqhkiG9w0BAQsFAAOCAQEAK3Gp6/aGq7aBZsxf/oQ+TD/B 54 | SwW3AU4ETK+GQf2kFzYZkby5SFrHdPomunx2HBzViUchGoofGgg7gHW0W3MlQAXW 55 | M0r5LUvStcr82QDWYNPaUy4taCQmyaJ+VB+6wxHstSigOlSNF2a6vg4rgexixeiV 56 | 4YSB03Yqp2t3TeZHM9ESfkus74nQyW7pRGezj+TC44xCagCQQOzzNmzEAP2SnCrJ 57 | sNE2DpRVMnL8J6xBRdjmOsC3N6cQuKuRXbzByVBjCqAA8t1L0I+9wXJerLPyErjy 58 | rMKWaBFLmfK/AHNF4ZihwPGOc7w6UHczBZXH5RFzJNnww+WnKuTPI0HfnVH8lg== 59 | -----END CERTIFICATE----- -------------------------------------------------------------------------------- /web-supported/starrtc.conf: -------------------------------------------------------------------------------- 1 | #打开下面注释表示开启aec功能, 配置后需要重启服务端程序 2 | #aecurl=http://www.starrtc.com/aec/eventCenter.php 3 | 4 | -------------------------------------------------------------------------------- /web-supported/starsrc.key: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | MIIEowIBAAKCAQEAnOfNaB042s2lfGgYSmKGyIySo1t+YTEetd9EOatUCDQu0gpk 3 | 21D5UxpkMqeKQZVxraew+lJqdOlDOFr6jRDyKWtVlwXFcPAKiuE1sJp+cfcotF5Y 4 | /Fj3JJkO7kKr1X+2q33JXF+h987+HVI9dNng7VaOAtlXpi9IVfyXn11mL4ezdWjZ 5 | VPF65eWAAcnfRVT7pKR0EuvWCNx0UBNtToYj395i1He8R5wGzkx6hIfTXr14Yyvz 6 | iKrIXiulfYb2bdDuYcyyUd3NoEjSU1mzpIHYtZU1dKxIkZU/eUQ5ZnEXmzMISIMS 7 | KbYlkahsyxrO80wF/hbUzp8vvJw348kFwQpmYQIDAQABAoIBAAZVIKgkDche5l/n 8 | /5r48QGlEsH/DlGz3s5uTV2aeZC/MmiNvNZRJU7iUMrukhjlhCoDC5R+wQco5uqe 9 | WWBaH7vmNhUbSYWuWm6Sek0/Xv0QgZcN+79rg8X5W23oSPEb725qbDcLMQlEVGMw 10 | j4Royrgpdx/MT8pIPD4kLKZk6ZvfaPtmjbeYuV2OC4DC8ELUqHU8E4ZHDemrJTSw 11 | Py465Sk6VTuK3M5iA1TGtIUUhKBNsqm0+O7bsmddatFVIpQWuHEearB9nReThgvp 12 | ltT/7oPzV+ZkyDIrMlXFf/MFhG2GxTYDBAaYXOBVRbmD3VsI3fqv1GkfqY7RL+eH 13 | yz8n2AECgYEA1fzcIirmjPVv/DbrXWgrqkgGdO8ToIMo8G6EH4EFlrgNq+YixAYp 14 | c2JlNzZUyYTg6A0v+0hijqOJ9tUDK6FSQFGrdHZRyBOoQf4OSuxFzaD4Ghwa6EST 15 | wFNxkmuHvFOxfDeODT+sbm+RDphwjueFKir+kUg5eANKdvNq3Mv/9sECgYEAu7X1 16 | CjFCS4E2Nf60NZ5a2DIThMSM/NUPeXG6SiztG5z5zeGkyOdCmPVu7cRfM5VOMbyE 17 | LtrixJyMXx/CnXsqU9+nTzD64eneo/BI6tch3HDdYy/aAXR06gDFCEv5L5/aU17Z 18 | JB35gaPFSZpc7iypoLs0//j8QFcCUalz3Jj896ECgYBEPqliCDaQ+/GkCUvU9VT/ 19 | sIrGnjyvM0VKMKTYe0hyAe7yRKoPxDtR/i5zhlNSFZu4xgPoavRrs0JbwyGIt6FI 20 | vAMnWFjKq2I88a5TPLkiVFTr1szKCJzqeHI/FSYr7LEtAXa/SPBQJCqp8fnryXCR 21 | uzaG1PbnDH2iJA2Pr0vJwQKBgQCP7/EchbU+TLCTKuJpEyq6CXwqHMW3wnEBQRIG 22 | evi+adqr4tEHNT4+KEWNkT0nQuAZB2Ocwj+NYDXLY4FKXP2SHzgeY4Kd5UXSFBj1 23 | 602NygYZXsIex3w3S6vKtuc3e65gq6R6K3n9zOUlkXadNCZGmAcGGZjkhVPD5tpv 24 | V+jywQKBgFug5mQMZTqGLGebmcyT8CVXqkzHu+SepH7ion91T4den0EpTqjicqdL 25 | jWiZIaj4x2Sdva1XYJ3q9pdkDRl2AZBRxMMhiyjMGQoYXYeohJkRCPTNJj1BJiUT 26 | +NLNdGg1+JGi0pYVbJbIPGxrT3gZDnyiM/lSsBSgHemmijr7aL6D 27 | -----END RSA PRIVATE KEY----- -------------------------------------------------------------------------------- /web-supported/starsrc.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIFiTCCBHGgAwIBAgIQCaWZNTzKbbyFb3U1sVIQNzANBgkqhkiG9w0BAQsFADBu 3 | MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 4 | d3cuZGlnaWNlcnQuY29tMS0wKwYDVQQDEyRFbmNyeXB0aW9uIEV2ZXJ5d2hlcmUg 5 | RFYgVExTIENBIC0gRzEwHhcNMTgwNTMwMDAwMDAwWhcNMTkwNTMwMTIwMDAwWjAa 6 | MRgwFgYDVQQDEw9zcmMuc3RhcnJ0Yy5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IB 7 | DwAwggEKAoIBAQCc581oHTjazaV8aBhKYobIjJKjW35hMR6130Q5q1QINC7SCmTb 8 | UPlTGmQyp4pBlXGtp7D6Ump06UM4WvqNEPIpa1WXBcVw8AqK4TWwmn5x9yi0Xlj8 9 | WPckmQ7uQqvVf7arfclcX6H3zv4dUj102eDtVo4C2VemL0hV/JefXWYvh7N1aNlU 10 | 8Xrl5YAByd9FVPukpHQS69YI3HRQE21OhiPf3mLUd7xHnAbOTHqEh9NevXhjK/OI 11 | qsheK6V9hvZt0O5hzLJR3c2gSNJTWbOkgdi1lTV0rEiRlT95RDlmcRebMwhIgxIp 12 | tiWRqGzLGs7zTAX+FtTOny+8nDfjyQXBCmZhAgMBAAGjggJ1MIICcTAfBgNVHSME 13 | GDAWgBRVdE+yck/1YLpQ0dfmUVyaAYca1zAdBgNVHQ4EFgQU4vznAYbA31YfWQUZ 14 | OWyGBvaEFbwwGgYDVR0RBBMwEYIPc3JjLnN0YXJydGMuY29tMA4GA1UdDwEB/wQE 15 | AwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwTAYDVR0gBEUwQzA3 16 | BglghkgBhv1sAQIwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQu 17 | Y29tL0NQUzAIBgZngQwBAgEwgYEGCCsGAQUFBwEBBHUwczAlBggrBgEFBQcwAYYZ 18 | aHR0cDovL29jc3AyLmRpZ2ljZXJ0LmNvbTBKBggrBgEFBQcwAoY+aHR0cDovL2Nh 19 | Y2VydHMuZGlnaWNlcnQuY29tL0VuY3J5cHRpb25FdmVyeXdoZXJlRFZUTFNDQS1H 20 | MS5jcnQwCQYDVR0TBAIwADCCAQUGCisGAQQB1nkCBAIEgfYEgfMA8QB3AKS5CZC0 21 | GFgUh7sTosxncAo8NZgE+RvfuON3zQ7IDdwQAAABY699vSsAAAQDAEgwRgIhAMlR 22 | /910zS3cF/ea9Gz3YJvUSlm+ETd34O8YZJkTewbiAiEA9qiU9ZaeNgsf8J40kLnm 23 | 5khS1sXiofhaBPz6GKUH/WsAdgCHdb/nWXz4jEOZX73zbv9WjUdWNv9KtWDBtOr/ 24 | XqCDDwAAAWOvfb3OAAAEAwBHMEUCIQDzZt09hbjYmQVQNnBee59jNhD7Tb7GMQs2 25 | wvReHm/WkQIgUKnsiuv2YIDuUghg2vHV2Rb/5dctCKKA2ZCuS86pJWEwDQYJKoZI 26 | hvcNAQELBQADggEBADPOiN1IXpxGCqLxOqtMnwvscEbBOzH0R6X6hbP4R4lStBff 27 | bbg02R341KL+p1sAH1+DbTpy01OcSrJWWarEro9hmK8kIHlh2g2z3CqD4SQRocpb 28 | vhvzZ0V0rE8oriiGmD+KUgBRttOrbHxS60UHwlS5a81+eHCj3WGQZFKoyf3qryS/ 29 | 1lnBTWyH44K2cg1Sm0T1jaFs264DUZfOnjgJwQkuF+9iWIuh85Rv+1vYlBW1IHLx 30 | J2IbgsC99h5sRf19tyQ02pFOjYclbELGDCR06rSUgCZL6W/VLUHE86QhETqAJpHT 31 | d1tE3r+Z8n8ANHsBhjhfluPA457DNGPJpa1eHco= 32 | -----END CERTIFICATE----- 33 | -----BEGIN CERTIFICATE----- 34 | MIIEqjCCA5KgAwIBAgIQAnmsRYvBskWr+YBTzSybsTANBgkqhkiG9w0BAQsFADBh 35 | MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 36 | d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD 37 | QTAeFw0xNzExMjcxMjQ2MTBaFw0yNzExMjcxMjQ2MTBaMG4xCzAJBgNVBAYTAlVT 38 | MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j 39 | b20xLTArBgNVBAMTJEVuY3J5cHRpb24gRXZlcnl3aGVyZSBEViBUTFMgQ0EgLSBH 40 | MTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALPeP6wkab41dyQh6mKc 41 | oHqt3jRIxW5MDvf9QyiOR7VfFwK656es0UFiIb74N9pRntzF1UgYzDGu3ppZVMdo 42 | lbxhm6dWS9OK/lFehKNT0OYI9aqk6F+U7cA6jxSC+iDBPXwdF4rs3KRyp3aQn6pj 43 | pp1yr7IB6Y4zv72Ee/PlZ/6rK6InC6WpK0nPVOYR7n9iDuPe1E4IxUMBH/T33+3h 44 | yuH3dvfgiWUOUkjdpMbyxX+XNle5uEIiyBsi4IvbcTCh8ruifCIi5mDXkZrnMT8n 45 | wfYCV6v6kDdXkbgGRLKsR4pucbJtbKqIkUGxuZI2t7pfewKRc5nWecvDBZf3+p1M 46 | pA8CAwEAAaOCAU8wggFLMB0GA1UdDgQWBBRVdE+yck/1YLpQ0dfmUVyaAYca1zAf 47 | BgNVHSMEGDAWgBQD3lA1VtFMu2bwo+IbG8OXsj3RVTAOBgNVHQ8BAf8EBAMCAYYw 48 | HQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMBIGA1UdEwEB/wQIMAYBAf8C 49 | AQAwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdp 50 | Y2VydC5jb20wQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL2NybDMuZGlnaWNlcnQu 51 | Y29tL0RpZ2lDZXJ0R2xvYmFsUm9vdENBLmNybDBMBgNVHSAERTBDMDcGCWCGSAGG 52 | /WwBAjAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5jb20vQ1BT 53 | MAgGBmeBDAECATANBgkqhkiG9w0BAQsFAAOCAQEAK3Gp6/aGq7aBZsxf/oQ+TD/B 54 | SwW3AU4ETK+GQf2kFzYZkby5SFrHdPomunx2HBzViUchGoofGgg7gHW0W3MlQAXW 55 | M0r5LUvStcr82QDWYNPaUy4taCQmyaJ+VB+6wxHstSigOlSNF2a6vg4rgexixeiV 56 | 4YSB03Yqp2t3TeZHM9ESfkus74nQyW7pRGezj+TC44xCagCQQOzzNmzEAP2SnCrJ 57 | sNE2DpRVMnL8J6xBRdjmOsC3N6cQuKuRXbzByVBjCqAA8t1L0I+9wXJerLPyErjy 58 | rMKWaBFLmfK/AHNF4ZihwPGOc7w6UHczBZXH5RFzJNnww+WnKuTPI0HfnVH8lg== 59 | -----END CERTIFICATE----- -------------------------------------------------------------------------------- /web-supported/start.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | git config core.fileMode false || echo "git not installed,continue" #忽略文件权限变化 4 | chmod +x supervise.sh supervise 5 | 6 | 7 | if [ ! -f supervise.msgServer ]; then 8 | cp -f supervise supervise.msgServer 9 | fi 10 | 11 | if [ ! -f supervise.chatDBServer ]; then 12 | cp -f supervise supervise.chatDBServer 13 | fi 14 | 15 | if [ ! -f supervise.groupServer ]; then 16 | cp -f supervise supervise.groupServer 17 | fi 18 | 19 | if [ ! -f supervise.chatRoomServer ]; then 20 | cp -f supervise supervise.chatRoomServer 21 | fi 22 | 23 | if [ ! -f supervise.voipServer ]; then 24 | cp -f supervise supervise.voipServer 25 | fi 26 | 27 | if [ ! -f supervise.liveSrcServer ]; then 28 | cp -f supervise supervise.liveSrcServer 29 | fi 30 | 31 | if [ ! -f supervise.liveVdnServer ]; then 32 | cp -f supervise supervise.liveVdnServer 33 | fi 34 | 35 | if [ ! -f supervise.liveProxyServer ]; then 36 | cp -f supervise supervise.liveProxyServer 37 | fi 38 | 39 | if [ ! -f supervise.groupPushHttpProxy ]; then 40 | cp -f supervise supervise.groupPushHttpProxy 41 | fi 42 | 43 | 44 | ./supervise.sh start msgServer 45 | ./supervise.sh start chatDBServer 46 | ./supervise.sh start groupServer 47 | ./supervise.sh start chatRoomServer 48 | ./supervise.sh start voipServer 49 | ./supervise.sh start liveSrcServer 50 | ./supervise.sh start liveVdnServer 51 | ./supervise.sh start liveProxyServer 52 | ./supervise.sh start groupPushHttpProxy 53 | 54 | 55 | ps -aux | grep Server 56 | ps -aux | grep groupPushHttpProxy 57 | 58 | echo "==================================================================================" 59 | echo "Thanks for your support, Please use the following contact information for feedback" 60 | echo "QQ group: 807242783" 61 | echo "Github: https://github.com/starRTC" 62 | echo "TEL: +86 18612946552" 63 | echo "Enjoy Your Work!" 64 | echo "==================================================================================" 65 | 66 | 67 | -------------------------------------------------------------------------------- /web-supported/starvdn.key: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | MIIEpAIBAAKCAQEAsgGmWSXhLOKZFgW8/4SCuVEjYZCBlI0uphBhVHiZtnJGeC9D 3 | lq9P27JKTfILHaYvQFxKrY7ZsGxGfrOznDDDBAw3002Hntd2RaHEa/exvv3JvppJ 4 | ql/886tZRZyTeKs6mazqoGR6O2ux7sFWZ+WCBZJiaIRSAnaQb1eWwIExBJ8vy0uB 5 | r8wm1KGeV5+8I8DU53IjprO1L2ZqR3shg8FPPvu/VFk1HkPKCH8aRb08m4Ed01mu 6 | YoRqTosOoWTf0bS1bXnKgrlroIgxmkezNGf3xtkfFN/pXf374hgFmXlnPuuQtJMS 7 | V35NSE8wSxZph6FFqe3LXqRl9JszkkqXXt+iAQIDAQABAoIBAQCNfxA7JwgyRMGJ 8 | pvAQcMX1B1FHmbXXXs6pBLZJjkAprfbkTDW+zwZ8zeGQygkZ/WLsFzDpe3cBbWAw 9 | ESqByqUKT6gEmElo8z65pRhc9pzdBCHdGAncm8aX7yncUtVLA1lmlPRAoP4kw7vB 10 | 3P+RQPe09CKzkBMckCDJ0OctiMRtNcE2KOczlTLjlZuyMsE+4GnbS2IEhrRzj+fc 11 | Rm5V8oPFNKz3V+zbe16GaKyVK0+XeWmQq/oDNgQPZ+diV2+2YWlTNFMcxJ9po+/V 12 | MnH3T9/5RdUzvLybtGtoVXIy5LQ7hfHZdxn6JKwn9c/RpGpkiE/9/t+vGPoPjaGk 13 | D9UkRyxBAoGBAPkx2ZCqWdLbEfaZu3gLQ1YmzAN3uBUaBzLMv+k7HGwMgfMhuKwB 14 | esd5vOKGsGxMsOLGzOJm2uDnQUY+/T/Rrumh+VZahNI/f9ZmQN/28SNoq7AxFaVV 15 | NNfJhC659aGnZE0UHyojfY2QRscVxpbUOnR5BMf/qQKoJplwMRGTsioZAoGBALbe 16 | HTh8EOncYPhMru+eg51PUZyLipTdACQ9ZaNIEKFomPPC1jdaxUFuApeuG1TEuilH 17 | e2wPFSd342I/oOsQWL9dOKW5oTRq5f/dPMV2T660m4vEZOur9pD+YFE7hZqrydBh 18 | GbYkWm4DkpJrql689gQu4uHHRAhApf4kPCk+8oQpAoGBAMP+Aik24ojlxl4XEYxc 19 | B20F/KWpjn4CR7EbusEcvcD5oWdxmUanr0KerAHaf33eX60tQM28qeAD4qH2Psbo 20 | C1M0EuBpN1gJm2ksaU/9cDEyTP65zFWKC5LAqxb5KYkoF8pLzisdWM1zsUc6CERu 21 | zT74Q9ttaCdvy1QZGm7BpHpZAoGADFxrQTwxsH0zGNWmJZBjeSi5bYmJLpLZxZlY 22 | 23atmRuG60NKU6eRGeEjz7j3I/3AT7YDQ8SpO2fBOQzwBbOvLBBTGfC4UuC+91Kv 23 | HvHmZPrUYNg/siaHnjlzrUoGt/PQyoMlx8ghTLp1F+yrMYg4YQQCVhywHpawIcO1 24 | RVx57DECgYB7h3uzf4ZKtUMU4lNgfwo0NcCc+gGi4aPG/kD87iLCwdwWnqIluMXk 25 | rC5h3R/krnn70fF65LcZHmgYPAADGeRzs21T2Uox8DoqVCnbUKtFcZct3ZXvhCXb 26 | Dk/oUZ371qWzQLvOrBfzI6crBemSxxK18wmf6ZWuf/9SXw1iyVqQfw== 27 | -----END RSA PRIVATE KEY----- -------------------------------------------------------------------------------- /web-supported/starvdn.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIFijCCBHKgAwIBAgIQDPQ+OczkNgTJBmyBNhWzLTANBgkqhkiG9w0BAQsFADBu 3 | MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 4 | d3cuZGlnaWNlcnQuY29tMS0wKwYDVQQDEyRFbmNyeXB0aW9uIEV2ZXJ5d2hlcmUg 5 | RFYgVExTIENBIC0gRzEwHhcNMTgwNTMwMDAwMDAwWhcNMTkwNTMwMTIwMDAwWjAa 6 | MRgwFgYDVQQDEw92ZG4uc3RhcnJ0Yy5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IB 7 | DwAwggEKAoIBAQCyAaZZJeEs4pkWBbz/hIK5USNhkIGUjS6mEGFUeJm2ckZ4L0OW 8 | r0/bskpN8gsdpi9AXEqtjtmwbEZ+s7OcMMMEDDfTTYee13ZFocRr97G+/cm+mkmq 9 | X/zzq1lFnJN4qzqZrOqgZHo7a7HuwVZn5YIFkmJohFICdpBvV5bAgTEEny/LS4Gv 10 | zCbUoZ5Xn7wjwNTnciOms7UvZmpHeyGDwU8++79UWTUeQ8oIfxpFvTybgR3TWa5i 11 | hGpOiw6hZN/RtLVtecqCuWugiDGaR7M0Z/fG2R8U3+ld/fviGAWZeWc+65C0kxJX 12 | fk1ITzBLFmmHoUWp7ctepGX0mzOSSpde36IBAgMBAAGjggJ2MIICcjAfBgNVHSME 13 | GDAWgBRVdE+yck/1YLpQ0dfmUVyaAYca1zAdBgNVHQ4EFgQU0PMBYwyg5AJEyk2B 14 | 4EC6QEj+udAwGgYDVR0RBBMwEYIPdmRuLnN0YXJydGMuY29tMA4GA1UdDwEB/wQE 15 | AwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwTAYDVR0gBEUwQzA3 16 | BglghkgBhv1sAQIwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQu 17 | Y29tL0NQUzAIBgZngQwBAgEwgYEGCCsGAQUFBwEBBHUwczAlBggrBgEFBQcwAYYZ 18 | aHR0cDovL29jc3AyLmRpZ2ljZXJ0LmNvbTBKBggrBgEFBQcwAoY+aHR0cDovL2Nh 19 | Y2VydHMuZGlnaWNlcnQuY29tL0VuY3J5cHRpb25FdmVyeXdoZXJlRFZUTFNDQS1H 20 | MS5jcnQwCQYDVR0TBAIwADCCAQYGCisGAQQB1nkCBAIEgfcEgfQA8gB3AKS5CZC0 21 | GFgUh7sTosxncAo8NZgE+RvfuON3zQ7IDdwQAAABY699wkQAAAQDAEgwRgIhANGK 22 | S963+xHrXCWoeB6HSDjddX9jWwbPrs3vq/A/4uQrAiEA/PQdy34pvv0lLd9T2Xll 23 | HvVDdbHfeBKaJN0Bd+8jeYoAdwCHdb/nWXz4jEOZX73zbv9WjUdWNv9KtWDBtOr/ 24 | XqCDDwAAAWOvfcLnAAAEAwBIMEYCIQCK4rsRuDwx2IEveKKp4J9wrZVkEskpfQEt 25 | P6wfPxo1hQIhAKIa8ETIFDcGcKbv20EK5q9gKoOHhPyVsSfB3s7gnkddMA0GCSqG 26 | SIb3DQEBCwUAA4IBAQAx7MQweiDz1qLIbpmuJZcbFhzLYe5NOnYTJNdBpMQz6n9O 27 | DQhw2O0jBhaOytY/wb8wedyFNSXYGaDwX7tiBPdQfwiUTjexCrJWsDhbZ3m2uzeR 28 | FcoIlkFZWniXfubaNsJhBUnIPBynFayKox+zFJDX2ay6nDzGfmxgJSpwaPxTsjzD 29 | nP+6rc77uOkJ4e2CmIGlr2tRjT+brVhbpRiNmJbSBJQAbQ/EwAPPQLKq7dO74hdI 30 | kvmMjnxTV5MRkt/gD3Ir6f0g8/+isgvU7P4WU8u3d0yHjHYFFfqcbMNtv52fxpdY 31 | vhJlKdiK7JiIQ/3tuYvN4tl8jtNB2pYfvOVYtJZ0 32 | -----END CERTIFICATE----- 33 | -----BEGIN CERTIFICATE----- 34 | MIIEqjCCA5KgAwIBAgIQAnmsRYvBskWr+YBTzSybsTANBgkqhkiG9w0BAQsFADBh 35 | MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 36 | d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD 37 | QTAeFw0xNzExMjcxMjQ2MTBaFw0yNzExMjcxMjQ2MTBaMG4xCzAJBgNVBAYTAlVT 38 | MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j 39 | b20xLTArBgNVBAMTJEVuY3J5cHRpb24gRXZlcnl3aGVyZSBEViBUTFMgQ0EgLSBH 40 | MTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALPeP6wkab41dyQh6mKc 41 | oHqt3jRIxW5MDvf9QyiOR7VfFwK656es0UFiIb74N9pRntzF1UgYzDGu3ppZVMdo 42 | lbxhm6dWS9OK/lFehKNT0OYI9aqk6F+U7cA6jxSC+iDBPXwdF4rs3KRyp3aQn6pj 43 | pp1yr7IB6Y4zv72Ee/PlZ/6rK6InC6WpK0nPVOYR7n9iDuPe1E4IxUMBH/T33+3h 44 | yuH3dvfgiWUOUkjdpMbyxX+XNle5uEIiyBsi4IvbcTCh8ruifCIi5mDXkZrnMT8n 45 | wfYCV6v6kDdXkbgGRLKsR4pucbJtbKqIkUGxuZI2t7pfewKRc5nWecvDBZf3+p1M 46 | pA8CAwEAAaOCAU8wggFLMB0GA1UdDgQWBBRVdE+yck/1YLpQ0dfmUVyaAYca1zAf 47 | BgNVHSMEGDAWgBQD3lA1VtFMu2bwo+IbG8OXsj3RVTAOBgNVHQ8BAf8EBAMCAYYw 48 | HQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMBIGA1UdEwEB/wQIMAYBAf8C 49 | AQAwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdp 50 | Y2VydC5jb20wQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL2NybDMuZGlnaWNlcnQu 51 | Y29tL0RpZ2lDZXJ0R2xvYmFsUm9vdENBLmNybDBMBgNVHSAERTBDMDcGCWCGSAGG 52 | /WwBAjAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5jb20vQ1BT 53 | MAgGBmeBDAECATANBgkqhkiG9w0BAQsFAAOCAQEAK3Gp6/aGq7aBZsxf/oQ+TD/B 54 | SwW3AU4ETK+GQf2kFzYZkby5SFrHdPomunx2HBzViUchGoofGgg7gHW0W3MlQAXW 55 | M0r5LUvStcr82QDWYNPaUy4taCQmyaJ+VB+6wxHstSigOlSNF2a6vg4rgexixeiV 56 | 4YSB03Yqp2t3TeZHM9ESfkus74nQyW7pRGezj+TC44xCagCQQOzzNmzEAP2SnCrJ 57 | sNE2DpRVMnL8J6xBRdjmOsC3N6cQuKuRXbzByVBjCqAA8t1L0I+9wXJerLPyErjy 58 | rMKWaBFLmfK/AHNF4ZihwPGOc7w6UHczBZXH5RFzJNnww+WnKuTPI0HfnVH8lg== 59 | -----END CERTIFICATE----- -------------------------------------------------------------------------------- /web-supported/starvoip.key: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | MIIEogIBAAKCAQEAqCK9aH+MmDKfwY0N4f6ASn75F4z1RG+UlbBj8YVA5jHT+B94 3 | 1ZxUQXJDSfSg/UtgIPlMFkhOKap71I6+boXstFKXtjLZmHXMoUXNxDOSdolXL4wP 4 | tPI3m4k1fSedRqaNo9iFBcj8VWkZ3Wz4j9vd4agMhxJygYtVTlfixAIVl2xd+y+A 5 | i4KN1CEybC+x8YEuxF10HF2ikEWZLhNaeGBAxRh/b2r+RqrdLYOmtQULh0QkgNRc 6 | 3JjPc/dc2RmZAqEwIm3IezgoCovTifhMoJmsCkGXmaHUEdvGM46cxCKwXgfqg+gh 7 | fgFc0dzun3myW23qpXEuidV45pOYTxRe3825iQIDAQABAoIBACm5tVehj7qVlZ/q 8 | 6W8UQbI7IIX/rT52kmEzjRn6/8ggxYHmDY61ZRN4z8ois3Eoq4qDU6aT+xHMBT8S 9 | zZ+QDNYTSSMmK2nykf3T3OS8B7TzEHf0QlGdar9mpaeRlS5bVvs6WIi/ACASHSEe 10 | UfEhl0bQ9YrvwQr1EQ6IMPaDregNzO1EsZTxj1UEMQpPsCZmyrTZwuO+9f2jZou6 11 | B76DUDDi2QGuFYgZIzAgaGKQ8nEf2NgW5yPB/nY051d/wjzLxZHKDMzzRk3EVfLB 12 | psDGOs9+AtgbKibRW9jsBxFo9FYt7yXl3Rea1DtNJUNPcCEaP2nbMhh6V+ZC9rFM 13 | D/fEsCECgYEA6fEiRXaN9K9MwmhwZqEXdvAOCQQ5WM6neQQAF4+TlPOtp2bDjXpO 14 | I880vKn25r886lZQF8E4sjTJonK6HBLJ7V+QpMvnLx8IGTw0Itby6B0NHFKIahXi 15 | UypWRBJDXshAe5T0L1bjTjOakD/C83v2iDvnvgaWDOjYUFp/ie1mlRsCgYEAt/0u 16 | nkhogV3xbiY9DUO2Iq4V4D3DbTGqpuo5PDoY3+I+PNOHeAElA8TAnS8MTUu0+A7R 17 | WLV8iamn6Uyy8noCSfomUoss6Egm3VMPsV4pSlJOwzWAYgUciit5Ehe+PJHW9r5E 18 | nXJrkJlz2OObPYrPJOXH9e63KwF208m5dI5Y6isCgYA/j4JuOQ3MoyxJzbJsT+xe 19 | Jk7J6FnkZRFfcdTMkffZCnPt/Z+3+rjsRcngUJWCkAbu7FCKg7bxxCHcfytNoVU3 20 | pzVXcQb46Id8w7yukpQguHPtdAcYO6XoTqJtkEC5qdLLQOcvTX4oqyCdfJVtLgsH 21 | bK9EE+oEy+apvkzUnqm2bQKBgHHIwBXfTdIDmRW3zDXx1CfqZVkCmWNkPddwLulS 22 | PKPotPjFEJhkjNGh0kTjHcaHtWlbMJid1GEGbPNZHanbTqMVcrHFpIYaaP6jKadV 23 | Rk/SSydqZPU5mAbTD9LioCGxR7HcxW5hnqgUXpKZYB5VQ/nbqSgs81ZDV4tuy6SL 24 | i+11AoGATBM5HWFGRPtVXjVmf542eR1zQpKz50PmBBf5soVN25VHKW5L2rabVsTV 25 | pA8TQpbY3k/PHmxPZ0s9fs1Tw2o8aK382VxzG+/3MXk3QuIoHvt76seTinXgGPhN 26 | 7N95Z+OyZf3ri4BGsBLy2125G2Pts7Gxs10JfuG5vk4fjNoO+JQ= 27 | -----END RSA PRIVATE KEY----- -------------------------------------------------------------------------------- /web-supported/starvoip.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIFijCCBHKgAwIBAgIQAlcvGHLd6X+/CrJyqg4F3DANBgkqhkiG9w0BAQsFADBu 3 | MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 4 | d3cuZGlnaWNlcnQuY29tMS0wKwYDVQQDEyRFbmNyeXB0aW9uIEV2ZXJ5d2hlcmUg 5 | RFYgVExTIENBIC0gRzEwHhcNMTgwNTMwMDAwMDAwWhcNMTkwNTMwMTIwMDAwWjAb 6 | MRkwFwYDVQQDExB2b2lwLnN0YXJydGMuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOC 7 | AQ8AMIIBCgKCAQEAqCK9aH+MmDKfwY0N4f6ASn75F4z1RG+UlbBj8YVA5jHT+B94 8 | 1ZxUQXJDSfSg/UtgIPlMFkhOKap71I6+boXstFKXtjLZmHXMoUXNxDOSdolXL4wP 9 | tPI3m4k1fSedRqaNo9iFBcj8VWkZ3Wz4j9vd4agMhxJygYtVTlfixAIVl2xd+y+A 10 | i4KN1CEybC+x8YEuxF10HF2ikEWZLhNaeGBAxRh/b2r+RqrdLYOmtQULh0QkgNRc 11 | 3JjPc/dc2RmZAqEwIm3IezgoCovTifhMoJmsCkGXmaHUEdvGM46cxCKwXgfqg+gh 12 | fgFc0dzun3myW23qpXEuidV45pOYTxRe3825iQIDAQABo4ICdTCCAnEwHwYDVR0j 13 | BBgwFoAUVXRPsnJP9WC6UNHX5lFcmgGHGtcwHQYDVR0OBBYEFL5cBRBITiFuwGwe 14 | AEcMIU1yYtOYMBsGA1UdEQQUMBKCEHZvaXAuc3RhcnJ0Yy5jb20wDgYDVR0PAQH/ 15 | BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjBMBgNVHSAERTBD 16 | MDcGCWCGSAGG/WwBAjAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2Vy 17 | dC5jb20vQ1BTMAgGBmeBDAECATCBgQYIKwYBBQUHAQEEdTBzMCUGCCsGAQUFBzAB 18 | hhlodHRwOi8vb2NzcDIuZGlnaWNlcnQuY29tMEoGCCsGAQUFBzAChj5odHRwOi8v 19 | Y2FjZXJ0cy5kaWdpY2VydC5jb20vRW5jcnlwdGlvbkV2ZXJ5d2hlcmVEVlRMU0NB 20 | LUcxLmNydDAJBgNVHRMEAjAAMIIBBAYKKwYBBAHWeQIEAgSB9QSB8gDwAHUAu9nf 21 | vB+KcbWTlCOXqpJ7RzhXlQqrUugakJZkNo4e0YUAAAFjr32fSgAABAMARjBEAiBB 22 | UttzbpJqAxCgqlfhmV+ytAGuKdl7rixC/6x/0QUYzwIgfWODGbfOdymj3W4osgYV 23 | 9uO1LX1ku6Vj1CWNYqldYMUAdwCHdb/nWXz4jEOZX73zbv9WjUdWNv9KtWDBtOr/ 24 | XqCDDwAAAWOvfZ8vAAAEAwBIMEYCIQC2CrlGSISCDvbw6F2ZIeKb/WHZ7I1r85AD 25 | UdLrkRb0yQIhAI9d1xNipzZxoOYSahk5cLtATFHiHtHDPg8BoL1dKuCwMA0GCSqG 26 | SIb3DQEBCwUAA4IBAQCrvSToxqgXo/xarH/nYad0Or4I6cQU2fB0IayrZI5D4qhO 27 | 05k2P2FZsxvj9kTiw1c3EXh5EZD2/Y22u1MvyXP73od9IDV3mIQA8z+qF7kbHshV 28 | BFnXMi4/5UztaKWpNBlpU6ngT7m2OH64eY+4vFllg16aEsWFoCBUlLrsLMHe39jp 29 | 0D5h0MZnftM4tVv/3M6WBvbEJIURyABkEkKe8nhIyM1YVlawks66r3dW5v6UC+4b 30 | ZYoBKYuBx/dUBIFA9ZFATMrtcQ/B8YF+XLyJQu3b0cWkoB3R5p91NPpnqd5yLunk 31 | PBPo/iQPfouphfeANSPBstZki/Jeq3m5CkcUsANs 32 | -----END CERTIFICATE----- 33 | -----BEGIN CERTIFICATE----- 34 | MIIEqjCCA5KgAwIBAgIQAnmsRYvBskWr+YBTzSybsTANBgkqhkiG9w0BAQsFADBh 35 | MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 36 | d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD 37 | QTAeFw0xNzExMjcxMjQ2MTBaFw0yNzExMjcxMjQ2MTBaMG4xCzAJBgNVBAYTAlVT 38 | MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j 39 | b20xLTArBgNVBAMTJEVuY3J5cHRpb24gRXZlcnl3aGVyZSBEViBUTFMgQ0EgLSBH 40 | MTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALPeP6wkab41dyQh6mKc 41 | oHqt3jRIxW5MDvf9QyiOR7VfFwK656es0UFiIb74N9pRntzF1UgYzDGu3ppZVMdo 42 | lbxhm6dWS9OK/lFehKNT0OYI9aqk6F+U7cA6jxSC+iDBPXwdF4rs3KRyp3aQn6pj 43 | pp1yr7IB6Y4zv72Ee/PlZ/6rK6InC6WpK0nPVOYR7n9iDuPe1E4IxUMBH/T33+3h 44 | yuH3dvfgiWUOUkjdpMbyxX+XNle5uEIiyBsi4IvbcTCh8ruifCIi5mDXkZrnMT8n 45 | wfYCV6v6kDdXkbgGRLKsR4pucbJtbKqIkUGxuZI2t7pfewKRc5nWecvDBZf3+p1M 46 | pA8CAwEAAaOCAU8wggFLMB0GA1UdDgQWBBRVdE+yck/1YLpQ0dfmUVyaAYca1zAf 47 | BgNVHSMEGDAWgBQD3lA1VtFMu2bwo+IbG8OXsj3RVTAOBgNVHQ8BAf8EBAMCAYYw 48 | HQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMBIGA1UdEwEB/wQIMAYBAf8C 49 | AQAwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdp 50 | Y2VydC5jb20wQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL2NybDMuZGlnaWNlcnQu 51 | Y29tL0RpZ2lDZXJ0R2xvYmFsUm9vdENBLmNybDBMBgNVHSAERTBDMDcGCWCGSAGG 52 | /WwBAjAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5jb20vQ1BT 53 | MAgGBmeBDAECATANBgkqhkiG9w0BAQsFAAOCAQEAK3Gp6/aGq7aBZsxf/oQ+TD/B 54 | SwW3AU4ETK+GQf2kFzYZkby5SFrHdPomunx2HBzViUchGoofGgg7gHW0W3MlQAXW 55 | M0r5LUvStcr82QDWYNPaUy4taCQmyaJ+VB+6wxHstSigOlSNF2a6vg4rgexixeiV 56 | 4YSB03Yqp2t3TeZHM9ESfkus74nQyW7pRGezj+TC44xCagCQQOzzNmzEAP2SnCrJ 57 | sNE2DpRVMnL8J6xBRdjmOsC3N6cQuKuRXbzByVBjCqAA8t1L0I+9wXJerLPyErjy 58 | rMKWaBFLmfK/AHNF4ZihwPGOc7w6UHczBZXH5RFzJNnww+WnKuTPI0HfnVH8lg== 59 | -----END CERTIFICATE----- -------------------------------------------------------------------------------- /web-supported/stop.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | 4 | ./supervise.sh stop msgServer 5 | ./supervise.sh stop chatDBServer 6 | ./supervise.sh stop groupServer 7 | ./supervise.sh stop chatRoomServer 8 | ./supervise.sh stop voipServer 9 | ./supervise.sh stop liveSrcServer 10 | ./supervise.sh stop liveVdnServer 11 | ./supervise.sh stop liveProxyServer 12 | ./supervise.sh stop groupPushHttpProxy 13 | 14 | ps -aux | grep Server 15 | ps -aux | grep groupPushHttpProxy 16 | -------------------------------------------------------------------------------- /web-supported/supervise: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/starrtc/starrtc-server/62236635e5557f4e864b794ec6104364f649df1d/web-supported/supervise -------------------------------------------------------------------------------- /web-supported/supervise.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ######################################################################### 4 | # admin@elesos.com 通用进程控制shell脚本 5 | ######################################################################### 6 | 7 | 8 | if [ "$#" -lt "1" ] #参数个数 9 | then 10 | echo "Usage: ./supervise.sh [start|stop] xxxServer" 11 | exit 0; 12 | fi 13 | 14 | BIN=$2 15 | SUP="supervise.$BIN" 16 | 17 | 18 | start() { 19 | stop 20 | ulimit -c unlimited 21 | shift 1 22 | #nohup ./$SUP ./$BIN $* & 23 | if [ ! -d "logs" ]; then 24 | mkdir logs 25 | chmod -R 777 logs 26 | fi 27 | chmod +x $BIN 28 | nohup ./$SUP ./$BIN > logs/${BIN}.log 2>&1 & 29 | } 30 | 31 | stop() { 32 | killall -9 $SUP $BIN >/dev/null 2>&1 33 | } 34 | 35 | case C"$1" in 36 | Cstart) 37 | start 38 | echo "$BIN start Success!" 39 | ;; 40 | Cstop) 41 | stop 42 | echo "$BIN stop Success!" 43 | ;; 44 | C*) 45 | echo "Usage: ./supervise.sh [start|stop] xxxServer" 46 | ;; 47 | esac 48 | -------------------------------------------------------------------------------- /web-supported/videoRecServer: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/starrtc/starrtc-server/62236635e5557f4e864b794ec6104364f649df1d/web-supported/videoRecServer -------------------------------------------------------------------------------- /web-supported/voipServer: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/starrtc/starrtc-server/62236635e5557f4e864b794ec6104364f649df1d/web-supported/voipServer --------------------------------------------------------------------------------