`

密钥管理 之 数据库取

 
阅读更多

#include "../lib/slas_common.h"
#include "../lib/log_defines.h"
#include "../lib/slas_paths.h"
#include "../lib/slas_defines.h"
#include "../lib/slas_structs.h"
#include "../lib/slas.h"
#include "../lib/utils.h"
#include "../lib/cgi.h"
#include "../lib/libpq-fe.h"
#include "../libso/sessplan.h"
#include "../libso/session.h"
#include "../libso/logs.h"

//#define PULIC_KTY "/storage/etc/ssh_public/"
#define PULIC_KTY "/etc/ssh_public/"

int CheckXm(char *);
int CheckRecord(char *);
int CheckB64(char *);
void changejh(char *);

typedef struct _ManagementList{
	char key[1024];
	char name[256];
	struct _ManagementList *next;	
}ManagementList;



int KeySet(char *user, int tasktype, u_int64 session){	
	char *keyName = NULL, *keyName_old = NULL,  *keyContent = NULL, *keyContent_old = NULL;
	char *keyNamebuf = NULL, *keyContentbuf = NULL;
	char sql[512];
	int iii = 0;
	PGconn *conn = NULL;
	PGresult *res = NULL;

	while(1){
		conn = PQconnectdb(CONNDB);

		if (PQstatus(conn) != CONNECTION_OK){
			if(iii>=5){
				printf("<html><head><link href=\"/bh/style/stystem.css\" rel=\"stylesheet\" type=\"text/css\"/></head><body><script src=\"/bh/pjs/jquery-1.4.2.min.js\" type=\"text/javascript\"></script><script>alert('conn failed',function(){history.back();});</script></body></html>");
				return 1;
			}
			iii++;
			sleep(1);
		}
		else break;
	}

	if(conn == NULL){
		PQclear(res);
		res = NULL;
		PQfinish(conn);
		return __LINE__;
	}
	
	memset(sql, 0, sizeof(sql));	
	sprintf(sql, "SELECT \"PubkeyName\",\"PubkeyContent\" FROM public.\"User\" WHERE \"UserName\"='%s'", user);
	
	res = PQexec(conn, sql);	
	
	if (PQresultStatus(res) != PGRES_TUPLES_OK){
		printf("<html><head><link href=\"/bh/style/stystem.css\" rel=\"stylesheet\" type=\"text/css\"/></head><body><script src=\"/bh/pjs/jquery-1.4.2.min.js\" type=\"text/javascript\"></script><script>alert('result error1',function(){location.href='key_management.cgi?session=%llu';});</script></body></html>", session);
		PQclear(res);
		PQfinish(conn);
		res = NULL;
		return __LINE__;
	}
	
	if(!PQntuples(res)){
		printf( "<html><head><link href=\"/bh/style/stystem.css\" rel=\"stylesheet\" type=\"text/css\"/></head><body><script src=\"/bh/pjs/jquery-1.4.2.min.js\" type=\"text/javascript\"></script><script>alert('KEYGET失败!',function(){location.href='key_management.cgi?session=%llu';});</script></body></html>", session);
		PQclear(res);
		PQfinish(conn);
		res = NULL; 
		return __LINE__;
	}


	if (PQgetvalue(res, 0, 0) != NULL){
			keyName_old = (char*) malloc(sizeof(char)*3960);
			sprintf(keyName_old, "%s", PQgetvalue(res, 0, 0));
	}
	if (PQgetvalue(res, 0, 1) != NULL){
		keyContent_old = (char*) malloc(sizeof(char)*39600);
		sprintf(keyContent_old, "%s", PQgetvalue(res, 0,1 ));	
	}

	
	if (CGIArgLoad("ss", "keyname", &keyName, "description", &keyContent)){
		printf("<html><head><link href=\"/bh/style/stystem.css\" rel=\"stylesheet\" type=\"text/css\"/></head><body><script src=\"/bh/pjs/jquery-1.4.2.min.js\" type=\"text/javascript\"></script><script>alert('getkey失败');</script>");
		PQclear(res);
		PQfinish(conn);		
		return 1;
	}
	
	if(tasktype == 2){//add	
		keyNamebuf = (char*) malloc(sizeof(char)*4096);
		if(!keyName_old)
			sprintf(keyNamebuf, "%s",  keyName);		
		else
			sprintf(keyNamebuf, "%s%s", keyName_old, keyName);
	

		
		keyContentbuf = (char*) malloc(sizeof(char)*40960);
		if(!keyContent_old)
			sprintf(keyContentbuf, "%s", keyContent);				
		else
			sprintf(keyContentbuf, "%s%s", keyContent_old, keyContent);	
			
	}

	
	if(tasktype == 3) {//del
		keyNamebuf = (char*) malloc(sizeof(char)*4096);
		if(keyName)
			sprintf(keyNamebuf, "%s", keyName);

		keyContentbuf = (char*) malloc(sizeof(char)*40960);
		if(keyContent)		
			sprintf(keyContentbuf, "%s", keyContent);		
	}

	PQclear(res);
	if(keyNamebuf!=NULL && keyContentbuf != NULL )
		sprintf(sql, "UPDATE PUBLIC.\"User\" SET \"PubkeyName\"=E'%s',\"PubkeyContent\"=E'%s' WHERE \"UserName\"='%s';", keyNamebuf, keyContentbuf, user);
	else
		sprintf(sql, "UPDATE PUBLIC.\"User\" SET \"PubkeyName\"=E'',\"PubkeyContent\"=E'' WHERE \"UserName\"='%s';", user);
	
		
	res = PQexec(conn, sql);

	if (PQresultStatus(res) != PGRES_COMMAND_OK){
		printf("<html><head><link href=\"/bh/style/stystem.css\" rel=\"stylesheet\" type=\"text/css\"/></head><body><script src=\"/bh/pjs/jquery-1.4.2.min.js\" type=\"text/javascript\"></script><script>alert('result error2',function(){location.href='key_management.cgi?session=%llu';});</script></body></html>", session);
		PQclear(res);
		res = NULL;
		PQfinish(conn);
		return __LINE__;
	}
	

	if(keyName_old)
		free(keyName_old);
	if(keyContent_old)
		free(keyContent_old);
	if(keyNamebuf)
		free(keyNamebuf);
	if(keyContentbuf)
		free(keyContentbuf);	
	
	PQclear(res);
	PQfinish(conn);
	res = NULL;
	
	return 0;
}




/*
int KeyGet(int *count, char *user, ManagementList *head, ManagementList *node){ 
	char sql[512], keyName[4096], keyContent[35575];
	int iii = 1;
	PGconn *conn = NULL;
	PGresult *res = NULL;
	
//	ManagementList *head = NULL;
//	ManagementList *node = NULL;
	head = (ManagementList *)malloc(sizeof(ManagementList));
	head->next = NULL;
	memset(head,0,sizeof(ManagementList));	

	while(1){
		conn = PQconnectdb(CONNDB);

		if (PQstatus(conn) != CONNECTION_OK){
			if(iii>=5){
				printf("<html><head><link href=\"/bh/style/stystem.css\" rel=\"stylesheet\" type=\"text/css\"/></head><body><script src=\"/bh/pjs/jquery-1.4.2.min.js\" type=\"text/javascript\"></script><script>alert('conn failed',function(){history.back();});</script></body></html>");
				return 1;
			}
			iii++;
			sleep(1);
		}
		else break;
	}
	
	if(conn == NULL) return -1;
	
	memset(sql, 0, sizeof(sql));	
	sprintf(sql, "SELECT \"PubkeyName\",\"PubkeyContent\" FROM public.\"public.User\" WHERE \"UserName\"='%s'", user);
	
	res = PQexec(conn, sql);

	if (PQresultStatus(res) != PGRES_TUPLES_OK){
		printf("<html><head><link href=\"/bh/style/stystem.css\" rel=\"stylesheet\" type=\"text/css\"/></head><body><script src=\"/bh/pjs/jquery-1.4.2.min.js\" type=\"text/javascript\"></script><script>alert('result error',function(){history.back();});</script></body></html>");
		PQclear(res);
		PQfinish(conn);
		res = NULL;
		return 2;
	}
	
	if(!PQntuples(res)){
		printf( "<html><head><link href=\"/bh/style/stystem.css\" rel=\"stylesheet\" type=\"text/css\"/></head><body><script src=\"/bh/pjs/jquery-1.4.2.min.js\" type=\"text/javascript\"></script><script>alert('RADGET失败!',function(){history.back();});</script></body></html>");
		PQclear(res);
		PQfinish(conn);
		res = NULL; 
		return 3;
	}

//	*pointlogin = atoi(PQgetvalue(res,0,0));
	if (PQgetvalue(res, 0, 1) != NULL)
		sprintf(keyName, "%s", PQgetvalue(res, 0, 1));
	if (PQgetvalue(res, 0, 2) != NULL)
		sprintf(keyContent, "%s", PQgetvalue(res, 0,2 ));
	
	for(str_name = strtok_r(keyName, ",", &tok_name), str_key = strtok_r(keyName, ",", &tok_key); NULL != str_name, NULL != str_key; str_name = strtok_r(NULL, ",", &tok_name), str_key = strtok_r(NULL, ",", &tok_key)){
		ManagementList *newnode = (ManagementList *)malloc(sizeof(ManagementList));	
		
		strcpy(newnode->key, str_key);
		strcpy(newnode->name, str_name);
		
	
		newnode->next = NULL;
		if(head->next == NULL){
			head->next = newnode;
			node = head->next;
		}else {
			node->next = newnode;
			node = node->next;
		}		
		count++;
	}

	
	PQclear(res);
	PQfinish(conn);
	res = NULL;
	return 0;
}

*/

void showhtml(u_int64 session, char *user){
	int count = 0, i = 0; 
	char sql[512], keyName[4096], keyContent[35575], *str_name = NULL, *tok_name = NULL , *str_key = NULL, * tok_key = NULL;
	int iii = 1;
	PGconn *conn = NULL;
	PGresult *res = NULL;
	
	ManagementList *head = NULL;
	ManagementList *node = NULL;
	head = (ManagementList *)malloc(sizeof(ManagementList));
	head->next = NULL;
	memset(head,0,sizeof(ManagementList));
	

	while(1){
		conn = PQconnectdb(CONNDB);

		if (PQstatus(conn) != CONNECTION_OK){
			if(iii>=5){
				printf("<html><head><link href=\"/bh/style/stystem.css\" rel=\"stylesheet\" type=\"text/css\"/></head><body><script src=\"/bh/pjs/jquery-1.4.2.min.js\" type=\"text/javascript\"></script><script>alert('conn failed',function(){location.href='key_management.cgi?session=%llu';});</script></body></html>", session);
				return;
			}
			iii++;
			sleep(1);
		}
		else break;
	}
	
	if(conn == NULL) return;
	
	memset(sql, 0, sizeof(sql));	
	sprintf(sql, "SELECT \"PubkeyName\",\"PubkeyContent\" FROM public.\"User\" WHERE \"UserName\"='%s';", user);
	
	res = PQexec(conn, sql);

	if (PQresultStatus(res) != PGRES_TUPLES_OK){
		printf("<html><head><link href=\"/bh/style/stystem.css\" rel=\"stylesheet\" type=\"text/css\"/></head><body><script src=\"/bh/pjs/jquery-1.4.2.min.js\" type=\"text/javascript\"></script><script>alert('result error3',function(){location.href='key_management.cgi?session=%llu';});</script></body></html>", session);
		PQclear(res);
		PQfinish(conn);
		res = NULL;
		return;
	}
	
	if(!PQntuples(res)){
		printf( "<html><head><link href=\"/bh/style/stystem.css\" rel=\"stylesheet\" type=\"text/css\"/></head><body><script src=\"/bh/pjs/jquery-1.4.2.min.js\" type=\"text/javascript\"></script><script>alert('KEYGET失败!',function(){location.href='key_management.cgi?session=%llu';});</script></body></html>", session);
		PQclear(res);
		PQfinish(conn);
		res = NULL; 
		return;
	}

//	*pointlogin = atoi(PQgetvalue(res,0,0));
	if (PQgetvalue(res, 0, 0) != NULL)
		sprintf(keyName, "%s", PQgetvalue(res, 0, 0));
	if (PQgetvalue(res, 0, 1) != NULL)
		sprintf(keyContent, "%s", PQgetvalue(res, 0,1));
	

	
/*	for(str_name = strtok_r(keyName, "\r", &tok_name); NULL != str_name; str_name = strtok_r(NULL, "\r", &tok_name)){
		ManagementList *newnode = (ManagementList *)malloc(sizeof(ManagementList));	
		
		for(str_key = strtok_r(keyContent, "\r", &tok_key); NULL != str_key; str_key = strtok_r(NULL, "\r", &tok_key)){		
			strcpy(newnode->name, str_name);
			strcpy(newnode->key, str_key);		
			newnode->next = NULL;
			if(head->next == NULL){
				head->next = newnode;
				node = head->next;
			}else {
				node->next = newnode;
				node = node->next;
			}
			strcpy(keyContent, tok_key);
			count++;
			break;
		}		
	}*/

	
	for( ((str_name = strtok_r(keyName, "\r", &tok_name)), (str_key = strtok_r(keyContent, "\r", &tok_key))); ((NULL != str_name)&&(NULL != str_key));  ((str_name = strtok_r(NULL, "\r", &tok_name)), (str_key = strtok_r(NULL, "\r", &tok_key))) ){
		ManagementList *newnode = (ManagementList *)malloc(sizeof(ManagementList));		
			strcpy(newnode->name, str_name);
			strcpy(newnode->key, str_key);		
			newnode->next = NULL;
			if(head->next == NULL){
				head->next = newnode;
				node = head->next;
			}else {
				node->next = newnode;
				node = node->next;
			}
			count++;			
	}
	
	node = head->next;


	printf("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n");
	printf("<html xmlns=\"http://www.w3.org/1999/xhtml\">\n");
	printf("<head>\n");
	printf("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=gb2312\" />\n");
	printf("<link href=\"/bh/style/middle_style.css\" rel=\"stylesheet\" type=\"text/css\"/>\n");
	printf("<script src=\"/bh/pjs/jquery-1.4.2.min.js\" type=\"text/javascript\"></script>\n");
	printf("<script src=\"/bh/pjs/jquery.wresize.js\" type=\"text/javascript\"></script>\n");
	printf("<script src=\"/bh/pjs/contentboxdivresiez.js\" type=\"text/javascript\"></script>\n");
	printf("<script src=\"/bh/pjs/tab_style.js\" type=\"text/javascript\"></script>\n");
	printf("<script src=\"/bh/pjs/table_litmenu_100.js\" type=\"text/javascript\"></script>\n");
	printf("<script src=\"/bh/pjs/bindpage.js\" type=\"text/javascript\"></script>\n");
	printf("<script src=\"/bh/pjs/common.js\" language=\"javascript\" type=\"text/javascript\"></script>\n");
	printf("<script src=\"/bh/pjs/bh_user.js\" language=\"javascript\" type=\"text/javascript\"></script>");
	printf("<script type=\"text/javascript\"> \n");
	printf("$(function(){\n");
	printf("	tabEvent(\"#tabledivbox\");\n");
	printf("	litmenu(\"#tabledivbox\");\n");
	printf("	wwinsize(0,180);//传入合适高度\n");
	printf("	\n");
	printf("	//阻止冒泡\n");
	printf("	 $(\"#content tbody tr td:first input:checkbox\").click(function(event){\n");
	printf("		event.stopPropagation();\n");
	printf("	});\n");
/*	if(public_key == 1){
		printf("	$(\"#public_key\").prop(\"checked\",true); \n");	
	}else
		printf("	$(\"#public_key\").prop(\"checked\",false); \n");*/	
	printf("})\n");
	printf("</script>\n");
	printf("</head>\n");
	printf("<body>\n");
	printf("<form action=\"\" method=\"post\" name=\"frm\">\n");
	printf("<input type=\"hidden\" name=\"tasktype\" id=\"tasktype\" value=\"\">\n");
	printf("<input type=\"hidden\" name=\"session\" id=\"session\" value=\"%llu\">\n",session);
	printf("<input type=\"hidden\" name=\"keyname\" id=\"keyname\" value=\"\">\n");
	printf("<input type=\"hidden\" name=\"description\" id=\"description\" value=\"\">\n");
	
	printf("<div class=\"head-box\" style=\"width:auto;border-left:1px solid #d8d8d8;border-right:1px solid #d8d8d8\">\n");
	printf("	<h3 class=\"now\">ssh public key</h3>\n");
/*	printf("	<div class=\"guolvbox divrightbox\">\n");
	printf("		<span _style=\"margin-top:2px\"><label><input type=\"checkbox\" name=\"public_key\" id=\"public_key\" value=\"1\">是否开启公钥</label></span>\n");
	printf("	</div>");*/
	printf("</div>\n");

	printf("<div id=\"tabledivbox\" >\n");
	printf("<!--此div为小菜单--><div id=\"poslitmenubox\"><div id=\"poslitmenu\"></div></div>\n");
	printf("<!--表头-->\n");
	printf("<div style=\"border:1px solid #ccc;border-top:none;width:100%%;position:absolute;height:29px;z-index:0;margin-left:-1px;\">\n");
	printf("</div>\n");
	printf("<div class=\"faux-head\">\n");
	printf("<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" style=\"width:100%%;\" id=\"tab-head\">\n");
	printf("<thead>\n");
	printf("<tr>\n");
	printf("<th style=\"width:50px;\"><input type=\"checkbox\" name=\"d_all\" id=\"d_all\"  value=\"CheckAll\" onClick=\"checkall(this,%d, 'd');\"/></th>\n", count);
	printf("<th style=\"width:320px\">公钥名称</th>\n");
	printf("<th style=\"background-image:none\">公钥内容</th>\n");
	printf("<th style=\"width:120px\" class=\"mangerlei\">管理</th>\n");
	printf("</tr>\n");
	printf("</thead>\n");
	printf("</table>\n");
	printf("</div>\n");
	printf("<div style=\"height:29px;width:100%%;background:#f2f2f2;\"></div>\n");
	printf("<!--此div包含作用为出滚动条-->\n");
	printf("<div class=\"tableboabox\">\n");
	printf("<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" style=\"width:100%%;\" id=\"content\">\n");
	printf("<!--此处为表格实际宽度,如果表格不需要出现小菜单则把表格宽度设为100%%-->\n");
	printf("<tbody>\n");
		
	while (node){
		printf(" <tr>\n");
		printf("		<td style=\"width:50px\"><input type=\"checkbox\" name=\"d_%d\" id=\"d_%d\" onclick=\"checkqs(this,%d);\" value=\"%s,%s\"/></td>\n",i,i,i,node->name, node->key);
		printf("        <td style=\"width:320px\">%s</td>\n", node->name);
		printf("        <td><span class=\"kill\" style=\"width:300px\">%s</span></td>\n", node->key);
		printf("		<td class=\"mangerlei\" style=\"width:120px\"><a href=\"#@\" onclick=\"key_del('%s','%s', %d, %d);\">删除</a></td>\n", node->name, node->key, i, count);
		printf(" </tr>\n");
		i++;
		node = node->next;	
	}


	printf("</tbody>\n");
	printf("</table>\n");
	printf("</div>\n");
	printf("</div>\n");


	printf("	<div class=\"diag\" id=\"Dialog01\">\n");
	printf("		<div class=\"diag1\">\n");
	printf("			<div class=\"head-box-main diagh\">\n");
	printf("				<h3 class=\"now diagh3\">公钥列表</h3>\n");
	printf("			 <a class=\"dialog-close\" onclick=\"closeDialog('#Dialog01')\" href=\"javascript:void(0)\"></a>\n");
	printf("		   </div>\n");
	printf("			<!-- head-box-main end  -->\n");
	printf("			<div class=\"diag_main\">\n");
	printf("				<div class=\"diag_main_c\">\n");
	printf("					<ul id=\"TypeList\" class=\"TypeList\">\n");
	printf("						<li>\n");
	printf("							<span style=\"float:right;\"></span>公钥名称:<input name=\"keyname1\" id=\"keyname1\" type=\"text\" maxlength=\"32\" class=\"textbox\" value=\"\" style=\"margin-right:20px;\" > \n");
	printf("						</li>\n");
	printf("						<li>\n");
	printf("							<span style=\"float:right;\"></span>公钥内容:\n");
	printf("						</li>\n");
	printf("						<li>\n");
	printf("							<td><textarea name=\"description1\" id=\"description1\" cols=\"60\" rows=\"5\" onpropertychange=\"if(document.frm.description1.value.length>1023) {value=value.substr(0,1023);alert('输入字符已达到最大值!');}\"></textarea></td> \n");
	printf("						</li>\n");
	printf("					</ul>\n");
	printf("				   <!-- TypeList end  -->\n");
	printf("				   <div class=\"diag_btn\">\n");
	printf("						<a class=\"btn_four_grly\" id=\"save\" onclick=\"Remark_Save();\" href=\"javascript:void(0);\">确定</a>\n");
	printf("						<a class=\"btn_four_grly\"  id=\"cancel\" onclick=\"Cancel();\" href=\"javascript:void(0);\">返回</a>\n");
	printf("				   </div>\n");
	printf("				   <!-- diag_btn  -->\n");
	printf("				</div>\n");
	printf("				<!-- diag_main_c end -->\n");
	printf("			</div>\n");
	printf("			<!-- diag_main end  -->\n");
	printf("			<div class=\"diag_footer\"></div>\n");
	printf("	\n");		
	printf("		</div>\n");
	printf("		 <!-- diag1 end  -->\n");
	printf("	</div>\n");
	
	
	printf("<div class=\"fenyelistbox\">\n");
	printf("<div class=\"ctrl-btn\" style=\"padding:0;margin-left:-10px;_margin-left:-5px\">");
	printf("<a class=\"btn_four_blue\" href=\"#@\" onclick=\"getkeyplanTotalStr('%d');\">批量删除</a>", count);
	printf(" <a href=\"#@\" class=\"btn_four_grly\" id=\"add\" onclick=\"__getDialog('#Dialog01');\">添加</a></div>\n");
//	printf(" <a href=\"#@\" class=\"btn_four_grly\" id=\"baocun\" onclick=\"Save();\">保存</a></div>\n");
	printf("	</div>\n");
	printf("</form>\n");
	printf("</body>\n");
	printf("<script>\n");
	printf("function gettype() {\n");
	printf("	var reg_ip = /^((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){3}(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)$/;\n");
	printf("	var reg_ip = /^((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){3}(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)$/;\n");
	printf("	if(!reg_ip.test(document.frm.ip.value)) document.frm.type.value = 1;\n");
	printf("	else document.frm.type.value = 0;\n");
	printf("}\n");
	
	//保存
	printf("function Save(){\n ");
	printf("	document.frm.tasktype.value = 2;\n");	
	printf("	document.frm.submit();	\n");	
	printf("}\n");
	
	
 	printf("function __getDialog(obj){\n");
  
	printf("	var ww = $(window).width(), wh = $(window).height();\n");
	printf("	var ow = $(obj).width(), oh = $(obj).height();\n");
	printf("	var p = document.documentElement.scrollTop || document.body.scrollTop;\n");

	printf("	$(obj).css({\n");
	printf("		\"top\":(wh - oh)/2+p > 0 ? (wh - oh)/2+p : 0,\n");
	printf("		\"left\":(ww - ow)/2 > 0 ? (ww - ow)/2 :0\n");
	printf("	}).fadeIn(\"fast\");\n");
	
	printf("	$(window).wresize(function(){\n");
	printf("		var ww = $(window).width(), wh = $(window).height();\n");
	printf("	var ow = $(obj).width(), oh = $(obj).height();\n");
	printf("		var p = document.documentElement.scrollTop || document.body.scrollTop;\n");

	printf("		$(obj).css({\n");
	printf("			\"top\":(wh - oh)/2+p > 0 ? (wh - oh)/2+p : 0,\n");
	printf("		\"left\":(ww - ow)/2 > 0 ? (ww - ow)/2 :0\n");
	printf("		});\n");
	printf("	})\n");
	printf("}	\n");
	
	printf("function Cancel(){\n");
	printf("	closeDialog('#Dialog01');\n");
	printf("    $(\"#description1\").val(\"\");\n");
	printf("    $(\"#keyname1\").val(\"\");\n");	
	printf("}\n");


	printf("function key_del(key, name, ii, count){\n");
	printf("	confirm(\"确定删除吗?\",function(){\n");
	
	printf("	var i;\n");
	printf("	var objd;\n");	
	printf("	for(i=0;i<count;i++){\n");
	printf("		objd  = document.getElementById(\"d_\"+i).value.split(\",\");;\n");	
	printf("		if( i != ii){\n");			
	printf("			document.frm.keyname.value += objd[0] + \"\\\\r\";\n");
	printf("			document.frm.description.value += objd[1] + \"\\\\r\";\n");

	printf("		}\n");
	printf("	}\n");	
	
	printf("	document.frm.tasktype.value = 3;\n");
	printf("	document.frm.submit();\n");
	printf("	});\n");
	printf("}\n");


	printf("function getkeyplanTotalStr(count){\n");
	printf("	var i;\n");
	printf("	var objd;\n");
	printf("	var objd1;\n");	
	printf("	for(i=0;i<count;i++){\n");
	printf("		objd  = document.getElementById(\"d_\"+i).value.split(\",\");\n");
	printf("		objd1  = document.getElementById(\"d_\"+i);\n");
	printf("		console.log(objd);");
	printf("		if(objd1.checked != true){\n");
	printf("			document.frm.keyname.value += objd[0] + \"\\\\r\";\n");
	printf("			document.frm.description.value += objd[1]+ \"\\\\r\";\n");
	printf("		}\n");
	printf("	}\n");
	printf("	document.frm.tasktype.value = 3;\n");
	printf("	document.frm.submit();\n");
	printf("}\n");
	
	
//备注保存检查
	printf("function Remark_Save(){\n");
	printf("	if($(\"#keyname1\").val()==\"\"){\n");
	printf("		alert('请填写公钥名称!');\n");
	printf("		return false;\n");
	printf("	}\n");	
	printf("	if($(\"#description1\").val()==\"\"){\n");
	printf("		alert('请填写操作内容!');\n");
	printf("		return false;\n");
	printf("	}\n");
	printf("\n");						
	printf("	if($(\"#keyname1\").val().length>64) {\n");
	printf("		alert('公钥名称已达到最大值!');\n");
	printf("		return false;\n");
	printf("	}\n");
	
	printf("	if($(\"#description1\").val().length>1023) {\n");
	printf("		//value=value.substr(0,255);\n");
	printf("		alert('输入字符已达到最大值!');\n");
	printf("		return false;\n");
	printf("	}\n");	
	
	printf("	var Cts = $(\"#description1\").val();\n");
	printf("	if(Cts.indexOf(\"\\n\") >= 0 ) {\n");
	printf("		alert('公钥名称('+$(\"#keyname1\").val()+')输入字符有特殊符号换行符!');\n");
	printf("		return false;\n");
	printf("	}\n");	

	printf("	var Cts = $(\"#keyname1\").val();\n");
	printf("	if(Cts.indexOf(\"\\\\r\") >= 0 ) {\n");
	printf("		alert('公钥名称输入字符有特殊符号换行符!');\n");
	printf("		return false;\n");
	printf("	}\n");		
	
	
	printf("	document.frm.tasktype.value = 2;\n");
	printf("	document.frm.description.value=$(\"#description1\").val() + \"\\\\r\";\n");
	printf("	document.frm.keyname.value=$(\"#keyname1\").val() +\"\\\\r\";\n");

	printf("	 document.frm.submit();	\n");	
	printf("}\n");	
	
	printf("function closeDialog(obj){\n");
	printf("$(obj).hide();\n");
	printf("}\n");
	
	printf("</script>\n");
	printf("</html>\n");
	printf("<style type='text/css'> \n");
	printf("#ConnectHTML select{margin:4px 0 0 0;}\n");
	printf("span.kill{word-break:keep-all;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:inline-block}\n");

	printf(".fdialog{width:820px;height:280px;overflow:hidden;border-radius:5px;}\n");
	printf(".fdialog .dialog-bg{width:2000px;height:2000px;background:#036;opacity:0.8;filter:alpha(opacity=80);}\n");
	printf(".fdialog .dialog-cont{width:800px;height:auto;overflow:hidden;margin:10px;padding:0;}\n");
	printf(".fdialog .dialog-title,.fdialog .dialog-content{width:100%%;}\n");
	printf(".fdialog .dialog-content{height:auto;border:0;padding:0;}\n");

	printf(".diag{position:absolute; top:50%%; left:50%%; width:585px; margin-left:-29px; margin-top:-145px;z-index:100; display:none;}\n");
	printf(".diag1{background:url(/bh/images/dialog_bg01.gif) 0 0 no-repeat; padding-top:10px;float:left;}\n");
	printf(".diagh{border-left: #d8d8d8 1px solid; width: auto; border-right: #d8d8d8 1px solid; margin:0 12px 0 11px; width:560px; float:left;}\n");
	printf(".diag_main{background:url(/bh/images/dialog_bg01_h.gif) 0 0 repeat-y;overflow:hidden;float:left;width:585px; }\n");
	printf(".diag_main_c{margin:0 12px 0 11px; height:200px;overflow:hidden; overflow-y:auto; float:left; width:560px;}\n");
	printf(".TypeList{overflow-y:auto; padding: 5px 10px;}\n");
	printf(".TypeList li{ line-height:26px;}\n");
	printf(".diag_btn{width:100%%; text-align:center;}\n");
	printf(".diag_footer{background:url(/bh/images/dialog_bg01.gif) 0 -179px no-repeat; height:10px; float:left; width:585px;}\n");
	printf(".baobiaoremove{ margin-top:5px;}\n");
	printf("#zhezhao{position:absolute;top:0;left:0;width:100%%;height:100%%;overflow:hidden;background:#FFF;z-index:98;filter:alpha(opacity=30);-moz-opacity:0.3; -khtml-opacity: 0.3; opacity:0.3; display:none;}\n");
	printf("</style>\n");	
	
	node = head;
	while (node){
		ManagementList *tmp;
		if(node->name) free(node->name);
		tmp = node;
		node = node->next;
		free(tmp);
	}
	
	
	PQclear(res);
	PQfinish(conn);
	res = NULL;
	return;
}

int main(){
	int ret, tasktype = 0, public_key = 0, d_all = 0;
	u_int64 session;
	char *description = NULL, *keyname = NULL, *delstr = NULL;
	char sql[256] ,cuser[256];	
	
	memset(cuser,0,sizeof(char)*256);
	memset(sql,0,sizeof(char)*256);	
	
	
	printf("Content-type:text/html\n\n");

	if ((ret = CGIArgLoad("Ldssdds","session", &session, "tasktype", &tasktype, "description", &description, "keyname", &keyname, "d_all", &d_all, "public_key", &public_key, "delstr", &delstr))){
		printf("<html><head><link href=\"/bh/style/stystem.css\" rel=\"stylesheet\" type=\"text/css\"/></head><body><script src=\"/bh/pjs/jquery-1.4.2.min.js\" type=\"text/javascript\"></script><script>alert('服务器错误(%d)',function(){location.href='key_management.cgi?session=%llu';});</script></body></html>", ret, session);
		return 0;
	}


	if (CommandSessionCheck(session, cuser, NULL)){
		printf("<html><head><link href=\"/bh/style/stystem.css\" rel=\"stylesheet\" type=\"text/css\"/></head><body><script src=\"/bh/pjs/jquery-1.4.2.min.js\" type=\"text/javascript\"></script><script>alert('系统超时',function(){location.href='key_management.cgi?session=%llu';});</script></body></html>", session);
		goto _END_;
	}

	if (!cuser){
		printf("<html><head><link href=\"/bh/style/stystem.css\" rel=\"stylesheet\" type=\"text/css\"/></head><body><script src=\"/bh/pjs/jquery-1.4.2.min.js\" type=\"text/javascript\"></script><script>alert('get user error',function(){location.href='key_management.cgi?session=%llu';});</script></body></html>", session);
		goto _END_;
	}
	
	
	if(tasktype == 2 || tasktype == 3){	// add || del
		if((ret = KeySet(cuser, tasktype, session))!=0){
			printf("<html><head><link href=\"/bh/style/stystem.css\" rel=\"stylesheet\" type=\"text/css\"/></head><body><script src=\"/bh/pjs/jquery-1.4.2.min.js\" type=\"text/javascript\"></script><script>alert('操作失败(%d)',function(){location.href='key_management.cgi?session=%llu';});</script></body></html>\n", ret, session);
			goto _END_;
		}else{
			printf("<html><head><link href=\"/bh/style/stystem.css\" rel=\"stylesheet\" type=\"text/css\"/></head><body><script src=\"/bh/pjs/jquery-1.4.2.min.js\" type=\"text/javascript\"></script><script>alert('操作成功',function(){location.href='key_management.cgi?session=%llu';});</script></body></html>\n", session);
			goto _END_;
		}		
		
	}
	
	showhtml(session,cuser);

_END_:	
	CGIArgFree();	
	return 0;
}



0
0
分享到:
评论

相关推荐

    聊天系统 V2 (纯缓存无数据库)

    PK利剑:14kb大小、单文件、纯缓存、无需任何数据库、实现踢人、审核发言、普通/VIP1/VIP2/管理员等多角色发言功能,支持框架入任何网页中操作。 测试体验步骤: 1、解压缩系统压缩包,得到Default.asp文件; 2...

    CacheManage::fire:android缓存管理器,分为内存缓存和文件缓存两种 先取内存数据,没有再从文件缓存中取

    在数据库文件夹下创建cachemanage文件夹,数据存储在该文件夹下支持文件加密存储默认des3加密内容默认生成des3唯一密钥(建议使用默认生成的密钥)默认生成的默认密钥,每个客户端都是唯一的,互不相同默认密钥存储...

    基于SpringBoot开发的校园快递管理系统源码+详细部署说明(课程设计).zip

    2. 修改 `application.yml` 配置文件中的数据库 `url`、`username`、`password`; 3. 修改 `application.yml` 配置文件中的 Redis 的 `host`、`port`、`password`(Redis 密码可选项); 4. 如果 `8080` 端口被占用...

    医院网络安全管理制度.doc

    (4)设立数据库管理员,负责用户的应用程序管理、数据库维护及日常数据备份。 每周、每月必须进行一次全备份,每日进行一次日志备份,数据和文档及时归档,备份 介质应由专人负责登记、保管。 (5)对服务器必须...

    商业银行计算机网络安全管理探讨-百度文库.doc

    系统性原则 商业银行计算机网络的安全防范要利用系统工程的原理、方法,分析网络的安全及应采 取的具体措施。首先,系统性原则体现在各种管理制度的建立、执行和完善以及专业措 施(识别技术、存取控制、密码、低...

    最新Python3.5零基础+高级+完整项目(28周全)培训视频学习资料

    作业之学员管理系统开发 第13周 堡垒机框架开发介绍 堡垒机源码讲解 堡垒机项目表结构设计与实现 自动创建表对象 权限分组与数据初始化 第14周 开课介绍 前端技术概要 今日内容概要 Html本质以及在web程序中的...

    java源码包---java 源码 大量 实例

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...

    java源码包2

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...

    java源码包3

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...

    java源码包4

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...

    计算机网络安全试题-《网络安全与管理(第二版)》网络安全试题.doc

    (1)操作系统的脆弱性 (2) 计算机系统的脆弱性 (3) 协议安全的脆弱性 (4) 数据库管理系统安全的脆弱性 (5) 人为的因素 (6) 各种外部威胁 20、什么是堡垒主机,它有什么功能? 堡垒主机(Bastion Host) 的硬件是一台...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Java生成密钥的实例 1个目标文件 摘要:Java源码,算法相关,密钥 Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    Java生成密钥的实例 1个目标文件 摘要:Java源码,算法相关,密钥 Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、...

    仿世纪佳缘婚介交友系统5.3 ASP+SQL

    2、用户组(等级)管理:(group.asp重中之重) 包括:注册用户组(等级)管理、系统用户组管理、Vip用户组管理、编辑注册默认组 、编辑VIP默认组、群组等级组管理。 (1)、注册用户组(等级),是会根据用户属性...

    网管教程 从入门到精通软件篇.txt

    Axx:ARJ压缩文件的分包序号文件,用于将一个大文件压至几个小的压缩包中(xx取01-99的数字) A3L:Authorware 3.x库文件 A4L:Authorware 4.x库文件 A5L:Authorware 5.x库文件 A3M,A4M:Authorware Macintosh...

    JAVA上百实例源码以及开源项目

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...

    JAVA上百实例源码以及开源项目源代码

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...

    多备份企业文件云备份软件 v2.2.12.0030.zip

    7、高安全性:文件传输采用AES256银行级加密标准,所有加密操作都在您设备上完成,离开您设备的数据都是加密的,并且只有您的唯一密钥能解开。 8、支持单向同步、双向同步、增量备份、完全备份等各种文件同步与备份...

    多备份-企业级文件云备份软件 v2.2.12.0030.exe

    7、高安全性:文件传输采用AES256银行级加密标准,所有加密操作都在您设备上完成,离开您设备的数据都是加密的,并且只有您的唯一密钥能解开。 8、支持单向同步、双向同步、增量备份、完全备份等各种文件同步与备份...

Global site tag (gtag.js) - Google Analytics