SuperDesign/Source/开发辅助工具/Manager/Itrycn_Info.cs
zilinsoft 1f8c54fe38 - *.[改进]项目支持自动打包功能。
### RySmartEditor    V1.0.2501.2701
- *.[改进]FTP上传时限制300毫秒内只能刷新一次UI进度。
### SuperDesign    V3.0.2501.2701
- *.[新增]新增支持在线升级功能。
#### 项目功能->项目管理
- *.[新增]FTP上传文件列表和打包文件列表支持在软件里直接编辑。
- *.[改进]更新dll版本将比对版本号,只更新版本号更新或者更新日期更新的dll。
#### 项目功能->更新日志
- *.[新增]新增支持自动记录过的分组信息,然后可以进行选择快速插入。
- *.[新增]记录使用过的项目信息到总数据库,以方便总览。
- *.[改进]右键插入日志时直接对富文本框进行编辑,而不是替换内容,从而具备撤销功能。
- *.[改进]改进MD日志输出的样式设计。
- *.[修复]修复《确认日志覆盖》窗口里的按钮,随着窗口大小变化,按钮会错乱的BUG。
- *.[修复]修复双击日志列表显示日志时,针对本周的时间显示不正确的BUG。
- *.[修复]修复右键新增日志时,如果没有分组,插入的行可能不正确的BUG。
- *.[修复]修复设为开发日志后,鼠标指针变到文本开头的问题。
#### 网页抓取工具
- *.[新增]新增多个常用UA。
- *.[新增]切换Url时如果存在Cookie和Header时,则提示是否清空。
- *.[新增]保存记录时新增支持保存UA。
- *.[新增]Url列表支持图标展示。
2025-01-27 15:41:54 +08:00

382 lines
15 KiB
C#

using ryCommon;
using ryCommonDb;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading;
using System.Windows.Forms;
using static ryCommonDb.DataProvider;
namespace .Manager
{
public class Itrycn_Db
{
public static bool IsCloseConfirm = true;
public static string Sys_SQLConn = "<app>\\SysDb\\Tools.dat|";
public static string User_SQLConn = "<app>\\UserDb\\MyDb.dat|";
public static string History_SQLConn = "<app>\\UserDb\\history.dat|";
public static string last_clip_text = "";
public static ryCommonDb.DataProvider.DataProviderType dataType = ryCommonDb.DataProvider.DataProviderType.SQLiteDataProvider;
public static IDbInterface CreateDataProvider(DataProviderType dataProviderType)
{
switch (dataProviderType)
{
//case DataProviderType.OdbcDataProvider:
// return new OdbcDataProvider();
//case DataProviderType.OleDbDataProvider:
// return new OleDbDataProvider();
//case DataProviderType.OracleDataProvider:
// return new OracleDataProvider();
case DataProviderType.SQLiteDataProvider:
return new SQLiteDataProvider();
default:
return null;
}
}
/// <summary>
/// 判断WinSCP是否在运行
/// </summary>
/// <returns></returns>
public static bool WinSCP_IsRunning() {
var exist = false;
try {
var proc_list = Process.GetProcessesByName("WinSCP");
for (int i = 0; i < proc_list.Length; i++) {
var path = proc_list[i].GetPath();
if (path.Length > 0) {
if (path.IndexOfEx(Application.StartupPath) < 0) {
exist = true; break;
}
}
}
}
catch {
}
if (!exist) {
//RyForm.get
}
return exist;
}
public static void DeleteFiles(string dir, string filter)
{
var files = System.IO.Directory.GetFiles(dir, filter);
for (int i = 0; i < files.Length; i++)
{
ryCommon.RyFiles.DeleteFile(files[i]);
}
ryCommon.RyFiles.DeleteFile(dir + "\\" + filter);
var dirs = System.IO.Directory.GetDirectories(dir);
for (int i = 0; i < dirs.Length; i++)
{
DeleteFiles(dirs[i], filter);
}
}
public static void CreateSysTable()
{
IDbInterface db = CreateDataProvider(dataType);
if (db.ConnDb(Sys_SQLConn) == 1)
{
#region
RyQuickSQL mySQL = new RyQuickSQL("Tools");
mySQL.AddField("Name", "");
mySQL.AddField("Des", "");
mySQL.AddField("Keys", "");
mySQL.AddField("Addr", "");
mySQL.AddField("PY", "");
mySQL.AddField("Sort", 0);
mySQL.AddField("addTime",DateTime.Now);
db.CreateDb(mySQL);
#endregion
//
}
}
/// <summary>
/// 获取设置
/// </summary>
/// <param name="name"></param>
/// <param name="defValue"></param>
/// <returns></returns>
public static string GetSetting(string name, string defValue)
{
var result = defValue;
IDbInterface db = CreateDataProvider(dataType);
if (db.ConnDb(User_SQLConn) == 1)
{
RyQuickSQL mySQL = new RyQuickSQL("Settings");
mySQL.AddField("Name", name);
var ds = db.ReadData("select * from Settings where Name=@Name", mySQL);
if (ds.HaveData())
{
result = ds.GetRow(0)["Value"].ToString();
}
ds.Dispose();
}
db.Free();
return result;
}
/// <summary>
/// 设置设置
/// </summary>
/// <param name="name"></param>
/// <param name="defValue"></param>
/// <returns></returns>
public static int SetSetting(string name, string value)
{
var result = 0;
IDbInterface db = CreateDataProvider(dataType);
if (db.ConnDb(User_SQLConn) == 1)
{
RyQuickSQL mySQL = new RyQuickSQL("Settings");
mySQL.AddField("Name", name);
mySQL.AddField("Value", value);
result= db.ExecuteNonQuery(mySQL.GetUpdateSQL()+ " where Name=@Name", mySQL);
if (result==0)
{
mySQL.AddField("addTime", DateTime.Now);
result = db.ExecuteNonQuery(mySQL.GetInsertSQL(), mySQL);
}
}
db.Free();
return result;
}
public static void CreateDb()
{
CreateSysTable();
CreateUserTable();
CreateHistoryTable();
}
public static void CreateUserTable()
{
IDbInterface db = CreateDataProvider(dataType);
if (db.ConnDb(User_SQLConn) == 1)
{
#region Url表
RyQuickSQL mySQL = new RyQuickSQL("Urls");
mySQL.AddField("Name", "");
mySQL.AddField("Url", "");
mySQL.AddField("Cookie", "");
mySQL.AddField("Postdata", "");
mySQL.AddField("Method", "");
mySQL.AddField("UserAgent", "");
mySQL.AddField("Header", "");
mySQL.AddField("Referer", "");
mySQL.AddField("ContentType", "");
mySQL.AddField("Encoding", "");
mySQL.AddField("IsFav", 0);
mySQL.AddField("Des", "");
mySQL.AddField("ClickCount", 0);//点击次数
mySQL.AddField("editTime", DateTime.Now);
mySQL.AddField("addTime", DateTime.Now);
db.CreateDb(mySQL);
#endregion
#region
mySQL.Clear();
mySQL.TableName = "Starts"; ;
mySQL.AddField("Addr", "");
mySQL.AddField("Name", "");
mySQL.AddField("ClickCount", 0);//点击次数
mySQL.AddField("editTime", DateTime.Now);
mySQL.AddField("addTime", DateTime.Now);
db.CreateDb(mySQL);
#endregion
#region
mySQL.Clear();
mySQL.TableName = "VarInfo"; ;
mySQL.AddField("VarName", "");
mySQL.AddField("VarValue", "");
mySQL.AddField("Des", "");//备注
mySQL.AddField("editTime", DateTime.Now);
mySQL.AddField("addTime", DateTime.Now);
db.CreateDb(mySQL);
#endregion
#region API表
mySQL.Clear();
mySQL.TableName = "api";
mySQL.AddField("Name", "");
mySQL.AddField("Url", "");
mySQL.AddField("APIName", "");
mySQL.AddField("Postdata", "");
mySQL.AddField("desc", "");
mySQL.AddField("ClickCount", 0);//点击次数
mySQL.AddField("AddUser", "");
mySQL.AddField("editTime", DateTime.Now);
mySQL.AddField("addTime", DateTime.Now);
if (db.CreateDb(mySQL) == 1)
{
db.ExecuteNonQuery("CREATE INDEX index_APIName ON api(APIName); ");
db.ExecuteNonQuery("CREATE INDEX index_APIUrl ON api(Url); ");
}
#endregion
#region FTP表
mySQL.Clear();
mySQL.TableName = "FTP";
mySQL.AddField("name", "");
mySQL.AddField("ip", "");
mySQL.AddField("port", 0);
mySQL.AddField("remoteDir", "");
mySQL.AddField("username", "");
mySQL.AddField("pwd", "");
mySQL.AddField("encrypt", 0);
mySQL.AddField("des", "");
mySQL.AddField("addTime", DateTime.Now);
mySQL.AddField("editTime", DateTime.Now);
db.CreateDb(mySQL);
#endregion
#region Site表
mySQL.Clear();
mySQL.TableName = "Site";
mySQL.AddField("name", "");
mySQL.AddField("localPath", "");
mySQL.AddField("ftpId", 0);
mySQL.AddField("ftpDir", "");
mySQL.AddField("addTime", DateTime.Now);
mySQL.AddField("editTime", DateTime.Now);
db.CreateDb(mySQL);
#endregion
#region FavFiles表
mySQL.Clear();
mySQL.TableName = "FavFiles";
mySQL.AddField("name", "");
mySQL.AddField("FilePath", "");
mySQL.AddField("addTime", DateTime.Now);
mySQL.AddField("editTime", DateTime.Now);
db.CreateDb(mySQL);
#endregion
#region
mySQL.Clear();
mySQL.TableName = "Settings";
mySQL.AddField("Name", "");
mySQL.AddField("Value", "");//值
mySQL.AddField("addTime", DateTime.Now);
if (db.CreateDb(mySQL) == 1)
{
db.ExecuteNonQuery("CREATE INDEX index_Name ON Settings(Name); ");
}
#endregion
}
}
public static void CreateHistoryTable()
{
IDbInterface db = CreateDataProvider(dataType);
if (db.ConnDb(History_SQLConn) == 1)
{
#region
RyQuickSQL mySQL = new RyQuickSQL("Files");
mySQL.AddField("FilePath", "");
mySQL.AddField("editTime", DateTime.Now);
mySQL.AddField("addTime", DateTime.Now);
if (db.CreateDb(mySQL) == 1)
{
db.ExecuteNonQuery("CREATE INDEX index_FilePath ON Files(FilePath); ");
}
#endregion
#region
mySQL.Clear();
mySQL.TableName = "History"; ;
mySQL.AddField("fileid", 0);
mySQL.AddField("name", "");
mySQL.AddField("size", 0L);
mySQL.AddField("content", "");
mySQL.AddField("addTime", DateTime.Now);
db.CreateDb(mySQL);
#endregion
#region
mySQL.Clear();
mySQL.TableName = "HistoryUrl"; ;
mySQL.AddField("Name", "");
mySQL.AddField("Url", "");
mySQL.AddField("Cookie", "");
mySQL.AddField("Postdata", "");
mySQL.AddField("Method", "");
mySQL.AddField("Header", "");
mySQL.AddField("Referer", "");
mySQL.AddField("ContentType", "");
mySQL.AddField("Encoding", "");
mySQL.AddField("IsFav", 0);
mySQL.AddField("Des", "");
mySQL.AddField("MD5", "");
mySQL.AddField("ClickCount", 0);//点击次数
mySQL.AddField("editTime", DateTime.Now);
mySQL.AddField("addTime", DateTime.Now);
if (db.CreateDb(mySQL) == 1)
{
db.ExecuteNonQuery("CREATE INDEX index_H_Url ON HistoryUrl(Url); ");
db.ExecuteNonQuery("CREATE INDEX index_H_MD5 ON HistoryUrl(MD5); ");
}
#endregion
#region
mySQL.Clear();
mySQL.TableName = "Settings";
mySQL.AddField("Name", "");
mySQL.AddField("Value", "");//值
mySQL.AddField("addTime", DateTime.Now);
if (db.CreateDb(mySQL) == 1)
{
db.ExecuteNonQuery("CREATE INDEX index_Name ON Settings(Name); ");
}
#endregion
}
}
/// <summary>
/// 添加历史记录
/// </summary>
/// <param name="path"></param>
/// <param name="content"></param>
public static void AddHistory(string path, string content)
{
new Thread(Start).Start();
void Start()
{
IDbInterface db = CreateDataProvider(dataType);
if (db.ConnDb(History_SQLConn) == 1)
{
var isadd = false;
RyQuickSQL mySQL = new RyQuickSQL("Files");
mySQL.AddField("FilePath", path);
mySQL.AddField("editTime", DateTime.Now);
if (db.ExecuteNonQuery(mySQL.GetUpdateSQL() + " where FilePath=@FilePath", mySQL) == 0)
{
mySQL.AddField("addTime", DateTime.Now);
db.Insert(mySQL);
isadd = true;
}
var ds = db.ReadData("select * from Files where FilePath=@FilePath", mySQL);
if (ds.HaveData())
{
var fileid = ds.GetFirstRowData()["id"].ToInt();
var issame = false;
if (!isadd)
{
var ds_his = db.ReadData("select * from History where fileid=" + fileid + " order by addTime desc limit 1");
if (ds_his.HaveData())
{
if (ds_his.GetFirstRowData()["content"].ToString() == content)
{
issame = true;
}
}
ds_his.Dispose();
}
if (!issame)
{
mySQL.Clear();
mySQL.TableName = "History";
mySQL.AddField("fileid", fileid);
mySQL.AddField("size", content.Length);
mySQL.AddField("content", content);
mySQL.AddField("addTime", DateTime.Now);
db.Insert(mySQL);
}
}
ds.Dispose();
}
db.Free();
}
}
}
}