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