DVR设备设置土耳其语,局域网IP登陆无视频

任务:

BUG #4225 设备设置土耳其语,局域网IP登陆无视频


重现步骤
[步骤]将设备设备成土耳其语保存,在局域网内ip登陆
[结果] 无法显示视频
[期望] 能正常连接显示视频


首先明白工作原理:

网页端为客户端,设备为服务器。设备在显示器切换语言,保存到环境变量。浏览器登录时向设备发送连接请求(TCP),登录成功之后向设备发送请求,设备接收请求并交给CGI接口函数处理,app再把处理结果发送给网页。比如:客户端登录成功之后向设备发送rpermission请求,这个请求中包含远程配置和远程回放,设备接收这个请求并交给cgi_gw.c处理,处理结果是把网页上所需的配置都发送给网页,如网页布局图片、语言资源、各种图片等等。

app目录下面有关cgi的文件都是处理网页的请求;web目录下面都是发送请求和处理回应信息。


找到问题:

现在可能出现的问题在两个地方:CGI处理请求(语言设置)和web端处理回应

1、CGI处理语言设置的函数:

int CGI_jscript(HTTPD_SESSION_t* session)
{
	char cmd[32];
	const char* const query_string = AVAL_STRDUP(session->request_line.uri_query_string);
	AVal av_cmd = AVC("0");
	http_read_query_string(query_string, "c", &av_cmd);
	AV2STR(av_cmd, cmd);

	Sysenv* g_sysenv = g_pstSysEnv;
	char html_buf[16*1024];
	if(strcmp(cmd, "lang") == 0)
	{
		WORLDWIDE_LANGUAGE curr_lang = WORLDWIDE_ENGLISH;
		char* curr_lang_str = NULL;
		g_sysenv = PSysenvStruct(NULL, NULL, NULL);
		curr_lang = g_sysenv->GetLang(g_sysenv);
		switch(curr_lang)
		{
		case WORLDWIDE_ENGLISH:
		case WORLDWIDE_CHINESE_MAINLAND:
		case WORLDWIDE_CHINESE_TAIWAN:
		case WORLDWIDE_PERSIAN:
		case WORLDWIDE_HEBREW:
		case WORLDWIDE_RUSSIAN:
		case WORLDWIDE_TURKISH:
			curr_lang_str = WORLDWIDE_LANGUAGE_STRING[curr_lang];
			break;
		default:
			curr_lang_str = WORLDWIDE_LANGUAGE_STRING[WORLDWIDE_ENGLISH];
			break;
		}
		sprintf(html_buf,
				"HTTP/1.1 302 Found\r\nLocation: /js/lang_%s.js\r\nContent-Length: 0\r\n\r\n",
				curr_lang_str + strlen("WORLDWIDE_"));
		Writen(session->sock, html_buf, strlen(html_buf));
	}
	free(query_string);
	return 0;
}

首先查看web/js知道网页只支持六种语言:英语、中文、中文-香港、希伯来语、波斯语、俄语。从上面代码中看出当切换到,土耳其语( TURKISH)时会向网页发送相对应的土耳其语的资源。但是又没有土耳其语的资源,所以会出现IP登录之后无视频现象。

有两种解决方案:

1、在JS目录先添加土耳其语的资源

2、在上面的代码中注释掉case WORLDWIDE_TURKISH




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值