노현종
...@@ -53,6 +53,22 @@ namespace VulnCrawler ...@@ -53,6 +53,22 @@ namespace VulnCrawler
53 return 802558182 + EqualityComparer<string>.Default.GetHashCode(BlockHash); 53 return 802558182 + EqualityComparer<string>.Default.GetHashCode(BlockHash);
54 } 54 }
55 } 55 }
56 + public class Vuln_detail
57 + {
58 + public int Index { get; set; } = -1; /* index key */
59 + public string Type { get; set; } = "NULL"; /* type */
60 + public string Year { get; set; } = "NULL"; /* year */
61 + public string Level { get; set; } = "NULL"; /* level */
62 + public string UserName { get; set; } = "NULL"; /* user name */
63 + public string Publish_date { get; set; } = "NULL"; /* Publish_date */
64 + public string Update_date { get; set; } = "NULL"; /* Update_date */
65 + public string CveDetail { get; set; } = "NULL"; /* cveDetail */
66 + public string CveName { get; set; } = "NULL"; /* cve name */
67 + public string FileName { get; set; } = "NULL"; /* FileName */
68 + public string FuncName { get; set; } = "NULL"; /* funcName */
69 + public string Url { get; set; } = "NULL"; /* Url */
70 +
71 + }
56 //connect 72 //connect
57 public static void Connect(AWS.Account account, string dbName) 73 public static void Connect(AWS.Account account, string dbName)
58 { 74 {
...@@ -214,6 +230,50 @@ namespace VulnCrawler ...@@ -214,6 +230,50 @@ namespace VulnCrawler
214 Console.ReadLine(); 230 Console.ReadLine();
215 } 231 }
216 } 232 }
233 + public static void InsertVulnDetail(Vuln_detail vuln)
234 + {
235 + String sql = string.Empty;
236 + MySqlCommand cmd = null;
237 + Retry:
238 + //DB insert
239 + try
240 + {
241 + cmd = new MySqlCommand
242 + {
243 + Connection = Conn,
244 + //db에 추가
245 + CommandText = "INSERT INTO vulnDetail(type, year, level, userName, cveName, publish_date,update_date, cveDetail,fileName, funcName, url) VALUES(@type, @year, @level, @userName, @cveName, @publish_date,@update_date, @cveDetail,@fileName, @funcName,@url)"
246 + };
247 + cmd.Parameters.AddWithValue("@type", $"{vuln.Type}");
248 + cmd.Parameters.AddWithValue("@year", $"{vuln.Year}");
249 + cmd.Parameters.AddWithValue("@level", $"{vuln.Level}");
250 + cmd.Parameters.AddWithValue("@userName", $"{vuln.UserName}");
251 + cmd.Parameters.AddWithValue("@cveName", $"{vuln.CveName}");
252 + cmd.Parameters.AddWithValue("@publish_date", $"{vuln.Publish_date}");
253 + cmd.Parameters.AddWithValue("@update_date", $"{vuln.Update_date}");
254 + cmd.Parameters.AddWithValue("@cveDetail", $"{vuln.CveDetail}");
255 + cmd.Parameters.AddWithValue("@fileName", $"{vuln.FileName}");
256 + cmd.Parameters.AddWithValue("@funcName", $"{vuln.FuncName}");
257 + cmd.Parameters.AddWithValue("@url", $"{vuln.Url}");
258 +
259 + cmd.ExecuteNonQuery();
260 + //콘솔출력용
261 + sql = "INSERT INTO vulnDetail(type, year, level, userName, cveName, publish_date,update_date, cveDetail,fileName, funcName, url) " +
262 + $"VALUES({vuln.Type}, {vuln.Year}, {vuln.Level}, {vuln.UserName}, {vuln.CveName},{vuln.Publish_date}, {vuln.Update_date}, {vuln.CveDetail}, {vuln.FileName}, {vuln.FuncName}, {vuln.Url})";
263 + Console.WriteLine(sql);
264 + }
265 + catch (Exception e)
266 + {
267 + Console.WriteLine(e.ToString());
268 + string es = e.ToString();
269 + if (es.Contains("Connection must be valid and open"))
270 + {
271 + Connect(Account, DbName);
272 + goto Retry;
273 + }
274 + }
275 + }
276 +
217 public static void UpdateVulnData(int _vulnId, _Vuln vuln) { 277 public static void UpdateVulnData(int _vulnId, _Vuln vuln) {
218 String sql = string.Empty; 278 String sql = string.Empty;
219 MySqlCommand cmd = null; 279 MySqlCommand cmd = null;
...@@ -452,5 +512,26 @@ namespace VulnCrawler ...@@ -452,5 +512,26 @@ namespace VulnCrawler
452 yield return vuln; 512 yield return vuln;
453 } 513 }
454 } 514 }
515 + public static IEnumerable<string> SelectRepositbyName(string _username)
516 + {
517 + String sql = string.Empty;
518 + MySqlCommand cmd = new MySqlCommand();
519 + cmd.Connection = Conn;
520 + cmd.CommandText = "SELECT repository FROM vuln.auth_user WHERE username = '" + _username + "'";
521 + string a = null;
522 +
523 + //sql console write 확인용
524 + Console.Write(cmd.CommandText);
525 +
526 + System.Data.DataSet ds = new System.Data.DataSet();
527 + MySqlDataAdapter da = new MySqlDataAdapter(cmd.CommandText, Conn);
528 + da.Fill(ds);
529 + //string을 넣음
530 + foreach (System.Data.DataRow row in ds.Tables[0].Rows)
531 + {
532 + a = Convert.ToString(row["repository"]);
533 + yield return a;
534 + }
535 + }
455 } 536 }
456 } 537 }
...\ No newline at end of file ...\ No newline at end of file
......