📄 rc_ctl_mysql.c
字号:
msg_sys->time.ntp.zone, /* 时区 */\
msg_sys->time.ntp.space/* 更新间隔 */);
}
else
{
sprintf(temp, ",'%s',%d,%u",
DEFAULT_SYSTEM_NTP_SERVER, /* ntp server */\
DEFAULT_SYSTEM_NTP_ZONE, /* 时区 */\
DEFAULT_SYSTEM_NTP_SPACE/* 更新间隔 */);
}
sprintf(string_set, "(%s,%s,%s,%s,%s,%s,%s) %s (%u,'%s',%u,%u%s)", \
KEY_CAMERA_ID_SYSTEM, /* 摄像机id */\
KEY_CAMERA_NAME, /* 摄像机名 */\
KEY_NO_USE_LED, /* 是否关闭led */\
KEY_SET_TIME_MOD, /* 设置时间的方式 */\
KEY_NTP_SERVER, /* ntp server */\
KEY_TIME_ZONE, /* 时区 */\
KEY_SET_TIME_SPACE, /* 更新间隔 */\
KEY_MYSQL_VALUES, /* 数据库的关键字 */\
lab_mysql->id_cam, /* 摄像机id */\
msg_sys->name_cam, /* 摄像机名 */\
msg_sys->led, /* 是否关闭led */\
msg_sys->way_time, /* 设置时间的方式 */\
temp/* ntp相关 */);
break;
}
case TYPE_P_W_SECURITY://安全相关类型
{
sprintf(string_web, "%s %s %s", KEY_MYSQL_INSERT, KEY_MYSQL_INTO, NAME_TABLE_MYSQL_AR003_SECURITY);
bzero(temp, sizeof(temp));
switch(type)
{
case TYPE_ACTION_CAMERA://摄像机的动作
msg_security_get = (struct_web_security_get *)buf;
sprintf(temp, ",'%s','%s','%s','%s','%s'", \
msg_security_get->root.name, /* 管理员名 */\
msg_security_get->root.passwd, /* 管理员密码 */\
msg_security_get->user.name, /* 普通用户名 */\
msg_security_get->user.passwd, /* 普通用户密码 */\
msg_security_get->name_net/* 保密网络名 */);
break;
case TYPE_ACTION_CGI://cgi的动作
msg_security_set = (struct_web_security *)buf;
switch(msg_security_set->level)
{
case TYPE_LEVEL_SEC_NET://设置安全网络
sprintf(temp, ",'%s','%s','%s','%s','%s'", \
DEFAULT_SECURITY_NAME_ROOT, /* 管理员名 */\
DEFAULT_SECURITY_PWD_ROOT, /* 管理员密码 */\
DEFAULT_SECURITY_NAME_USER, /* 普通用户名 */\
DEFAULT_SECURITY_PWD_USER, /* 普通用户密码 */\
msg_security_set->msg.name_net/* 保密网络名 */);
break;
case TYPE_LEVEL_SEC_ROOT://设置管理员密码
sprintf(temp, ",'%s','%s','%s','%s','%s'", \
msg_security_set->msg.info_user.name, /* 管理员名 */\
msg_security_set->msg.info_user.passwd, /* 管理员密码 */\
DEFAULT_SECURITY_NAME_USER, /* 普通用户名 */\
DEFAULT_SECURITY_PWD_USER, /* 普通用户密码 */\
DEFAULT_SECURITY_NAME_NET/* 保密网络名 */);
break;
case TYPE_LEVEL_SEC_USER://设置普通用户密码
sprintf(temp, ",'%s','%s','%s','%s','%s'", \
DEFAULT_SECURITY_NAME_ROOT, /* 管理员名 */\
DEFAULT_SECURITY_PWD_ROOT, /* 管理员密码 */\
msg_security_set->msg.info_user.name, /* 普通用户名 */\
msg_security_set->msg.info_user.passwd, /* 普通用户密码 */\
DEFAULT_SECURITY_NAME_NET/* 保密网络名 */);
break;
default:
break;
}
}
sprintf(string_set, "(%s,%s,%s,%s,%s,%s) %s (%u%s)", \
KEY_CAMERA_ID_SECURITY, /* 摄像机id */\
KEY_ADMIN_NAME, /* 管理员名 */\
KEY_ADMIN_PWD, /* 管理员密码 */\
KEY_USER_NAME, /* 普通用户名 */\
KEY_USER_PWD, /* 普通用户密码 */\
KEY_PRIVATE_NET_NAME, /* 保密网络名 */\
KEY_MYSQL_VALUES,/* 数据库的关键字 */\
lab_mysql->id_cam, /* 摄像机id */\
temp);
break;
}
case TYPE_P_W_NET://网络相关类型
{
msg_net = (struct_web_net *)buf;
sprintf(string_web, "%s %s %s", KEY_MYSQL_INSERT, KEY_MYSQL_INTO, NAME_TABLE_MYSQL_AR003_NETWORK);
bzero(mac, sizeof(mac));
for(i = 0; i < 6; i++)
{
bzero(temp, sizeof(temp));
sprintf(temp, "%02X", (unsigned char)msg_net->mac[i]);
strcat(mac, temp);
}
bzero(temp, sizeof(temp));
switch(msg_net->way_ip)
{
case WAY_IP_GET_DHCP://使用dhcp
sprintf(temp, ",'%s','%s','%s','%s','%s'", \
DEFAULT_NET_IP, /* ip */\
DEFAULT_NET_SUBMASK, /* submask */\
DEFAULT_NET_GATEWAY, /* gateway */\
DEFAULT_NET_PPPOE_ACC, /* pppoe帐号 */\
DEFAULT_NET_PPPOE_PWD/* pppoe密码 */);
break;
case WAY_IP_GET_STATIC://使用静态ip
memcpy(&ip, msg_net->ipmsg.staticip.ip, LEN_TYPE_UINT32);
memcpy(&submask, msg_net->ipmsg.staticip.submask, LEN_TYPE_UINT32);
memcpy(&gateway, msg_net->ipmsg.staticip.gateway, LEN_TYPE_UINT32);
bzero(temp1, sizeof(temp1));
sprintf(temp1, ",'%s'", inet_ntoa(ip));
strcat(temp, temp1);
bzero(temp1, sizeof(temp1));
sprintf(temp1, ",'%s'", inet_ntoa(submask));
strcat(temp, temp1);
bzero(temp1, sizeof(temp1));
sprintf(temp1, ",'%s'", inet_ntoa(gateway));
strcat(temp, temp1);
sprintf(temp1, ",'%s'", DEFAULT_NET_PPPOE_ACC);
strcat(temp, temp1);
sprintf(temp1, ",'%s'", DEFAULT_NET_PPPOE_PWD);
strcat(temp, temp1);
break;
case WAY_IP_GET_PPPOE://使用pppoe
sprintf(temp1, ",'%s'", DEFAULT_NET_IP);
strcat(temp, temp1);
sprintf(temp1, ",'%s'", DEFAULT_NET_SUBMASK);
strcat(temp, temp1);
sprintf(temp1, ",'%s'", DEFAULT_NET_GATEWAY);
strcat(temp, temp1);
sprintf(temp1, ",'%s','%s'", msg_net->ipmsg.pppoe.account_pppoe, msg_net->ipmsg.pppoe.passwd_pppoe);
strcat(temp, temp1);
break;
default:
return -1;
break;
}
bzero(temp1, sizeof(temp1));
memcpy(&dns, msg_net->dns1, LEN_TYPE_UINT32);
if(dns.s_addr != 0)
sprintf(temp1, ",'%s'", inet_ntoa(dns));
else
sprintf(temp1, ",''");
strcat(temp, temp1);
bzero(temp1, sizeof(temp1));
memcpy(&dns, msg_net->dns2, LEN_TYPE_UINT32);
if(dns.s_addr != 0)
sprintf(temp1, ",'%s'", inet_ntoa(dns));
else
sprintf(temp1, ",''");
strcat(temp, temp1);
memcpy(&port_web, msg_net->port_http, LEN_TYPE_UINT16);
memcpy(&port_video, msg_net->port_video, LEN_TYPE_UINT16);
memcpy(&port_audio, msg_net->port_audio, LEN_TYPE_UINT16);
sprintf(string_set, "(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s) %s (%u,%u,'%s'%s,%u,%u,%u,'%s',%u,%u,%u,%u,'%s')", \
KEY_CAMERA_ID_NETWORK, /* 摄像机id */\
KEY_GET_IP_WAY, /* ip地址获取方式 */\
KEY_MAC_ADDRESS, /* mac */\
KEY_IP_ADDRESS, /* ip */\
KEY_SUB_MASK, /* sub mask */\
KEY_GATEWAY, /* gateway */\
KEY_PPPOE_ACCOUNT, /* pppoe帐号 */\
KEY_PPPOE_PWD, /* pppoe密码 */\
KEY_DNS_SERVER1, /* dns1 */\
KEY_DNS_SERVER2, /* dns2 */\
KEY_HTTP_PORT, /* http端口 */\
KEY_UDP_VIDEO_PORT, /* 视频端口 */\
KEY_UDP_AUDIO_PORT, /* 音频端口 */\
KEY_WLAN_SSID, /* ssid */\
KEY_NET_TYPE, /* 网络类型 */\
KEY_WEP, /* wep */\
KEY_WLAN_KEY_SEL, /* 密钥格式 */\
KEY_WLAN_KEY_ID, /* 密钥id */\
KEY_WLAN_KEY, /* 密钥值 */\
KEY_MYSQL_VALUES, /* 数据库关键字 */
lab_mysql->id_cam, /* 摄像机id */\
msg_net->way_ip, /* ip地址获取方式 */\
mac, /* mac */\
temp, /* ip地址及dns相关 */\
port_web, /* http端口 */\
port_video, /* 视频端口 */\
port_audio, /* 音频端口 */\
msg_net->ssid_wlan, /* ssid */\
msg_net->type_net, /* 网络类型 */\
msg_net->wep, /* wep */\
msg_net->way_key, /* 密钥格式 */\
msg_net->id_key, /* 密钥id */\
msg_net->key/* 密钥值 */);
break;
}
case TYPE_P_W_DDNS://DDNS相关类型
{
msg_ddns = (struct_web_ddns *)buf;
sprintf(string_web, "%s %s %s", KEY_MYSQL_INSERT, KEY_MYSQL_INTO, NAME_TABLE_MYSQL_AR003_DDNS);
bzero(temp, sizeof(temp));
sprintf(string_set, "(%s,%s,%s,%s,%s,%s) %s (%u,%u,'%s',%u,'%s',%u)", \
KEY_CAMERA_ID_DDNS, /* 摄像机id */\
KEY_USE_DDNS, /* 是否启用ddns */\
KEY_DDNS_SERVER, /* ddns服务器 */\
KEY_DDNS_UPDATE_SPACE, /* ddns更新间隔 */\
KEY_DDNS_STATE, /* ddns状态 */\
KEY_USE_UPNP, /* 是否启用upnp */\
KEY_MYSQL_VALUES, /* 数据库关键字 */\
lab_mysql->id_cam, /* 摄像机id */\
msg_ddns->ddns, /* 是否启用ddns */\
msg_ddns->ser_ddns, /* ddns服务器 */\
msg_ddns->space_ddns, /* ddns更新间隔 */\
DEFAULT_DDNS_STATE_DDNS, /* ddns状态 */\
msg_ddns->upnp/* 是否启用upnp */);
break;
}
case TYPE_P_W_MAILFTP://传输方式相关类型
{
msg_mailftp = (struct_web_mailftp *)buf;
sprintf(string_web, "%s %s %s", KEY_MYSQL_INSERT, KEY_MYSQL_INTO, NAME_TABLE_MYSQL_AR003_MAILFTP);
memcpy(&port, msg_mailftp->port_ftp, LEN_TYPE_UINT16);
bzero(temp, sizeof(temp));
if(msg_mailftp->check_mail == TYPE_CHECKED_YES)
{
sprintf(temp, ",%s='%s',%s='%s'", \
KEY_SMTP_USER, msg_mailftp->name_sndmail, \
KEY_SMTP_PWD, msg_mailftp->pwd_sndmail);
}
sprintf(string_set, "(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s) %s (%u,'%s','%s','%s','%s','%s',%u,%u,'%s','%s','%s',%u)", \
KEY_CAMERA_ID_MAILFTP, /* 摄像机id */\
KEY_SMTP_SERVER, /* smtp server */\
KEY_SMTP_USER, /* 发信人用户名 */\
KEY_SMTP_PWD, /* 发信人密码 */\
KEY_FROM_ADDRESS, /* 发信人邮箱 */\
KEY_SENDTO_ADDRESS, /* 收信人邮箱 */\
KEY_USE_CHECK_SMTP, /* 是否校验email */\
KEY_FTP_PORT, /* ftp端口 */\
KEY_FTP_SERVER, /* ftp服务器 */\
KEY_FTP_USER, /* ftp用户名 */\
KEY_FTP_PWD, /* ftp用户密码 */\
KEY_FTP_WORK_MOD, /* ftp工作模式 */\
KEY_MYSQL_VALUES, /* 数据库关键字 */\
lab_mysql->id_cam, /* 摄像机id */\
msg_mailftp->ser_smtp, /* smtp server */\
msg_mailftp->name_sndmail, /* 发信人用户名 */\
msg_mailftp->pwd_sndmail, /* 发信人密码 */\
msg_mailftp->addr_sndmail, /* 发信人邮箱 */\
msg_mailftp->addr_rcvmail, /* 收信人邮箱 */\
msg_mailftp->check_mail, /* 是否校验email */\
port, /* ftp端口 */\
msg_mailftp->ser_ftp, /* ftp服务器 */\
msg_mailftp->name_ftp, /* ftp用户名 */\
msg_mailftp->pwd_ftp, /* ftp用户密码 */\
msg_mailftp->way_ftp/* ftp工作模式 */);
break;
}
case TYPE_P_W_VIDEO://视音频相关类型
{
msg_video = (struct_web_video *)buf;
sprintf(string_web, "%s %s %s", KEY_MYSQL_INSERT, KEY_MYSQL_INTO, NAME_TABLE_MYSQL_AR003_VIDEO);
sprintf(string_set, "(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s) %s (%u,'%s',%u,%u,%u,%u,%u,%u,%u,%u)", \
KEY_CAMERA_ID_VIDEO, /* 摄像机id */\
KEY_VIDEO_TXT, /* 视频文本 */\
KEY_VIDEO_SIZE, /* 图像大小 */\
KEY_VIDEO_QUALITY, /* 图像质量 */\
KEY_VIDEO_FRAME_RATE, /* 帧率 */\
KEY_DEL_RAY_WAY, /* 反闪烁 */\
KEY_USE_MIRROR_H, /* 行镜像 */\
KEY_USE_MIRROR_L, /* 列镜像 */\
KEY_USE_FRAME_RATE_CTRL, /* 帧率控制 */\
KEY_SOUND_SWITCH, /* 声音开关 */\
KEY_MYSQL_VALUES, /* 数据库关键字 */\
lab_mysql->id_cam, /* 摄像机id */\
msg_video->text, /* 视频文本 */\
msg_video->size, /* 图像大小 */\
msg_video->quality, /* 图像质量 */\
msg_video->fps, /* 帧率 */\
msg_video->flicker_del, /* 反闪烁 */\
msg_video->upright_used, /* 行镜像 */\
msg_video->plne_used, /* 列镜像 */\
msg_video->fps_used, /* 帧率控制 */\
msg_video->audio /* 声音开关 */);
break;
}
case TYPE_P_W_TRIGGER://应用相关类型
{
msg_application = (struct_web_application *)buf;
sprintf(string_web, "%s %s %s", KEY_MYSQL_INSERT, KEY_MYSQL_INTO, NAM_TABLE_MYSQL_AR003_TRIGGER);
sprintf(string_set, "(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s) %s (%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,'%s',%u,%u,%u,%u,%u)", \
KEY_CAMERA_ID_TRIGGER, /* id号 */\
KEY_MD_1, /* md1 */\
KEY_SENSITIVITY_1, /* 灵敏度1 */\
KEY_MD_2, /* md2 */\
KEY_SENSITIVITY_2, /* 灵敏度2 */\
KEY_USE_INFRARED_ALARM, /* 红外警报 */\
KEY_SAVE_IMG_PC, /* 保存在pc */\
KEY_SAVE_IMG_SDCARD, /* 保存在存储卡 */\
KEY_SAVE_IMG_MODE, /* 保存格式 */\
KEY_SEND_IMG_BY_EMAIL, /* 使用email */\
KEY_SEND_IMG_BY_FTP, /* 使用ftp */\
KEY_TIMER_GET_PIC, /* 定时间隔 */\
KEY_DELAY_CHECK_EVENT, /* 延迟 */\
KEY_USE_ALARM_TXT, /* 报文警报 */\
KEY_ALARM_TXT, /* 警报报文 */\
KEY_USE_ALARM_SOUND, /* 声响警报 */\
KEY_USE_GPIO1, /* gpio1 */\
KEY_GPIO1_TIMER, /* gpio1 定时间隔 */\
KEY_USE_GPIO2, /* gpio2 */\
KEY_GPIO2_TIMER, /* gpio2 定时间隔 */\
KEY_MYSQL_VALUES, \
lab_mysql->id_cam, /* id号 */\
DEFAULT_TRIGGER_USED_MD1, /* md1 */\
DEFAULT_TRIGGER_LINGMD_MD1, /* 灵敏度1 */\
DEFAULT_TRIGGER_USED_MD2, /* md2 */\
DEFAULT_TRIGGER_LINGMD_MD2, /* md2 */\
DEFAULT_TRIGGER_USED_INFRARED, /* 红外警报 */\
DEFAULT_TRIGGER_SAVE_PC, /* 保存在pc */\
DEFAULT_TRIGGER_SAVE_CARD, /* 保存在存储卡 */\
DEFAULT_TRIGGER_VIDEO_SAVE, /* 保存格式 */\
DEFAULT_TRIGGER_SND_MAIL, /* 使用email */\
DEFAULT_TRIGGER_SND_FTP, /* 使用ftp */\
DEFAULT_TRIGGER_SPACE, /* 定时间隔 */\
DEFAULT_TRIGGER_DELAY, /* 延迟 */\
DEFAULT_TRIGGER_WARING_TEXT, /* 报文警报 */\
DEFAULT_TRIGGER_TEXT_WARING, /* 警报报文 */\
DEFAULT_TRIGGER_WARING_AUDIO, /* 声响警报 */\
DEFAULT_TRIGGER_GPIO1, /* gpio1 */\
DEFAULT_TRIGGER_TIMER_GPIO1, /* gpio1 定时间隔 */\
DEFAULT_TRIGGER_GPIO2, /* gpio2 */\
DEFAULT_TRIGGER_TIMER_GPIO2/* gpio2 定时间隔 */);
break;
}
case TYPE_P_W_TOOL://工具相关类型
{
msg_tool = (struct_web_tool *)buf;
return -1;
break;
}
case TYPE_P_W_UPDATE://软件更新相关类型
{
msg_update = (struct_web_update *)buf;
sprintf(string_web, "%s %s %s", KEY_MYSQL_INSERT, KEY_MYSQL_INTO, NAME_TABLE_MYSQL_AR003);
sprintf(string_set, "(%s,%s,%s,%s,%s) %s (%u,%u,'%s','%s',%lu)", \
KEY_CAMERA_ID, /* 摄像机在数据库中的id号码 */\
KEY_USER_ID, /* 用户id */\
KEY_SERIAL_NUMBER, /* 序列号 */\
KEY_VERSION, /* 版本 */\
KEY_ONLINE_CAMERA, /* 在线状态 */\
KEY_MYSQL_VALUES, /* 数据库的关键字 */\
lab_mysql->id_cam, /* 摄像机在数据库中的id号码 */\
lab_mysql->id_user, /* 用户id */\
serial, /* 序列号 */\
msg_update->version, /* 版本 */
logintime/* 在线状态 */);
break;
}
default:
return -1;
break;
}
sprintf(output, "%s %s", string_web, string_set);
#ifdef DEBUG_MYL
printf("%s %d : Insert SQL : %s\n\n", __FILE__, __LINE__, output);
#endif
return 0;
}
/*
* 功 能:创建更新网页部分数据库的字符串
* 参 数:type:标志是摄像机发给服务器的还是cgi传来的
* serial:摄像机序列号
* lab:标志是哪个网页
* buf:数据缓冲区
* mysql:已经打开的数据库
* output:输出缓冲区
* lab_mysql:标志数据库表是否存在
* logintime:摄像机的登陆时间
* 返回值:成功返回0,否则返回-1
*/
int rc_string_mysql_update_web(int type, int lab, const unsigned char *buf, unsigned char *output, struct_lab_mysql *lab_mysql, unsigned long int logintime)
{
int i;
unsigned char string_sel[128];
unsigned char string_web[64];
unsigned char string_set[512];
unsigned char temp[512];
unsigned char temp1[128];
unsigned char mac[16];
struct in_addr ip;
struct in_addr gateway;
struct in_addr submask;
struct in_addr dns;
unsigned short int port;
unsigned short int port_web;
unsigned short int port_video;
unsigned short int port_audio;
struct_lingmd *msg_lingmd;
struct_web_index *msg_index;
struct_web_sys *msg_sys;
struct_web_security_get *msg_security_get;
struct_web_security *msg_security_set;
struct_web_net *msg_net;
struct_web_ddns *msg_ddns;
struct_web_mailftp *msg_mailftp;
struct_web_video *msg_video;
struct_web_application *msg_application;
struct_web_tool *msg_tool;
struct_web_update *msg_update;
if(lab_mysql->id_cam <= 0)
return -1;
bzero(string_sel, sizeof(string_sel));
sprintf(string_sel, "%s %s=%u", KEY_MYSQL_WHERE, KEY_CAMERA_ID, lab_mysql->id_cam);
bzero(string_web, sizeof(string_web));
bzero(string_set, sizeof(string_set));
switch(lab)
{
case TYPE_P_W_INDEX://首页相关类型
{
sprintf(string_web, "%s %s %s", \
KEY_MYSQL_UPDATE, \
NAM_TABLE_MYSQL_AR003_TRIGGER, \
KEY_MYSQL_SET);
switch(type)
{
case TYPE_ACTION_CAMERA://摄像机的动作
{
msg_lingmd = (struct_lingmd *)buf;
sprintf(string_set, "%s=%u,%s=%u", \
KEY_SENSITIVITY_1, msg_lingmd->md1, \
KEY_SENSITIVITY_2, msg_lingmd->md2);
break;
}
case TYPE_ACTION_CGI://cgi的动作
{
msg_index = (struct_web_index *)buf;
switch(msg_index->action)
{
case ACT_W_INDEX_LINGMD://设置灵敏度
sprintf(string_set, "%s=%u,%s=%u", \
KEY_SENSITIVITY_1, msg_index->msg.lingmd.md1, \
KEY_SENSITIVITY_2, msg_index->msg.lingmd.md2);
break;
default:
return -1;
break;
}
break;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -