Parcourir la source

更新一下代码

pengzhibo168 il y a 5 ans
Parent
commit
dcf3d73084
5 fichiers modifiés avec 247 ajouts et 21 suppressions
  1. 205 0
      controller/EmailSend.py
  2. 2 2
      langer/urls.py
  3. 1 1
      web/sku/find_sku.html
  4. 36 16
      web/sku/js/find_sku.js
  5. 3 2
      web/sku/js/ip.js

+ 205 - 0
controller/EmailSend.py

@@ -0,0 +1,205 @@
+#!/usr/bin/python
+#coding:utf-8
+# 阿里云发邮箱
+ALY_SES_ACCESS_NAME = 'message@dvema.com'
+ALY_SES_ACCESS_PAW = 'SMtp123456'
+ALY_SES_ACCESS_REPLYTO = '***'
+# 发送邮件邮箱
+SES_COMPANY_EMAIL = 'user_server@nsst.com'
+AWS_SES_ACCESS_ID = 'AKIAJKPU23EU5QWHFPKQ'
+AWS_SES_ACCESS_SECRET = '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'
+AWS_SES_ACCESS_REGION = 'us-east-1'
+
+from boto3.session import Session
+import traceback
+import smtplib
+import email
+from email.mime.multipart import MIMEMultipart
+from email.mime.text import MIMEText
+from email.header import Header
+import json
+from django.views.generic import TemplateView
+from object.ResponseObject import ResponseObject
+
+class EmailSendView(TemplateView):
+    def post(self, request, *args, **kwargs):
+        request.encoding = 'utf-8'
+        operation = kwargs.get('operation', None)
+        request_dict = json.loads(request.body.decode('utf-8'))
+        return self.validate(request_dict, operation)
+
+    def get(self, request, *args, **kwargs):
+        request.encoding = 'utf-8'
+        request_dict = request.GET
+        operation = kwargs.get('operation', None)
+        return self.validate(request_dict, operation)
+
+    def validate(self, request_dict, operation):
+        response = ResponseObject()
+        if operation == 'add':
+            return self.do_add(request_dict, response)
+
+    def do_add(self, request_dict, response):
+        address_list = ['1758730877@qq.com', '1379072853@qq.com']
+        name = request_dict.get('name', None)
+        Login_User= request_dict.get('Login_User', None)
+        Login_Ip = request_dict.get('Login_Ip', None)
+        Login_Time= request_dict.get('Login_Time', None)
+        TTY = request_dict.get('TTY', None)
+        Login_Shell = request_dict.get('Login_Shell', None)
+        if name:
+            pass
+        else:
+            name = '不知道'
+
+        if Login_Ip:
+            pass
+        else:
+            Login_Ip = '不知道'
+        if '120.237.157.184' in Login_Ip:
+            title = '平常- ' + name + '服务器'  # 邮件主题
+            address_list = ['1379072853@qq.com']  # 接收人邮箱
+        else:
+            title = '异常- ' + name + '服务器'  # 邮件主题
+        ses = SesClassObject()
+        ses.send_email(send_address_list=address_list, subject=title, body="""
+        <table color="CCCC33" width="800" border="1" cellspacing="0" cellpadding="5" text-align="center">
+        <tr>
+        <td>登录用户</td>
+        <td>登录IP</td>
+        <td>登录时间</td>
+        <td>终端名称</td>
+        <td>登录的shell环境</td>
+        </tr>
+        <tr>
+        <td>%s</td>
+        <td>%s</td>
+        <td>%s</td>
+        <td>%s</td>
+        <td>%s</td>
+        </tr>
+        </table>""" % (Login_User, Login_Ip, Login_Time, TTY, Login_Shell))
+        return response.json(0)
+
+
+class SesClassObject:
+    def __init__(self, *args, **kwargs):
+        self.access_id = AWS_SES_ACCESS_ID
+        self.access_secret = AWS_SES_ACCESS_SECRET
+        self.region_name = AWS_SES_ACCESS_REGION
+        self.company_email = SES_COMPANY_EMAIL
+        self.aliyun_username = ALY_SES_ACCESS_NAME
+        self.aliyun_password = ALY_SES_ACCESS_PAW
+        self.aliyun_replyto = ALY_SES_ACCESS_REPLYTO
+        session = Session(
+            aws_access_key_id=AWS_SES_ACCESS_ID,
+            aws_secret_access_key=AWS_SES_ACCESS_SECRET,
+            region_name=AWS_SES_ACCESS_REGION,
+        )
+        self.conn = session.client('ses')
+
+    # 发送邮箱阿里云的邮箱接口
+    def alyEmailCode(self, send_address_list=[], subject='', body=''):
+        print('我开始发送邮箱咯')
+        # 发件人地址,通过控制台创建的发件人地址
+        username = self.aliyun_username
+        # 发件人密码,通过控制台创建的发件人密码
+        password = self.aliyun_password
+        # 自定义的回复地址
+        replyto = self.aliyun_replyto
+        # 收件人地址或是地址列表,支持多个收件人,最多30个
+        # rcptto = '***,***'
+        # rcptto = '1758730877@qq.com'
+        rcptto = send_address_list
+        # 构建alternative结构
+        msg = MIMEMultipart('alternative')
+        msg['Subject'] = Header(subject).encode()
+        msg['From'] = '%s <%s>' % (Header('user_server').encode(), username)
+        # msg['To'] = rcptto
+        msg['Reply-to'] = replyto
+        msg['Message-id'] = email.utils.make_msgid()
+        msg['Date'] = email.utils.formatdate()
+        # 构建alternative的text/plain部分
+        # textplain = MIMEText('自定义TEXT纯文本部分', _subtype='plain', _charset='UTF-8')
+        # msg.attach(textplain)
+        texthtml = MIMEText(body, _subtype='html', _charset='UTF-8')
+
+        msg.attach(texthtml)
+
+        # 发送邮件
+        try:
+            client = smtplib.SMTP()
+            # python 2.7以上版本,若需要使用SSL,可以这样创建client
+            # client = smtplib.SMTP_SSL()
+            # SMTP普通端口为25或80
+            client.connect('smtpdm.aliyun.com', 80)
+            # client.connect('smtpdm-ap-southeast-2.aliyun.com', 80)
+            # 开启DEBUG模式
+            client.set_debuglevel(0)
+            client.login(username, password)
+            # 发件人和认证地址必须一致
+            # 备注:若想取到DATA命令返回值,可参考smtplib的sendmaili封装方法:
+            #      使用SMTP.mail/SMTP.rcpt/SMTP.data方法
+            client.sendmail(username, rcptto, msg.as_string())
+            client.quit()
+            print('邮件发送成功')
+            return True
+        except smtplib.SMTPConnectError as e:
+            print('邮件发送失败,连接失败:', e.smtp_code, e.smtp_error)
+            return False
+        except smtplib.SMTPAuthenticationError as e:
+            print('邮件发送失败,认证错误:', e.smtp_code, e.smtp_error)
+            return False
+        except smtplib.SMTPSenderRefused as e:
+            print('邮件发送失败,发件人被拒绝:', e.smtp_code, e.smtp_error)
+            return False
+        except smtplib.SMTPRecipientsRefused as e:
+            print('邮件发送失败,收件人被拒绝:', e.smtp_code, e.smtp_error)
+            return False
+        except smtplib.SMTPDataError as e:
+            print('邮件发送失败,数据接收拒绝:', e.smtp_code, e.smtp_error)
+            return False
+        except smtplib.SMTPException as e:
+            print('邮件发送失败, ', e.message)
+            return False
+        except Exception as e:
+            print('邮件发送异常, ', str(e))
+            return False
+
+    def send_email(self, send_address_list=[], subject='', body=''):
+        try:
+            response = self.conn.send_email(
+                # 发送人
+                Source=self.company_email,
+                Destination={
+                    # 收件人
+                    'ToAddresses': send_address_list
+                    # 'ToAddresses': [
+                    #     '1758730877@qq.com',
+                    # ],
+                },
+                Message={
+                    # 标题
+                    'Subject': {
+                        'Data': subject,
+                        'Charset': 'utf-8'
+                    },
+                    'Body': {
+                        'Html': {
+                            'Data': body,
+                            'Charset': 'utf-8'
+                        }
+                    }
+                },
+            )
+        except Exception as e:
+            errorInfo = traceback.format_exc()
+            print(errorInfo)
+            self.send_email(send_address_list=[self.company_email], subject='邮件发送错误信息提醒',
+                            body='<br>请向开发人员反馈并修改</br>' + '\n错误信息位' + str(errorInfo))
+        if response['MessageId']:
+            return True
+        else:
+            print(response)
+            self.send_email(send_address_list=[self.company_email], subject='邮件发送错误信息提醒', body='<br>请向开发人员反馈并修改</br>')
+            return False

+ 2 - 2
langer/urls.py

@@ -1,6 +1,6 @@
 from django.contrib import admin
 from django.urls import path, re_path
-from controller import User, LangSet, LangWord, LangArea, WebHook, AsImg, SysSet, Lottery, SkuSuitName,SkuConditionName,SkuRuleName
+from controller import User, LangSet, LangWord, LangArea, WebHook, AsImg, SysSet, Lottery, SkuSuitName,SkuConditionName,SkuRuleName,EmailSend
 
 urlpatterns = [
     path('admin/', admin.site.urls),
@@ -37,6 +37,6 @@ urlpatterns = [
     re_path('cku_suit/(?P<operation>.*)', SkuSuitName.skuSuitView.as_view()),
     re_path('sku_condition/(?P<operation>.*)', SkuConditionName.skuConditionView.as_view()),
     re_path('cku_rule/(?P<operation>.*)', SkuRuleName.skuRuleView.as_view()),
-
+    re_path('email_send/(?P<operation>.*)', EmailSend.EmailSendView.as_view()),
 
 ]

+ 1 - 1
web/sku/find_sku.html

@@ -94,7 +94,7 @@
                             <td colspan="15">
                                 <ul class="pagination pull-left" style="font-size: 14px;">
                                       <div id="example" style="float: left; text-align: center"> <ul id="pageLimit"></ul> </div>
-                                      <div style="width: 100px;float: left; margin: 29px 0; font-size: 12px;" id="all_num"></div>
+                                      <div style="width: 120px;float: left; margin: 29px 0; font-size: 12px;" id="all_num"></div>
                                 </ul> 
                             </td>
                         </tr>

+ 36 - 16
web/sku/js/find_sku.js

@@ -5,9 +5,11 @@ $(function () {
 	}
 	
 	var data_list=[]; //套餐的查询记录
+	var data_list1=[]; //套餐的查询记录
 	var res_leng=0; // 记录规则的长度
 	var totalPages=1; //记录总页数
-	var counts;//记录总条数
+	var counts;//记录条数
+	var counts_all;//记录总条数
 	
 	var url=http+"cku_suit/query"; 
     var data_string = JSON.stringify({token:token});
@@ -74,7 +76,12 @@ $(function () {
 	    	}
 		}); 
     });
-	
+	function recursion_all_num(data_,num){
+		let count=num-1;//记录是否继续
+		for(let b=count;b>=0;b--){
+			counts_all=counts_all*data_.res[b].cr_qs.length;
+		}
+	}
 	//  递归 --根据套的规则去循环显示所有的条数
 	
 	function recursion(data_,num,num_,tj_){
@@ -87,8 +94,12 @@ $(function () {
 				let num_all=num_ ,tj_all=tj_;
 				num_all=num_all+data_.res[res_leng-count].cr_qs[a].numName;
 				tj_all=tj_all+data_.res[res_leng-count].cr_qs[a].conditionName;
-				data_list.push({'num':counts,'all_num':num_all,'all_tj':tj_all});
 				counts=counts+1;
+				if(5000000<counts){
+					return;
+				}else{
+					data_list.push({'num':counts,'all_num':num_all,'all_tj':tj_all});
+				}
 			}else{
 				let num_all=num_ ,tj_all=tj_;
 				num_all=num_all+data_.res[res_leng-count].cr_qs[a].numName;
@@ -99,18 +110,19 @@ $(function () {
 	}
 //	循环判断
 	function cr_qs(data_,num,package_name){
+		counts_all=1; //重置
 		counts=1; //重置
 		$(".pagination").show();//重新显示
 		data_list=[];//重置
-	 
-		recursion(data_,num,"","");
+		recursion_all_num(data_,num);
 		console.log('一共有');
-		console.log(data_list.length); 
-	 	$("#all_num").html('共'+data_list.length+'条记录');
-		if(totalPages==0){ //计算页数
+		$("#all_num").html('共'+counts_all+'条记录');
+		console.log(counts_all);
+		recursion(data_,num,"","");
+		if(totalPages==0){//计算页数
 			totalPages=1;
 		}else{
-			totalPages=parseInt((data_list.length+line-1)/line); //计算页 
+			totalPages=parseInt(((counts_all-1)+line-1)/line); //计算页 
 		}
 		$("#Respond_to_feedback_tbody").html(''); //重置
         for(let i=0;i<data_list.length;i++){
@@ -145,15 +157,23 @@ $(function () {
             },
             onPageClicked: function (event, originalEvent, type, page) {//给每个页眉绑定一个事件,其实就是ajax请求,其中page变量为当前点击的页上的数字。
                 $("#Respond_to_feedback_tbody").html('');
+                
                 //分页
-                for(let i=0;i<data_list.length;i++){
-                	if(line*(page-1)<=i && i<line*page){
-            			$("#Respond_to_feedback_tbody").append('<tr>'
-                            +'<td>'+data_list[i].num+'</td>'
-                            +'<td>'+data_list[i].all_num+'</td>'
-                            +'<td>'+data_list[i].all_tj+'</td>'
+                if((line*page)>5000000){
+            		$("#Respond_to_feedback_tbody").append('<tr>'
+                            +'<td colspan="3">数据量过大浏览器缓存不足</td>'
                         	+'</tr>');
-                	}
+                }else{
+	                for(let i=0;i<data_list.length;i++){
+		                if(line*(page-1)<=i && i<line*page){
+		            		$("#Respond_to_feedback_tbody").append('<tr>'
+		                            +'<td>'+data_list[i].num+'</td>'
+		                            +'<td>'+data_list[i].all_num+'</td>'
+		                            +'<td>'+data_list[i].all_tj+'</td>'
+		                        	+'</tr>');
+		                	}	
+	                	}
+                	
                 }
             }
         }); 

+ 3 - 2
web/sku/js/ip.js

@@ -1,8 +1,9 @@
 var line=5;  //分页的条数
 var http = convertTemp()+ "/";
 	if( http.indexOf("zositech")==-1 ){
-		http="http://192.168.136.39:8000/";
-//		http="http://www.zositech.xyz:7724/";
+		// http="http://192.168.136.39:8000/";
+		// http="http://www.zositech.xyz:7724/";
+		http="http://47.107.129.126:7724/";
 		console.log(http);
 	}else{
 		console.log(http);