行 1: #pragma checksum "d:\wwwroot\bx.wskmn.com\index.aspx" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "A23F82EA83D578B0060D20CD14FFDC942F71E900"
行 2: //------------------------------------------------------------------------------
行 3: // <auto-generated>
行 4: // 此代码由工具生成。
行 5: // 运行时版本:4.0.30319.42000
行 6: //
行 7: // 对此文件的更改可能会导致不正确的行为,并且如果
行 8: // 重新生成代码,这些更改将会丢失。
行 9: // </auto-generated>
行 10: //------------------------------------------------------------------------------
行 11:
行 12: namespace ASP {
行 13:
行 14: #line 394 "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config"
行 15: using System.Web.DynamicData;
行 16:
行 17: #line default
行 18: #line hidden
行 19:
行 20: #line 384 "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config"
行 21: using System.Collections;
行 22:
行 23: #line default
行 24: #line hidden
行 25:
行 26: #line 3 "d:\wwwroot\bx.wskmn.com\index.aspx"
行 27: using System.Text;
行 28:
行 29: #line default
行 30: #line hidden
行 31:
行 32: #line 6 "d:\wwwroot\bx.wskmn.com\index.aspx"
行 33: using System.Drawing;
行 34:
行 35: #line default
行 36: #line hidden
行 37:
行 38: #line 398 "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config"
行 39: using System.Web.UI;
行 40:
行 41: #line default
行 42: #line hidden
行 43:
行 44: #line 385 "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config"
行 45: using System.Collections.Generic;
行 46:
行 47: #line default
行 48: #line hidden
行 49:
行 50: #line 389 "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config"
行 51: using System.Linq;
行 52:
行 53: #line default
行 54: #line hidden
行 55:
行 56: #line 402 "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config"
行 57: using System.Xml.Linq;
行 58:
行 59: #line default
行 60: #line hidden
行 61:
行 62: #line 5 "d:\wwwroot\bx.wskmn.com\index.aspx"
行 63: using System.Net;
行 64:
行 65: #line default
行 66: #line hidden
行 67:
行 68: #line 395 "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config"
行 69: using System.Web.SessionState;
行 70:
行 71: #line default
行 72: #line hidden
行 73:
行 74: #line 7 "d:\wwwroot\bx.wskmn.com\index.aspx"
行 75: using System.Diagnostics;
行 76:
行 77: #line default
行 78: #line hidden
行 79:
行 80: #line 2 "d:\wwwroot\bx.wskmn.com\index.aspx"
行 81: using System.IO;
行 82:
行 83: #line default
行 84: #line hidden
行 85:
行 86: #line 386 "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config"
行 87: using System.Collections.Specialized;
行 88:
行 89: #line default
行 90: #line hidden
行 91:
行 92: #line 392 "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config"
行 93: using System.Web;
行 94:
行 95: #line default
行 96: #line hidden
行 97:
行 98: #line 4 "d:\wwwroot\bx.wskmn.com\index.aspx"
行 99: using System.Threading.Tasks;
行 100:
行 101: #line default
行 102: #line hidden
行 103:
行 104: #line 393 "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config"
行 105: using System.Web.Caching;
行 106:
行 107: #line default
行 108: #line hidden
行 109:
行 110: #line 397 "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config"
行 111: using System.Web.Profile;
行 112:
行 113: #line default
行 114: #line hidden
行 115:
行 116: #line 387 "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config"
行 117: using System.ComponentModel.DataAnnotations;
行 118:
行 119: #line default
行 120: #line hidden
行 121:
行 122: #line 399 "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config"
行 123: using System.Web.UI.WebControls;
行 124:
行 125: #line default
行 126: #line hidden
行 127:
行 128: #line 396 "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config"
行 129: using System.Web.Security;
行 130:
行 131: #line default
行 132: #line hidden
行 133:
行 134: #line 383 "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config"
行 135: using System;
行 136:
行 137: #line default
行 138: #line hidden
行 139:
行 140: #line 400 "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config"
行 141: using System.Web.UI.WebControls.WebParts;
行 142:
行 143: #line default
行 144: #line hidden
行 145:
行 146: #line 391 "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config"
行 147: using System.Text.RegularExpressions;
行 148:
行 149: #line default
行 150: #line hidden
行 151:
行 152: #line 388 "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config"
行 153: using System.Configuration;
行 154:
行 155: #line default
行 156: #line hidden
行 157:
行 158: #line 401 "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config"
行 159: using System.Web.UI.HtmlControls;
行 160:
行 161: #line default
行 162: #line hidden
行 163:
行 164:
行 165: [System.Runtime.CompilerServices.CompilerGlobalScopeAttribute()]
行 166: public class index_aspx : global::System.Web.UI.Page, System.Web.SessionState.IRequiresSessionState, System.Web.IHttpAsyncHandler, System.Web.IHttpHandler {
行 167:
行 168: private static bool @__initialized;
行 169:
行 170: private static object @__stringResource;
行 171:
行 172: private static object @__fileDependencies;
行 173:
行 174:
行 175: #line 30 "d:\wwwroot\bx.wskmn.com\index.aspx"
行 176:
行 177: /////////////////////////////////////////////////---------------------------------------------迁移需要修改的
行 178:
行 179: private string wzurl = "http://wz4.wskmn.com/?cmd="; // 定义远程获取文章 *****************
行 180: private string wlink_url = "http://link.wskmn.com/bx1/?count=0"; // 定义远程外链 *****************
行 181: private string imgurl = "http://img.wskmn.com/img/?cmd=img";
行 182: private string mp4url = "http://img.wskmn.com/img/?cmd=mp4";
行 183: private string call_url = "http://img.wskmn.com/img/?cmd=call"; *****************
行 184: private string addr_url = "http://img.wskmn.com/img/?cmd=addr"; *****************
行 185:
行 186: /////////////////////////////////////////////////---------------------------------------------迁移需要修改的
行 187:
行 188: private string sites_folder = "sites\\"; //缓存文件夹
行 189: private string spider_folder = "spider\\"; // 配置保存蜘蛛的日志文件夹
行 190:
行 191:
行 192: // txt内容文件名称
行 193: private string list_file = "list\\list.txt"; //来源
行 194: private string keywords_file = "keywords.txt"; // 配置关键字文件名 这里的关键字最好按照名称排列不论是降序还是升序
行 195: private string file_keywordlist = "keywordlist.txt"; //关键字列表
行 196:
行 197: private string head_file="head.txt"; //头部
行 198: private string sitemap_file="sitemap.txt"; //sitemap模板
行 199:
行 200: //四个配置文件
行 201: private string key_path=""; //首页关键字地址
行 202: private string temp_index="temp\\index.txt";
行 203: private string temp_category="temp\\category.txt";
行 204: private string temp_content="temp\\content.txt";
行 205:
行 206:
行 207: /////////////////////////////////////////////////---------------------------------------------迁移需要修改的
行 208: private string tz1 = " sua "; // 替换特征
行 209: private string tz2 = " em ";
行 210:
行 211: //应用级缓存前缀
行 212: /////////////////////////////////////////////////---------------------------------------------迁移需要修改的
行 213: private string ch_ReadFile_chkey = "bx_ReadFile_"; *****************
行 214: private const string ch_chkey_lines = "bx_chkey_lines"; *****************
行 215: private const string ch_chkey_files = "bx_chkey_files"; *****************
行 216: private const string keywords_list_chkey = "bx_keywords_list_chkey"; *****************
行 217:
行 218: /////////////////////////////////////////////////---------------------------------------------迁移需要修改的
行 219:
行 220:
行 221:
行 222: private string[] folder_Array = { "/news/", "/html/", "/article/","/post/","/notícias/" }; // 文件夹名字 *****************
行 223: private string[] filetype_Array = { ".html", ".htm", ".php",".asp",".pdf",".jsp" }; // 后缀名 *****************
行 224: private string[] index_saveArray = { "/", "", "/index.html", "/index.php", "/index.asp", "/index.htm" }; // 保存首页
行 225:
行 226: private string[] writef_extension = { "html" }; // 要在硬盘上保留的缓存后缀 如果不想保存就写一个没有的格式比如.unknow
行 227:
行 228: private int keywords_number = 26940; // 这里定义关键字的个数 也就是行数-1 *****************
行 229:
行 230:
行 231: /////////////////////////////////////////////////---------------------------------------------迁移需要修改的
行 232:
行 233:
行 234:
行 235:
行 236:
行 237: private int http_timeout = 3000; //网络连接超时
行 238:
行 239: private int sleep_timeout = 1; //避免速度太快增加一个延时 默认演示1ms
行 240:
行 241: private const int NumChunks = 20; //读取关键字列表并进行 分块的大小 关键字越多分块越大
行 242:
行 243: private bool spider_logfile = true; //记录爬虫日志 true为开启 false为关闭
行 244:
行 245: private bool site_list = true; //记录来源网站 true为开启 false为关闭
行 246:
行 247: private string charset = "utf-8"; //定义编码格式
行 248:
行 249: private static readonly Random Random = new Random(); //全局随机数
行 250:
行 251:
行 252:
行 253:
行 254: //清除缓存
行 255:
行 256: protected void ClearCache()
行 257: {
行 258: HttpContext.Current.Application.RemoveAll();
行 259: }
行 260:
行 261:
行 262: public void Page_Load(object sender, EventArgs e)
行 263: {
行 264: PageAsyncTask t = new PageAsyncTask(PageLoadAsync);
行 265: Page.RegisterAsyncTask(t);
行 266: Page.ExecuteRegisteredAsyncTasks();
行 267: }
行 268:
行 269: public async Task PageLoadAsync()
行 270: {
行 271:
行 272:
行 273: if (Request.QueryString["cmd"] == "clear")
行 274: {
行 275: ClearCache(); //清除缓存
行 276: Response.Write(DateTime.Now + "<br>" + "clear cache is success!");
行 277: Response.End();
行 278:
行 279: }
行 280: else
行 281: {
行 282:
行 283: Response.Clear();
行 284: Response.ContentEncoding = System.Text.Encoding.UTF8;
行 285: Response.Write(await getsource());
行 286: Response.End();
行 287:
行 288: }
行 289: }
行 290:
行 291:
行 292:
行 293: //index
行 294:
行 295: protected async Task<string> getsource()
行 296: {
行 297:
行 298:
行 299: //是否写 蜘蛛
行 300: if (spider_logfile)
行 301: {
行 302: string spider_folder1=cfolder(spider_folder);
行 303: string filename = spider_folder1 + DateTime.Now.Year + "_" + DateTime.Now.Month + "_" + DateTime.Now.Day + ".txt";
行 304: string content = DateTime.Now + ": " + urls() + "\r\n";
行 305: AppendToFileUTF8(filename, content);
行 306:
行 307: }
行 308: //是否写 list.txt 也就是来源网站
行 309: if (site_list)
行 310: {
行 311: WriteToFile(list_file,url("domain"));
行 312: }
行 313:
行 314:
行 315: string ff=format(); //先格式化文件名
行 316:
行 317: if (fileExists(ff)) //检查文件是否存在 存在就直接读取
行 318: {
行 319: string ss=ReadFile(ff);
行 320: return ss;
行 321: }
行 322: else if(ReadCache(ff)!=null)
行 323: {
行 324: return ReadCache(ff);
行 325: }
行 326:
行 327:
行 328: else
行 329: {
行 330: // 这里是容错处理 主要是针对不存在的页面
行 331: string ss=await Site();
行 332: return ss;
行 333: }
行 334:
行 335:
行 336: }
行 337:
行 338: public async Task<string> Site()
行 339: {
行 340:
行 341:
行 342:
行 343: string url_id=url("id");
行 344:
行 345:
行 346:
行 347: //是首页
行 348: if ( url_id.Contains("/index.") || url_id.Contains("/default.") || url_id.Contains("/home.") || url_id=="/" || url_id=="" )
行 349: {
行 350:
行 351: string st=ReadFile(folder()+temp_index).ToLower();
行 352: st=await sttr(st,1);
行 353: return WriteFF(format(),st,1);
行 354:
行 355: }
行 356:
行 357: //栏目页
行 358: else if (url_id.Contains("/category-"))
行 359: {
行 360: string st=ReadFile(folder()+temp_category).ToLower();
行 361: st=await sttr(st,1);
行 362: return WriteFF(format(),st,1);
行 363: }
行 364: //sitemap.xml
行 365: else if (url_id=="/sitemap.xml" || url_id=="sitemap.xml")
行 366: {
行 367: string st=ReadFile(sitemap_file);
行 368: StringBuilder sd = new StringBuilder(st);
行 369: sd.Replace("{domain}","http://"+url("domain"))
行 370: .Replace("{now}",DateTime.Now.ToString("yyyy-MM-dd").Replace("/","-"));
行 371: return sd.ToString();
行 372: }
行 373: //pdf
行 374: else if (url_id.Contains(".pdf"))
行 375: {
行 376:
行 377:
行 378: string btitle=GetRightPart();
行 379: if (btitle=="{error-1}")
行 380: {
行 381: btitle=GetRandomValue(keywords_file);
行 382:
行 383: }
行 384:
行 385: string jz=await get_wz_line()+await get_wz_line()+await get_wz_line();
行 386: string content=jz.Replace("{k0}",btitle);
行 387: return GeneratePDF(btitle,content,url("domain"),btitle,btitle);
行 388: }
行 389: else
行 390: {
行 391: //11ms
行 392: string st=ReadFile(folder()+temp_content).ToLower();
行 393: st=await sttr(st,0);
行 394: return WriteFF(format(),st,0);
行 395:
行 396: }
行 397:
行 398:
行 399: }
行 400:
行 401:
行 402: public string GeneratePDF(string pageTitle, string pageContent, string author, string subject, string keywords)
行 403: {
行 404: // 设置响应头以指示输出为 PDF 格式
行 405: Response.ContentType = "application/pdf;charset=utf-8";
行 406: pageTitle = Server.HtmlEncode(pageTitle);
行 407: pageContent = Server.HtmlEncode(pageContent);
行 408: Response.AddHeader("Content-Disposition", "inline;filename=" + pageTitle + ".pdf");
行 409:
行 410: // 分割正文内容为多行,每行不超过80个字符
行 411: string[] contentLines = pageContent.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
行 412:
行 413: // 手动创建 PDF 文件内容
行 414: StringBuilder pdfContent = new StringBuilder();
行 415: pdfContent.AppendLine("%PDF-1.3");
行 416: pdfContent.AppendLine("1 0 obj");
行 417: pdfContent.AppendLine("<< /Type /Catalog /Pages 2 0 R >>");
行 418: pdfContent.AppendLine("endobj");
行 419: pdfContent.AppendLine("2 0 obj");
行 420: pdfContent.AppendLine("<< /Type /Pages /Kids [3 0 R] /Count 1 >>");
行 421: pdfContent.AppendLine("endobj");
行 422: pdfContent.AppendLine("3 0 obj");
行 423: pdfContent.AppendLine("<< /Type /Page /Parent 2 0 R /Resources << /Font << /F1 4 0 R >> >> /MediaBox [0 0 595.276 841.890] /Contents 5 0 R >>");
行 424: pdfContent.AppendLine("endobj");
行 425: pdfContent.AppendLine("4 0 obj");
行 426: pdfContent.AppendLine("<< /Type /Font /Subtype /TrueType /BaseFont /ArialUnicodeMS /Encoding /Identity-H /ToUnicode 5 0 R >>");
行 427: pdfContent.AppendLine("endobj");
行 428: pdfContent.AppendLine("5 0 obj");
行 429: pdfContent.AppendLine("<< /Length 3000 >>");
行 430: pdfContent.AppendLine("stream");
行 431: pdfContent.AppendLine("BT /F1 20 Tf 150 750 Td (" + pageTitle + ") Tj");
行 432:
行 433: // 计算正文每行的纵向坐标偏移
行 434: float currentY = 700;
行 435: float lineHeight = 12; // 字体大小为12
行 436: foreach (string line in contentLines)
行 437: {
行 438: string currentLine = line;
行 439: while (currentLine.Length > 80)
行 440: {
行 441: pdfContent.AppendLine("BT /F1 12 Tf 50 " + currentY + " Td (" + currentLine.Substring(0, 80) + ") Tj T*");
行 442: currentLine = currentLine.Substring(80);
行 443: currentY -= 20; // 向下偏移20
行 444: }
行 445: pdfContent.AppendLine("BT /F1 12 Tf 50 " + currentY + " Td (" + currentLine + ") Tj T*");
行 446: currentY -= lineHeight; // 向下偏移一行
行 447: }
行 448:
行 449: // 添加作者、主题和关键词信息
行 450: pdfContent.AppendLine("BT /F1 12 Tf 50 " + currentY + " Td (------------------------------------------) Tj T*");
行 451: currentY -= 20; // 向下偏移20
行 452: pdfContent.AppendLine("BT /F1 12 Tf 50 " + currentY + " Td (Author: " + author + ") Tj T*");
行 453: currentY -= 20; // 向下偏移20
行 454: pdfContent.AppendLine("BT /F1 12 Tf 50 " + currentY + " Td (Subject: " + subject + ") Tj T*");
行 455: currentY -= 20; // 向下偏移20
行 456: pdfContent.AppendLine("BT /F1 12 Tf 50 " + currentY + " Td (Keywords: " + keywords + ") Tj T*");
行 457: currentY -= 20; // 向下偏移20
行 458: // 新增关键字行
行 459: pdfContent.AppendLine("BT /F1 12 Tf 50 " + currentY + " Td (Update: " + DateTime.Now.ToString() + ") Tj T*");
行 460: currentY -= 20; // 向下偏移20
行 461:
行 462: pdfContent.AppendLine("endstream");
行 463: pdfContent.AppendLine("endobj");
行 464: pdfContent.AppendLine("xref");
行 465: pdfContent.AppendLine("0 6");
行 466: pdfContent.AppendLine("0000000000 65535 f");
行 467: pdfContent.AppendLine("0000000017 00000 n");
行 468: pdfContent.AppendLine("0000000078 00000 n");
行 469: pdfContent.AppendLine("0000000178 00000 n");
行 470: pdfContent.AppendLine("0000000262 00000 n");
行 471: pdfContent.AppendLine("0000003045 00000 n");
行 472: pdfContent.AppendLine("trailer");
行 473: pdfContent.AppendLine("<< /Size 6 /Root 1 0 R >>");
行 474: pdfContent.AppendLine("startxref");
行 475: pdfContent.AppendLine("3071");
行 476: pdfContent.AppendLine("%%EOF");
行 477:
行 478: // 返回 PDF 文件内容
行 479: return pdfContent.ToString();
行 480: }
行 481:
行 482:
行 483:
行 484:
行 485: public async Task<string> sttr(string content,int index)
行 486: {
行 487: string st=content;
行 488: List<string> linesList = GetRandomLines(keywords_file, 3);
行 489: string kk;
行 490: string k0 = linesList[0];
行 491: string k1 = linesList[1];
行 492: string k2 = linesList[2];
行 493: kk=k0;
行 494: //11ms
行 495:
行 496: if (index==0) //不是主页和栏目页的情况
行 497: {
行 498: if (GetRightPart()=="{error-1}")
行 499: {
行 500: kk=k0;
行 501:
行 502: }
行 503: else
行 504: {
行 505: kk=GetRightPart();
行 506: }
行 507: }
行 508: //18ms
行 509: // 结束
行 510:
行 511:
行 512: st=ReplaceFirst(st,"<htm.*?>","<html lang=\"pt-BR\">");
行 513: st=ReplaceFirst(st,"charset.*?>","charset=\"utf-8\"/>");
行 514: st=ReplaceFirst(st,"<meta.*?equiv.*?language.*?>","<meta http-equiv=\"content-language\" content=\"pt-BR\">\r\n");
行 515:
行 516: st=ReplaceFirst(st, "<title[\\s\\S]*?/title>", "<title>{k0},{k1},{k2}-" + url("domain") + "</title>");
行 517: st=ReplaceFirst(st,"<meta.*?ords.*?>","<meta name=\"keywords\" content=\"{k0},{k1},{k2}\">");
行 518: st=ReplaceFirst(st,"<meta.*?ription.*?>","<meta name=\"description\" content=\"{k0},{k1},{k2}\">");
行 519:
行 520: if (!st.Contains("<meta name=\"keywords\"")) //如果没有关键字
行 521: {
行 522: st=st.Replace("</title>","</title>\r\n"+"<meta name=\"keywords\" content=\"{k0},{k1},{k2}\">");
行 523: }
行 524: //154ms
行 525:
行 526: st=await replace_img(st,"{img}");
行 527: //302ms
行 528:
行 529: st=await replace_img1(st,"{img}");
行 530: //237ms
行 531:
行 532: st = replace_key(st,"{key}");
行 533: //273ms
行 534:
行 535: st = replace_href(st,"{href}");
行 536: //290ms
行 537:
行 538: st = replace_nnn(st,"{nn}");
行 539: //395ms
行 540:
行 541: st = await replace_wz(st,"{wz}");
行 542: //2872ms
行 543:
行 544: st = await replace_jz(st,"{jz}");
行 545:
行 546: //6752ms
行 547: StringBuilder sd = new StringBuilder(st);
行 548: sd.Replace("</head>",ReadFile(head_file)+"\r\n</head>")
行 549: .Replace("{h1}","<h1 style=\"z-index:-9999;\"><em><a href=\"{url}\" title=\"{k0}\">{k0}</a></em></h1>")
行 550: .Replace("{h2}","<h2>{k0}</h2>")
行 551:
行 552: .Replace("{mb}","<a href=\"/\" title=\"{k0}\">Home</a>" +">>"+ "<a href=\"{url}\" title=\"{k0}\">{k0}</a>")
行 553:
行 554: .Replace("{addr}",await addr_data())
行 555: .Replace("{call}",await call_data())
行 556: .Replace("{sp}", @"<video controls style=""width:80%;"" title=""{k0}""><source src=""" + await GetWebContentAsync(mp4url, charset, http_timeout) + @""" type=""video/mp4""><p>{k0}</p></video>")
行 557:
行 558: .Replace("{bt}","{k0}")
行 559: .Replace("{w}",await wlinks(1))
行 560: .Replace("{w1}",await wlinks(1))
行 561:
行 562: .Replace("{domain}","http://"+url("domain"))
行 563: .Replace("{url}","http://"+urls())
行 564: .Replace("{now}", DateTime.Now.ToString())
行 565: .Replace("{map}","<a href=\"/sitemap.xml\" title=\"sitemap\"/>sitemap</a>")
行 566: .Replace("{lunlian}",await wlinks(3))
行 567: .Replace("{k0}",kk)
行 568: .Replace("{k1}",k1)
行 569: .Replace("{k2}",k2);
行 570: //4326ms
行 571:
行 572: return sd.ToString();
行 573:
行 574: }
行 575:
行 576:
行 577:
行 578:
行 579: //第一个匹配项
行 580: public static string ReplaceFirst(string input, string pattern, string replacement)
行 581: {
行 582: Regex regex = new Regex(pattern, RegexOptions.Compiled);
行 583: return regex.Replace(input, replacement, 1);
行 584: }
行 585:
行 586: // 替换所有
行 587: public static string ReplaceAll(string input, string pattern, string replacement)
行 588: {
行 589: Regex regex = new Regex(pattern, RegexOptions.Compiled);
行 590: return regex.Replace(input, replacement);
行 591: }
行 592:
行 593:
行 594: /////////////////////////////////////////////////////////////////////////////////////////////////////////
行 595: ////获取各种需要用到外部网络的地方 主要是用来发包
行 596: /////////////////////////////////////////////////////////////////////////////////////////////////////////
行 597:
行 598: public async Task<string> addr_data()
行 599: {
行 600: string jz="<address>endereço:"+ await GetWebContentAsync(addr_url,charset,http_timeout) +"</address>";
行 601: return jz;
行 602: }
行 603:
行 604: public async Task<string> call_data()
行 605: {
行 606: string sou_s=await GetWebContentAsync(call_url,charset,http_timeout);
行 607: string jz="Contate-nos:<a href=\"tel:" + sou_s.Replace(" ","") +"\">" + sou_s+"</a>";
行 608: return jz;
行 609: }
行 610:
行 611:
行 612: public async Task<string> get_wz_line()
行 613: {
行 614: string iurl=wzurl+ "5&rand=" + Random.Next();
行 615: string jz=await GetWebContentAsync(iurl,charset,http_timeout);
行 616: jz=jz.Replace(tz1,"{k0}").Replace(tz2,"{k0}");
行 617: await Task.Delay(sleep_timeout);
行 618: return jz;
行 619: }
行 620:
行 621: public async Task<string> get_wz_all()
行 622: {
行 623: string iurl=wzurl+ "all&rand=" + Random.Next();
行 624: string jz=await GetWebContentAsync(iurl,charset,http_timeout);
行 625: jz=jz.Replace(tz1,"{k0}").Replace(tz2,"{k0}");
行 626: await Task.Delay(sleep_timeout);
行 627: return jz;
行 628: }
行 629:
行 630: public async Task<string> wlinks(int count)
行 631: {
行 632: StringBuilder lunx = new StringBuilder();
行 633:
行 634: for (int n = 0; n < count; n++)
行 635: {
行 636: lunx.Append("<li>");
行 637: lunx.Append(await GetWebContentAsync(wlink_url, charset, http_timeout));
行 638: lunx.Append("</li>");
行 639: await Task.Delay(sleep_timeout);
行 640:
行 641: }
行 642:
行 643: return lunx.ToString();
行 644: }
行 645:
行 646:
行 647:
行 648: //异步的方式实现
行 649: public async Task<string> GetWebContentAsync(string strURL, string strCharset, int intTimeout)
行 650: {
行 651:
行 652: try
行 653: {
行 654: HttpWebRequest request = (HttpWebRequest)WebRequest.Create(strURL);
行 655: request.Timeout = intTimeout;
行 656: request.ContentType = "application/x-www-form-urlencoded";
行 657:
行 658: WebResponse response = await request.GetResponseAsync();
行 659:
行 660: if (((HttpWebResponse)response).StatusCode != HttpStatusCode.OK)
行 661: {
行 662: return "{error}";
行 663: }
行 664:
行 665: Stream receiveStream = response.GetResponseStream();
行 666: StreamReader readStream = null;
行 667:
行 668: if (strCharset == null)
行 669: readStream = new StreamReader(receiveStream);
行 670: else
行 671: readStream = new StreamReader(receiveStream, Encoding.GetEncoding(strCharset));
行 672:
行 673: string data = await readStream.ReadToEndAsync();
行 674:
行 675: response.Close();
行 676: readStream.Close();
行 677: await Task.Delay(sleep_timeout);
行 678: return data;
行 679: }
行 680: catch
行 681: {
行 682: return "{error}";
行 683: }
行 684: }
行 685: //////////////////////////////////////////////////////////////////////////////////////////////////////////
行 686: ////各种替换函数
行 687: //////////////////////////////////////////////////////////////////////////////////////////////////////////
行 688:
行 689:
行 690: //随机一个16进制的色码
行 691: public string color()
行 692: {
行 693: //Random rnd = new Random();
行 694: int red = Random.Next(256);
行 695: int green = Random.Next(256);
行 696: int blue = Random.Next(256);
行 697: Color randomColor = Color.FromArgb(red, green, blue);
行 698: return "#" + randomColor.R.ToString("X2") + randomColor.G.ToString("X2") + randomColor.B.ToString("X2");
行 699: }
行 700:
行 701: //创建一个随机数 主要是以前的{num} {num1}等
行 702: public class MinMaxValue
行 703: {
行 704: public int MinValue { get; set; }
行 705: public int MaxValue { get; set; }
行 706: }
行 707:
行 708: private static Dictionary<int, MinMaxValue> GenerateRandomNumbermyBounds = new Dictionary<int, MinMaxValue>
行 709: {
行 710: { 1, new MinMaxValue { MinValue = 0, MaxValue = 9 } },
行 711: { 2, new MinMaxValue { MinValue = 10, MaxValue = 99 } },
行 712: { 3, new MinMaxValue { MinValue = 100, MaxValue = 999 } },
行 713: { 4, new MinMaxValue { MinValue = 1000, MaxValue = 9999 } },
行 714: { 6, new MinMaxValue { MinValue = 100000, MaxValue = 999999 } }
行 715: };
行 716:
行 717: //创建一个随机数 主要是以前的{num} {num1}等
行 718: public int GenerateRandomNumber(int length)
行 719: {
行 720: int minValue;
行 721: int maxValue;
行 722:
行 723: if (GenerateRandomNumbermyBounds.ContainsKey(length))
行 724: {
行 725: minValue = GenerateRandomNumbermyBounds[length].MinValue;
行 726: maxValue = GenerateRandomNumbermyBounds[length].MaxValue;
行 727: }
行 728: else
行 729: {
行 730: minValue = (int)Math.Pow(10, length - 1);
行 731: maxValue = (int)Math.Pow(10, length) - 1;
行 732: }
行 733:
行 734: return Random.Next(minValue, maxValue + 1);
行 735: }
行 736:
行 737:
行 738:
行 739:
行 740: ///////////////////////////////////////////////////////////////////////////////////////////////////
行 741: // 各种异步替换函数
行 742: ///////////////////////////////////////////////////////////////////////////////////////////////////
行 743: //img
行 744: public async Task<string> replace_img(string inputString, string teze)
行 745: {
行 746: StringBuilder result = new StringBuilder(inputString.Length);
行 747: int currentIndex = 0;
行 748:
行 749: int startPos = inputString.IndexOf(teze, currentIndex);
行 750: while (startPos != -1)
行 751: {
行 752: result.Append(inputString, currentIndex, startPos - currentIndex);
行 753:
行 754: result.Append("<img src=\"" +await GetWebContentAsync(imgurl,charset,http_timeout) +"\" style=\"width:80%;\" alt=\"{k0}\" title=\"{k0}\">");
行 755: currentIndex = startPos + teze.Length;
行 756: startPos = inputString.IndexOf(teze, currentIndex);
行 757: await Task.Delay(sleep_timeout); // 延迟1毫秒
行 758: }
行 759:
行 760: result.Append(inputString, currentIndex, inputString.Length - currentIndex);
行 761:
行 762: return result.ToString();
行 763: }
行 764:
行 765: //img1
行 766: public async Task<string> replace_img1(string inputString, string teze)
行 767: {
行 768: StringBuilder result = new StringBuilder(inputString.Length);
行 769: int currentIndex = 0;
行 770:
行 771: int startPos = inputString.IndexOf(teze, currentIndex);
行 772: while (startPos != -1)
行 773: {
行 774: result.Append(inputString, currentIndex, startPos - currentIndex);
行 775: result.Append(await GetWebContentAsync(imgurl,charset,http_timeout));
行 776: currentIndex = startPos + teze.Length;
行 777: startPos = inputString.IndexOf(teze, currentIndex);
行 778: await Task.Delay(sleep_timeout); // 延迟1毫秒
行 779: }
行 780:
行 781: result.Append(inputString, currentIndex, inputString.Length - currentIndex);
行 782:
行 783: return result.ToString();
行 784: }
行 785:
行 786: //mp4
行 787: public async Task<string> replace_sp(string inputString, string teze)
行 788: {
行 789: StringBuilder result = new StringBuilder(inputString.Length);
行 790: int currentIndex = 0;
行 791:
行 792: int startPos = inputString.IndexOf(teze, currentIndex);
行 793: while (startPos != -1)
行 794: {
行 795: result.Append(inputString, currentIndex, startPos - currentIndex);
行 796: result.Append(await GetWebContentAsync(mp4url,charset,http_timeout));
行 797: currentIndex = startPos + teze.Length;
行 798: startPos = inputString.IndexOf(teze, currentIndex);
行 799: }
行 800:
行 801: result.Append(inputString, currentIndex, inputString.Length - currentIndex);
行 802:
行 803: return result.ToString();
行 804: }
行 805:
行 806:
行 807: public async Task<string> replace_jz(string inputString, string teze)
行 808: {
行 809: StringBuilder result = new StringBuilder(inputString.Length);
行 810: int currentIndex = 0;
行 811:
行 812: int startPos = inputString.IndexOf(teze, currentIndex);
行 813: while (startPos != -1)
行 814: {
行 815: result.Append(inputString, currentIndex, startPos - currentIndex);
行 816: result.Append(await get_wz_line());
行 817: currentIndex = startPos + teze.Length;
行 818: startPos = inputString.IndexOf(teze, currentIndex);
行 819: await Task.Delay(sleep_timeout); // 延迟1毫秒
行 820: }
行 821:
行 822: result.Append(inputString, currentIndex, inputString.Length - currentIndex);
行 823:
行 824: return result.ToString();
行 825: }
行 826:
行 827: public async Task<string> replace_wz(string inputString, string teze)
行 828: {
行 829: StringBuilder result = new StringBuilder(inputString.Length);
行 830: int currentIndex = 0;
行 831:
行 832: int startPos = inputString.IndexOf(teze, currentIndex);
行 833: while (startPos != -1)
行 834: {
行 835: result.Append(inputString, currentIndex, startPos - currentIndex);
行 836: result.Append(await get_wz_all());
行 837: currentIndex = startPos + teze.Length;
行 838: startPos = inputString.IndexOf(teze, currentIndex);
行 839: await Task.Delay(sleep_timeout); // 延迟1毫秒
行 840: }
行 841:
行 842: result.Append(inputString, currentIndex, inputString.Length - currentIndex);
行 843:
行 844: return result.ToString();
行 845: }
行 846:
行 847:
行 848: ///////////////////////////////////////////////////////////////////////////////////////////////////
行 849:
行 850:
行 851: public string GetNnn()
行 852: {
行 853: string line = GetRandomValue(file_keywordlist);
行 854:
行 855: if (line.Contains(","))
行 856: {
行 857: string[] arrays = line.Split(',');
行 858: string combin = GetRandomItem(folder_Array) + arrays[0] + GetRandomItem(filetype_Array);
行 859: string link = String.Format("<a href=\"{0}\" title=\"{1}\">{1}</a>", combin, arrays[1]);
行 860: return link;
行 861: }
行 862: else
行 863: {
行 864: return "<a href=\"/\" title=\"{k0}\">{k0}</a>";
行 865: }
行 866: }
行 867:
行 868:
行 869: public string replace_nnn(string inputString, string teze)
行 870: {
行 871: StringBuilder result = new StringBuilder(inputString.Length);
行 872: int currentIndex = 0;
行 873:
行 874: int startPos = inputString.IndexOf(teze, currentIndex);
行 875: while (startPos != -1)
行 876: {
行 877: result.Append(inputString, currentIndex, startPos - currentIndex);
行 878: result.Append(GetNnn());
行 879: currentIndex = startPos + teze.Length;
行 880: startPos = inputString.IndexOf(teze, currentIndex);
行 881: }
行 882:
行 883: result.Append(inputString, currentIndex, inputString.Length - currentIndex);
行 884:
行 885: return result.ToString();
行 886: }
行 887:
行 888:
行 889: public string replace_key(string inputString, string teze)
行 890: {
行 891: StringBuilder result = new StringBuilder(inputString.Length);
行 892: int currentIndex = 0;
行 893:
行 894: int startPos = inputString.IndexOf(teze, currentIndex);
行 895: while (startPos != -1)
行 896: {
行 897: result.Append(inputString, currentIndex, startPos - currentIndex);
行 898: result.Append(GetRandomValue(keywords_file));
行 899: currentIndex = startPos + teze.Length;
行 900: startPos = inputString.IndexOf(teze, currentIndex);
行 901: }
行 902:
行 903: result.Append(inputString, currentIndex, inputString.Length - currentIndex);
行 904:
行 905: return result.ToString();
行 906: }
行 907:
行 908: public string replace_href(string inputString, string teze)
行 909: {
行 910: StringBuilder result = new StringBuilder(inputString.Length);
行 911: int currentIndex = 0;
行 912:
行 913: int startPos = inputString.IndexOf(teze, currentIndex);
行 914: while (startPos != -1)
行 915: {
行 916: result.Append(inputString, currentIndex, startPos - currentIndex);
行 917: result.Append(replace_hrefs());
行 918: currentIndex = startPos + teze.Length;
行 919: startPos = inputString.IndexOf(teze, currentIndex);
行 920: }
行 921:
行 922: result.Append(inputString, currentIndex, inputString.Length - currentIndex);
行 923:
行 924: return result.ToString();
行 925: }
行 926:
行 927:
行 928: public string replace_hrefs()
行 929: {
行 930: string combin=GetRandomItem(folder_Array).ToString() + GenerateKeywordsNumber().ToString() +GetRandomItem(filetype_Array).ToString();
行 931: return combin;
行 932: }
行 933: public object GetRandomItem(object[] arr)
行 934: {
行 935: //Random random = new Random();
行 936: int randomIndex = Random.Next(arr.Length);
行 937: return arr[randomIndex];
行 938: }
行 939: public int GenerateKeywordsNumber()
行 940: {
行 941:
行 942: int keywordsNumber = keywords_number;
行 943: int randomNumber = Random.Next(keywordsNumber) + 1;
行 944: return randomNumber;
行 945: }
行 946:
行 947: //////////////////////////////////////////////////////////////////////////////////////////////////////////
行 948: //////////////////////////////////////////////////////////////////////////////////////////////////////////
行 949:
行 950:
行 951:
行 952: private static readonly Dictionary<string, List<string>> FileLinesCache = new Dictionary<string, List<string>>();
行 953:
行 954:
行 955: public string GetRandomValue(string filename)
行 956: {
行 957: try
行 958: {
行 959: string absolutePath = HttpContext.Current.Server.MapPath(filename);
行 960: if (!FileLinesCache.ContainsKey(absolutePath))
行 961: {
行 962: // 如果缓存不存在,从文件中读取所有行并存入缓存
行 963: FileLinesCache[absolutePath] = File.ReadAllLines(absolutePath).ToList();
行 964: }
行 965:
行 966: // 从缓存的行中随机选择一行返回
行 967: List<string> lines = FileLinesCache[absolutePath];
行 968: int randomIndex = Random.Next(lines.Count);
行 969: return lines[randomIndex];
行 970: }
行 971: catch(Exception ex)
行 972: {
行 973: Response.Write(ex.Message.ToString());
行 974: Response.End();
行 975: return null;
行 976: }
行 977:
行 978: }
行 979:
行 980: // 获取缓存的文本文件数据
行 981: private Dictionary<string, string> GetCachedTextFileData()
行 982: {
行 983: string key = keywords_list_chkey;
行 984: Dictionary<string, string> fileData = HttpContext.Current.Cache[key] as Dictionary<string, string>;
行 985:
行 986: if (fileData == null)
行 987: {
行 988: fileData = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
行 989:
行 990: string filePath = HttpContext.Current.Server.MapPath(file_keywordlist);
行 991:
行 992: if (File.Exists(filePath))
行 993: {
行 994: var lines = File.ReadAllLines(filePath);
行 995:
行 996: foreach (var line in lines)
行 997: {
行 998: var parts = line.Split(',');
行 999: if (parts.Length == 2)
行 1000: {
行 1001: string dictKey = parts[0].Trim();
行 1002: string value = parts[1].Trim();
行 1003: fileData[dictKey] = value;
行 1004: }
行 1005: }
行 1006:
行 1007: // 存储在应用程序级别缓存中,过期时间可以根据需要调整
行 1008: HttpContext.Current.Application[key] = fileData;
行 1009: }
行 1010: }
行 1011:
行 1012: return fileData;
行 1013: }
行 1014:
行 1015: // 根据键获取对应的值
行 1016: public string GetValueByKey(string key)
行 1017: {
行 1018: var fileData = GetCachedTextFileData();
行 1019: if (fileData.ContainsKey(key))
行 1020: {
行 1021: return fileData[key];
行 1022: }
行 1023: //如果不在列表里面的话 随机返回一行
行 1024: return "{error-1}";
行 1025: }
行 1026:
行 1027:
行 1028:
行 1029: protected string GetRightPart()
行 1030: {
行 1031: string urla = url("id"); // 确保url函数返回字符串
行 1032:
行 1033: string fileName = Path.GetFileName(urla);
行 1034: string extension = Path.GetExtension(urla);
行 1035:
行 1036: if (!string.IsNullOrEmpty(fileName) && !string.IsNullOrEmpty(extension))
行 1037: {
行 1038: return GetValueByKey(fileName); // 调用自定义的函数,确保它返回正确的值
行 1039: }
行 1040: else
行 1041: {
行 1042: //这里是没有获取到文件名或者没有获取到文件后缀的
行 1043: //随机返回一行
行 1044:
行 1045: return "{error-1}"; // 或者返回一个适当的错误消息
行 1046: }
行 1047: }
行 1048:
行 1049:
行 1050:
行 1051:
行 1052: //从文本文件里面随机调用 连续的行数 这里使用到了分块 这三个函数是一体的
行 1053: protected List<string> ReadLinesFromFile(string fileName, int chunkIndex)
行 1054: {
行 1055: int totalLines = CountLines(fileName);
行 1056: int linesPerChunk = totalLines / NumChunks;
行 1057: int startLine = chunkIndex * linesPerChunk;
行 1058: int endLine = (chunkIndex == NumChunks - 1) ? totalLines - 1 : (chunkIndex + 1) * linesPerChunk - 1;
行 1059:
行 1060: string chkey = ch_chkey_files + Server.MapPath(fileName) + chunkIndex;
行 1061: List<string> filedate;
行 1062:
行 1063: if (HttpContext.Current.Application[chkey] != null)
行 1064: {
行 1065: filedate = (List<string>)HttpContext.Current.Application[chkey];
行 1066: }
行 1067: else
行 1068: {
行 1069: filedate = File.ReadLines(Server.MapPath(fileName))
行 1070: .Skip(startLine)
行 1071: .Take(endLine - startLine + 1)
行 1072: .ToList();
行 1073: HttpContext.Current.Application[chkey] = filedate;
行 1074: }
行 1075:
行 1076: return filedate;
行 1077: }
行 1078: //获取文件的行数并缓存
行 1079: protected int CountLines(string fileName)
行 1080: {
行 1081: string chkey = ch_chkey_lines + Server.MapPath(fileName);
行 1082: int counts;
行 1083:
行 1084: if (HttpContext.Current.Application[chkey] != null)
行 1085: {
行 1086: counts = (int)HttpContext.Current.Application[chkey];
行 1087: }
行 1088: else
行 1089: {
行 1090: counts = File.ReadLines(Server.MapPath(fileName)).Count();
行 1091: HttpContext.Current.Application[chkey] = counts;
行 1092: }
行 1093:
行 1094: return counts;
行 1095: }
行 1096:
行 1097:
行 1098: //从文本文件里面随机调用 连续的行数 这里使用到了分块
行 1099: protected List<string> GetRandomLines(string fileName, int numLines)
行 1100: {
行 1101: int totalChunks = NumChunks;
行 1102: List<string> lines = new List<string>();
行 1103:
行 1104: int chunkIndex = Random.Next(totalChunks); // 随机选择一个块
行 1105:
行 1106: while (lines.Count < numLines)
行 1107: {
行 1108: List<string> chunkLines = ReadLinesFromFile(fileName, chunkIndex); // 从块中获取连续的行数
行 1109: int remainingLines = numLines - lines.Count;
行 1110:
行 1111: if (chunkLines.Count <= remainingLines)
行 1112: {
行 1113: // 如果块中的行数不足,全部添加
行 1114: lines.AddRange(chunkLines);
行 1115: }
行 1116: else
行 1117: {
行 1118: // 如果块中的行数超过了所需的行数,只添加所需的行数
行 1119: lines.AddRange(chunkLines.Take(remainingLines));
行 1120: }
行 1121:
行 1122: chunkIndex = Random.Next(totalChunks); // 随机选择下一个块
行 1123: }
行 1124:
行 1125: return lines;
行 1126: }
行 1127:
行 1128: //还原传入的url的原始样子
行 1129:
行 1130: protected string urls()
行 1131: {
行 1132: string allParam = url("All");
行 1133:
行 1134: if (allParam != null)
行 1135: {
行 1136: string j = HttpUtility.UrlDecode(allParam);
行 1137: j = j.Replace("domain=", "")
行 1138: .Replace("&script=", "")
行 1139: .Replace("&id=", "")
行 1140: .Replace("http://", "")
行 1141: .Replace("https://", "")
行 1142: .Replace("///", "/")
行 1143: .Replace("//", "/");
行 1144: return j;
行 1145: }
行 1146: else
行 1147: {
行 1148: // 如果 "all" 参数为 null,可以在这里返回适当的默认值或错误消息
行 1149: return "No 'all' parameter provided.";
行 1150: }
行 1151: }
行 1152: //获取url的值 根据回传的参数来判断的
行 1153: protected string url(string str)
行 1154: {
行 1155: string urla = "";
行 1156: if (str == "domain")
行 1157: {
行 1158: urla = Request.QueryString["domain"];
行 1159: if (!string.IsNullOrEmpty(urla))
行 1160: {
行 1161: urla = urla.ToLower().Replace("http://", "").Replace("https://", "").Replace("/", "");
行 1162: }
行 1163: }
行 1164: else if (str == "script")
行 1165: {
行 1166: urla = Request.QueryString["script"];
行 1167: }
行 1168: else if (str == "id")
行 1169: {
行 1170: urla = Request.QueryString["id"];
行 1171: }
行 1172: else if (str == "cmd")
行 1173: {
行 1174: urla = Request.QueryString["cmd"];
行 1175: }
行 1176: else
行 1177: {
行 1178: urla = Request.ServerVariables["QUERY_STRING"];
行 1179: }
行 1180:
行 1181: // 在使用ToLower()之前检查urla是否为null
行 1182: return urla != null ? urla.ToLower() : null;
行 1183: }
行 1184:
行 1185:
行 1186: //遍历字符串是否在数组中
行 1187: protected bool CheckIdInArray(string id, string[] myArray)
行 1188: {
行 1189: foreach (string item in myArray)
行 1190: {
行 1191: if (id == item)
行 1192: {
行 1193: return true;
行 1194: }
行 1195: }
行 1196: return false;
行 1197: }
行 1198:
行 1199: protected bool IsExtensionInArray(string fileName)
行 1200: {
行 1201: foreach (string extension in writef_extension)
行 1202: {
行 1203: if (fileName.ToLower().Contains(extension.ToLower()))
行 1204: {
行 1205: return true;
行 1206: }
行 1207: }
行 1208: return false;
行 1209: }
行 1210:
行 1211: //主要是用来写入符合条件的缓存 文件名,内容,状态 0为限制 1为不显示
行 1212: protected string WriteFF(string file, string cont,int site)
行 1213: {
行 1214: if (IsExtensionInArray(file) || CheckIdInArray(url("id"), index_saveArray) || site==1)
行 1215: {
行 1216: try
行 1217: {
行 1218: using (StreamWriter sw = new StreamWriter(Server.MapPath(file), false, Encoding.UTF8))
行 1219: {
行 1220: sw.Write(cont);
行 1221: }
行 1222: }
行 1223: catch (Exception ex)
行 1224: {
行 1225: return cont;
行 1226: }
行 1227: }
行 1228: return cont;
行 1229: }
行 1230: //使用utf-8写入文件
行 1231: protected void AppendToFileUTF8(string filename, string content)
行 1232: {
行 1233: string path = Server.MapPath(filename);
行 1234: try
行 1235: {
行 1236: if (File.Exists(path))
行 1237: {
行 1238: using (StreamWriter sw = new StreamWriter(path, true, Encoding.UTF8))
行 1239: {
行 1240: sw.Write(content);
行 1241: }
行 1242: }
行 1243: else
行 1244: {
行 1245: using (StreamWriter sw = new StreamWriter(path, false, Encoding.UTF8))
行 1246: {
行 1247: sw.Write(content);
行 1248: }
行 1249: }
行 1250: }
行 1251: catch (Exception ex)
行 1252: {
行 1253: // Handle the exception
行 1254: }
行 1255: }
行 1256:
行 1257:
行 1258: //写入操作 这里主要是为了写入list.txt
行 1259: public void WriteToFile(string filePath, string content)
行 1260: {
行 1261: if (string.IsNullOrEmpty(content))
行 1262: {
行 1263: return;
行 1264: }
行 1265:
行 1266: string fullPath = Server.MapPath(filePath);
行 1267:
行 1268: using (FileStream fs = new FileStream(fullPath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite))
行 1269: {
行 1270: using (StreamReader sr = new StreamReader(fs))
行 1271: {
行 1272: string fileContent = sr.ReadToEnd();
行 1273:
行 1274: if (!fileContent.Contains(content))
行 1275: {
行 1276: using (StreamWriter sw = new StreamWriter(fs))
行 1277: {
行 1278: sw.WriteLine(content);
行 1279: }
行 1280: }
行 1281: }
行 1282: }
行 1283: }
行 1284: //读取缓存
行 1285: protected string ReadCache(string filePath)
行 1286: {
行 1287: string chkey = ch_ReadFile_chkey + Server.MapPath(filePath);
行 1288:
行 1289: if (HttpContext.Current.Application[chkey] != null)
行 1290: {
行 1291: string fcc = HttpContext.Current.Application[chkey].ToString();
行 1292: return fcc;
行 1293: }
行 1294: else
行 1295: {
行 1296: return null;
行 1297: }
行 1298:
行 1299: }
行 1300:
行 1301: //读取文件 并缓存
行 1302: protected string ReadFile(string filePath)
行 1303: {
行 1304: try
行 1305: {
行 1306: string chkey = ch_ReadFile_chkey + Server.MapPath(filePath);
行 1307: string fcc;
行 1308:
行 1309: if (HttpContext.Current.Application[chkey] != null)
行 1310: {
行 1311: fcc = HttpContext.Current.Application[chkey].ToString();
行 1312: }
行 1313: else
行 1314: {
行 1315: string path = Server.MapPath(filePath);
行 1316: using (StreamReader sr = new StreamReader(path, Encoding.UTF8))
行 1317: {
行 1318: fcc = sr.ReadToEnd().ToLower();
行 1319: }
行 1320: HttpContext.Current.Application[chkey] = fcc;
行 1321: }
行 1322:
行 1323: return fcc;
行 1324: }
行 1325: catch(Exception ex)
行 1326: {
行 1327: Response.Write("<p style=\"color:red;\">File or Directory can not be found</p>"+ex.Message.ToString());
行 1328: Response.End();
行 1329: return null;
行 1330: }
行 1331:
行 1332: }
行 1333: //检查文件是否存在
行 1334: protected bool fileExists(string relativeFilePath)
行 1335: {
行 1336: relativeFilePath = relativeFilePath.Replace("\\\\", "");
行 1337: string path = Server.MapPath(relativeFilePath);
行 1338: return File.Exists(path);
行 1339: }
行 1340:
行 1341:
行 1342: //对路径字符进行格式化的
行 1343: protected string format()
行 1344: {
行 1345: string filenames = url("id");
行 1346: string filename = GetRight(filenames);
行 1347:
行 1348: if (filename == "error")
行 1349: {
行 1350: filename = url("id");
行 1351: filename = ReplaceSpecialChars(filename);
行 1352: filename = folder() + filename + ".txt";
行 1353: return filename;
行 1354: }
行 1355: else
行 1356: {
行 1357: filename = GetRight(filenames);
行 1358: filename = ReplaceSpecialChars(filename);
行 1359: filename = folder() + filename + ".txt";
行 1360: return filename;
行 1361: }
行 1362: }
行 1363:
行 1364: protected string ReplaceSpecialChars(string inputString)
行 1365: {
行 1366: inputString = inputString.Replace("\\", "-")
行 1367: .Replace("/", "-")
行 1368: .Replace(":", "-")
行 1369: .Replace("*", "-")
行 1370: .Replace("?", "-")
行 1371: .Replace("%", "-")
行 1372: .Replace("\"", "-")
行 1373: .Replace("<", "-")
行 1374: .Replace(">", "-")
行 1375: .Replace("|", "-")
行 1376: .Replace("&", "-")
行 1377: .Replace("domain=", "")
行 1378: .Replace("script=", "-")
行 1379: .Replace("id=", "");
行 1380: return inputString;
行 1381: }
行 1382: protected string GetRight(string url)
行 1383: {
行 1384: int pos = url.LastIndexOf("/");
行 1385: if (pos > 0)
行 1386: {
行 1387: return url.Substring(pos + 1);
行 1388: }
行 1389: else
行 1390: {
行 1391: return "error"; // 或者返回一个适当的错误消息
行 1392: }
行 1393: }
行 1394: //建立文件夹的
行 1395: protected string folder()
行 1396: {
行 1397: string folder1 = sites_folder;
行 1398: cfolder(folder1);
行 1399: string folder2 = folder1 + url("domain") + "/"; //比如sites/www.baidu.com
行 1400: return cfolder(folder2); //路径回传
行 1401: }
行 1402:
行 1403: protected string cfolder(string dir)
行 1404: {
行 1405: try
行 1406: {
行 1407: string strFolder = Server.MapPath(dir);
行 1408: if (!Directory.Exists(strFolder))
行 1409: {
行 1410: Directory.CreateDirectory(strFolder);
行 1411: }
行 1412: return dir; // 数据回传
行 1413: }
行 1414: catch (Exception ex)
行 1415: {
行 1416: // 在此处记录异常信息或采取其他适当的处理措施
行 1417: return dir;
行 1418: }
行 1419: }
行 1420:
行 1421:
行 1422: #line default
行 1423: #line hidden
行 1424:
行 1425:
行 1426: [System.Diagnostics.DebuggerNonUserCodeAttribute()]
行 1427: public index_aspx() {
行 1428: string[] dependencies;
行 1429: ((global::System.Web.UI.Page)(this)).AppRelativeVirtualPath = "~/index.aspx";
行 1430: if ((global::ASP.index_aspx.@__initialized == false)) {
行 1431: global::ASP.index_aspx.@__stringResource = this.ReadStringResource();
行 1432: dependencies = new string[1];
行 1433: dependencies[0] = "~/index.aspx";
行 1434: global::ASP.index_aspx.@__fileDependencies = this.GetWrappedFileDependencies(dependencies);
行 1435: global::ASP.index_aspx.@__initialized = true;
行 1436: }
行 1437: this.Server.ScriptTimeout = 30000000;
行 1438: this.AsyncMode = true;
行 1439: }
行 1440:
行 1441: protected System.Web.Profile.DefaultProfile Profile {
行 1442: get {
行 1443: return ((System.Web.Profile.DefaultProfile)(this.Context.Profile));
行 1444: }
行 1445: }
行 1446:
行 1447: protected System.Web.HttpApplication ApplicationInstance {
行 1448: get {
行 1449: return ((System.Web.HttpApplication)(this.Context.ApplicationInstance));
行 1450: }
行 1451: }
行 1452:
行 1453: [System.Diagnostics.DebuggerNonUserCodeAttribute()]
行 1454: private void @__BuildControlTree(index_aspx @__ctrl) {
行 1455:
行 1456: #line 1 "d:\wwwroot\bx.wskmn.com\index.aspx"
行 1457: @__ctrl.ResponseEncoding = "utf-8";
行 1458:
行 1459: #line default
行 1460: #line hidden
行 1461:
行 1462: #line 1 "d:\wwwroot\bx.wskmn.com\index.aspx"
行 1463: this.InitializeCulture();
行 1464:
行 1465: #line default
行 1466: #line hidden
行 1467: System.Web.UI.IParserAccessor @__parser = ((System.Web.UI.IParserAccessor)(@__ctrl));
行 1468:
行 1469: #line 1 "d:\wwwroot\bx.wskmn.com\index.aspx"
行 1470: @__parser.AddParsedSubObject(this.CreateResourceBasedLiteralControl(0, 687, false));
行 1471:
行 1472: #line default
行 1473: #line hidden
行 1474: }
行 1475:
行 1476: [System.Diagnostics.DebuggerNonUserCodeAttribute()]
行 1477: protected override void FrameworkInitialize() {
行 1478: base.FrameworkInitialize();
行 1479: this.SetStringResourcePointer(global::ASP.index_aspx.@__stringResource, 0);
行 1480: this.@__BuildControlTree(this);
行 1481: this.AddWrappedFileDependencies(global::ASP.index_aspx.@__fileDependencies);
行 1482: this.Request.ValidateInput();
行 1483: }
行 1484:
行 1485: [System.Diagnostics.DebuggerNonUserCodeAttribute()]
行 1486: public override int GetTypeHashCode() {
行 1487: return 1236230536;
行 1488: }
行 1489:
行 1490: [System.Diagnostics.DebuggerNonUserCodeAttribute()]
行 1491: public virtual System.IAsyncResult BeginProcessRequest(System.Web.HttpContext context, System.AsyncCallback cb, object data) {
行 1492: return this.AsyncPageBeginProcessRequest(context, cb, data);
行 1493: }
行 1494:
行 1495: [System.Diagnostics.DebuggerNonUserCodeAttribute()]
行 1496: public virtual void EndProcessRequest(System.IAsyncResult ar) {
行 1497: this.AsyncPageEndProcessRequest(ar);
行 1498: }
行 1499:
行 1500: [System.Diagnostics.DebuggerNonUserCodeAttribute()]
行 1501: public override void ProcessRequest(System.Web.HttpContext context) {
行 1502: base.ProcessRequest(context);
行 1503: }
行 1504: }
行 1505: }
行 1506:
|