From e8c7248d090073378e43caa32c7879ab6530fb4a Mon Sep 17 00:00:00 2001 From: rajiv popat Date: Sun, 30 Aug 2020 19:49:59 +0530 Subject: [PATCH 1/3] All changed needed to support Google Recaptcha on DasBlog. --- .../ConfigFile/Interfaces/ISiteConfig.cs | 6 +++ .../DasBlog.Services/ConfigFile/SiteConfig.cs | 3 ++ .../DasBlog.Tests/UnitTests/SiteConfigTest.cs | 3 ++ .../Config/site.Development.config | 3 ++ source/DasBlog.Web.UI/Config/site.config | 3 ++ .../Controllers/BlogPostController.cs | 29 ++++++++++++++- source/DasBlog.Web.UI/DasBlog.Web.csproj | 1 + .../Models/AdminViewModels/SiteViewModel.cs | 22 +++++++++-- source/DasBlog.Web.UI/Startup.cs | 11 ++++++ .../Views/Admin/Settings.cshtml | 37 +++++++++++++++++-- .../Views/Shared/_CommentAddPartial.cshtml | 20 +++++++++- 11 files changed, 128 insertions(+), 10 deletions(-) diff --git a/source/DasBlog.Services/ConfigFile/Interfaces/ISiteConfig.cs b/source/DasBlog.Services/ConfigFile/Interfaces/ISiteConfig.cs index bbc2c361..c2302388 100644 --- a/source/DasBlog.Services/ConfigFile/Interfaces/ISiteConfig.cs +++ b/source/DasBlog.Services/ConfigFile/Interfaces/ISiteConfig.cs @@ -206,6 +206,12 @@ public interface ISiteConfig bool EnableCaptcha { get; set; } + string RecaptchaSiteKey { get; set; } + + string RecaptchaSecretKey { get; set; } + + double RecaptchaMinimumScore { get; set; } + bool EnableReferralUrlBlackList404s { get; set; } bool EnableMovableTypeBlackList { get; set; } diff --git a/source/DasBlog.Services/ConfigFile/SiteConfig.cs b/source/DasBlog.Services/ConfigFile/SiteConfig.cs index 5e3eb1f0..cd016bbd 100644 --- a/source/DasBlog.Services/ConfigFile/SiteConfig.cs +++ b/source/DasBlog.Services/ConfigFile/SiteConfig.cs @@ -130,6 +130,9 @@ public SiteConfig() { } public string ReferralUrlBlackList { get; set; } public string[] ReferralUrlBlackListArray { get; set; } public bool EnableCaptcha { get; set; } + public string RecaptchaSiteKey { get; set; } + public string RecaptchaSecretKey { get; set; } + public double RecaptchaMinimumScore {get; set; } public bool EnableReferralUrlBlackList404s { get; set; } public bool EnableMovableTypeBlackList { get; set; } public string ChannelImageUrl { get; set; } diff --git a/source/DasBlog.Tests/UnitTests/SiteConfigTest.cs b/source/DasBlog.Tests/UnitTests/SiteConfigTest.cs index 8023a0a0..308458df 100644 --- a/source/DasBlog.Tests/UnitTests/SiteConfigTest.cs +++ b/source/DasBlog.Tests/UnitTests/SiteConfigTest.cs @@ -89,6 +89,9 @@ public class SiteConfigTest : ISiteConfig public string ReferralUrlBlackList { get => throw new NotImplementedException(); set => throw new NotImplementedException(); } public string[] ReferralUrlBlackListArray { get => throw new NotImplementedException(); set => throw new NotImplementedException(); } public bool EnableCaptcha { get => throw new NotImplementedException(); set => throw new NotImplementedException(); } + public string RecaptchaSiteKey { get => throw new NotImplementedException(); set => throw new NotImplementedException(); } + public string RecaptchaSecretKey { get => throw new NotImplementedException(); set => throw new NotImplementedException(); } + public double RecaptchaMinimumScore { get => throw new NotImplementedException(); set => throw new NotImplementedException(); } public bool EnableReferralUrlBlackList404s { get => throw new NotImplementedException(); set => throw new NotImplementedException(); } public bool EnableMovableTypeBlackList { get => throw new NotImplementedException(); set => throw new NotImplementedException(); } public string ChannelImageUrl { get => throw new NotImplementedException(); set => throw new NotImplementedException(); } diff --git a/source/DasBlog.Web.UI/Config/site.Development.config b/source/DasBlog.Web.UI/Config/site.Development.config index cf0d0719..05149eac 100644 --- a/source/DasBlog.Web.UI/Config/site.Development.config +++ b/source/DasBlog.Web.UI/Config/site.Development.config @@ -151,6 +151,9 @@ false poker;casino;pharmacy;sex;piss;cock;fuck;shit;pussy;gay;boys;girls;cheap;drugs;shipping;pussy;shemale;nude;slots;gambling;poker;uncut;taboo;pervert;fanta;hotbod;hotg;drunk;megavideo;femdom;incest;e-finance;holdem;deal;loan;consolidation;top-deals;hold-em;4-you;cell-phone;24x7;cute;spank;bott;girl;glamor;glamour;ortho;mortgage;models;cunt;cock;virgin;prussia;megavideo;debt;porn;4u;nude;naked;assh;hole;drug;bargin;insurance;xxx;teen;fatties;flower;leading;pill;diet;weight;gain;loss;viag;levit;best;online-dat;file://;scat;incest;credit;mortgage;calculator;esite;golf;gokura;oldie;fuzz;strap;ein.be;texasproptax;alphacarolinas;ourtownhelps;acrs;fortisenterprises;kardtoons;hermosa.us;monavaletoys;australia-;travel;berwick;sedona;handmade;digitaltwist;normytexas;xopy;superdolphins;instant;popwow;sportsparent;condo;flaf;mediavisor;gables;stmary;whichis;oiline;crepe;tmsa;easymoney;loddes;rimp;milf;halloween;bdsm;paris;hentai;britney;4free;ownsthis;fidelity;uae;cash;labels;hotel;spood;newtruths;krant;twinky;nehru;ansar;tclighting;reservedining;parkviewsoc;hometeaminspect;stories-on;marshally;suttonjames;hdic;pagetwo;ingy;psyche;seedfarm;azian;sportingcolor;atlanta2000;rifp;mor-lit;catcha;sysrem;exitq;rethy;lemon;zone-b51;jfcadvocacy;weighweb;mp-forum;darkangel;gargz;grot;yonet;middlecay;merchant;lvcpa;hassler;taklar;simonr;pisoc;alumni;applyonline;clonaze;rulo;tecrep;learnhow;arsc;69-review;exotic;adult;18dvd;nett;cialis;yelucie;dildo;ikill;saluk;doobu;cream;blonde;oncam;basket;her-first;lutsch;nicht;fundel;rausg;omni;cum;cxa.de;tits;sami;alters;krank;it2u;sperm;fick;kred;studiomoney;ca-america;vrajitor;pkv.net;buy-2005;gaming;uncovered;corpor;firsthori;win-2005;vinhas;forex;conjur;bellen;personalsites;geert;learningphp;ms-inc;slots;ejac;blackjack;wins;wslp;zindagi;ladysroom;nerosang;wadoo;owned;dvdwizard;scout;op-clan;three.us;vegas;hosting;texas;whvc;ua-;bodyshop;stumble;slot;findmore;bardak;hernya;adult-;texas;craps;porno;codone;azer false + your_google_recaptcha_site_key_here + your_google_recaptcha_secret_key_here + 0.7 false false false diff --git a/source/DasBlog.Web.UI/Config/site.config b/source/DasBlog.Web.UI/Config/site.config index c8562e0a..8345ee9d 100644 --- a/source/DasBlog.Web.UI/Config/site.config +++ b/source/DasBlog.Web.UI/Config/site.config @@ -151,6 +151,9 @@ false poker;casino;pharmacy;sex;piss;cock;fuck;shit;pussy;gay;boys;girls;cheap;drugs;shipping;pussy;shemale;nude;slots;gambling;poker;uncut;taboo;pervert;fanta;hotbod;hotg;drunk;megavideo;femdom;incest;e-finance;holdem;deal;loan;consolidation;top-deals;hold-em;4-you;cell-phone;24x7;cute;spank;bott;girl;glamor;glamour;ortho;mortgage;models;cunt;cock;virgin;prussia;megavideo;debt;porn;4u;nude;naked;assh;hole;drug;bargin;insurance;xxx;teen;fatties;flower;leading;pill;diet;weight;gain;loss;viag;levit;best;online-dat;file://;scat;incest;credit;mortgage;calculator;esite;golf;gokura;oldie;fuzz;strap;ein.be;texasproptax;alphacarolinas;ourtownhelps;acrs;fortisenterprises;kardtoons;hermosa.us;monavaletoys;australia-;travel;berwick;sedona;handmade;digitaltwist;normytexas;xopy;superdolphins;instant;popwow;sportsparent;condo;flaf;mediavisor;gables;stmary;whichis;oiline;crepe;tmsa;easymoney;loddes;rimp;milf;halloween;bdsm;paris;hentai;britney;4free;ownsthis;fidelity;uae;cash;labels;hotel;spood;newtruths;krant;twinky;nehru;ansar;tclighting;reservedining;parkviewsoc;hometeaminspect;stories-on;marshally;suttonjames;hdic;pagetwo;ingy;psyche;seedfarm;azian;sportingcolor;atlanta2000;rifp;mor-lit;catcha;sysrem;exitq;rethy;lemon;zone-b51;jfcadvocacy;weighweb;mp-forum;darkangel;gargz;grot;yonet;middlecay;merchant;lvcpa;hassler;taklar;simonr;pisoc;alumni;applyonline;clonaze;rulo;tecrep;learnhow;arsc;69-review;exotic;adult;18dvd;nett;cialis;yelucie;dildo;ikill;saluk;doobu;cream;blonde;oncam;basket;her-first;lutsch;nicht;fundel;rausg;omni;cum;cxa.de;tits;sami;alters;krank;it2u;sperm;fick;kred;studiomoney;ca-america;vrajitor;pkv.net;buy-2005;gaming;uncovered;corpor;firsthori;win-2005;vinhas;forex;conjur;bellen;personalsites;geert;learningphp;ms-inc;slots;ejac;blackjack;wins;wslp;zindagi;ladysroom;nerosang;wadoo;owned;dvdwizard;scout;op-clan;three.us;vegas;hosting;texas;whvc;ua-;bodyshop;stumble;slot;findmore;bardak;hernya;adult-;texas;craps;porno;codone;azer false + your_google_recaptcha_site_key_here + your_google_recaptcha_secret_key_here + 0.7 false false false diff --git a/source/DasBlog.Web.UI/Controllers/BlogPostController.cs b/source/DasBlog.Web.UI/Controllers/BlogPostController.cs index 670e76e0..098fa96c 100644 --- a/source/DasBlog.Web.UI/Controllers/BlogPostController.cs +++ b/source/DasBlog.Web.UI/Controllers/BlogPostController.cs @@ -19,6 +19,8 @@ using System.Linq; using System.Net; using DasBlog.Web.Services; +using reCAPTCHA.AspNetCore.Attributes; +using reCAPTCHA.AspNetCore; namespace DasBlog.Web.Controllers { @@ -34,11 +36,12 @@ public class BlogPostController : DasBlogBaseController private readonly ILogger logger; private readonly IBlogPostViewModelCreator modelViewCreator; private readonly IMemoryCache memoryCache; + private readonly IRecaptchaService recaptcha; public BlogPostController(IBlogManager blogManager, IHttpContextAccessor httpContextAccessor, IDasBlogSettings dasBlogSettings, IMapper mapper, ICategoryManager categoryManager, IFileSystemBinaryManager binaryManager, ILogger logger, - IBlogPostViewModelCreator modelViewCreator, IMemoryCache memoryCache) + IBlogPostViewModelCreator modelViewCreator, IMemoryCache memoryCache,IRecaptchaService recaptcha) : base(dasBlogSettings) { this.blogManager = blogManager; @@ -50,6 +53,7 @@ public BlogPostController(IBlogManager blogManager, IHttpContextAccessor httpCon this.logger = logger; this.modelViewCreator = modelViewCreator; this.memoryCache = memoryCache; + this.recaptcha = recaptcha; } [AllowAnonymous] @@ -346,7 +350,11 @@ public IActionResult AddComment(AddCommentViewModel addcomment) return Comment(addcomment.TargetEntryId); } - if (dasBlogSettings.SiteConfiguration.CheesySpamQ.Trim().Length > 0 && + // Optional in case of Captcha. Commenting the settings in the config file + // Will disable this check. People will typically disable this when using captcha. + if (!String.IsNullOrEmpty(dasBlogSettings.SiteConfiguration.CheesySpamQ) && + !String.IsNullOrEmpty(dasBlogSettings.SiteConfiguration.CheesySpamA) && + dasBlogSettings.SiteConfiguration.CheesySpamQ.Trim().Length > 0 && dasBlogSettings.SiteConfiguration.CheesySpamA.Trim().Length > 0) { if (string.Compare(addcomment.CheesyQuestionAnswered, dasBlogSettings.SiteConfiguration.CheesySpamA, @@ -356,6 +364,23 @@ public IActionResult AddComment(AddCommentViewModel addcomment) } } + if(dasBlogSettings.SiteConfiguration.EnableCaptcha) + { + var recaptchaTask = recaptcha.Validate(Request); + recaptchaTask.Wait(); + var recaptchaResult = recaptchaTask.Result; + if ((!recaptchaResult.success || recaptchaResult.score != 0) && + recaptchaResult.score < dasBlogSettings.SiteConfiguration.RecaptchaMinimumScore ) + { + // Todo: Rajiv Popat: This just redirects to the comment page. Ideally user should be informed that + // the captch is invalid and he should be shown an error page with ability to fix the issue. + // We need to have the ability to show errors and let the user fix typos in Captcha or Cheesy + // Question. For now we are following the sample implementation as Cheesy Spam Question above + // for the sake of consistency but this should be fixed everywhere. + return Comment(addcomment.TargetEntryId); + } + } + addcomment.Content = dasBlogSettings.FilterHtml(addcomment.Content); var commt = mapper.Map(addcomment); diff --git a/source/DasBlog.Web.UI/DasBlog.Web.csproj b/source/DasBlog.Web.UI/DasBlog.Web.csproj index c429bada..409ab798 100644 --- a/source/DasBlog.Web.UI/DasBlog.Web.csproj +++ b/source/DasBlog.Web.UI/DasBlog.Web.csproj @@ -22,6 +22,7 @@ + diff --git a/source/DasBlog.Web.UI/Models/AdminViewModels/SiteViewModel.cs b/source/DasBlog.Web.UI/Models/AdminViewModels/SiteViewModel.cs index 1b1eeeb8..2b6081d2 100644 --- a/source/DasBlog.Web.UI/Models/AdminViewModels/SiteViewModel.cs +++ b/source/DasBlog.Web.UI/Models/AdminViewModels/SiteViewModel.cs @@ -141,9 +141,26 @@ public class SiteViewModel [DisplayName("Spam prevention answer")] [Description("Cheesy Spam Answer - Defines an answer that the commenters need to respond with in order to submit a comment (only enabled when CheesySpamQ has a val")] [StringLength(300, MinimumLength = 1, ErrorMessage = "{0} should be between 1 to 300 characters")] - public string CheesySpamA { get; set; } + [DisplayName("Enable Captcha")] + [Description("Let's You Decide if you want to use Google's Recaptcha to Prevents Bots from spamming the comments on your posts.")] + public bool EnableCaptcha { get; set; } + + [DisplayName("Recapcha Minimum Score")] + [Description("Minimum Score for the Recaptcha to be considered pass. For example if you are asked to identify an image at least 50% of the images must be identified if score if 0.5")] + [Range(0.0, 1.0, ErrorMessage = "Values should be between 0 and 1")] + public double RecaptchaMinimumScore { get; set; } + + [DisplayName("Google Recaptha Site Key")] + [Description("Recaptcha Site Key Based on Recaptha Configured On Google Recaptcha Admin Site.")] + [StringLength(300, MinimumLength = 1, ErrorMessage = "{0} should be between 1 to 300 characters")] + public string RecaptchaSiteKey { get; set; } + + [DisplayName("Google Recaptcha Secret Key")] + [Description("Recaptcha Secret Key based on Recaptcha configured on Google Recaptha Admin Site.")] + [StringLength(300, MinimumLength = 1, ErrorMessage = "{0} should be between 1 to 300 characters")] + public string RecaptchaSecretKey { get; set; } [DisplayName("Enable unique URls")] [Description(@"Enable Title PermaLink Unique - Ensures all urls are unique by adding a date to the URL '\somepost' becomes '20191112\some - post'")] @@ -289,8 +306,7 @@ public class SiteViewModel public bool EnableReferralUrlBlackList { get; set; } public string ReferralUrlBlackList { get; set; } public string[] ReferralUrlBlackListArray { get; set; } - public bool EnableCaptcha { get; set; } - public bool EnableReferralUrlBlackList404s { get; set; } + public bool EnableReferralUrlBlackList404s { get; set; } public bool EnableMovableTypeBlackList { get; set; } public bool EnableCrossPostFooter { get; set; } public string CrossPostFooter { get; set; } diff --git a/source/DasBlog.Web.UI/Startup.cs b/source/DasBlog.Web.UI/Startup.cs index 490d771b..fe5d7e1a 100644 --- a/source/DasBlog.Web.UI/Startup.cs +++ b/source/DasBlog.Web.UI/Startup.cs @@ -36,6 +36,7 @@ using Microsoft.AspNetCore.HttpOverrides; using DasBlog.Services.FileManagement.Interfaces; using Microsoft.Extensions.Logging; +using reCAPTCHA.AspNetCore; namespace DasBlog.Web { @@ -50,6 +51,8 @@ public class Startup private readonly string LogFolderPath; private readonly string BinariesPath; private readonly string BinariesUrlRelativePath; + private readonly string RecaptchaSiteKey; + private readonly string RecaptchaSecretKey; private readonly IWebHostEnvironment hostingEnvironment; @@ -75,6 +78,8 @@ public Startup(IWebHostEnvironment env) BinariesPath = new DirectoryInfo(Path.Combine(env.ContentRootPath, Configuration.GetValue("BinariesDir"))).FullName; ThemeFolderPath = new DirectoryInfo(Path.Combine(hostingEnvironment.ContentRootPath, "Themes", Configuration.GetSection("Theme").Value)).FullName; LogFolderPath = new DirectoryInfo(Path.Combine(hostingEnvironment.ContentRootPath, Configuration.GetSection("LogDir").Value)).FullName; + RecaptchaSiteKey = Configuration.GetSection("RecaptchaSiteKey").Value; + RecaptchaSecretKey = Configuration.GetSection("RecaptchaSecretKey").Value; BinariesUrlRelativePath = "content/binary"; } @@ -227,6 +232,12 @@ public void ConfigureServices(IServiceCollection services) services .AddControllersWithViews() .AddRazorRuntimeCompilation(); + + services.AddRecaptcha(options => + { + options.SiteKey = RecaptchaSiteKey; + options.SecretKey = RecaptchaSecretKey; + }); DasBlogServices = services; } diff --git a/source/DasBlog.Web.UI/Views/Admin/Settings.cshtml b/source/DasBlog.Web.UI/Views/Admin/Settings.cshtml index 92eb1d8b..1ef17ac7 100644 --- a/source/DasBlog.Web.UI/Views/Admin/Settings.cshtml +++ b/source/DasBlog.Web.UI/Views/Admin/Settings.cshtml @@ -227,7 +227,39 @@ -
+
+ + @Html.LabelFor(m => @Model.SiteConfig.EnableCaptcha, null, new { @class = "dbc-col-form-label col-3" }) + @Html.CheckBoxFor(m => @Model.SiteConfig.EnableCaptcha , new { @class = "dbc-form-check-input" }) + +
+ +
+ + @Html.LabelFor(m => @Model.SiteConfig.RecaptchaMinimumScore, null, new { @class = "dbc-col-form-label col-3" }) + @Html.TextBoxFor(m => @Model.SiteConfig.RecaptchaMinimumScore , null, new { @class = "form-control col-9" }) + @Html.ValidationMessageFor(m => m.SiteConfig.RecaptchaMinimumScore, null, new { @class = "text-danger" }) + +
+
+ + @Html.LabelFor(m => @Model.SiteConfig.RecaptchaSiteKey, null, new { @class = "dbc-col-form-label col-3" }) + @Html.TextBoxFor(m => @Model.SiteConfig.RecaptchaSiteKey, null, new { @class = "form-control col-9" }) + @Html.ValidationMessageFor(m => m.SiteConfig.RecaptchaSiteKey, null, new { @class = "text-danger" }) + +
+ + + +
+ + @Html.LabelFor(m => @Model.SiteConfig.RecaptchaSecretKey, null, new { @class = "dbc-col-form-label col-3" }) + @Html.TextBoxFor(m => @Model.SiteConfig.RecaptchaSecretKey, null, new { @class = "form-control col-9" }) + @Html.ValidationMessageFor(m => m.SiteConfig.RecaptchaSecretKey, null, new { @class = "text-danger" }) + +
+ +
@Html.LabelFor(m => @Model.SiteConfig.ShowCommentsWhenViewingEntry, null, new { @class = "dbc-col-form-label col-3" }) @Html.CheckBoxFor(m => @Model.SiteConfig.ShowCommentsWhenViewingEntry, new { @class = "dbc-form-check-input" }) @@ -547,7 +579,6 @@ @Html.HiddenFor(@m => m.SiteConfig.EnableReferralUrlBlackList) @Html.HiddenFor(@m => m.SiteConfig.ReferralUrlBlackList) - @Html.HiddenFor(@m => m.SiteConfig.EnableCaptcha) @Html.HiddenFor(@m => m.SiteConfig.EnableReferralUrlBlackList404s) @Html.HiddenFor(@m => m.SiteConfig.EnableMovableTypeBlackList) @@ -601,4 +632,4 @@ @Html.HiddenFor(@m => m.MetaConfig.FaceBookAdmins) @Html.HiddenFor(@m => m.MetaConfig.FaceBookAppID) - \ No newline at end of file + diff --git a/source/DasBlog.Web.UI/Views/Shared/_CommentAddPartial.cshtml b/source/DasBlog.Web.UI/Views/Shared/_CommentAddPartial.cshtml index 5f333bc9..53ae7626 100644 --- a/source/DasBlog.Web.UI/Views/Shared/_CommentAddPartial.cshtml +++ b/source/DasBlog.Web.UI/Views/Shared/_CommentAddPartial.cshtml @@ -1,7 +1,11 @@ @using DasBlog.Core.Common; @using DasBlog.Services; +@using Microsoft.Extensions.Options; +@using reCAPTCHA.AspNetCore; +@using reCAPTCHA.AspNetCore.Versions; @model DasBlog.Web.Models.BlogViewModels.AddCommentViewModel @inject IDasBlogSettings dasBlogSettings +@inject IOptions RecaptchaSettings
@@ -26,18 +30,30 @@
+ @if(!string.IsNullOrEmpty(dasBlogSettings.SiteConfiguration.CheesySpamQ) && !string.IsNullOrEmpty(dasBlogSettings.SiteConfiguration.CheesySpamA) + && dasBlogSettings.SiteConfiguration.CheesySpamQ.Length > 0 && dasBlogSettings.SiteConfiguration.CheesySpamA.Length > 0) + {
+ }
-
+
+ @if(dasBlogSettings.SiteConfiguration.EnableCaptcha) + { +
+
+ @(Html.Recaptcha(RecaptchaSettings?.Value)) +
+
+ }
@@ -46,4 +62,4 @@
@Html.HiddenFor(m => m.TargetEntryId) -
\ No newline at end of file +
From fb9cf608befb7eb1be685fd168a0a290a0ab6a51 Mon Sep 17 00:00:00 2001 From: rajiv popat Date: Sun, 30 Aug 2020 21:14:56 +0530 Subject: [PATCH 2/3] Fixed Startup since it had more changes than needed. --- source/DasBlog.Web.UI/Startup.cs | 7 ------- 1 file changed, 7 deletions(-) diff --git a/source/DasBlog.Web.UI/Startup.cs b/source/DasBlog.Web.UI/Startup.cs index 2fc7ec91..b5c14e0a 100644 --- a/source/DasBlog.Web.UI/Startup.cs +++ b/source/DasBlog.Web.UI/Startup.cs @@ -36,13 +36,6 @@ using System.Security.Principal; using System.Threading; using System.Threading.Tasks; -using DasBlog.Services.Site; -using DasBlog.Services.ConfigFile; -using DasBlog.Services.Users; -using DasBlog.Services; -using Microsoft.AspNetCore.HttpOverrides; -using DasBlog.Services.FileManagement.Interfaces; -using Microsoft.Extensions.Logging; using reCAPTCHA.AspNetCore; namespace DasBlog.Web From 48c2a9569de533891e1a8a59dcdc0b961910d183 Mon Sep 17 00:00:00 2001 From: Mark Downie Date: Mon, 31 Aug 2020 22:08:45 -0400 Subject: [PATCH 3/3] =?UTF-8?q?Site=20config=20changes=20generally=20indic?= =?UTF-8?q?ate=20relatively=20significant=20change.=20The=20way=20you=20ha?= =?UTF-8?q?ve=20accomplished=20this=20means=20it=20is=20backwards=20compat?= =?UTF-8?q?ible=20(=F0=9F=91=8D=F0=9F=8F=BF)=20so=20I=20am=20bumping=20the?= =?UTF-8?q?=20minor=20version=20only.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [ps I should have done this in the past, this is the first time I remembered to enforce it] --- azure-pipelines.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index acd5f9ed..6d1148ba 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -35,7 +35,7 @@ steps: inputs: command: build projects: '**/*.sln' - arguments: '--no-restore --configuration $(BuildConfiguration) -p:VersionPrefix=2.0.$(Build.BuildId) -p:FileVersion=2.0.$(Build.BuildId).0' + arguments: '--no-restore --configuration $(BuildConfiguration) -p:VersionPrefix=2.11.$(Build.BuildId) -p:FileVersion=2.11.$(Build.BuildId).0' - script: dotnet test source/DasBlog.Tests/UnitTests/ --logger trx;LogfileName=test_results.xml --results-directory $(System.DefaultWorkingDirectory)/test_results --filter Category=UnitTest displayName: Run Unit Tests on Windows