From 7bb1c1211f59f2ce90f08020862b25645d84728a Mon Sep 17 00:00:00 2001 From: zhangjianjun_code <7844966+zhangjianjun_code@user.noreply.gitee.com> Date: Fri, 6 Nov 2020 14:36:57 +0800 Subject: [PATCH 1/3] 1. Deal with the issue of cve-manager: support the whitelist function when automatically submitting CVE issues to Repo from the vulnerability library; 2. Upload the excel file of the manually submitted cve data; --- .gitignore | 2 +- cve-py/controller/taskcontroller.py | 19 ++++- cve-py/controller/timertaskcontroller.py | 9 +- cve-py/downloadtask/downloadfiletask.py | 78 ++++++++++++++---- cve-py/emailtask/issue_record_email.py | 25 ++++++ cve-py/emailtask/sendemail.py | 42 +++++----- cve-py/emailtask/sendingtask.py | 2 +- .../packagewhitelist_2020-11-06.xlsx | Bin 0 -> 10413 bytes cve-py/main.py | 4 +- ...204\345\205\263\347\263\2732020-11-06.xls" | Bin cve-py/newexcels/20.03-CVE-10-10.xlsx | Bin 12859 -> 0 bytes cve-py/newexcels/20.03-CVE-2020-11-04.xlsx | Bin 0 -> 17503 bytes cve-py/newexcels/20.09-CVE-2019.xlsx | Bin 13464 -> 0 bytes ...0\345\260\204\345\205\263\347\263\273.xls" | Bin 209408 -> 0 bytes .../problemexcels/error_data_2020-10-30.xls | Bin 5632 -> 0 bytes .../problemexcels/error_data_2020-11-02.xls | Bin 5632 -> 0 bytes cve-py/tabletask/export_excel_task.py | 70 ++++++++++++++++ cve-py/tabletask/import_excel_task.py | 66 +++++++++++++++ 18 files changed, 269 insertions(+), 48 deletions(-) create mode 100644 cve-py/emailtask/issue_record_email.py create mode 100644 cve-py/import_excels/packagewhitelist_2020-11-06.xlsx rename "cve-py/mappingexcels/trust\345\214\205\345\220\215\346\230\240\345\260\204\345\205\263\347\263\273.xls" => "cve-py/mappingexcels/trust\345\214\205\345\220\215\346\230\240\345\260\204\345\205\263\347\263\2732020-11-06.xls" (100%) delete mode 100644 cve-py/newexcels/20.03-CVE-10-10.xlsx create mode 100644 cve-py/newexcels/20.03-CVE-2020-11-04.xlsx delete mode 100644 cve-py/newexcels/20.09-CVE-2019.xlsx delete mode 100644 "cve-py/oldexcels/trust\345\214\205\345\220\215\346\230\240\345\260\204\345\205\263\347\263\273.xls" delete mode 100644 cve-py/problemexcels/error_data_2020-10-30.xls delete mode 100644 cve-py/problemexcels/error_data_2020-11-02.xls create mode 100644 cve-py/tabletask/export_excel_task.py create mode 100644 cve-py/tabletask/import_excel_task.py diff --git a/.gitignore b/.gitignore index bac0496..c42b1d6 100644 --- a/.gitignore +++ b/.gitignore @@ -5,7 +5,7 @@ __pycache__ *.dll *.so *.dylib - +*.pyc # Test binary, built with `go test -c` *.test diff --git a/cve-py/controller/taskcontroller.py b/cve-py/controller/taskcontroller.py index 1c710cb..53fda1a 100644 --- a/cve-py/controller/taskcontroller.py +++ b/cve-py/controller/taskcontroller.py @@ -13,9 +13,9 @@ Authors: xiaojianghui Date: 10/22/2020 11:01 AM """ -from tabletask import runtask, mappingtask, toexcel +from tabletask import runtask, mappingtask, toexcel, export_excel_task, import_excel_task from gitwebtask import genegroup, yamltask -from emailtask import sendingtask +from emailtask import sendingtask, issue_record_email from downloadtask import downloadfiletask from deletetask import deletefiletask @@ -83,6 +83,7 @@ def rundownloadtask(): print("Download file timing task starts") downloadfiletask.handle_one() downloadfiletask.handle_two() + downloadfiletask.handle_three() print("Download file task completed") @@ -95,3 +96,17 @@ def rundelfiletask(): print("Clean up the folder timed task starts") deletefiletask.deldir("./oldexcels") print("Clean up the folder task completed") + + +def run_issue_record_task(): + print('issues record email task start') + export_excel_task.generate_excels(1, './export_excels/create_issues') + export_excel_task.generate_excels(2, './export_excels/untreated_issues') + issue_record_email.sending() + print('issues record email task complete') + + +def run_whiltlist_task(): + print('the task of parsing package whitelist start') + import_excel_task.import_data() + print('the task of parsing package whitelist complete') diff --git a/cve-py/controller/timertaskcontroller.py b/cve-py/controller/timertaskcontroller.py index 8559590..6a03e80 100644 --- a/cve-py/controller/timertaskcontroller.py +++ b/cve-py/controller/timertaskcontroller.py @@ -30,14 +30,17 @@ def timertask(): # Manual CVE data entry timing task scheduler.add_job(taskcontroller.runtabletask, 'cron', day_of_week='0-6', hour=0, minute=30) # Error data export and email sending timing task - scheduler.add_job(taskcontroller.toexcelcontroller, 'cron', day_of_week='0-6', hour=7, minute=30) + scheduler.add_job(taskcontroller.toexcelcontroller, 'interval', hours=2) # Package name correspondence relationship timing task scheduler.add_job(taskcontroller.runmappeingtask, 'cron', day_of_week='0-6', hour=7, minute=30) # Download files timing task - scheduler.add_job(taskcontroller.rundownloadtask, 'cron', day_of_week='0-6', hour=0, minute=1) + scheduler.add_job(taskcontroller.rundownloadtask, 'interval', hours=1) # Delete ,iles timed tasks that are more than one month old scheduler.add_job(taskcontroller.rundelfiletask, 'cron', day_of_week='0-6', hour=9, minute=30) + # issue record email feedback + scheduler.add_job(taskcontroller.run_issue_record_task, 'cron', day_of_week='0-6', hour=7, minute=30) + # analysis the table package whitelist + scheduler.add_job(taskcontroller.run_whiltlist_task, 'interval', hours=2) scheduler.start() except SystemExit as err: print("Err:", err) - diff --git a/cve-py/downloadtask/downloadfiletask.py b/cve-py/downloadtask/downloadfiletask.py index 5d7969c..1a83a8e 100644 --- a/cve-py/downloadtask/downloadfiletask.py +++ b/cve-py/downloadtask/downloadfiletask.py @@ -17,6 +17,7 @@ import requests import lxml.etree as etree import shutil import os +import datetime def handle_one(): @@ -43,15 +44,17 @@ def handle_one(): name = html.xpath("//div[@id='tree-slider']/div[{}]/div[1]/a/@title".format(i))[0] except IndexError: break - if name.endswith(".xls") or name.endswith(".xlsx"): - url = "https://gitee.com/openeuler/cve-manager/raw/master/cve-py/newexcels/" + name - r = requests.get(url) - print(r.status_code) - with open("./newexcels/" + name, 'wb') as code: - code.write(r.content) - if os.path.exists("./newexcels/" + name): - print("Successfully downloaded the cve manual data form:" + name) - i += 2 + if name and len(name) > 13 and name.split('.')[0][-10:] > ( + datetime.datetime.now() + datetime.timedelta(-2)): + if name.endswith(".xls") or name.endswith(".xlsx"): + url = "https://gitee.com/openeuler/cve-manager/raw/master/cve-py/newexcels/" + name + r = requests.get(url) + print(r.status_code) + with open("./newexcels/" + name, 'wb') as code: + code.write(r.content) + if os.path.exists("./newexcels/" + name): + print("Successfully downloaded the cve manual data form:" + name) + i += 2 def handle_two(): @@ -78,12 +81,51 @@ def handle_two(): name = html.xpath("//div[@id='tree-slider']/div[{}]/div[1]/a/@title".format(i))[0] except IndexError: break - if name.endswith(".xls") or name.endswith(".xlsx"): - url = "https://gitee.com/openeuler/cve-manager/raw/master/cve-py/mappingexcels/" + name - r = requests.get(url) - print(r.status_code) - with open("./mappingexcels/" + name, 'wb') as code: - code.write(r.content) - if os.path.exists("./mappingexcels/" + name): - print("Download the package name mapping table successfully:" + name) - i += 2 + if name and len(name) > 13 and name.split('.')[0][-10:] > ( + datetime.datetime.now() + datetime.timedelta(-2)): + if name.endswith(".xls") or name.endswith(".xlsx"): + url = "https://gitee.com/openeuler/cve-manager/raw/master/cve-py/mappingexcels/" + name + r = requests.get(url) + print(r.status_code) + with open("./mappingexcels/" + name, 'wb') as code: + code.write(r.content) + if os.path.exists("./mappingexcels/" + name): + print("Download the package name mapping table successfully:" + name) + i += 2 + + +def handle_three(): + """ + download file + """ + if os.listdir("./import_excels"): + shutil.rmtree("./import_excels") + os.mkdir("./mappingexcels") + url = 'https://gitee.com/openeuler/cve-manager/tree/master/cve-py/import_excels' + try: + r = requests.get(url) + except requests.exceptions.ConnectionError: + print('ConnectionError') + return + except requests.exceptions.ChunkedEncodingError: + print('ChunkedEncodingError') + return + html = etree.HTML(r.content) + if len(html): + i = 3 + while True: + try: + name = html.xpath("//div[@id='tree-slider']/div[{}]/div[1]/a/@title".format(i))[0] + except IndexError: + break + if name and len(name) > 13 and name.split('.')[0][-10:] > ( + datetime.datetime.now() + datetime.timedelta(-2)): + if name.endswith(".xls") or name.endswith(".xlsx"): + url = "https://gitee.com/openeuler/cve-manager/raw/master/cve-py/import_excels/" + name + r = requests.get(url) + print(r.status_code) + with open("./import_excels/" + name, 'wb') as code: + code.write(r.content) + if os.path.exists("./import_excels/" + name): + print("Download the Package whitelist table successfully:" + name) + i += 2 diff --git a/cve-py/emailtask/issue_record_email.py b/cve-py/emailtask/issue_record_email.py new file mode 100644 index 0000000..f8cf672 --- /dev/null +++ b/cve-py/emailtask/issue_record_email.py @@ -0,0 +1,25 @@ +#!/usr/bin/python +# -*- coding: UTF-8 -*- +from dbConnecttion.MysqlConn import Mysql +from emailtask import sendemail +import os + + +def sending(): + """ + Query all recipients + """ + mysql = Mysql() + sql = "select email_name from cve_email_list where email_type=1" + result = mysql.getMany(sql) + mysql.close() + print(result) + for i in result: + subject = "This time cve creates an issue record" + content = "The cve table that has created an issue and the cve table that has not created an issue" + sendemail.send_email("smtp.gmail.com", 587, + os.getenv("CVE_EMAIL_SENDADDR"), + os.getenv("CVE_EMAIL_PASSWORD"), + str(i['email_name']), './export_excels', subject, content) + for file in os.listdir('./export_excels'): + os.remove('./export_excels/' + file) diff --git a/cve-py/emailtask/sendemail.py b/cve-py/emailtask/sendemail.py index 7eb2920..c802c9b 100644 --- a/cve-py/emailtask/sendemail.py +++ b/cve-py/emailtask/sendemail.py @@ -20,7 +20,7 @@ import email.mime.text import email.mime.application as application -def send_email(smtp_host, smtp_port, sendAddr, password, recipientAddrs, subject='', content=''): +def send_email(smtp_host, smtp_port, sendAddr, password, recipientAddrs, path, subject='', content=''): """ send email :param smtp_host:smpt.gmail.com @@ -40,26 +40,26 @@ def send_email(smtp_host, smtp_port, sendAddr, password, recipientAddrs, subject txt = email.mime.text.MIMEText(content, 'plain', 'utf-8') msg.attach(txt) # Add attachment address - files = os.listdir("./problemexcels") + files = os.listdir(path) if not files: - print("No error data sheet") + print("No data sheet") return for fileName in files: - try: - part = application.MIMEApplication(open('./problemexcels/' + fileName, 'rb').read()) - part.add_header('Content-Disposition', 'attachment', filename=fileName) - msg.attach(part) - smtpSSLClient = smtplib.SMTP(smtp_host, smtp_port) - smtpSSLClient.ehlo() - smtpSSLClient.starttls() - loginRes = smtpSSLClient.login(sendAddr, password) - print("Login result:loginRes=", loginRes) - if loginRes and loginRes[0] == 235: - print("login successful,code=[loginRes[0]]") - smtpSSLClient.sendmail(sendAddr, recipientAddrs, str(msg)) - print("mail has been send successfully. message: ", str(msg)) - smtpSSLClient.quit() - else: - print("login failed,code= ", loginRes[0]) - except SystemExit as e: - print("Failed to send,Exception:e= ", e) + part = application.MIMEApplication(open(path + '/' + fileName, 'rb').read()) + part.add_header('Content-Disposition', 'attachment', filename=fileName) + msg.attach(part) + try: + smtpSSLClient = smtplib.SMTP(smtp_host, smtp_port) + smtpSSLClient.ehlo() + smtpSSLClient.starttls() + loginRes = smtpSSLClient.login(sendAddr, password) + print("Login result:loginRes=", loginRes) + if loginRes and loginRes[0] == 235: + print("login successful,code=[loginRes[0]]") + smtpSSLClient.sendmail(sendAddr, recipientAddrs, str(msg)) + print("mail has been send successfully. message: ", str(msg)) + smtpSSLClient.quit() + else: + print("login failed,code= ", loginRes[0]) + except SystemExit as e: + print("Failed to send,Exception:e= ", e) diff --git a/cve-py/emailtask/sendingtask.py b/cve-py/emailtask/sendingtask.py index 3cc47f6..a6dedef 100644 --- a/cve-py/emailtask/sendingtask.py +++ b/cve-py/emailtask/sendingtask.py @@ -33,4 +33,4 @@ def sending(): sendemail.send_email("smtp.gmail.com", 587, os.getenv("CVE_EMAIL_SENDADDR"), os.getenv("CVE_EMAIL_PASSWORD"), - str(i['email_name']), subject, content) + str(i['email_name']), './problemexcels', subject, content) diff --git a/cve-py/import_excels/packagewhitelist_2020-11-06.xlsx b/cve-py/import_excels/packagewhitelist_2020-11-06.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..141f5efb23f416b67d378bb3a16c4645c93c95a9 GIT binary patch literal 10413 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 z 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 literal 0 HcmV?d00001 diff --git a/cve-py/main.py b/cve-py/main.py index 6b05b88..c8b0f64 100644 --- a/cve-py/main.py +++ b/cve-py/main.py @@ -16,11 +16,11 @@ Authors: xiaojianghui Date: 10/22/2020 11:01 AM """ -from controller import timertaskcontroller +from controller import timertaskcontroller, taskcontroller if __name__ == '__main__': - + taskcontroller.run_issue_record_task() print("The program starts, waiting for the timing task to execute") timertaskcontroller.timertask() diff --git "a/cve-py/mappingexcels/trust\345\214\205\345\220\215\346\230\240\345\260\204\345\205\263\347\263\273.xls" "b/cve-py/mappingexcels/trust\345\214\205\345\220\215\346\230\240\345\260\204\345\205\263\347\263\2732020-11-06.xls" similarity index 100% rename from "cve-py/mappingexcels/trust\345\214\205\345\220\215\346\230\240\345\260\204\345\205\263\347\263\273.xls" rename to "cve-py/mappingexcels/trust\345\214\205\345\220\215\346\230\240\345\260\204\345\205\263\347\263\2732020-11-06.xls" diff --git a/cve-py/newexcels/20.03-CVE-10-10.xlsx b/cve-py/newexcels/20.03-CVE-10-10.xlsx deleted file mode 100644 index 67c3c08c98677dac89f2f5f3e30f53f8679c1f26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12859 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żwi>e9t141={l&bE!Z|NdF-(BzNqHPgG#z?< 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 literal 0 HcmV?d00001 diff --git a/cve-py/newexcels/20.09-CVE-2019.xlsx b/cve-py/newexcels/20.09-CVE-2019.xlsx deleted file mode 100644 index 5e2f6b3aff988c31130c190c63e3b9c6f563eaf3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13464 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 diff --git a/cve-py/problemexcels/error_data_2020-10-30.xls b/cve-py/problemexcels/error_data_2020-10-30.xls deleted file mode 100644 index 69873df713513d116327f113a124cb9cbefbfc1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5632 zcmeHLO^h5z6@K0JuGfzLX1#V|1Ew-0&aUJ6TgQ&QQoLT)#ZaG8>N)C~bkZiahaY6!#L&EaCs@|U2Rb*|H zD1ykf+tu~e&#PD8`>MKj|M+(4_A9?Sc89j43$%m&v%Z_gN9rAvcW>Z>g!c7yh8yn* zlu>mr{U0%~djf$RAEP(+y|s&D$??8JF8y-nACMFM1<$vrPfJm##HX0PY|sw$}gH-AVK!tv_o7ehcz`*_^NAlysF!8}HNK#xBA_ z4G%V^H&9LOBivjFvz5G*#ld~HZlK~sM-(o0vz02_EqA+Qmpz?$IVo)sJ%o3<)u;F9LOM3`-o(kvT0k(*z;794N1q#)FI`){@ti{oq0mW^DX}UO;cG+*@l?Lhp}2AF zY4PNU3E7jvm=S3=ja~+gWIc6y+q10~MArgXpL<)nP|S zQC?cUe!VQvW^jV4zKo$7L_nB`^W^;?>*z44_54;X@MXUi=oZRNTSi3_!3;g!m%(h+ z;}KvV?yiYT;3(FujH4hH5fPZ3e)7`d%qg+j)m~S~Ac$5I5v!FbRbnJ;@SVkwh%^$O zL=mnb`Ut*=+5#;D?I|(M{)>KOB!l)?wef_Wnh^snF=Qq3bz8$&Px>ox%nLNUs2(CR zVXZeRjkBU&pEJK-B3gK6ZmG7gICs5v^C@J@*8smZw_IDqo68GxSF!1qRJt0)y&Xi? zqg4cwzl{*&a_Dts*ik;JuIf(L%raZAH0qVpbx}V*SAQH6ZI)I2{6~~k{XAR0cIE1i zJ}JS(ibWw2Z+z%lff8lE1(M>m%7w7mQ)^A^4+-IfIf*r&0~*x)Y^9HIr(KyML?Kj! zV@5R2R$4k0JVv0O$iiM2twLVGnvsRi=S|dy5V}ygOcLE;p+bwoMA9yL@^-}eVb21Vk8HPbgoy~EjD?I--NxaPu#8xy>}X4} zz7nyj1UqY&B!?TW=)+4EZ5&$y#}PJs2z|y`l41eer@B=^OIsCm6$)DVP+c@|N|C*c z9o%#o+h;B*dy)Hez?4hos&bGf=>4DnH4$o|9(8qbC18_o2_3@-dT7;o5_X*NK~l^TJnNGJSqvT2Ek}(5H{K4eX?)fDv&rox zZ}fUM;o|dvbPQ`U$vHqD5OYR^;}yvw2Z+~ikqg9DE!qLZ3|O=ih&i%o3ZA((F73lY}rG>J04r8znT1a0ML3TUc8hk*_k=m^k}0^JXEe}NtVdZ0i@fsO(( z|IF(s|KD-I5z5Ag8&Uixe@@DxS(NpYlJrV#I#))4va zrz14xY%s%G+D_W|e!yQ`hBeV{|mOd@G<}Z diff --git a/cve-py/problemexcels/error_data_2020-11-02.xls b/cve-py/problemexcels/error_data_2020-11-02.xls deleted file mode 100644 index ff5989fe03875f5ed19168ade5e699fd57aad4e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5632 zcmeHLO^h5z6@K0JuGfy&_N>=VY`_!)adsWg-x@piO7VJG8{3M#G9eofLKdI^RbAV^db@PzrPq$%rETdV?V^8f?xo2wyMyxHEqsVjzq!e9>vsxe zm>#76BL?4NU!b>_R!^PB zScH*2@0Ly70pt$7Vfy^uSQ>PMet|Zd-}nxT9kmm*9BUc;Z&sYxy`Nqt#OZVfOn=`LM1SK2aC%ETu>W^?a7YmSgXiRA`QL-MY`1^U-A(iyZGOoJ{5ItMf;nF& zDd{SeHr}B>Ph7$XH9Xju-cU8Qk8pD#%=&pLi-U)(ZK&czMm8#l@Vbp|Ie4P*?}AOgZfoF^XySx1LSt>?FDfiDNOK(|nC z+A<7H1T*yXKn4p{k9&Z9xVs@PgQHltGLC{+K}0a@+*6lV=1+_DuJ*b@20^r*h*$!FLuzBGO2B5=FR%=p*$b*V zJ?Z!1m=|bxQ9Vp#!dh=s8s|j4zG(h`oM`#k#nsyK%HoaMt*4Q#T?hQ^;#zG5zg%8k zyoOD;s?zl+?(HJF5v?PTt5L{XYc2G;GVCZHrfa&>HM1<#D~)>POkLD3EY_dEMEA<7 ze&If4RlmTaU%z_oyYH7^V#T76h&Ntztw4#g-vUYTM&)AI?5T|=_J@RU!komK&jAf; ze%2o#+-X;)2vGUVi zr@D>9C1Dw{Oxe+vWPK%KT?uy9E=i6yT+xP?EZR7>1dbzY_z?Pxvn0g=xJ`Atf>yUH z=o%EXx}z={IHky5#tz+c8Jjkjl>NwkI%vuzb5%J+Q}oUc|N85jty@b?V|fl1PJDBD zl;140N#Eoi=!`=V35rEJj^~u=@wmyq#ck+ArhMGwv$*!);&t-Yk-YHf=S`b$o7$6@ z=Zs0eS$b@&Jcsh_zkKG$CvN{~X&&WQuHOCH>?^-pdWp*Tv%$w4{O@@>?VNVL|01WK zEN%TdxTf({?++%om%Q=o-IR;h1JZG<$t33>y-Um)5sp_RiyRxT?vTSYtanKc$enrFc7qrqgkNY0v!Q5QlO(iM+@{Y z(8C3K1n7|h9RoTB#QZa_{jp+n=H0G|Ip2!01HMZ%SB%G;GqRpC=gc=NcRSx~8)=O9 zZHeadaa_aqsRE7j?LzA#zFla2#J3Brm*`DMl~?XU>tMeah50^RpmDxkv@TJls2k_o zE%eZJZ)Vtf%X~BY%$*C3TfSZBd&IYE_{N(y z@56jEvVEBEi|!1)&g9Z1&hli>mo4;x{N+u}>*j-zkHZN(eDv{w$KQ3{#lyc3(g%}) zr||(N!e<;oSMXtnKk95C^8bE1N)yf&GpwceN_Sqr@bkA`{jIb0y^z~}&U`@XQOo$z pd#~<0*5TSv%+G%8*k~uCy-(~^bHBFxo_~D(_dD4R?f;|s{{^2^^|=55 diff --git a/cve-py/tabletask/export_excel_task.py b/cve-py/tabletask/export_excel_task.py new file mode 100644 index 0000000..fcb3966 --- /dev/null +++ b/cve-py/tabletask/export_excel_task.py @@ -0,0 +1,70 @@ +#!/usr/bin/python +# -*- coding: UTF-8 -*- +import time +import xlwt +from dbConnecttion.MysqlConn import Mysql + + +def cur_date(): + """ + current date + :return createTime: string + """ + create_time = time.strftime("%Y-%m-%d", time.localtime()) + return create_time + + +def get_results(status): + mysql = Mysql() + sql = "select * from cve_issue_create_record where status = %s" + val = (status,) + results = mysql.getMany(sql, val) + print(results) + mysql.dispose() + mysql.close() + return results + + +def update_status(status): + mysql = Mysql() + sql = 'update cve_issue_create_record set status = %s where status = %s' + val = (4, status) + mysql.update(sql, val) + mysql.dispose() + mysql.close() + + +def generate_excels(status, path): + results = get_results(status) + if not results: + print("无issue记录") + return False + f = xlwt.Workbook() + sheet1 = f.add_sheet('sheet1', cell_overwrite_ok=True) + # Column field + column_names = ['id', 'cve_id', 'cve_num', 'cve_desc', 'cve_level', 'cve_version', 'repair_time', 'pack_name', + 'nvd_score', 'n_vector_value', 'create_time', 'update_time', 'delete_time', 'status'] + # Write the first row, column name + for i in range(0, len(column_names)): + sheet1.write(0, i, column_names[i]) + # Write multiple lines + num = 0 + for i in results: + sheet1.write(num + 1, 0, i["id"]) + sheet1.write(num + 1, 1, i["cve_id"]) + sheet1.write(num + 1, 2, i["cve_num"]) + sheet1.write(num + 1, 3, i["cve_desc"]) + sheet1.write(num + 1, 4, i["cve_level"]) + sheet1.write(num + 1, 5, i["cve_version"]) + sheet1.write(num + 1, 6, i["repair_time"]) + sheet1.write(num + 1, 7, i["pack_name"]) + sheet1.write(num + 1, 8, i["nvd_score"]) + sheet1.write(num + 1, 9, i["n_vector_value"]) + sheet1.write(num + 1, 10, i['create_time']) + sheet1.write(num + 1, 11, i["update_time"]) + sheet1.write(num + 1, 12, i["delete_time"]) + sheet1.write(num + 1, 13, i['status']) + num += 1 + # save document + f.save(path + '-' + cur_date() + '.xls') + update_status(status) diff --git a/cve-py/tabletask/import_excel_task.py b/cve-py/tabletask/import_excel_task.py new file mode 100644 index 0000000..644e888 --- /dev/null +++ b/cve-py/tabletask/import_excel_task.py @@ -0,0 +1,66 @@ +#!/usr/bin/python +# -*- coding: UTF-8 -*- +import xlrd +import time +import os +from dbConnecttion.MysqlConn import Mysql + + +def parse_excel(file_name): + pack_name_list = [] + version_list = [] + branchs_list = [] + status_list = [] + try: + data = xlrd.open_workbook('./import_excels/' + file_name) + table_one = data.sheet_by_name("Sheet1") + row_number = table_one.nrows + for i in range(1, row_number): + pack_name_list.append(table_one.cell(i, 0).value) + for i in range(1, row_number): + version_list.append(table_one.cell(i, 1).value) + for i in range(1, row_number): + status_list.append(table_one.cell(i, 2).value) + for i in range(1, row_number): + branchs_list.append(table_one.cell(i, 3).value) + except IndexError as e: + print("Subscript out of bounds", e) + except xlrd.XLRDError as e: + print("Form not found:Sheet1", e) + return pack_name_list, version_list, status_list, branchs_list + + +def cur_date(): + """ + current date + :return createTime: string + """ + create_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + return create_time + + +def import_data(): + files = os.listdir('./import_excels') + for file_name in files: + result = parse_excel(file_name) + mysql = Mysql() + for i in range(0, len(result[0])): + sql = 'select * from cve_issue_repo_whitelist where package_name = %s and version = %s' + val = (result[0][i], result[1][i]) + mysql_data = mysql.getOne(sql, val) + if mysql_data: + print("更新数据package_name:" + result[0][i]) + sql = 'update cve_issue_repo_whitelist set status = %s, branchs = %s, update_time = %s where ' \ + 'package_name = %s and version = %s' + val = (result[2][i], result[3][i], cur_date(), result[0][i], result[1][i]) + mysql.update(sql, val) + mysql.dispose() + else: + print('插入数据') + sql = 'insert into cve_issue_repo_whitelist (package_name, version, status, branchs, create_time, ' \ + 'update_time, delete_time) values (%s, %s, %s, %s, %s, %s, %s)' + val = (result[0][i], result[1][i], result[2][i], result[3][i], cur_date(), None, None) + mysql.insertOne(sql, val) + mysql.dispose() + mysql.close() + os.remove('./import_excels/' + file_name) -- Gitee From b446a77d86c86130d6c0d448efd4d3decb13f8f9 Mon Sep 17 00:00:00 2001 From: zhangjianjun_code <7844966+zhangjianjun_code@user.noreply.gitee.com> Date: Fri, 6 Nov 2020 14:48:13 +0800 Subject: [PATCH 2/3] deal with empty folders --- cve-py/export_excels/test.xls | 0 cve-py/oldexcels/test.xls | 0 cve-py/problemexcels/test.xls | 0 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 cve-py/export_excels/test.xls create mode 100644 cve-py/oldexcels/test.xls create mode 100644 cve-py/problemexcels/test.xls diff --git a/cve-py/export_excels/test.xls b/cve-py/export_excels/test.xls new file mode 100644 index 0000000..e69de29 diff --git a/cve-py/oldexcels/test.xls b/cve-py/oldexcels/test.xls new file mode 100644 index 0000000..e69de29 diff --git a/cve-py/problemexcels/test.xls b/cve-py/problemexcels/test.xls new file mode 100644 index 0000000..e69de29 -- Gitee From deecab21796e9b43e73f8ba7a1cb1ae0f19774d7 Mon Sep 17 00:00:00 2001 From: zhangjianjun_code <7844966+zhangjianjun_code@user.noreply.gitee.com> Date: Fri, 6 Nov 2020 15:11:07 +0800 Subject: [PATCH 3/3] Code formatting, comment processing --- cve-py/controller/taskcontroller.py | 8 +++++++ cve-py/emailtask/issue_record_email.py | 20 +++++++++++++---- cve-py/tabletask/export_excel_task.py | 28 ++++++++++++++++++++++++ cve-py/tabletask/import_excel_task.py | 30 +++++++++++++++++++++++++- 4 files changed, 81 insertions(+), 5 deletions(-) diff --git a/cve-py/controller/taskcontroller.py b/cve-py/controller/taskcontroller.py index 53fda1a..d7d4060 100644 --- a/cve-py/controller/taskcontroller.py +++ b/cve-py/controller/taskcontroller.py @@ -99,6 +99,10 @@ def rundelfiletask(): def run_issue_record_task(): + """ + issues record email task + return None + """ print('issues record email task start') export_excel_task.generate_excels(1, './export_excels/create_issues') export_excel_task.generate_excels(2, './export_excels/untreated_issues') @@ -107,6 +111,10 @@ def run_issue_record_task(): def run_whiltlist_task(): + """ + the task of parsing package whitelist + return None + """ print('the task of parsing package whitelist start') import_excel_task.import_data() print('the task of parsing package whitelist complete') diff --git a/cve-py/emailtask/issue_record_email.py b/cve-py/emailtask/issue_record_email.py index f8cf672..5cc0d8b 100644 --- a/cve-py/emailtask/issue_record_email.py +++ b/cve-py/emailtask/issue_record_email.py @@ -1,5 +1,17 @@ #!/usr/bin/python # -*- coding: UTF-8 -*- +################################################################################ +# +# Copyright (c) 2020 openEuler.org, Inc. All Rights Reserved +# +################################################################################ +""" +send email + +Authors: xiaojianghui +Date: 11/06/2020 11:01 AM +""" + from dbConnecttion.MysqlConn import Mysql from emailtask import sendemail import os @@ -7,8 +19,8 @@ import os def sending(): """ - Query all recipients - """ + Query all recipients + """ mysql = Mysql() sql = "select email_name from cve_email_list where email_type=1" result = mysql.getMany(sql) @@ -21,5 +33,5 @@ def sending(): os.getenv("CVE_EMAIL_SENDADDR"), os.getenv("CVE_EMAIL_PASSWORD"), str(i['email_name']), './export_excels', subject, content) - for file in os.listdir('./export_excels'): - os.remove('./export_excels/' + file) + for filex in os.listdir('./export_excels'): + os.remove('./export_excels/' + filex) diff --git a/cve-py/tabletask/export_excel_task.py b/cve-py/tabletask/export_excel_task.py index fcb3966..f53391c 100644 --- a/cve-py/tabletask/export_excel_task.py +++ b/cve-py/tabletask/export_excel_task.py @@ -1,5 +1,18 @@ #!/usr/bin/python # -*- coding: UTF-8 -*- + +################################################################################ +# +# Copyright (c) 2020 openEuler.org, Inc. All Rights Reserved +# +################################################################################ +""" +export data from mysql + +Authors: xiaojianghui +Date: 10/22/2020 11:01 AM +""" + import time import xlwt from dbConnecttion.MysqlConn import Mysql @@ -15,6 +28,11 @@ def cur_date(): def get_results(status): + """ + Execute mysql + :param status: int + :return: list + """ mysql = Mysql() sql = "select * from cve_issue_create_record where status = %s" val = (status,) @@ -26,6 +44,11 @@ def get_results(status): def update_status(status): + """ + Execute mysql + :param status: int + :return: list + """ mysql = Mysql() sql = 'update cve_issue_create_record set status = %s where status = %s' val = (4, status) @@ -35,6 +58,11 @@ def update_status(status): def generate_excels(status, path): + """ + export excel + :param status, path: int, string + :return: None + """ results = get_results(status) if not results: print("无issue记录") diff --git a/cve-py/tabletask/import_excel_task.py b/cve-py/tabletask/import_excel_task.py index 644e888..c906548 100644 --- a/cve-py/tabletask/import_excel_task.py +++ b/cve-py/tabletask/import_excel_task.py @@ -1,5 +1,18 @@ #!/usr/bin/python # -*- coding: UTF-8 -*- + +################################################################################ +# +# Copyright (c) 2020 openEuler.org, Inc. All Rights Reserved +# +################################################################################ +""" +import data from excel + +Authors: xiaojianghui +Date: 11/06/2020 11:01 AM +""" + import xlrd import time import os @@ -7,10 +20,16 @@ from dbConnecttion.MysqlConn import Mysql def parse_excel(file_name): + """ + parse excel, import data + parse: file_name + return: list + """ pack_name_list = [] version_list = [] branchs_list = [] status_list = [] + total_list = [] try: data = xlrd.open_workbook('./import_excels/' + file_name) table_one = data.sheet_by_name("Sheet1") @@ -27,7 +46,11 @@ def parse_excel(file_name): print("Subscript out of bounds", e) except xlrd.XLRDError as e: print("Form not found:Sheet1", e) - return pack_name_list, version_list, status_list, branchs_list + total_list.append(pack_name_list) + total_list.append(version_list) + total_list.append(status_list) + total_list.append(branchs_list) + return total_list def cur_date(): @@ -40,6 +63,11 @@ def cur_date(): def import_data(): + """ + import excel + :param filename: + :return none + """ files = os.listdir('./import_excels') for file_name in files: result = parse_excel(file_name) -- Gitee