Here are the examples of the csharp api string.Substring(int) taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.
13016 Examples
19
View Source File : MessageController.cs
License : Apache License 2.0
Project Creator : 0nise
License : Apache License 2.0
Project Creator : 0nise
public static MessageModel main(String message,string fromQQ) {
string resultContent = "\n无数据";
string content = message;
MessageModel messageModel = null;
if (message == null || message == "" || message.Length == 0)
{
messageModel = new MessageModel(sendMessage: MessageConstant.HELP_CONTENT, isAdmin: false, code: "");
return messageModel;
}
resultContent = "\n无数据";
message = executeCodeReplace(message);
message = message.Trim();
if (message.Length == 0 || message == "")
{
messageModel = new MessageModel(sendMessage: MessageConstant.HELP_CONTENT, isAdmin: false, code: "");
return messageModel;
}
else if (message.Contains(MessageConstant.RANDOM_CONTENT_replacedLE)) {
// 标题查询随机文章
message = message.Replace(MessageConstant.RANDOM_CONTENT_replacedLE, "").Trim();
resultContent = DBHelperMySQL.GetContentRandomByreplacedle(message);
// 标题查询随机课程
string clreplacedContent = DBHelperMySQL.getClreplacedRandomByreplacedle(message);
if (clreplacedContent.Length > 0 && !"".Equals(clreplacedContent))
{
resultContent += clreplacedContent;
}
messageModel = new MessageModel(sendMessage: resultContent, isAdmin: false, code: MessageConstant.RANDOM_CONTENT_replacedLE);
}
else if (message.Contains(MessageConstant.DESC_CONTENT_replacedLE)) {
// 标题查询最新文章
message = message.Replace(MessageConstant.DESC_CONTENT_replacedLE, "").Trim();
string clreplacedContent = "";
if (message.Length == 0 || message == "" || "".Equals(message) || message == null)
{
// 调用每日最新
resultContent = DBHelperMySQL.getContentDateByToday();
// 标题查询最新课程
clreplacedContent = DBHelperMySQL.getClreplacedDateByreplacedle("");
}
else
{
resultContent = DBHelperMySQL.getContentDateByreplacedle(message);
clreplacedContent = DBHelperMySQL.getClreplacedDateByreplacedle(message);
}
if (clreplacedContent.Length > 0 && !"".Equals(clreplacedContent))
{
resultContent += clreplacedContent;
}
messageModel = new MessageModel(sendMessage: resultContent, isAdmin: false, code: MessageConstant.DESC_CONTENT_replacedLE);
}
else if (message.Contains(MessageConstant.DESC_CONTENT_AUTHOR)) {
// 作者查询最新文章
message = message.Replace(MessageConstant.DESC_CONTENT_AUTHOR, "").Trim();
resultContent = DBHelperMySQL.getContentDateByAuthor(message);
// 作者查询最新课程
string clreplacedContent = DBHelperMySQL.getClreplacedDateByAuthor(message);
if (clreplacedContent.Length > 0 && !"".Equals(clreplacedContent))
{
resultContent += clreplacedContent;
}
messageModel = new MessageModel(sendMessage: resultContent, isAdmin: false, code: MessageConstant.DESC_CONTENT_AUTHOR);
} else if (message.Contains(MessageConstant.RANDOM_CONTENT_AUTHOR)) {
// 作者查询随机文章
message = message.Replace(MessageConstant.RANDOM_CONTENT_AUTHOR, "").Trim();
resultContent = DBHelperMySQL.getContentRandomByAuthor(message);
// 作者查询随机课程
string clreplacedContent = DBHelperMySQL.getClreplacedRandomByAuthor(message);
if (clreplacedContent.Length > 0 && !"".Equals(clreplacedContent))
{
resultContent += clreplacedContent;
}
messageModel = new MessageModel(sendMessage: resultContent, isAdmin: false, code: MessageConstant.RANDOM_CONTENT_AUTHOR);
}
else if (message.Contains(MessageConstant.DESC_CONTENT_TODAY) || message.Contains(MessageConstant.DESC_CONTENT))
{
// 今日最新
message = message.Replace(MessageConstant.DESC_CONTENT_TODAY, "").Trim();
resultContent = DBHelperMySQL.getContentDateByToday();
string clreplacedContent = DBHelperMySQL.getClreplacedDateByreplacedle("");
if (clreplacedContent.Length > 0 && !"".Equals(clreplacedContent))
{
resultContent += clreplacedContent;
}
messageModel = new MessageModel(sendMessage: resultContent, isAdmin: false, code: MessageConstant.DESC_CONTENT_TODAY);
} else if (message.Contains(MessageConstant.GONG_GAO)) {
// 公告处理
bool flag = DBHelperMySQL.isAdmin(fromQQ);
// 判断是否管理员
if (flag) {
message = message.Replace(MessageConstant.GONG_GAO, "来自i春秋机器人的智能推送\n");
resultContent = message;
messageModel = new MessageModel(sendMessage: resultContent, isAdmin: true, code: MessageConstant.GONG_GAO);
}
else {
resultContent = "您不是管理员!请联系坏蛋,QQ286894635!";
messageModel = new MessageModel(sendMessage: resultContent, isAdmin: false, code: MessageConstant.GONG_GAO);
}
}
else if (message.Contains(MessageConstant.AITE_ALL))
{
// 艾特全体处理
bool flag = DBHelperMySQL.isAdmin(fromQQ);
if (flag)
{
message = message.Replace(MessageConstant.AITE_ALL, "来自i春秋机器人的智能推送\n");
resultContent = message;
messageModel = new MessageModel(sendMessage: resultContent, isAdmin: true, code: MessageConstant.AITE_ALL);
}
else
{
resultContent = "您不是管理员!请联系坏蛋,QQ286894635!";
messageModel = new MessageModel(sendMessage: resultContent, isAdmin: false, code: MessageConstant.AITE_ALL);
}
}
else if (message.Contains(MessageConstant.HELP) || message.Contains(MessageConstant.HELP_TWO))
{
// Help 帮助等指令
resultContent = MessageConstant.HELP_CONTENT;
messageModel = new MessageModel(sendMessage: resultContent, isAdmin: false, code: MessageConstant.HELP_TWO);
} else if (message.Contains(MessageConstant.DESC_VIDEO)) {
// 标题查询最新教程
message = message.Replace(MessageConstant.DESC_VIDEO, "").Trim();
resultContent = DBHelperMySQL.getCourseDateByreplacedle(message);
// 标题查询最新课程
string clreplacedContent = DBHelperMySQL.getClreplacedDateByreplacedle(message);
if (clreplacedContent.Length > 0 && !"".Equals(clreplacedContent))
{
resultContent += clreplacedContent;
}
messageModel = new MessageModel(sendMessage: resultContent, isAdmin: false, code: MessageConstant.DESC_VIDEO);
}
else if (message.Contains(MessageConstant.RANDOM_VIDEO))
{
// 标题查询随机教程
message = message.Replace(MessageConstant.RANDOM_VIDEO, "").Trim();
resultContent = DBHelperMySQL.getCourseRandomByreplacedle(message);
// 标题查询随机课程
string clreplacedContent = DBHelperMySQL.getClreplacedRandomByreplacedle(message);
if (clreplacedContent.Length > 0 && !"".Equals(clreplacedContent))
{
resultContent += clreplacedContent;
}
messageModel = new MessageModel(sendMessage: resultContent, isAdmin: false, code: MessageConstant.RANDOM_VIDEO);
}
else if (message.Contains(MessageConstant.TEST))
{
// 测试命令
resultContent = " [CQ:image,file=photo.jpg]";
messageModel = new MessageModel(sendMessage: resultContent, isAdmin: false, code: MessageConstant.TEST);
} else if (message.Contains(MessageConstant.SELECT_MONEY)) {
string tmpStr = message.Replace(MessageConstant.SELECT_MONEY, "").Trim();
// 判断是否为管理员
bool isAdmin = DBHelperMySQL.isAdmin(fromQQ);
string money = "";
if (tmpStr.Length > 0 && isAdmin)
{
// 查询余额
money = DBHelperMySQL.getBlankMoney(tmpStr);
}
else
{
// 查询余额
money = DBHelperMySQL.getBlankMoney(fromQQ);
}
if (money == "" || money == null || money.Length == 0)
{
resultContent = "没有数据,请联系QQ:758841765 给予昵称QQ等信息。";
}
else
{
resultContent = "\n当前余额为 " + money;
}
messageModel = new MessageModel(sendMessage: resultContent, isAdmin: isAdmin, code: MessageConstant.SELECT_MONEY);
}
else if (message.Contains(MessageConstant.HISTORY_MONEY))
{
// 提现记录
string historyMoney = DBHelperMySQL.getBlankHistory(fromQQ);
// 查询当前余额
string money = DBHelperMySQL.getBlankMoney(fromQQ);
if (money == "" || money == null || money.Length == 0) {
resultContent = "没有数据,请联系QQ:758841765 给予昵称QQ等信息。";
}
else {
resultContent = "\n当前余额为 " + money + "\n";
// 查询历史记录
resultContent += "提现记录\n";
resultContent += "金额\t\t时间\n" + historyMoney;
}
messageModel = new MessageModel(sendMessage: resultContent, isAdmin: false, code: MessageConstant.HISTORY_MONEY);
}
else if (message.Contains(MessageConstant.APPLY_MONEY))
{
// 申请提现
resultContent = "请联系【坏蛋】,QQ号:286894635。\n[CQ:at,qq=286894635]";
messageModel = new MessageModel(sendMessage: resultContent, isAdmin: false, code: MessageConstant.APPLY_MONEY);
} else if (message.Contains(MessageConstant.ABOUT)) {
resultContent = "i春秋社区机器人,研发人员为:0nise,产品设计为:坏蛋!";
messageModel = new MessageModel(sendMessage: resultContent, isAdmin: false, code: MessageConstant.ABOUT);
} else if (message.Contains(MessageConstant.UPDATE_MONEY)) {
// 更新金额
bool isAdmin = DBHelperMySQL.isAdmin(fromQQ);
if (isAdmin) {
try
{
decimal tmpMoney = 0.0M;
// 提现
if (message.Contains(MessageConstant.PUT_FORWARD))
{
int moneyIndex = message.IndexOf(MessageConstant.PUT_FORWARD + ":");
int index = message.IndexOf(MessageConstant.UPDATE_MONEY);
if (moneyIndex >= 0 && index >= 0)
{
decimal money = Convert.ToDecimal(message.Substring(moneyIndex).Replace("提现:", "").Replace(" ", ""));
if (money > tmpMoney)
{
string qq = message.Replace(message.Substring(moneyIndex), "").Replace(MessageConstant.UPDATE_MONEY, "").Replace(" ", "");
resultContent = DBHelperMySQL.updateBlank(qq, money,"0");
}
else
{
resultContent = "提现金额必须大于0!";
}
}
}
// 加钱
else if (message.Contains(MessageConstant.ADD_MONEY))
{
int moneyIndex = message.IndexOf(MessageConstant.ADD_MONEY + ":");
int index = message.IndexOf(MessageConstant.ADD_MONEY);
if (moneyIndex >= 0 && index >= 0)
{
decimal money = Convert.ToDecimal(message.Substring(moneyIndex).Replace("加钱:", "").Replace(" ", ""));
if (money > tmpMoney)
{
string qq = message.Replace(message.Substring(moneyIndex), "").Replace(MessageConstant.UPDATE_MONEY, "").Replace(" ", "");
resultContent = DBHelperMySQL.updateBlank(qq, money,"1");
}
else
{
resultContent = "加钱金额必须大于0!";
}
}
}
}
catch (Exception)
{
resultContent = "更新失败。";
}
}
else
{
resultContent = "您不是管理员!请联系坏蛋,QQ286894635!";
}
messageModel = new MessageModel(sendMessage: resultContent, isAdmin: isAdmin, code: MessageConstant.UPDATE_MONEY);
}
else if (message.Contains(MessageConstant.TODAY_COUNT))
{
// 今日使用数量
bool isAdmin = DBHelperMySQL.isAdmin(fromQQ);
if (isAdmin)
{
int count = DBHelperMySQL.getToday();
resultContent = "今日使用人数达"+count+"人";
}
else
{
resultContent = "您不是管理员!请联系坏蛋,QQ286894635!";
}
messageModel = new MessageModel(sendMessage: resultContent, isAdmin: isAdmin, code: MessageConstant.TODAY_COUNT);
}
else if (message.Contains(MessageConstant.USER_TOTAL))
{
// 总人数
// 判定是否为管理员
bool isAdmin = DBHelperMySQL.isAdmin(fromQQ);
if (isAdmin)
{
int count = DBHelperMySQL.getUserTotal();
DateTime dt = DateTime.Now;
// 获取日期
string date = dt.ToLongDateString().ToString();
resultContent = "截止" + date + ",机器人历史使用人数达"+count+"人。";
}
else
{
resultContent = "您不是管理员!请联系坏蛋,QQ286894635!";
}
messageModel = new MessageModel(sendMessage: resultContent, isAdmin: isAdmin, code: MessageConstant.USER_TOTAL);
}
else if (message.Contains(MessageConstant.THIS_WEEK))
{
// 七日使用
// 判定是否为管理员
bool isAdmin = DBHelperMySQL.isAdmin(fromQQ);
if (isAdmin)
{
Hashtable hashtable = DBHelperMySQL.getThisWeek();
resultContent = "";
foreach (Object item in hashtable.Keys)
{
string dateData = item.ToString();
string count = hashtable[item].ToString();
resultContent += dateData + " 使用人数为:" + count + "人;\n";
}
}
else
{
resultContent = "您不是管理员!请联系坏蛋,QQ286894635!";
}
messageModel = new MessageModel(sendMessage: resultContent, isAdmin: isAdmin, code: MessageConstant.USER_TOTAL);
}
else if (message.Contains(MessageConstant.QUN_TOTAL))
{
// 群数量
// 判定是否为管理员
bool isAdmin = DBHelperMySQL.isAdmin(fromQQ);
if (isAdmin)
{
resultContent = "群数量";
}
else
{
resultContent = "您不是管理员!请联系坏蛋,QQ286894635!";
}
messageModel = new MessageModel(sendMessage: resultContent, isAdmin: isAdmin, code: MessageConstant.QUN_TOTAL);
}
else if (message.Contains(MessageConstant.MONEY_DESC))
{
// 财富榜
bool isAdmin = DBHelperMySQL.isAdmin(fromQQ);
// 检索是否为做作家团
if (DBHelperMySQL.exitsUser(fromQQ) || isAdmin)
{
resultContent = DBHelperMySQL.Top30Money();
}
else
{
resultContent = "您不是作家团成员!";
}
messageModel = new MessageModel(sendMessage: resultContent, isAdmin: isAdmin, code: MessageConstant.MONEY_DESC);
}
else
{
// 其他内容
resultContent = MessageConstant.HELP_CONTENT;
messageModel = new MessageModel(sendMessage: resultContent, isAdmin: false, code: "");
}
if (resultContent == "" || resultContent == null || resultContent.Length == 0) {
messageModel.SendMessage = "\n无数据";
messageModel = new MessageModel(sendMessage: resultContent, isAdmin: false, code: MessageConstant.HELP);
}
// 记录用户操作数据
DBHelperMySQL.addUserData(fromQQ, content, resultContent);
return messageModel;
}
19
View Source File : MessageController.cs
License : Apache License 2.0
Project Creator : 0nise
License : Apache License 2.0
Project Creator : 0nise
public static MessageModel main(String message,string fromQQ) {
string resultContent = "\n无数据";
string content = message;
MessageModel messageModel = null;
if (message == null || message == "" || message.Length == 0)
{
messageModel = new MessageModel(sendMessage: MessageConstant.HELP_CONTENT, isAdmin: false, code: "");
return messageModel;
}
resultContent = "\n无数据";
message = executeCodeReplace(message);
message = message.Trim();
if (message.Length == 0 || message == "")
{
messageModel = new MessageModel(sendMessage: MessageConstant.HELP_CONTENT, isAdmin: false, code: "");
return messageModel;
}
else if (message.Contains(MessageConstant.RANDOM_CONTENT_replacedLE)) {
// 标题查询随机文章
message = message.Replace(MessageConstant.RANDOM_CONTENT_replacedLE, "").Trim();
resultContent = DBHelperMySQL.GetContentRandomByreplacedle(message);
// 标题查询随机课程
string clreplacedContent = DBHelperMySQL.getClreplacedRandomByreplacedle(message);
if (clreplacedContent.Length > 0 && !"".Equals(clreplacedContent))
{
resultContent += clreplacedContent;
}
messageModel = new MessageModel(sendMessage: resultContent, isAdmin: false, code: MessageConstant.RANDOM_CONTENT_replacedLE);
}
else if (message.Contains(MessageConstant.DESC_CONTENT_replacedLE)) {
// 标题查询最新文章
message = message.Replace(MessageConstant.DESC_CONTENT_replacedLE, "").Trim();
string clreplacedContent = "";
if (message.Length == 0 || message == "" || "".Equals(message) || message == null)
{
// 调用每日最新
resultContent = DBHelperMySQL.getContentDateByToday();
// 标题查询最新课程
clreplacedContent = DBHelperMySQL.getClreplacedDateByreplacedle("");
}
else
{
resultContent = DBHelperMySQL.getContentDateByreplacedle(message);
clreplacedContent = DBHelperMySQL.getClreplacedDateByreplacedle(message);
}
if (clreplacedContent.Length > 0 && !"".Equals(clreplacedContent))
{
resultContent += clreplacedContent;
}
messageModel = new MessageModel(sendMessage: resultContent, isAdmin: false, code: MessageConstant.DESC_CONTENT_replacedLE);
}
else if (message.Contains(MessageConstant.DESC_CONTENT_AUTHOR)) {
// 作者查询最新文章
message = message.Replace(MessageConstant.DESC_CONTENT_AUTHOR, "").Trim();
resultContent = DBHelperMySQL.getContentDateByAuthor(message);
// 作者查询最新课程
string clreplacedContent = DBHelperMySQL.getClreplacedDateByAuthor(message);
if (clreplacedContent.Length > 0 && !"".Equals(clreplacedContent))
{
resultContent += clreplacedContent;
}
messageModel = new MessageModel(sendMessage: resultContent, isAdmin: false, code: MessageConstant.DESC_CONTENT_AUTHOR);
} else if (message.Contains(MessageConstant.RANDOM_CONTENT_AUTHOR)) {
// 作者查询随机文章
message = message.Replace(MessageConstant.RANDOM_CONTENT_AUTHOR, "").Trim();
resultContent = DBHelperMySQL.getContentRandomByAuthor(message);
// 作者查询随机课程
string clreplacedContent = DBHelperMySQL.getClreplacedRandomByAuthor(message);
if (clreplacedContent.Length > 0 && !"".Equals(clreplacedContent))
{
resultContent += clreplacedContent;
}
messageModel = new MessageModel(sendMessage: resultContent, isAdmin: false, code: MessageConstant.RANDOM_CONTENT_AUTHOR);
}
else if (message.Contains(MessageConstant.DESC_CONTENT_TODAY) || message.Contains(MessageConstant.DESC_CONTENT))
{
// 今日最新
message = message.Replace(MessageConstant.DESC_CONTENT_TODAY, "").Trim();
resultContent = DBHelperMySQL.getContentDateByToday();
string clreplacedContent = DBHelperMySQL.getClreplacedDateByreplacedle("");
if (clreplacedContent.Length > 0 && !"".Equals(clreplacedContent))
{
resultContent += clreplacedContent;
}
messageModel = new MessageModel(sendMessage: resultContent, isAdmin: false, code: MessageConstant.DESC_CONTENT_TODAY);
} else if (message.Contains(MessageConstant.GONG_GAO)) {
// 公告处理
bool flag = DBHelperMySQL.isAdmin(fromQQ);
// 判断是否管理员
if (flag) {
message = message.Replace(MessageConstant.GONG_GAO, "来自i春秋机器人的智能推送\n");
resultContent = message;
messageModel = new MessageModel(sendMessage: resultContent, isAdmin: true, code: MessageConstant.GONG_GAO);
}
else {
resultContent = "您不是管理员!请联系坏蛋,QQ286894635!";
messageModel = new MessageModel(sendMessage: resultContent, isAdmin: false, code: MessageConstant.GONG_GAO);
}
}
else if (message.Contains(MessageConstant.AITE_ALL))
{
// 艾特全体处理
bool flag = DBHelperMySQL.isAdmin(fromQQ);
if (flag)
{
message = message.Replace(MessageConstant.AITE_ALL, "来自i春秋机器人的智能推送\n");
resultContent = message;
messageModel = new MessageModel(sendMessage: resultContent, isAdmin: true, code: MessageConstant.AITE_ALL);
}
else
{
resultContent = "您不是管理员!请联系坏蛋,QQ286894635!";
messageModel = new MessageModel(sendMessage: resultContent, isAdmin: false, code: MessageConstant.AITE_ALL);
}
}
else if (message.Contains(MessageConstant.HELP) || message.Contains(MessageConstant.HELP_TWO))
{
// Help 帮助等指令
resultContent = MessageConstant.HELP_CONTENT;
messageModel = new MessageModel(sendMessage: resultContent, isAdmin: false, code: MessageConstant.HELP_TWO);
} else if (message.Contains(MessageConstant.DESC_VIDEO)) {
// 标题查询最新教程
message = message.Replace(MessageConstant.DESC_VIDEO, "").Trim();
resultContent = DBHelperMySQL.getCourseDateByreplacedle(message);
// 标题查询最新课程
string clreplacedContent = DBHelperMySQL.getClreplacedDateByreplacedle(message);
if (clreplacedContent.Length > 0 && !"".Equals(clreplacedContent))
{
resultContent += clreplacedContent;
}
messageModel = new MessageModel(sendMessage: resultContent, isAdmin: false, code: MessageConstant.DESC_VIDEO);
}
else if (message.Contains(MessageConstant.RANDOM_VIDEO))
{
// 标题查询随机教程
message = message.Replace(MessageConstant.RANDOM_VIDEO, "").Trim();
resultContent = DBHelperMySQL.getCourseRandomByreplacedle(message);
// 标题查询随机课程
string clreplacedContent = DBHelperMySQL.getClreplacedRandomByreplacedle(message);
if (clreplacedContent.Length > 0 && !"".Equals(clreplacedContent))
{
resultContent += clreplacedContent;
}
messageModel = new MessageModel(sendMessage: resultContent, isAdmin: false, code: MessageConstant.RANDOM_VIDEO);
}
else if (message.Contains(MessageConstant.TEST))
{
// 测试命令
resultContent = " [CQ:image,file=photo.jpg]";
messageModel = new MessageModel(sendMessage: resultContent, isAdmin: false, code: MessageConstant.TEST);
} else if (message.Contains(MessageConstant.SELECT_MONEY)) {
// 查询余额
string money = DBHelperMySQL.getBlankMoney(fromQQ);
if (money == "" || money == null || money.Length == 0)
{
resultContent = "没有数据,请联系QQ:758841765 给予昵称QQ等信息。";
}
else
{
resultContent = "\n当前余额为 " + money;
}
messageModel = new MessageModel(sendMessage: resultContent, isAdmin: false, code: MessageConstant.SELECT_MONEY);
}
else if (message.Contains(MessageConstant.HISTORY_MONEY))
{
// 提现记录
string historyMoney = DBHelperMySQL.getBlankHistory(fromQQ);
// 查询当前余额
string money = DBHelperMySQL.getBlankMoney(fromQQ);
if (money == "" || money == null || money.Length == 0) {
resultContent = "没有数据,请联系QQ:758841765 给予昵称QQ等信息。";
}
else {
resultContent = "\n当前余额为 " + money + "\n";
// 查询历史记录
resultContent += "提现记录\n";
resultContent += "金额\t\t时间\n" + historyMoney;
}
messageModel = new MessageModel(sendMessage: resultContent, isAdmin: false, code: MessageConstant.HISTORY_MONEY);
}
else if (message.Contains(MessageConstant.APPLY_MONEY))
{
// 申请提现
resultContent = "请联系【坏蛋】,QQ号:286894635。\n[CQ:at,qq=286894635]";
messageModel = new MessageModel(sendMessage: resultContent, isAdmin: false, code: MessageConstant.APPLY_MONEY);
} else if (message.Contains(MessageConstant.ABOUT)) {
resultContent = "i春秋社区机器人,研发人员为:0nise!";
messageModel = new MessageModel(sendMessage: resultContent, isAdmin: false, code: MessageConstant.ABOUT);
} else if (message.Contains(MessageConstant.UPDATE_MONEY)) {
// 更新金额
bool isAdmin = DBHelperMySQL.isAdmin(fromQQ);
if (isAdmin) {
try
{
int moneyIndex = message.IndexOf("提现:");
int index = message.IndexOf(MessageConstant.UPDATE_MONEY);
if (moneyIndex >= 0 && index >= 0)
{
decimal money = Convert.ToDecimal(message.Substring(moneyIndex).Replace("提现:", "").Replace(" ",""));
string qq = message.Replace(message.Substring(moneyIndex), "").Replace(MessageConstant.UPDATE_MONEY, "").Replace(" ", "");
resultContent = DBHelperMySQL.updateBlank(qq,money);
}
}
catch (Exception)
{
resultContent = "更新失败。";
}
}
else
{
resultContent = "您不是管理员!请联系坏蛋,QQ286894635!";
}
messageModel = new MessageModel(sendMessage: resultContent, isAdmin: isAdmin, code: MessageConstant.UPDATE_MONEY);
}
else if (message.Contains(MessageConstant.TODAY_COUNT))
{
// 今日使用数量
bool isAdmin = DBHelperMySQL.isAdmin(fromQQ);
if (isAdmin)
{
int count = DBHelperMySQL.getToday();
resultContent = "今日使用人数达"+count+"人";
}
else
{
resultContent = "您不是管理员!请联系坏蛋,QQ286894635!";
}
messageModel = new MessageModel(sendMessage: resultContent, isAdmin: isAdmin, code: MessageConstant.TODAY_COUNT);
}
else if (message.Contains(MessageConstant.USER_TOTAL))
{
// 总人数
// 判定是否为管理员
bool isAdmin = DBHelperMySQL.isAdmin(fromQQ);
if (isAdmin)
{
int count = DBHelperMySQL.getUserTotal();
DateTime dt = DateTime.Now;
// 获取日期
string date = dt.ToLongDateString().ToString();
resultContent = "截止" + date + ",机器人历史使用人数达"+count+"人。";
}
else
{
resultContent = "您不是管理员!请联系坏蛋,QQ286894635!";
}
messageModel = new MessageModel(sendMessage: resultContent, isAdmin: isAdmin, code: MessageConstant.USER_TOTAL);
}
else if (message.Contains(MessageConstant.THIS_WEEK))
{
// 七日使用
// 判定是否为管理员
bool isAdmin = DBHelperMySQL.isAdmin(fromQQ);
if (isAdmin)
{
Hashtable hashtable = DBHelperMySQL.getThisWeek();
resultContent = "";
foreach (Object item in hashtable.Keys)
{
string dateData = item.ToString();
string count = hashtable[item].ToString();
resultContent += dateData + " 使用人数为:" + count + "人;\n";
}
}
else
{
resultContent = "您不是管理员!请联系坏蛋,QQ286894635!";
}
messageModel = new MessageModel(sendMessage: resultContent, isAdmin: isAdmin, code: MessageConstant.USER_TOTAL);
}
else if (message.Contains(MessageConstant.QUN_TOTAL))
{
// 群数量
// 判定是否为管理员
bool isAdmin = DBHelperMySQL.isAdmin(fromQQ);
if (isAdmin)
{
resultContent = "群数量";
}
else
{
resultContent = "您不是管理员!请联系坏蛋,QQ286894635!";
}
messageModel = new MessageModel(sendMessage: resultContent, isAdmin: isAdmin, code: MessageConstant.QUN_TOTAL);
}
else
{
// 其他内容
resultContent = MessageConstant.HELP_CONTENT;
messageModel = new MessageModel(sendMessage: resultContent, isAdmin: false, code: "");
}
if (resultContent == "" || resultContent == null || resultContent.Length == 0) {
messageModel.SendMessage = "\n无数据";
messageModel = new MessageModel(sendMessage: resultContent, isAdmin: false, code: MessageConstant.HELP);
}
// 记录用户操作数据
DBHelperMySQL.addUserData(fromQQ, content, resultContent);
return messageModel;
}
19
View Source File : CelesteNetClientRC.cs
License : MIT License
Project Creator : 0x0ade
License : MIT License
Project Creator : 0x0ade
public static NameValueCollection ParseQueryString(string url) {
NameValueCollection nvc = new();
int indexOfSplit = url.IndexOf('?');
if (indexOfSplit == -1)
return nvc;
url = url.Substring(indexOfSplit + 1);
string[] args = url.Split('&');
foreach (string arg in args) {
indexOfSplit = arg.IndexOf('=');
if (indexOfSplit == -1)
continue;
nvc[arg.Substring(0, indexOfSplit)] = arg.Substring(indexOfSplit + 1);
}
return nvc;
}
19
View Source File : ChatCommands.cs
License : MIT License
Project Creator : 0x0ade
License : MIT License
Project Creator : 0x0ade
public virtual ChatCMDArg Parse(string raw, int index) {
RawText = raw;
if (index < 0 || raw.Length <= index) {
String = "";
Index = 0;
return this;
}
String = raw.Substring(index);
Index = index;
return Parse();
}
19
View Source File : Frontend.cs
License : MIT License
Project Creator : 0x0ade
License : MIT License
Project Creator : 0x0ade
public NameValueCollection ParseQueryString(string url) {
NameValueCollection nvc = new();
int indexOfSplit = url.IndexOf('?');
if (indexOfSplit == -1)
return nvc;
url = url.Substring(indexOfSplit + 1);
string[] args = url.Split('&');
foreach (string arg in args) {
indexOfSplit = arg.IndexOf('=');
if (indexOfSplit == -1)
continue;
nvc[arg.Substring(0, indexOfSplit)] = arg.Substring(indexOfSplit + 1);
}
return nvc;
}
19
View Source File : GhostEmote.cs
License : MIT License
Project Creator : 0x0ade
License : MIT License
Project Creator : 0x0ade
public static Atlas GetIconAtlas(ref string emote) {
if (emote.StartsWith("i:")) {
emote = emote.Substring(2);
return GFX.Gui ?? FallbackIconAtlas;
}
if (emote.StartsWith("g:")) {
emote = emote.Substring(2);
return GFX.Game ?? FallbackIconAtlas;
}
if (emote.StartsWith("p:")) {
emote = emote.Substring(2);
return GFX.Portraits ?? FallbackIconAtlas;
}
return null;
}
19
View Source File : CelesteNetPlayerSession.cs
License : MIT License
Project Creator : 0x0ade
License : MIT License
Project Creator : 0x0ade
public void Start<T>(DataHandshakeClient<T> handshake) where T : DataHandshakeClient<T> {
Logger.Log(LogLevel.INF, "playersession", $"Startup #{ID} {Con}");
using (Server.ConLock.W())
Server.Sessions.Add(this);
Server.PlayersByCon[Con] = this;
Server.PlayersByID[ID] = this;
if (Server.UserData.TryLoad(UID, out BanInfo ban) && !ban.Reason.IsNullOrEmpty()) {
Con.Send(new DataDisconnectReason { Text = string.Format(Server.Settings.MessageIPBan, ban.Reason) });
Con.Send(new DataInternalDisconnect());
return;
}
string name = handshake.Name;
if (name.StartsWith("#")) {
string uid = Server.UserData.GetUID(name.Substring(1));
if (uid.IsNullOrEmpty()) {
Con.Send(new DataDisconnectReason { Text = Server.Settings.MessageInvalidUserKey });
Con.Send(new DataInternalDisconnect());
return;
}
UID = uid;
if (!Server.UserData.TryLoad(uid, out BasicUserInfo userinfo)) {
Con.Send(new DataDisconnectReason { Text = Server.Settings.MessageUserInfoMissing });
Con.Send(new DataInternalDisconnect());
return;
}
name = userinfo.Name.Sanitize(IllegalNameChars, true);
if (name.Length > Server.Settings.MaxNameLength)
name = name.Substring(0, Server.Settings.MaxNameLength);
if (name.IsNullOrEmpty())
name = "Ghost";
if (Server.UserData.TryLoad(UID, out ban) && !ban.Reason.IsNullOrEmpty()) {
Con.Send(new DataDisconnectReason { Text = string.Format(Server.Settings.MessageBan, name, ban.Reason) });
Con.Send(new DataInternalDisconnect());
return;
}
} else {
if (Server.Settings.AuthOnly) {
Con.Send(new DataDisconnectReason { Text = Server.Settings.MessageAuthOnly });
Con.Send(new DataInternalDisconnect());
return;
}
name = name.Sanitize(IllegalNameChars);
if (name.Length > Server.Settings.MaxGuestNameLength)
name = name.Substring(0, Server.Settings.MaxGuestNameLength);
if (name.IsNullOrEmpty())
name = "Guest";
}
if (name.Length > Server.Settings.MaxNameLength)
name = name.Substring(0, Server.Settings.MaxNameLength);
string nameSpace = name;
name = name.Replace(" ", "");
string fullNameSpace = nameSpace;
string fullName = name;
using (Server.ConLock.R()) {
int i = 1;
while (true) {
bool conflict = false;
foreach (CelesteNetPlayerSession other in Server.Sessions)
if (conflict = other.PlayerInfo?.FullName == fullName)
break;
if (!conflict)
break;
i++;
fullNameSpace = $"{nameSpace}#{i}";
fullName = $"{name}#{i}";
}
}
string displayName = fullNameSpace;
using (Stream? avatar = Server.UserData.ReadFile(UID, "avatar.png")) {
if (avatar != null) {
AvatarEmoji = new() {
ID = $"celestenet_avatar_{ID}_",
Data = avatar.ToBytes()
};
displayName = $":{AvatarEmoji.ID}: {fullNameSpace}";
}
}
DataPlayerInfo playerInfo = new() {
ID = ID,
Name = name,
FullName = fullName,
DisplayName = displayName
};
playerInfo.Meta = playerInfo.GenerateMeta(Server.Data);
Server.Data.SetRef(playerInfo);
Logger.Log(LogLevel.INF, "playersession", playerInfo.ToString());
Con.Send(new DataHandshakeServer {
PlayerInfo = playerInfo
});
Con.Send(AvatarEmoji);
DataInternalBlob? blobPlayerInfo = DataInternalBlob.For(Server.Data, playerInfo);
DataInternalBlob? blobAvatarEmoji = DataInternalBlob.For(Server.Data, AvatarEmoji);
using (Server.ConLock.R())
foreach (CelesteNetPlayerSession other in Server.Sessions) {
if (other == this)
continue;
DataPlayerInfo? otherInfo = other.PlayerInfo;
if (otherInfo == null)
continue;
other.Con.Send(blobPlayerInfo);
other.Con.Send(blobAvatarEmoji);
Con.Send(otherInfo);
Con.Send(other.AvatarEmoji);
foreach (DataType bound in Server.Data.GetBoundRefs(otherInfo))
if (!bound.Is<MetaPlayerPrivateState>(Server.Data) || other.Channel.ID == 0)
Con.Send(bound);
}
ResendPlayerStates();
Server.InvokeOnSessionStart(this);
}
19
View Source File : Frontend.cs
License : MIT License
Project Creator : 0x0ade
License : MIT License
Project Creator : 0x0ade
private void HandleRequest(HttpRequestEventArgs c) {
Logger.Log(LogLevel.VVV, "frontend", $"{c.Request.RemoteEndPoint} requested: {c.Request.RawUrl}");
string url = c.Request.RawUrl;
int indexOfSplit = url.IndexOf('?');
if (indexOfSplit != -1)
url = url.Substring(0, indexOfSplit);
RCEndpoint? endpoint =
EndPoints.FirstOrDefault(ep => ep.Path == c.Request.RawUrl) ??
EndPoints.FirstOrDefault(ep => ep.Path == url) ??
EndPoints.FirstOrDefault(ep => ep.Path.ToLowerInvariant() == c.Request.RawUrl.ToLowerInvariant()) ??
EndPoints.FirstOrDefault(ep => ep.Path.ToLowerInvariant() == url.ToLowerInvariant());
if (endpoint == null) {
RespondContent(c, "frontend/" + url.Substring(1));
return;
}
c.Response.Headers.Set("Cache-Control", "no-store, max-age=0, s-maxage=0, no-cache, no-transform");
if (endpoint.Auth && !IsAuthorized(c)) {
c.Response.StatusCode = (int) HttpStatusCode.Unauthorized;
RespondJSON(c, new {
Error = "Unauthorized."
});
return;
}
endpoint.Handle(this, c);
}
19
View Source File : XnaToFnaUtil.Processor.cs
License : zlib License
Project Creator : 0x0ade
License : zlib License
Project Creator : 0x0ade
public void SetupHooks() {
// To use XnaToFnaGame properly, the actual game override needs to call XnaToFnaGame::.ctor as "base" instead.
Modder.RelinkMap["System.Void Microsoft.Xna.Framework.Game::.ctor()"] =
new RelinkMapEntry("XnaToFna.XnaToFnaGame", "System.Void .ctor()");
Modder.ForceCallMap["System.Void XnaToFna.XnaToFnaGame::.ctor()"] = OpCodes.Call;
foreach (MethodInfo method in typeof(XnaToFnaGame).GetMethods(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.DeclaredOnly)) {
Modder.RelinkMap[method.GetFindableID(type: "Microsoft.Xna.Framework.Game")] =
new RelinkMapEntry("XnaToFna.XnaToFnaGame", method.GetFindableID(withType: false));
Modder.ForceCallMap[method.GetFindableID(withType: true)] = OpCodes.Call;
}
// XNA games expect a WinForms handle. Give it a "proxy" handle instead.
if (HookCompat) {
Modder.RelinkMap["System.IntPtr Microsoft.Xna.Framework.GameWindow::get_Handle()"] =
new RelinkMapEntry("XnaToFna.XnaToFnaHelper", "System.IntPtr GetProxyFormHandle(Microsoft.Xna.Framework.GameWindow)");
}
// X360 games can be larger than the screen. Allow the user to "fix" this by forcing a display resolution via env vars.
if (HookHacks) {
Modder.RelinkMap["System.Void Microsoft.Xna.Framework.GraphicsDeviceManager::ApplyChanges()"] =
new RelinkMapEntry("XnaToFna.XnaToFnaHelper", "System.Void ApplyChanges(Microsoft.Xna.Framework.GraphicsDeviceManager)");
}
// Let's just completely wreck everything.
foreach (Type type in typeof(Form).replacedembly.GetTypes()) {
string name = type.FullName;
// Subsreplacedute WinForms for ProxyForms
if (HookCompat && name.StartsWith("XnaToFna.ProxyForms."))
Modder.RelinkMap["System.Windows.Forms." + name.Substring(9 + 11)] = name;
// Subsreplacedute common Drawing clreplacedes (f.e. Rectangle) with our own for Drawing-less environments (f.e. Android)
else if (HookCompat && name.StartsWith("XnaToFna.ProxyDrawing."))
Modder.RelinkMap["System.Drawing." + name.Substring(9 + 13)] = name;
// Some XNA games use DInput... let's just subsreplacedute all DInput references with our ProxyDInput.
else if (name.StartsWith("XnaToFna.ProxyDInput."))
Modder.RelinkMap[/* no namespace */ name.Substring(9 + 12)] = name;
// Some X360 games use Microsoft.Xna.Framework.Xdk; let's just stub whatever's required in XTF.
else if (name.StartsWith("XnaToFna.StubXDK.")) {
string nameXDK = "Microsoft.Xna.Framework." + name.Substring(9 + 8);
Modder.RelinkMap[nameXDK] = name;
// Unfortunately, the signatures refer to GamerServices, while XnaToFna itself can't refer to that.
// Let's abuse the MonoModHook attribtue.
foreach (MethodInfo method in type.GetMethods(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static)) {
MonoModHook hook = method.GetCustomAttribute<MonoModHook>();
if (hook != null) {
Modder.RelinkMap[hook.FindableID] = new RelinkMapEntry(name, method.GetFindableID(withType: false));
}
}
foreach (ConstructorInfo ctor in type.GetConstructors(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static)) {
MonoModHook hook = ctor.GetCustomAttribute<MonoModHook>();
if (hook != null) {
Modder.RelinkMap[hook.FindableID] = new RelinkMapEntry(name, ctor.GetFindableID(withType: false));
}
}
}
}
if (HookHacks)
Modder.RelinkMap["System.Boolean Microsoft.Xna.Framework.GamerServices.Guide::get_IsTrialMode()"] =
new RelinkMapEntry("XnaToFna.XnaToFnaHelper", "System.IntPtr get_IsTrialMode()");
if (HookBinaryFormatter) {
Modder.RelinkMap["System.Void System.Runtime.Serialization.Formatters.Binary.BinaryFormatter::.ctor()"] =
new RelinkMapEntry("XnaToFna.BinaryFormatterHelper", "System.Runtime.Serialization.Formatters.Binary.BinaryFormatter Create()");
// The longest relink mapping ever seen...
Modder.RelinkMap["System.Void System.Runtime.Serialization.Formatters.Binary.BinaryFormatter::.ctor(System.Runtime.Serialization.ISurrogateSelector,System.Runtime.Serialization.StreamingContext)"] =
new RelinkMapEntry("XnaToFna.BinaryFormatterHelper", "System.Runtime.Serialization.Formatters.Binary.BinaryFormatter Create(System.Runtime.Serialization.ISurrogateSelector,System.Runtime.Serialization.StreamingContext)");
Modder.RelinkMap["System.Runtime.Serialization.SerializationBinder System.Runtime.Serialization.Formatters.Binary.BinaryFormatter::get_Binder()"] =
new RelinkMapEntry("XnaToFna.BinaryFormatterHelper", "System.Runtime.Serialization.SerializationBinder get_Binder(System.Runtime.Serialization.Formatters.Binary.BinaryFormatter)");
Modder.RelinkMap["System.Void System.Runtime.Serialization.Formatters.Binary.BinaryFormatter::set_Binder(System.Runtime.Serialization.SerializationBinder)"] =
new RelinkMapEntry("XnaToFna.BinaryFormatterHelper", "System.Void set_Binder(System.Runtime.Serialization.Formatters.Binary.BinaryFormatter,System.Runtime.Serialization.SerializationBinder)");
}
if (HookReflection) {
Modder.RelinkMap["System.Reflection.FieldInfo System.Type::GetField(System.String,System.Reflection.BindingFlags)"] =
new RelinkMapEntry("XnaToFna.ProxyReflection.FieldInfoHelper", "System.Reflection.FieldInfo GetField(System.Type,System.String,System.Reflection.BindingFlags)");
Modder.RelinkMap["System.Reflection.FieldInfo System.Type::GetField(System.String)"] =
new RelinkMapEntry("XnaToFna.ProxyReflection.FieldInfoHelper", "System.Reflection.FieldInfo GetField(System.Type,System.String)");
}
// X360 uses the ".NET Compact Framework", which actually ships with some additional stuff...
Modder.RelinkMap["System.Void System.Threading.Thread::SetProcessorAffinity(System.Int32[])"] =
new RelinkMapEntry("XnaToFna.X360Helper", "System.Void SetProcessorAffinity(System.Threading.Thread,System.Int32[])");
}
19
View Source File : XnaToFnaUtil.cs
License : zlib License
Project Creator : 0x0ade
License : zlib License
Project Creator : 0x0ade
public void RestoreBackup(string root, string origRoot) {
Log($"[RestoreBackup] Restoring from {origRoot} to {root}");
foreach (string origPath in Directory.EnumerateFiles(origRoot, "*", SearchOption.AllDirectories)) {
Directory.CreateDirectory(Path.GetDirectoryName(root + origPath.Substring(origRoot.Length)));
File.Copy(origPath, root + origPath.Substring(origRoot.Length), true);
}
}
19
View Source File : Program.cs
License : MIT License
Project Creator : 0x1000000
License : MIT License
Project Creator : 0x1000000
private static string TypeTag(string typeName)
{
if (!typeName.StartsWith("Expr"))
{
throw new Exception("Incorrect typename prefix");
}
return typeName.Substring(4);
}
19
View Source File : GmicPipeServer.cs
License : GNU General Public License v3.0
Project Creator : 0xC0000054
License : GNU General Public License v3.0
Project Creator : 0xC0000054
private static bool TryGetValue(string item, string prefix, out string value)
{
if (item != null && item.StartsWith(prefix, StringComparison.Ordinal))
{
value = item.Substring(prefix.Length);
return !string.IsNullOrWhiteSpace(value);
}
value = null;
return false;
}
19
View Source File : CommandLineParser.cs
License : MIT License
Project Creator : 0xd4d
License : MIT License
Project Creator : 0xd4d
static bool TryParseToken(string value, out uint tokenLo, out uint tokenHi) {
int index = value.IndexOf('-');
if (index >= 0) {
var lo = value.Substring(0, index);
var hi = value.Substring(index + 1);
if (TryParseToken(lo, out tokenLo) && TryParseToken(hi, out tokenHi))
return true;
}
else {
if (TryParseToken(value, out tokenLo)) {
tokenHi = tokenLo;
return true;
}
}
tokenLo = 0;
tokenHi = 0;
return false;
}
19
View Source File : Program.cs
License : MIT License
Project Creator : 0xd4d
License : MIT License
Project Creator : 0xd4d
static string GetTypeName(string fullname) {
int index = fullname.LastIndexOfAny(typeSeps);
if (index >= 0)
fullname = fullname.Substring(index + 1);
return fullname;
}
19
View Source File : Program.cs
License : GNU General Public License v3.0
Project Creator : 0xthirteen
License : GNU General Public License v3.0
Project Creator : 0xthirteen
static void Main(string[] args)
{
if (args.Length < 2)
{
Usage();
return;
}
var arguments = new Dictionary<string, string>();
foreach (string argument in args)
{
int idx = argument.IndexOf('=');
if (idx > 0)
arguments[argument.Substring(0, idx)] = argument.Substring(idx + 1);
}
string username = "";
string preplacedword = "";
if (arguments.ContainsKey("username"))
{
if (!arguments.ContainsKey("preplacedword"))
{
Usage();
return;
}
else
{
username = arguments["username"];
preplacedword = arguments["preplacedword"];
}
}
if (arguments.ContainsKey("preplacedword") && !arguments.ContainsKey("username"))
{
Usage();
return;
}
if (arguments.ContainsKey("computername"))
{
string[] computerNames = arguments["computername"].Split(',');
string eventName = "Debug";
string location = "local";
string droplocation = @"C:\Windows\Temp";
string wnamespace = "root\\CIMv2";
string filename = string.Empty;
string valuename = string.Empty;
string keypath = string.Empty;
string clreplacedname = string.Empty;
foreach (string computerName in computerNames)
{
if (arguments.ContainsKey("eventname"))
{
eventName = arguments["eventname"];
}
if (arguments.ContainsKey("location"))
{
location = arguments["location"];
}
if (arguments.ContainsKey("droplocation"))
{
droplocation = arguments["droplocation"];
}
if (arguments.ContainsKey("filename"))
{
filename = arguments["filename"];
}
if (arguments.ContainsKey("clreplacedname"))
{
clreplacedname = arguments["clreplacedname"];
}
if (arguments.ContainsKey("keypath"))
{
keypath = arguments["keypath"];
}
if (arguments.ContainsKey("valuename"))
{
valuename = arguments["valuename"];
}
if (arguments.ContainsKey("wminamespace"))
{
wnamespace = arguments["wminamespace"];
}
if (arguments.ContainsKey("writetype"))
{
if (arguments["writetype"].ToLower() == "wmi")
{
GetFileContent(location, droplocation, filename, "flat");
WriteToFileWMI(computerName, eventName, username, preplacedword);
}
else if (arguments["writetype"].ToLower() == "smb")
{
WriteToFileSMB(computerName, droplocation, filename, location);
}
else if(arguments["writetype"].ToLower() == "registry")
{
if (valuename == string.Empty)
{
Console.WriteLine("[-] Valuename is required");
return;
}
GetFileContent(location, droplocation, filename, "nonflat");
WriteToRegKey(computerName, username, preplacedword, keypath, valuename);
}
else if (arguments["writetype"].ToLower() == "wmiclreplaced")
{
GetFileContent(location, droplocation, filename, "nonflat");
WriteToWMIClreplaced(computerName, username, preplacedword, wnamespace, clreplacedname);
}
else if (arguments["writetype"].ToLower() == "removewmiclreplaced")
{
RemoveWMIClreplaced(computerName, username, preplacedword, wnamespace, clreplacedname);
}
else if (arguments["writetype"].ToLower() == "removeregkey")
{
RemoveRegValue(computerName, username, preplacedword, keypath, valuename);
}
else
{
Usage();
return;
}
}
else
{
Usage();
}
}
}
else
{
Usage();
return;
}
}
19
View Source File : CommandLineParser.cs
License : MIT License
Project Creator : 0xd4d
License : MIT License
Project Creator : 0xd4d
static bool TryParseToken(string value, out uint token) {
if (value.StartsWith("0x", StringComparison.OrdinalIgnoreCase)) {
if (uint.TryParse(value.Substring(2), System.Globalization.NumberStyles.HexNumber, null, out token))
return true;
}
token = 0;
return false;
}
19
View Source File : SQLite.cs
License : GNU General Public License v3.0
Project Creator : 0xfd3
License : GNU General Public License v3.0
Project Creator : 0xfd3
public bool ReadTable(string TableName)
{
int index = -1;
int length = this.master_table_entries.Length - 1;
for (int i = 0; i <= length; i++)
{
if (this.master_table_entries[i].item_name.ToLower().CompareTo(TableName.ToLower()) == 0)
{
index = i;
break;
}
}
if (index == -1)
{
return false;
}
string[] strArray = this.master_table_entries[index].sql_statement.Substring(this.master_table_entries[index].sql_statement.IndexOf("(") + 1).Split(new char[] { ',' });
int num6 = strArray.Length - 1;
for (int j = 0; j <= num6; j++)
{
strArray[j] = (strArray[j]).TrimStart();
int num4 = strArray[j].IndexOf(" ");
if (num4 > 0)
{
strArray[j] = strArray[j].Substring(0, num4);
}
if (strArray[j].IndexOf("UNIQUE") == 0)
{
break;
}
this.field_names = (string[])Utils.CopyArray((Array)this.field_names, new string[j + 1]);
this.field_names[j] = strArray[j];
}
return this.ReadTableFromOffset((ulong)((this.master_table_entries[index].root_num - 1L) * this.page_size));
}
19
View Source File : Program.cs
License : BSD 3-Clause "New" or "Revised" License
Project Creator : 0xthirteen
License : BSD 3-Clause "New" or "Revised" License
Project Creator : 0xthirteen
static void Main(string[] args)
{
if (args.Length < 1)
{
HowTo();
return;
}
var arguments = new Dictionary<string, string>();
foreach (string argument in args)
{
int idx = argument.IndexOf('=');
if (idx > 0)
arguments[argument.Substring(0, idx)] = argument.Substring(idx + 1);
}
if (arguments.ContainsKey("command"))
{
CleanSingle(arguments["command"]);
}
else if (args[0].ToLower() == "clearall")
{
Clereplacedl();
}
else if (args[0].ToLower() == "query")
{
QueryReg();
}
else
{
HowTo();
return;
}
}
19
View Source File : ExcelDCOM.cs
License : GNU General Public License v3.0
Project Creator : 0xthirteen
License : GNU General Public License v3.0
Project Creator : 0xthirteen
static void Main(string[] args)
{
var arguments = new Dictionary<string, string>();
foreach (string argument in args)
{
int idx = argument.IndexOf('=');
if (idx > 0)
arguments[argument.Substring(0, idx)] = argument.Substring(idx + 1);
}
if(!arguments.ContainsKey("computername"))
{
Console.WriteLine("[-] Error: computername arg is required");
return;
}
else
{
string arch = "x86";
string target = arguments["computername"];
if (arguments.ContainsKey("arch"))
{
if(arguments["arch"].ToLower() == "x64" || arguments["arch"] == "64")
{
arch = "x64";
}
}
ExecExcelDCOM(target, arch);
}
}
19
View Source File : Program.cs
License : BSD 3-Clause "New" or "Revised" License
Project Creator : 0xthirteen
License : BSD 3-Clause "New" or "Revised" License
Project Creator : 0xthirteen
static void Main(string[] args)
{
AppDomain.CurrentDomain.replacedemblyResolve += (sender, argtwo) => {
replacedembly thisreplacedembly = replacedembly.GetEntryreplacedembly();
String resourceName = string.Format("SharpRDP.{0}.dll.bin",
new replacedemblyName(argtwo.Name).Name);
var replacedembly = replacedembly.GetExecutingreplacedembly();
using (var rs = replacedembly.GetManifestResourceStream(resourceName))
using (var zs = new DeflateStream(rs, CompressionMode.Decompress))
using (var ms = new MemoryStream())
{
zs.CopyTo(ms);
return replacedembly.Load(ms.ToArray());
}
};
var arguments = new Dictionary<string, string>();
foreach (string argument in args)
{
int idx = argument.IndexOf('=');
if (idx > 0)
arguments[argument.Substring(0, idx)] = argument.Substring(idx + 1);
}
string username = string.Empty;
string domain = string.Empty;
string preplacedword = string.Empty;
string command = string.Empty;
string execElevated = string.Empty;
string execw = "";
bool connectdrive = false;
bool takeover = false;
bool nla = false;
if (arguments.ContainsKey("username"))
{
if (!arguments.ContainsKey("preplacedword"))
{
Console.WriteLine("[X] Error: A preplacedword is required");
return;
}
else
{
if (arguments["username"].Contains("\\"))
{
string[] tmp = arguments["username"].Split('\\');
domain = tmp[0];
username = tmp[1];
}
else
{
domain = ".";
username = arguments["username"];
}
preplacedword = arguments["preplacedword"];
}
}
if (arguments.ContainsKey("preplacedword") && !arguments.ContainsKey("username"))
{
Console.WriteLine("[X] Error: A username is required");
return;
}
if ((arguments.ContainsKey("computername")) && (arguments.ContainsKey("command")))
{
Client rdpconn = new Client();
command = arguments["command"];
if (arguments.ContainsKey("exec"))
{
if (arguments["exec"].ToLower() == "cmd")
{
execw = "cmd";
}
else if (arguments["exec"].ToLower() == "powershell" || arguments["exec"].ToLower() == "ps")
{
execw = "powershell";
}
}
if (arguments.ContainsKey("elevated"))
{
if(arguments["elevated"].ToLower() == "true" || arguments["elevated"].ToLower() == "win+r" || arguments["elevated"].ToLower() == "winr")
{
execElevated = "winr";
}
else if(arguments["elevated"].ToLower() == "taskmgr" || arguments["elevated"].ToLower() == "taskmanager")
{
execElevated = "taskmgr";
}
else
{
execElevated = string.Empty;
}
}
if (arguments.ContainsKey("connectdrive"))
{
if(arguments["connectdrive"].ToLower() == "true")
{
connectdrive = true;
}
}
if (arguments.ContainsKey("takeover"))
{
if (arguments["takeover"].ToLower() == "true")
{
takeover = true;
}
}
if (arguments.ContainsKey("nla"))
{
if (arguments["nla"].ToLower() == "true")
{
nla = true;
}
}
string[] computerNames = arguments["computername"].Split(',');
foreach (string server in computerNames)
{
rdpconn.CreateRdpConnection(server, username, domain, preplacedword, command, execw, execElevated, connectdrive, takeover, nla);
}
}
else
{
HowTo();
return;
}
}
19
View Source File : NamingStyles.cs
License : MIT License
Project Creator : 13xforever
License : MIT License
Project Creator : 13xforever
public static string CamelCase(string value)
{
if (value == null)
throw new ArgumentNullException(nameof(value));
if (value.Length > 0)
{
if (char.IsUpper(value[0]))
value = char.ToLower(value[0]) + value.Substring(1);
}
return value;
}
19
View Source File : UriExtensions.cs
License : MIT License
Project Creator : 13xforever
License : MIT License
Project Creator : 13xforever
private static Uri AddQueryValue(Uri uri, string queryToAppend)
{
var query = uri.IsAbsoluteUri ? uri.Query : new Uri(FakeHost, uri).Query;
if (!string.IsNullOrEmpty(query) && query.Length > 1)
query = query.Substring(1) + "&" + queryToAppend;
else
query = queryToAppend;
return SetQueryValue(uri, query);
}
19
View Source File : IrdClient.cs
License : MIT License
Project Creator : 13xforever
License : MIT License
Project Creator : 13xforever
private static string Getreplacedle(string html)
{
if (string.IsNullOrEmpty(html))
return null;
var idx = html.LastIndexOf("</span>");
var result = html.Substring(idx + 7).Trim();
if (string.IsNullOrEmpty(result))
return null;
return result;
}
19
View Source File : UriExtensions.cs
License : MIT License
Project Creator : 13xforever
License : MIT License
Project Creator : 13xforever
private static Uri SetQueryValue(Uri uri, string value)
{
var isAbsolute = uri.IsAbsoluteUri;
if (isAbsolute)
{
var builder = new UriBuilder(uri) { Query = value };
return new Uri(builder.ToString());
}
else
{
var startWithSlash = uri.OriginalString.StartsWith("/");
uri = new Uri(FakeHost, uri);
var builder = new UriBuilder(uri) { Query = value };
var additionalStrip = startWithSlash ? 0 : 1;
var newUri = builder.ToString().Substring(FakeHost.OriginalString.Length + additionalStrip);
return new Uri(newUri, UriKind.Relative);
}
}
19
View Source File : StringExtensions.cs
License : MIT License
Project Creator : 17MKH
License : MIT License
Project Creator : 17MKH
public static string FirstCharToLower(this string s)
{
if (string.IsNullOrEmpty(s))
return s;
string str = s.First().ToString().ToLower() + s.Substring(1);
return str;
}
19
View Source File : StringExtensions.cs
License : MIT License
Project Creator : 17MKH
License : MIT License
Project Creator : 17MKH
public static string FirstCharToUpper(this string s)
{
if (string.IsNullOrEmpty(s))
return s;
string str = s.First().ToString().ToUpper() + s.Substring(1);
return str;
}
19
View Source File : MonitorItemForm.cs
License : Apache License 2.0
Project Creator : 214175590
License : Apache License 2.0
Project Creator : 214175590
private void stb_home_url_Enter(object sender, EventArgs e)
{
string sdir = stb_project_source_dir.Text;
string appname = stb_app_name.Text;
string url = stb_home_url.Text;
if(!string.IsNullOrWhiteSpace(sdir) && !string.IsNullOrWhiteSpace(appname) && url.EndsWith("[port]")){
try
{
if (get_spboot_port_run)
{
return;
}
get_spboot_port_run = true;
if (!sdir.EndsWith("/"))
{
sdir += "/";
}
string serverxml = string.Format("{0}{1}/src/main/resources/config/application-dev.yml", sdir, appname);
string targetxml = MainForm.TEMP_DIR + string.Format("application-dev-{0}.yml", DateTime.Now.ToString("MMddHHmmss"));
targetxml = targetxml.Replace("\\", "/");
parentForm.RunSftpShell(string.Format("get {0} {1}", serverxml, targetxml), false, false);
ThreadPool.QueueUserWorkItem((a) =>
{
Thread.Sleep(500);
string port = "", ctx = "";
string yml = YSTools.YSFile.readFileToString(targetxml);
if(!string.IsNullOrWhiteSpace(yml)){
string[] lines = yml.Split('\n');
bool find = false;
int index = 0, start = 0;
foreach(string line in lines){
if (line.Trim().StartsWith("server:"))
{
find = true;
start = index;
}
else if(find && line.Trim().StartsWith("port:")){
port = line.Substring(line.IndexOf(":") + 1).Trim();
}
else if (find && line.Trim().StartsWith("context-path:"))
{
ctx = line.Substring(line.IndexOf(":") + 1).Trim();
}
if (index - start > 4 && start > 0)
{
break;
}
index++;
}
}
if (port != "")
{
stb_home_url.BeginInvoke((MethodInvoker)delegate()
{
stb_home_url.Text = string.Format("http://{0}:{1}{2}", config.Host, port, ctx);
});
}
get_spboot_port_run = false;
File.Delete(targetxml);
});
}
catch(Exception ex) {
logger.Error("Error", ex);
}
}
}
19
View Source File : StringExtensionMethods.cs
License : MIT License
Project Creator : 1ZouLTReX1
License : MIT License
Project Creator : 1ZouLTReX1
public static string AfterLast(this string str, string sub)
{
var idx = str.LastIndexOf(sub);
return idx < 0 ? "" : str.Substring(idx + sub.Length);
}
19
View Source File : StringExtensionMethods.cs
License : MIT License
Project Creator : 1ZouLTReX1
License : MIT License
Project Creator : 1ZouLTReX1
public static string AfterFirst(this string str, string sub)
{
var idx = str.IndexOf(sub);
return idx < 0 ? "" : str.Substring(idx + sub.Length);
}
19
View Source File : MonitorItemForm.cs
License : Apache License 2.0
Project Creator : 214175590
License : Apache License 2.0
Project Creator : 214175590
void SrvPath_TextChanged(object sender, EventArgs e)
{
string path = stb_ice_srvpath.Text;
if (!string.IsNullOrWhiteSpace(path))
{
string appname = stb_ice_appname.Text;
if (!string.IsNullOrWhiteSpace(appname) && string.IsNullOrWhiteSpace(stb_ice_ports.Text))
{
try
{
if (get_ice_port_run)
{
return;
}
get_ice_port_run = true;
if (!path.EndsWith("/"))
{
path += "/";
}
string serverxml = string.Format("{0}config/{1}.xml", path, appname);
string targetxml = MainForm.TEMP_DIR + string.Format("srv-{0}.xml", DateTime.Now.ToString("MMddHHmmss"));
targetxml = targetxml.Replace("\\", "/");
parentForm.RunSftpShell(string.Format("get {0} {1}", serverxml, targetxml), false, false);
ThreadPool.QueueUserWorkItem((a) =>
{
Thread.Sleep(500);
List<Hashtable> list = YSTools.YSXml.readXml(targetxml, "icegrid");
if (list != null && list.Count > 0)
{
List<Hashtable> appList = null, nodeList = null;
List<Hashtable> serverList = null;
string ports = "", nodeName = "", serverName = "";
foreach (Hashtable one in list)
{
if (one["NodeName"].ToString() == "application")
{
appList = (List<Hashtable>)one["ChildList"];
foreach (Hashtable two in appList)
{
if (two["NodeName"].ToString() == "node")
{
nodeName = two["name"].ToString();
nodeList = (List<Hashtable>)two["ChildList"];
foreach (Hashtable four in nodeList)
{
if (four["NodeName"].ToString() == "server-instance")
{
ports += "," + four["serverport"].ToString();
}
}
}
if (two["NodeName"].ToString() == "server-template")
{
serverList = (List<Hashtable>)two["ChildList"];
foreach (Hashtable four in serverList)
{
if (four["NodeName"].ToString() == "icebox")
{
serverName = four["id"].ToString();
serverName = serverName.Substring(0, serverName.IndexOf("$")) + "1";
break;
}
}
}
if (ports != "")
{
break;
}
}
}
}
stb_ice_ports.BeginInvoke((MethodInvoker)delegate()
{
stb_ice_servername.Text = serverName;
stb_ice_ports.Text = ports == "" ? "8082" : ports.Substring(1);
});
}
get_ice_port_run = false;
File.Delete(targetxml);
});
}
catch { }
}
}
}
19
View Source File : MonitorItemForm.cs
License : Apache License 2.0
Project Creator : 214175590
License : Apache License 2.0
Project Creator : 214175590
private void button1_Click(object sender, EventArgs e)
{
int index = tabControl1.SelectedIndex;
bool isnew = false;
if (monitorConfig == null)
{
isnew = true;
}
else
{
index = tabIndex;
}
if (index == 0)
{ // springboot
SpringBootMonitorItem item = new SpringBootMonitorItem();
item.AppName = stb_app_name.Text;
item.BuildFileName = stb_build_file.Text;
item.CrlFileName = stb_ctl_file.Text;
item.ShFileDir = stb_sh_dir.Text;
if (item.ShFileDir.EndsWith("/"))
{
item.ShFileDir = item.ShFileDir.Substring(0, item.ShFileDir.Length);
}
item.ProjectSourceDir = stb_project_source_dir.Text;
if (item.ProjectSourceDir.EndsWith("/"))
{
item.ProjectSourceDir = item.ProjectSourceDir.Substring(0, item.ProjectSourceDir.Length);
}
item.HomeUrl = stb_home_url.Text;
item.RunStatus = RunState.NoCheck;
if (string.IsNullOrWhiteSpace(item.HomeUrl))
{
item.HomeUrl = "http://" + config.Host + ":8080/";
}
if (string.IsNullOrWhiteSpace(item.AppName) || hasNonChar(item.AppName))
{
MessageBox.Show(this, "请填写应用名称,且不能包含'\",:;|");
return;
}
else if (string.IsNullOrWhiteSpace(item.ShFileDir))
{
MessageBox.Show(this, "请填写应用脚本目录");
return;
}
else if (string.IsNullOrWhiteSpace(item.BuildFileName))
{
MessageBox.Show(this, "请填写应用编译脚本文件名称");
return;
}
else if (string.IsNullOrWhiteSpace(item.CrlFileName))
{
MessageBox.Show(this, "请填写应用控制脚本文件名称");
return;
}
else if (string.IsNullOrWhiteSpace(item.ProjectSourceDir))
{
MessageBox.Show(this, "请填写应用代码存放目录");
return;
}
item.NeedAdd = cb_need_add.Checked;
if (item.NeedAdd)
{
item.ProjectSvnUrl = stb_project_svn.Text;
if (string.IsNullOrWhiteSpace(item.ProjectSvnUrl))
{
MessageBox.Show(this, "请填写应用SVN地址");
return;
}
}
if (isnew)
{
item.Uuid = Guid.NewGuid().ToString("N");
monitorConfig = new MonitorItemConfig();
}
else
{
item.Uuid = monitorConfig.spring.Uuid;
}
monitorConfig.spring = item;
}
else if (index == 1)
{ // tomcat
TomcatMonitorItem item = new TomcatMonitorItem();
item.TomcatName = stb_tomcat_name.Text;
item.TomcatDir = stb_tomcat_path.Text;
item.TomcatPort = stb_tomcat_port.Text;
item.RunStatus = RunState.NoCheck;
if (string.IsNullOrWhiteSpace(item.TomcatName) || hasNonChar(item.TomcatName))
{
MessageBox.Show(this, "请填写Tomcat名称,且不能包含'\",:;|");
return;
}
else if (string.IsNullOrWhiteSpace(item.TomcatDir))
{
MessageBox.Show(this, "请填写Tomcat根目录");
return;
}
else if (string.IsNullOrWhiteSpace(item.TomcatPort))
{
item.TomcatPort = "8080";
}
if (isnew)
{
item.Uuid = Guid.NewGuid().ToString("N");
monitorConfig = new MonitorItemConfig();
}
else
{
item.Uuid = monitorConfig.tomcat.Uuid;
}
monitorConfig.tomcat = item;
}
else if (index == 2)
{ // nginx
NginxMonitorItem item = new NginxMonitorItem();
item.NginxName = stb_nginx_name.Text;
item.NginxPath = stb_nginx_path.Text;
item.NginxConfig = stb_nginx_conf.Text;
item.RunStatus = RunState.NoCheck;
if (string.IsNullOrWhiteSpace(item.NginxName) || hasNonChar(item.NginxName))
{
MessageBox.Show(this, "请填写Nginx名称,且不能包含'\",:;|");
return;
}
else if (string.IsNullOrWhiteSpace(item.NginxPath))
{
MessageBox.Show(this, "请填写Nginx执行文件完整路径");
return;
}
else if (string.IsNullOrWhiteSpace(item.NginxConfig))
{
MessageBox.Show(this, "请填写Nginx配置文件完整路径");
return;
}
if (isnew)
{
monitorConfig = new MonitorItemConfig();
item.Uuid = Guid.NewGuid().ToString("N");
}
else
{
item.Uuid = monitorConfig.nginx.Uuid;
}
monitorConfig.nginx = item;
}
else if (index == 3)
{ // ice
IceMonitorItem item = new IceMonitorItem();
item.AppName = stb_ice_appname.Text;
item.IceSrvDir = stb_ice_srvpath.Text;
item.NodePorts = stb_ice_ports.Text;
item.ServerName = stb_ice_servername.Text;
item.RunStatus = RunState.NoCheck;
if (string.IsNullOrWhiteSpace(item.AppName) || hasNonChar(item.AppName))
{
MessageBox.Show(this, "请填写项目名称,且不能包含'\",:;|");
return;
}
else if (string.IsNullOrWhiteSpace(item.IceSrvDir))
{
MessageBox.Show(this, "请填写项目Ice目录完整路径");
return;
}
else if (string.IsNullOrWhiteSpace(item.ServerName))
{
MessageBox.Show(this, "请填写Ice服务名称");
return;
}
else if (string.IsNullOrWhiteSpace(item.NodePorts))
{
MessageBox.Show(this, "请填写项目使用的端口号,多个以逗号(,)分隔");
return;
}
if (isnew)
{
monitorConfig = new MonitorItemConfig();
item.Uuid = Guid.NewGuid().ToString("N");
}
else
{
item.Uuid = monitorConfig.ice.Uuid;
}
monitorConfig.ice = item;
}
if (isnew)
{
config.MonitorConfigList.Add(monitorConfig);
}
AppConfig.Instance.SaveConfig(2);
if (null != parentForm && monitorConfig.spring != null)
{
// TODO 执行checkout
if (monitorConfig.spring.NeedAdd)
{
string home = parentForm.getSftp().getHome();
string buildStr = YSTools.YSFile.readFileToString(MainForm.CONF_DIR + "__build.sh");
string ctlStr = YSTools.YSFile.readFileToString(MainForm.CONF_DIR + "__ctl.sh");
if (monitorConfig.spring.ProjectSourceDir.StartsWith(home))
{
string path = monitorConfig.spring.ProjectSourceDir.Substring(home.Length);
if (path.StartsWith("/"))
{
path = path.Substring(1);
}
buildStr = buildStr.Replace("_sourcePath_", "~/" + path);
ctlStr = ctlStr.Replace("_sourcePath_", "~/" + path);
}
else
{
buildStr = buildStr.Replace("_sourcePath_", monitorConfig.spring.ProjectSourceDir);
ctlStr = ctlStr.Replace("_sourcePath_", monitorConfig.spring.ProjectSourceDir);
}
buildStr = buildStr.Replace("_projectName_", monitorConfig.spring.AppName);
ctlStr = ctlStr.Replace("_projectName_", monitorConfig.spring.AppName);
ctlStr = ctlStr.Replace("_disconfigUrl_", stb_disconfig_url.Text);
string localBuild = MainForm.CONF_DIR + monitorConfig.spring.BuildFileName;
string localCtl = MainForm.CONF_DIR + monitorConfig.spring.CrlFileName;
string remoteBuild = monitorConfig.spring.ShFileDir + "/" + monitorConfig.spring.BuildFileName;
string remoteCtl = monitorConfig.spring.ShFileDir + "/" + monitorConfig.spring.CrlFileName;
YSTools.YSFile.writeFileByString(localBuild, buildStr);
YSTools.YSFile.writeFileByString(localCtl, ctlStr);
ThreadPool.QueueUserWorkItem((a) =>
{
Thread.Sleep(500);
parentForm.BeginInvoke((MethodInvoker)delegate()
{
parentForm.getSftp().put(localBuild, remoteBuild, ChannelSftp.OVERWRITE);
parentForm.getSftp().put(localCtl, remoteCtl, ChannelSftp.OVERWRITE);
parentForm.RunShell("cd " + monitorConfig.spring.ProjectSourceDir, true);
parentForm.RunShell("svn checkout " + monitorConfig.spring.ProjectSvnUrl, true);
File.Delete(localBuild);
File.Delete(localCtl);
});
});
}
}
this.Close();
}
19
View Source File : IceMonitorForm.cs
License : Apache License 2.0
Project Creator : 214175590
License : Apache License 2.0
Project Creator : 214175590
public void SetStatus(int status)
{
check_flag = true;
this.BeginInvoke((MethodInvoker)delegate()
{
string tag = this.Tag.ToString();
string uuid = tag.Substring(3);
if (status > 0)
{
itemConfig.ice.RunStatus = RunState.Normal;
pic_run_state.BackgroundImage = Properties.Resources.green_light_48;
label_status.Text = "程序运行正常";
this.skinToolTip1.SetToolTip(pic_run_state, label_status.Text);
btn_start.Enabled = false;
btn_stop.Enabled = true;
monitorForm.SetNodeIcon("task-" + uuid, 1);
}
else
{
itemConfig.ice.RunStatus = RunState.AbNormal;
pic_run_state.BackgroundImage = Properties.Resources.org_light_48;
label_status.Text = "程序无法访问";
this.skinToolTip1.SetToolTip(pic_run_state, "程序无法访问,请检查问题");
btn_start.Enabled = true;
btn_stop.Enabled = false;
monitorForm.SetNodeIcon("task-" + uuid, 2);
}
});
}
19
View Source File : MonitorItemForm.cs
License : Apache License 2.0
Project Creator : 214175590
License : Apache License 2.0
Project Creator : 214175590
void Tomcat_TextChanged(object sender, EventArgs e)
{
string path = stb_tomcat_path.Text;
if (!string.IsNullOrWhiteSpace(path))
{
if (string.IsNullOrWhiteSpace(tomcat_name))
{
try
{
stb_tomcat_name.Text = path.Substring(path.LastIndexOf("/") + 1);
}
catch { }
}
if (string.IsNullOrWhiteSpace(stb_tomcat_port.Text))
{
try
{
if (get_tomcat_port_run)
{
return;
}
get_tomcat_port_run = true;
if (!path.EndsWith("/"))
{
path += "/";
}
string serverxml = path + "conf/server.xml";
string targetxml = MainForm.TEMP_DIR + string.Format("server-{0}.xml", DateTime.Now.ToString("MMddHHmmss"));
targetxml = targetxml.Replace("\\", "/");
parentForm.RunSftpShell(string.Format("get {0} {1}", serverxml, targetxml), false, false);
ThreadPool.QueueUserWorkItem((a) => {
Thread.Sleep(500);
List<Hashtable> list = YSTools.YSXml.readXml(targetxml, "Server");
if(list != null && list.Count > 0){
List<Hashtable> serviceList = null;
string port = null;
foreach(Hashtable one in list){
if (one["NodeName"].ToString() == "Service")
{
serviceList = (List<Hashtable>) one["ChildList"];
foreach (Hashtable two in serviceList)
{
if (two["NodeName"].ToString() == "Connector")
{
port = two["port"].ToString();
break;
}
}
if(port != null){
break;
}
}
}
stb_tomcat_port.BeginInvoke((MethodInvoker)delegate()
{
stb_tomcat_port.Text = port == null ? "8080" : port;
});
}
get_tomcat_port_run = false;
File.Delete(targetxml);
});
}
catch { }
}
}
}
19
View Source File : NginxMonitorForm.cs
License : Apache License 2.0
Project Creator : 214175590
License : Apache License 2.0
Project Creator : 214175590
public void SetStatus(int status)
{
check_flag = true;
this.BeginInvoke((MethodInvoker)delegate()
{
string tag = this.Tag.ToString();
string uuid = tag.Substring(3);
if (status > 0)
{
itemConfig.nginx.RunStatus = RunState.Normal;
pic_run_state.BackgroundImage = Properties.Resources.green_light_48;
label_status.Text = "Nginx运行正常";
this.skinToolTip1.SetToolTip(pic_run_state, label_status.Text);
btn_start.Enabled = false;
btn_stop.Enabled = true;
monitorForm.SetNodeIcon("task-" + uuid, 1);
}
else
{
itemConfig.nginx.RunStatus = RunState.AbNormal;
pic_run_state.BackgroundImage = Properties.Resources.org_light_48;
label_status.Text = "Nginx无法访问";
this.skinToolTip1.SetToolTip(pic_run_state, "Nginx无法访问,请检查问题");
btn_start.Enabled = true;
btn_stop.Enabled = false;
monitorForm.SetNodeIcon("task-" + uuid, 2);
}
});
}
19
View Source File : ConditionTaskForm.cs
License : Apache License 2.0
Project Creator : 214175590
License : Apache License 2.0
Project Creator : 214175590
public void RenderConditionFinish(int index)
{
string condition = cmdShell.Condition;
string[] items = condition.Split(';');
if (items.Length >= index)
{
string[] arrs = items[index - 1].Split(',');
ConditionItem ci = null;
SpringBootMonitorItem spring = null;
TomcatMonitorItem tomcat = null;
NginxMonitorItem nginx = null;
string uuid = "", itemUuid = "";
int itemIndex = 0;
SkinComboBox combo = null;
if (index == 1)
{
combo = scb_condition1;
}
else if (index == 2)
{
combo = scb_condition2;
}
else if (index == 3)
{
combo = scb_condition3;
}
foreach (var item in combo.Items)
{
ci = (ConditionItem)item;
if(ci.Index == 0){
spring = (SpringBootMonitorItem) ci.Item;
uuid = spring.Uuid;
itemIndex = spring.Index;
}
else if (ci.Index == 1)
{
tomcat = (TomcatMonitorItem)ci.Item;
uuid = spring.Uuid;
itemIndex = spring.Index;
}
else if (ci.Index == 2)
{
nginx = (NginxMonitorItem)ci.Item;
uuid = spring.Uuid;
itemIndex = spring.Index;
}
if (index == 1)
{
itemUuid = arrs[0];
}
else
{
itemUuid = arrs[0].Substring(1);
}
if (uuid == itemUuid)
{
combo.SelectedItem = item;
InitConditionStatus(index, itemIndex);
break;
}
}
// ========================
if (index == 1)
{
scb_status1.SelectedIndex = arrs[1] == "Y" ? 1 : 0;
if (items.Length >= 2)
{
if (items[index].Substring(0, 1) == "&")
{
rb_q1.Checked = true;
}
else
{
rb_h1.Checked = true;
}
InitCondition(2, new RenderFinishDelegate(RenderConditionFinish));
}
}
else if (index == 2)
{
scb_status2.SelectedIndex = arrs[1] == "Y" ? 1 : 0;
if (items.Length >= 3)
{
if (items[index].Substring(0, 1) == "&")
{
rb_q2.Checked = true;
}
else
{
rb_h2.Checked = true;
}
InitCondition(3, new RenderFinishDelegate(RenderConditionFinish));
}
}
else if (index == 3)
{
scb_status3.SelectedIndex = arrs[1] == "Y" ? 1 : 0;
}
}
}
19
View Source File : FileAttrForm.cs
License : Apache License 2.0
Project Creator : 214175590
License : Apache License 2.0
Project Creator : 214175590
private string getFileExt(string filename)
{
string ext = "";
if (null != filename && filename.IndexOf(".") != -1)
{
ext = filename.Substring(filename.LastIndexOf(".") + 1).ToUpper() + "文件";
}
return ext;
}
19
View Source File : SpringBootMonitorForm.cs
License : Apache License 2.0
Project Creator : 214175590
License : Apache License 2.0
Project Creator : 214175590
public void SetStatus(int status)
{
check_flag = true;
this.BeginInvoke((MethodInvoker)delegate() {
string tag = this.Tag.ToString();
string uuid = tag.Substring(3);
if (status > 0)
{
itemConfig.spring.RunStatus = RunState.Normal;
pic_run_state.BackgroundImage = Properties.Resources.green_light_48;
label_status.Text = "程序运行正常";
this.skinToolTip1.SetToolTip(pic_run_state, label_status.Text);
btn_start.Enabled = false;
btn_stop.Enabled = true;
monitorForm.SetNodeIcon("task-" + uuid, 1);
}
else
{
itemConfig.spring.RunStatus = RunState.AbNormal;
pic_run_state.BackgroundImage = Properties.Resources.org_light_48;
label_status.Text = "程序无法访问";
this.skinToolTip1.SetToolTip(pic_run_state, "程序无法访问,请检查问题");
btn_start.Enabled = true;
btn_stop.Enabled = false;
monitorForm.SetNodeIcon("task-" + uuid, 2);
}
});
}
19
View Source File : TimedTaskForm.cs
License : Apache License 2.0
Project Creator : 214175590
License : Apache License 2.0
Project Creator : 214175590
private void button1_Click(object sender, EventArgs e)
{
// 新增
string timestr = "";
// 1、获取执行周期
int index = scb_cycle.SelectedIndex;
timestr += index + "|";
// 2、获取执行日期,除了每天周期不需要知道日期,其他都需要知道日期
string rq = "";
if(index == 0){// 一次
rq = date.Value.ToString("yyyy-MM-dd");
}
else if (index == 1)
{
// 每天
rq = "";
}
else if(index == 2)
{
// 每周
rq += (week1.Checked ? ",1" : "");
rq += (week2.Checked ? ",2" : "");
rq += (week3.Checked ? ",3" : "");
rq += (week4.Checked ? ",4" : "");
rq += (week5.Checked ? ",5" : "");
rq += (week6.Checked ? ",6" : "");
rq += (week0.Checked ? ",7" : "");
if (!string.IsNullOrWhiteSpace(rq))
{
rq = rq.Substring(1);
}
}
else if (index == 3)
{
// 每月
rq = date.Value.ToString("dd");
}
else if (index == 4)
{
// 每年
rq = date.Value.ToString("MM-dd");
}
timestr += rq + "|";
// 3、获取执行时间
timestr += time.Value.ToString("HH:mm:ss");
string name = shell_name.Text;
string code = shell.Text;
if (string.IsNullOrWhiteSpace(name))
{
MessageBox.Show(this, "请输入指令名称");
shell_name.Focus();
}
else if (string.IsNullOrWhiteSpace(code))
{
MessageBox.Show(this, "请输入指令脚本(Shell)");
shell.Focus();
}
else
{
JObject obj = new JObject();
obj.Add("time", timestr);
obj.Add("name", name);
obj.Add("code", code);
AddTaskItem(obj);
shell.Text = "";
shell_name.Text = "";
}
}
19
View Source File : YmlFormatUtil.cs
License : Apache License 2.0
Project Creator : 214175590
License : Apache License 2.0
Project Creator : 214175590
public static List<YmlItem> FormatYmlToTree(string content)
{
List<YmlItem> lists = new List<YmlItem>();
string[] lines = content.Split('\n');
YmlItem item = null;
string startStr = "";
List<YmlItem> levels = new List<YmlItem>();
int index1 = -1, index2 = -1, index = 0;
foreach(string line in lines){
if(string.IsNullOrWhiteSpace(line)){
item = new YmlItem();
item.Uuid = "T" + (index++);
item.ImageIndex = 2;
item.Key = "#" + line;
item.Value = "";
item.Level = 0;
item.Common = "";
lists.Add(item);
continue;
}
if(line.TrimStart().StartsWith("#")){
item = new YmlItem();
item.Uuid = "T" + (index++);
item.ImageIndex = 2;
item.Key = line;
item.Value = "";
item.Level = 0;
item.Common = "";
lists.Add(item);
}
else
{
item = new YmlItem();
item.Uuid = "T" + (index++);
item.ImageIndex = 0;
item.Key = "";
item.Value = "";
item.Level = 0;
item.Common = "";
item.SpcCount = StartSpaceCount(line);
if (item.SpcCount == 0)
{
levels.Clear();
item.Level = 0;
}
else
{
// level
for (int i = levels.Count - 1; i >= 0; i-- )
{
if (levels[i].SpcCount < item.SpcCount)
{
item.Level = levels[i].Level + 1;
item.Parent = levels[i];
break;
}
}
}
levels.Add(item);
index2 = line.IndexOf("#");
if (index2 > 0)
{
startStr = line.Substring(0, index2);
item.Common = line.Substring(index2);
}
else
{
startStr = line;
}
index1 = startStr.IndexOf(":");
if (index1 > 0)
{
item.Key = startStr.Substring(0, index1).TrimStart();
item.Value = startStr.Substring(index1 + 1).Trim();
}
else
{
item.Key = startStr.TrimStart();
item.Common = "--格式错误--";
}
if (!string.IsNullOrWhiteSpace(item.Value))
{
item.ImageIndex = 1;
}
lists.Add(item);
}
}
return lists;
}
19
View Source File : MessageUtils.cs
License : Apache License 2.0
Project Creator : 214175590
License : Apache License 2.0
Project Creator : 214175590
private static void SplitMsg(List<Message> msgList, string str, int index, string flag, Color color, Color back)
{
Message msg = null;
if (index > 0)
{
string str1 = str.Substring(0, index);
msg = new Message();
msg.Text = str1;
msgList.Add(msg);
}
string str2 = str.Substring(index + flag.Length);
msg = new Message();
msg.Text = str2;
msg.Color = color;
if (back != Color.Empty)
{
msg.BackColor = back;
}
msgList.Add(msg);
}
19
View Source File : TomcatMonitorForm.cs
License : Apache License 2.0
Project Creator : 214175590
License : Apache License 2.0
Project Creator : 214175590
public void SetStatus(int status)
{
check_flag = true;
this.BeginInvoke((MethodInvoker)delegate()
{
string tag = this.Tag.ToString();
string uuid = tag.Substring(3);
if (status > 0)
{
itemConfig.tomcat.RunStatus = RunState.Normal;
pic_run_state.BackgroundImage = Properties.Resources.green_light_48;
label_status.Text = "运行正常";
this.skinToolTip1.SetToolTip(pic_run_state, label_status.Text);
btn_start.Enabled = false;
btn_stop.Enabled = true;
monitorForm.SetNodeIcon("task-" + uuid, 1);
}
else
{
itemConfig.tomcat.RunStatus = RunState.AbNormal;
pic_run_state.BackgroundImage = Properties.Resources.org_light_48;
label_status.Text = "无法访问";
this.skinToolTip1.SetToolTip(pic_run_state, "Tomcat无法访问,请检查问题");
btn_start.Enabled = true;
btn_stop.Enabled = false;
monitorForm.SetNodeIcon("task-" + uuid, 2);
}
});
}
19
View Source File : YmlFormatUtil.cs
License : Apache License 2.0
Project Creator : 214175590
License : Apache License 2.0
Project Creator : 214175590
public static List<YmlLine> FormatYml(string content, bool beautify = false)
{
List<YmlLine> list = new List<YmlLine>();
string[] lines = content.Split('\n');
YmlLine ylText = null;
int index1 = -1, index2 = -1, count = 0, num = 0;
string startStr = null, endStr = null, line = "";
string key = null, value = null, mh = ":";
List<int> levels = new List<int>();
for(int i = 0, k = lines.Length; i < k; i++){
line = lines[i];
if(line.TrimStart().StartsWith("#")){
ylText = new YmlLine()
{
Text = line + "\n",
Color = Color.Gray
};
list.Add(ylText);
}
else
{
// 非整行注释
// 美化
if (beautify)
{
count = StartSpaceCount(line);
if (count == 0)
{
levels.Clear();
}
// level
if (!levels.Contains(count))
{
levels.Add(count);
levels.Sort();
}
num = levels.IndexOf(count) * 4;
if (num > count)
{
line = GetSpace(num - count) + line;
}
}
// 行中有井号,但不是首位#
index2 = line.IndexOf("#");
if(index2 > 0){
startStr = line.Substring(0, index2);
index1 = startStr.IndexOf(":");
if (index1 > 0)
{
// key
key = startStr.Substring(0, index1);
ylText = new YmlLine()
{
Text = key,
Color = Color.OrangeRed
};
list.Add(ylText);
// :
ylText = new YmlLine()
{
Text = mh,
Color = Color.Violet
};
list.Add(ylText);
// value
value = startStr.Substring(index1 + 1);
ylText = new YmlLine()
{
Text = value,
Color = getTextColor(value)
};
list.Add(ylText);
}
else
{
ylText = new YmlLine()
{
Text = "#" + startStr,
Color = Color.Gray
};
list.Add(ylText);
}
// 注释掉的部分
endStr = line.Substring(index2);
ylText = new YmlLine()
{
Text = endStr + "\n",
Color = Color.Gray
};
list.Add(ylText);
}
else
{
// 行中无井号
startStr = line;
index1 = startStr.IndexOf(":");
if (index1 > 0)
{
// key
key = startStr.Substring(0, index1);
ylText = new YmlLine()
{
Text = key,
Color = Color.OrangeRed
};
list.Add(ylText);
// :
ylText = new YmlLine()
{
Text = mh,
Color = Color.Violet
};
list.Add(ylText);
// value
value = startStr.Substring(index1 + 1);
ylText = new YmlLine()
{
Text = value + "\n",
Color = getTextColor(value)
};
list.Add(ylText);
}
else
{
// 行中无井号,且是不合规的配置值
if (string.IsNullOrWhiteSpace(line))
{
ylText = new YmlLine()
{
Text = line + "\n",
Color = Color.OrangeRed
};
}
else
{
ylText = new YmlLine()
{
Text = "#" + line + "\n",
Color = Color.Gray
};
}
list.Add(ylText);
}
}
}
}
return list;
}
19
View Source File : Form1.cs
License : Apache License 2.0
Project Creator : 214175590
License : Apache License 2.0
Project Creator : 214175590
public void ShowLogger(string line)
{
this.BeginInvoke((MethodInvoker)delegate()
{
line = line.Replace("\r\r", "");
if(!line.EndsWith("\n")){
line += "\n";
}
List<Message> msgList = new List<Message>();
if(line.StartsWith(cmd + "\r\n")){
string str1 = line.Substring(0, (cmd + "\r\n").Length);
msgList.Add(new Message() {
Text = str1,
Color = Color.Red
});
MessageUtils.FormatMessage(msgList, line.Substring((cmd + "\r\n").Length));
}
else
{
MessageUtils.FormatMessage(msgList, line);
}
foreach (Message msg in msgList)
{
if(msg != null && msg.Text != null){
rtb_log.SelectionColor = msg.Color;
rtb_log.SelectionBackColor = msg.BackColor;
rtb_log.AppendText(msg.Text);
}
}
rtb_log.Select(rtb_log.TextLength, 0);
rtb_log.Focus();
//滚动到控件光标处
rtb_log.ScrollToCaret();
tb_shell.Focus();
});
}
19
View Source File : YmlNodeForm.cs
License : Apache License 2.0
Project Creator : 214175590
License : Apache License 2.0
Project Creator : 214175590
private string listToNodeText(List<string> list)
{
string text = "";
for (int i = list.Count - 1; i >= 0; i-- )
{
text += "." + list[i];
}
return text != "" ? text.Substring(1) : text;
}
19
View Source File : Form1.cs
License : MIT License
Project Creator : 2401dem
License : MIT License
Project Creator : 2401dem
private void button1_Click(object sender, EventArgs e)
{
if (IsFolder)
{
CommonOpenFileDialog dialog = new CommonOpenFileDialog();
dialog.IsFolderPicker = true;
if (dialog.ShowDialog() == CommonFileDialogResult.Ok)
{
string tmp = dialog.FileName;
if (tmp.LastIndexOf('\\') != -1)
{
textBox1.Text = tmp;
if (!Directory.Exists(textBox2.Text))
textBox2.Text = tmp;
}
}
}
else
{
OpenFileDialog dialog = new OpenFileDialog();
dialog.Filter = "Supported Files (*.bmp, *.jpg, *.png, *.tif, *.exr)|*.jpg;*.png;*.bmp;*.tif;*.exr|Bitmap Images (*.bmp)|*.bmp|JPEG Images (*.jpg)|*.jpg|PNG Images (*.png)|*.png|TIFF Images (*.tif)|*.tif|OpenEXR Images (*.exr)|*.exr";
if (dialog.ShowDialog() == DialogResult.OK)
{
string tmp = dialog.FileName;
if (tmp.LastIndexOf('\\') != -1)
{
textBox1.Text = tmp;
textBox2.Text = tmp.Substring(0, tmp.LastIndexOf('\\') + 1) + "out_" + tmp.Substring(tmp.LastIndexOf('\\') + 1);
}
}
}
}
19
View Source File : Program.cs
License : MIT License
Project Creator : 2401dem
License : MIT License
Project Creator : 2401dem
public static int Denoise()
{
if (_is_folder)
{
if (Directory.Exists(_input_path) || Directory.Exists(_input_path.Substring(0, _input_path.LastIndexOf('\\') > 0 ? _input_path.LastIndexOf('\\') : 0)))
{
if (Directory.Exists(_output_path) || Directory.Exists(_output_path.Substring(0, _output_path.LastIndexOf('\\') > 0 ? _output_path.LastIndexOf('\\') : 0)))
{
var file_paths = Directory.GetFiles(_input_path, "*.*", SearchOption.TopDirectoryOnly);
List<string> input_file_paths = new List<string>();
List<string> output_file_paths = new List<string>();
foreach (string file_path in file_paths)
{
Regex regex = new Regex(".\\.(bmp|jpg|png|tif|exr)$", RegexOptions.IgnoreCase);
if (regex.IsMatch(file_path))
{
input_file_paths.Add(file_path);
output_file_paths.Add(_output_path + "\\out_" + file_path.Substring(file_path.LastIndexOf('\\') + 1));
Console.WriteLine(file_path);
}
}
int width = _getWidth(input_file_paths[0].ToCharArray());
int height = _getHeight(input_file_paths[0].ToCharArray());
if (width == -1 || height == -1)
{
MessageBox.Show("Picture Format Error!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
Program.form1.unlockButton();
return -1;
}
//Bitmap pBuffer = new Bitmap(input_file_paths[0], false);
IntPtr tmpptr = new IntPtr();
_jobStart(width, height, _blend);
for (int i = 0; i < input_file_paths.Count; ++i)
{
Program.form1.SetProgress((float)i / (float)input_file_paths.Count);
if (File.Exists(output_file_paths[i]))
continue;
//IntPtr tmpptr =
tmpptr = _denoiseImplement(input_file_paths[i].ToCharArray(), output_file_paths[i].ToCharArray(), _blend, _is_folder);
/*if (tmpptr != null)
if (Program.form1.DrawToPictureBox(tmpptr, pBuffer.Width, pBuffer.Height) == 0)
continue;
else
{
MessageBox.Show("Picture Size Error!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
break;
}
else
{
//MessageBox.Show("Picture Size Error!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
//break;
}*/
}
_jobComplete();
if (tmpptr != null)
if (Program.form1.DrawToPictureBox(tmpptr, width, height) != 0)
MessageBox.Show("Picture Size Error!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
Program.form1.SetProgress(1.0f);
Program.form1.unlockButton();
return 0;
}
else
MessageBox.Show("Output folder does not exists!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
MessageBox.Show("Input folder does not exists!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
if (File.Exists(_input_path))
{
if (Directory.Exists(_output_path.Substring(0, _output_path.LastIndexOf('\\'))))
{
int width = _getWidth(_input_path.ToCharArray());
int height = _getHeight(_input_path.ToCharArray());
Console.WriteLine(width.ToString());
Console.WriteLine(height.ToString());
if (width == -1 || height == -1)
{
MessageBox.Show("Picture Format Error!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
Program.form1.unlockButton();
return -1;
}
_jobStart(width, height, _blend);
IntPtr tmpptr = _denoiseImplement(_input_path.ToCharArray(), _output_path.ToCharArray(), _blend, _is_folder);
if (tmpptr != null)
{
if (Program.form1.DrawToPictureBox(tmpptr, width, height) == -1)
MessageBox.Show("Picture Size Error(NULL to Draw)!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
MessageBox.Show("Picture Size Error!(NULL Return)", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
Program.form1.SetProgress(1.0f);
Program.form1.unlockButton();
_jobComplete();
return 0;
}
else
MessageBox.Show("Output folder does not exists!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
MessageBox.Show("Input file does not exists!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
Program.form1.unlockButton();
return -1;
}
19
View Source File : TsCreator.cs
License : MIT License
Project Creator : 279328316
License : MIT License
Project Creator : 279328316
private string FirstToLower(string str)
{
if (!string.IsNullOrEmpty(str))
{
str = str.Substring(0, 1).ToLower() + str.Substring(1);
}
return str;
}
19
View Source File : ClientSideCaching.cs
License : MIT License
Project Creator : 2881099
License : MIT License
Project Creator : 2881099
void SetCacheValue(string command, string key, Type valueType, object value)
{
_dict.GetOrAdd(key, keyTmp =>
{
var time = GetTime();
if (_options.Capacity > 0)
{
string removeKey = null;
lock (_dictLock)
{
if (_dictSort.Count >= _options.Capacity) removeKey = _dictSort.First().Substring(16);
_dictSort.Add($"{time.ToString("X").PadLeft(16, '0')}{key}");
}
if (removeKey != null)
RemoveCache(removeKey);
}
return new DictValue(command, time);
}).Values
.AddOrUpdate(valueType, new DictValue.ObjectValue(value), (oldkey, oldval) => new DictValue.ObjectValue(value));
}
19
View Source File : ClusterAdapter.cs
License : MIT License
Project Creator : 2881099
License : MIT License
Project Creator : 2881099
public override TValue AdapterCall<TValue>(CommandPacket cmd, Func<RedisResult, TValue> parse)
{
if (cmd._keyIndexes.Count > 1) //Multiple key slot values not equal
{
cmd.Prefix(TopOwner.Prefix);
switch (cmd._command)
{
case "DEL":
case "UNLINK":
return cmd._keyIndexes.Select((_, idx) => AdapterCall(cmd._command.InputKey(cmd.GetKey(idx)), parse)).Sum(a => a.ConvertTo<long>()).ConvertTo<TValue>();
case "MSET":
cmd._keyIndexes.ForEach(idx => AdapterCall(cmd._command.InputKey(cmd._input[idx].ToInvariantCultureToString()).InputRaw(cmd._input[idx + 1]), parse));
return default;
case "MGET":
return cmd._keyIndexes.Select((_, idx) =>
{
var rt = AdapterCall(cmd._command.InputKey(cmd.GetKey(idx)), parse);
return rt.ConvertTo<object[]>().FirstOrDefault();
}).ToArray().ConvertTo<TValue>();
case "PFCOUNT":
return cmd._keyIndexes.Select((_, idx) => AdapterCall(cmd._command.InputKey(cmd.GetKey(idx)), parse)).Sum(a => a.ConvertTo<long>()).ConvertTo<TValue>();
}
}
return TopOwner.LogCall(cmd, () =>
{
RedisResult rt = null;
RedisClientPool pool = null;
var protocolRetry = false;
using (var rds = GetRedisSocket(cmd))
{
pool = (rds as DefaultRedisSocket.TempProxyRedisSocket)._pool;
try
{
if (cmd._clusterMovedAsking)
{
cmd._clusterMovedAsking = false;
var askingCmd = "ASKING".SubCommand(null).FlagReadbytes(false);
rds.Write(askingCmd);
rds.Read(askingCmd);
}
rds.Write(cmd);
rt = rds.Read(cmd);
}
catch (ProtocolViolationException)
{
rds.ReleaseSocket();
cmd._protocolErrorTryCount++;
if (cmd._protocolErrorTryCount <= pool._policy._connectionStringBuilder.Retry)
protocolRetry = true;
else
{
if (cmd.IsReadOnlyCommand() == false || cmd._protocolErrorTryCount > 1) throw;
protocolRetry = true;
}
}
catch (Exception ex)
{
if (pool?.SetUnavailable(ex) == true)
{
}
throw;
}
}
if (protocolRetry) return AdapterCall(cmd, parse);
if (rt.IsError && pool != null)
{
var moved = ClusterMoved.ParseSimpleError(rt.SimpleError);
if (moved != null && cmd._clusterMovedTryCount < 3)
{
cmd._clusterMovedTryCount++;
if (moved.endpoint.StartsWith("127.0.0.1"))
moved.endpoint = $"{DefaultRedisSocket.SplitHost(pool._policy._connectionStringBuilder.Host).Key}:{moved.endpoint.Substring(10)}";
else if (moved.endpoint.StartsWith("localhost", StringComparison.CurrentCultureIgnoreCase))
moved.endpoint = $"{DefaultRedisSocket.SplitHost(pool._policy._connectionStringBuilder.Host).Key}:{moved.endpoint.Substring(10)}";
ConnectionStringBuilder connectionString = pool._policy._connectionStringBuilder.ToString();
connectionString.Host = moved.endpoint;
RegisterClusterNode(connectionString);
if (moved.ismoved)
_slotCache.AddOrUpdate(moved.slot, connectionString.Host, (k1, v1) => connectionString.Host);
if (moved.isask)
cmd._clusterMovedAsking = true;
TopOwner.OnNotice(null, new NoticeEventArgs(NoticeType.Info, null, $"{(cmd.WriteTarget ?? "Not connected").PadRight(21)} > {cmd}\r\n{rt.SimpleError} ", null));
return AdapterCall(cmd, parse);
}
}
return parse(rt);
});
}
19
View Source File : ClusterAdapter.cs
License : MIT License
Project Creator : 2881099
License : MIT License
Project Creator : 2881099
void RefershClusterNodes()
{
foreach (var testConnection in _clusterConnectionStrings)
{
RegisterClusterNode(testConnection);
//尝试求出其他节点,并缓存slot
try
{
var cnodes = AdapterCall<string>("CLUSTER".SubCommand("NODES"), rt => rt.ThrowOrValue<string>()).Split('\n');
foreach (var cnode in cnodes)
{
if (string.IsNullOrEmpty(cnode)) continue;
var dt = cnode.Trim().Split(' ');
if (dt.Length < 9) continue;
if (!dt[2].StartsWith("master") && !dt[2].EndsWith("master")) continue;
if (dt[7] != "connected") continue;
var endpoint = dt[1];
var at40 = endpoint.IndexOf('@');
if (at40 != -1) endpoint = endpoint.Remove(at40);
if (endpoint.StartsWith("127.0.0.1"))
endpoint = $"{DefaultRedisSocket.SplitHost(testConnection.Host).Key}:{endpoint.Substring(10)}";
else if (endpoint.StartsWith("localhost", StringComparison.CurrentCultureIgnoreCase))
endpoint = $"{DefaultRedisSocket.SplitHost(testConnection.Host).Key}:{endpoint.Substring(10)}";
ConnectionStringBuilder connectionString = testConnection.ToString();
connectionString.Host = endpoint;
RegisterClusterNode(connectionString);
for (var slotIndex = 8; slotIndex < dt.Length; slotIndex++)
{
var slots = dt[slotIndex].Split('-');
if (ushort.TryParse(slots[0], out var tryslotStart) &&
ushort.TryParse(slots[1], out var tryslotEnd))
{
for (var slot = tryslotStart; slot <= tryslotEnd; slot++)
_slotCache.AddOrUpdate(slot, connectionString.Host, (k1, v1) => connectionString.Host);
}
}
}
break;
}
catch
{
_ib.TryRemove(testConnection.Host, true);
}
}
if (_ib.GetKeys().Length == 0)
throw new RedisClientException($"All \"clusterConnectionStrings\" failed to connect");
}
See More Examples