Skip to content

Commit 739d681

Browse files
authored
Merge branch 'master' into master
2 parents bdbe49e + 7f695b4 commit 739d681

File tree

190 files changed

+7677
-3784
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

190 files changed

+7677
-3784
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,3 +186,5 @@ BlogEngine/.vs/
186186

187187
# Default extensions data
188188
BlogEngine/BlogEngine.NET/App_Data/datastore/extensions/*.xml
189+
/.vs/slnx.sqlite
190+
/.vs/BlogEngine.NET/config/applicationhost.config

BlogEngine/BlogEngine.Core/API/MetaWeblog/XMLRPCRequest.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -327,7 +327,7 @@ private static MWAPost GetPost(XmlNode node)
327327
/// </param>
328328
private void LoadXmlRequest(string xml)
329329
{
330-
var request = new XmlDocument();
330+
var request = new XmlDocument() { XmlResolver = null };
331331
try
332332
{
333333
if (!(xml.StartsWith("<?xml") || xml.StartsWith("<method")))
@@ -505,4 +505,4 @@ private static string ParseRequest(HttpContext context)
505505

506506
#endregion
507507
}
508-
}
508+
}

BlogEngine/BlogEngine.Core/BlogSettings.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -420,27 +420,27 @@ public string Theme
420420
var request = context.Request;
421421
if (request.QueryString["theme"] != null)
422422
{
423-
return request.QueryString["theme"];
423+
return request.QueryString["theme"].SanitizePath();
424424
}
425425

426426
var cookie = request.Cookies[this.ThemeCookieName];
427427
if (cookie != null)
428428
{
429-
return cookie.Value;
429+
return cookie.Value.SanitizePath();
430430
}
431431

432432
if (Utils.ShouldForceMainTheme(request))
433433
{
434-
return this.configuredTheme;
434+
return this.configuredTheme.SanitizePath();
435435
}
436436
}
437437

438-
return this.configuredTheme;
438+
return this.configuredTheme.SanitizePath();
439439
}
440440

441441
set
442442
{
443-
this.configuredTheme = String.IsNullOrEmpty(value) ? String.Empty : value;
443+
this.configuredTheme = String.IsNullOrEmpty(value) ? String.Empty : value.SanitizePath();
444444
}
445445
}
446446

BlogEngine/BlogEngine.Core/Data/FileManagerRepository.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ public IEnumerable<FileInstance> Find(int take = 10, int skip = 0, string path =
1818
var rwr = Utils.RelativeWebRoot;
1919
var responsePath = "root";
2020

21+
path = path.SanitizePath();
22+
2123
if(string.IsNullOrEmpty(path))
2224
path = Blog.CurrentInstance.StorageLocation + Utils.FilesFolder;
2325

BlogEngine/BlogEngine.Core/Data/Models/SelectOption.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@ public class SelectOption
1414
/// </summary>
1515
public string OptionValue { get; set; }
1616
/// <summary>
17+
/// Option Summary
18+
/// </summary>
19+
public string OptionSummary { get; set; }
20+
/// <summary>
1721
/// Is option selected
1822
/// </summary>
1923
public bool IsSelected { get; set; }

BlogEngine/BlogEngine.Core/Extensions.cs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,5 +92,27 @@ public static bool TryParse<T>(this string theString, out T output)
9292

9393
return success;
9494
}
95+
96+
/// <summary>
97+
/// Sanitize path by removing invalid characters. Valid path should look similar to "path/to/sub/folder"
98+
/// </summary>
99+
/// <param name="str">String to sanitize</param>
100+
/// <param name="root">Optionally validate datastore root</param>
101+
/// <returns>String out</returns>
102+
public static string SanitizePath(this string str, string root = "")
103+
{
104+
if (str.Contains(".."))
105+
return "";
106+
107+
if (str.StartsWith("~/") && !string.IsNullOrEmpty(root) && !str.StartsWith(root))
108+
return "";
109+
110+
str = str.Replace(".", "").Replace("\\", "").Replace("%2F", "");
111+
112+
if (str.Contains("//"))
113+
return "";
114+
115+
return str;
116+
}
95117
}
96118
}

BlogEngine/BlogEngine.Core/Properties/AssemblyInfo.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,11 @@
1313
[assembly: AssemblyConfiguration("")]
1414
[assembly: AssemblyCompany("")]
1515
[assembly: AssemblyProduct("BlogEngine.NET")]
16-
[assembly: AssemblyCopyright("Copyright @ 2007-2017")]
16+
[assembly: AssemblyCopyright("Copyright @ 2007-2019")]
1717
[assembly: AssemblyTrademark("")]
1818
[assembly: AssemblyCulture("")]
1919
[assembly: CLSCompliant(false)]
2020
[assembly: ComVisible(false)]
2121
[assembly: AllowPartiallyTrustedCallers]
22-
[assembly: AssemblyVersion("3.3.6.0")]
23-
[assembly: SecurityRules(SecurityRuleSet.Level1)]
22+
[assembly: AssemblyVersion("3.3.8.0")]
23+
[assembly: SecurityRules(SecurityRuleSet.Level1)]

BlogEngine/BlogEngine.Core/Services/Security/Security.cs

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -185,10 +185,7 @@ public static bool AuthenticateUser(string username, string password, bool remem
185185
string returnUrl = context.Request.QueryString["returnUrl"];
186186

187187
// ignore Return URLs not beginning with a forward slash, such as remote sites.
188-
if (string.IsNullOrWhiteSpace(returnUrl) || !returnUrl.StartsWith("/"))
189-
returnUrl = null;
190-
191-
if (!string.IsNullOrWhiteSpace(returnUrl))
188+
if (Security.IsLocalUrl(returnUrl))
192189
{
193190
context.Response.Redirect(returnUrl);
194191
}
@@ -204,6 +201,19 @@ public static bool AuthenticateUser(string username, string password, bool remem
204201
return false;
205202
}
206203

204+
private static bool IsLocalUrl(string url)
205+
{
206+
if (string.IsNullOrWhiteSpace(url))
207+
{
208+
return false;
209+
}
210+
else
211+
{
212+
return ((url[0] == '/' && (url.Length == 1 || (url[1] != '/' && url[1] != '\\'))) || // "/" or "/foo" but not "//" or "/\"
213+
(url.Length > 1 && url[0] == '~' && url[1] == '/')); // "~/" or "~/foo"
214+
}
215+
}
216+
207217
private const string AUTH_TKT_USERDATA_DELIMITER = "-|-";
208218

209219
private static string SecurityValidationKey

BlogEngine/BlogEngine.Core/Services/Syndication/SyndicationGenerator.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public class SyndicationGenerator
3535
/// <summary>
3636
/// Private member to hold the URI of the syndication generation utility.
3737
/// </summary>
38-
private static readonly Uri GeneratorUri = new Uri("http://dotnetblogengine.net/");
38+
private static readonly Uri GeneratorUri = new Uri("https://blogengine.io/");
3939

4040
/// <summary>
4141
/// Private member to hold the version of the syndication generation utility.
@@ -135,7 +135,7 @@ public static Dictionary<string, string> SupportedNamespaces
135135
{ "wfw", "http://wellformedweb.org/CommentAPI/" },
136136
{ "slash", "http://purl.org/rss/1.0/modules/slash/" },
137137
{ "geo", "http://www.w3.org/2003/01/geo/wgs84_pos#" },
138-
{ "betag", "http://dotnetblogengine.net/schemas/tags"}
138+
{ "betag", "https://blogengine.io/schemas/tags"}
139139
});
140140
}
141141
}
@@ -536,7 +536,7 @@ private static void WriteAtomEntry(XmlWriter writer, IPublishable publishable)
536536
{
537537
foreach (var tag in publishable.Tags)
538538
{
539-
writer.WriteElementString("betag", "tag", "http://dotnetblogengine.net/schemas/tags", tag);
539+
writer.WriteElementString("betag", "tag", "https://blogengine.io/schemas/tags", tag);
540540
}
541541
}
542542

@@ -725,7 +725,7 @@ private static void WriteRssItem(XmlWriter writer, IPublishable publishable)
725725
{
726726
foreach (var tag in publishable.Tags)
727727
{
728-
writer.WriteElementString("betag", "tag", "http://dotnetblogengine.net/schemas/tags", tag);
728+
writer.WriteElementString("betag", "tag", "https://blogengine.io/schemas/tags", tag);
729729
}
730730
}
731731

BlogEngine/BlogEngine.Core/Web/HttpHandlers/PingbackHandler.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -337,7 +337,7 @@ private static XmlDocument RetrieveXmlDocument(HttpContext context)
337337
context.Response.End();
338338
}
339339

340-
var doc = new XmlDocument();
340+
var doc = new XmlDocument() { XmlResolver = null };
341341
doc.LoadXml(xml);
342342
return doc;
343343
}
@@ -432,4 +432,4 @@ private void ExamineSourcePage(string sourceUrl, string targetUrl)
432432

433433
#endregion
434434
}
435-
}
435+
}

BlogEngine/BlogEngine.Core/Web/HttpHandlers/RsdHandler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public void ProcessRequest(HttpContext context)
5151
// Service
5252
rsd.WriteStartElement("service");
5353
rsd.WriteElementString("engineName", $"BlogEngine.NET {BlogSettings.Instance.Version()}");
54-
rsd.WriteElementString("engineLink", "http://dotnetblogengine.com");
54+
rsd.WriteElementString("engineLink", "https://blogengine.io");
5555
rsd.WriteElementString("homePageLink", Utils.AbsoluteWebRoot.ToString());
5656

5757
// APIs

BlogEngine/BlogEngine.Core/Web/HttpHandlers/SyndicationHandler.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ private static List<IPublishable> GenerateItemList(HttpContext context)
185185
client.Encoding = Encoding.Default;
186186
using (var stream = client.OpenRead(context.Request.QueryString["apml"]))
187187
{
188-
var doc = new XmlDocument();
188+
var doc = new XmlDocument() { XmlResolver = null };
189189
if (stream != null)
190190
{
191191
doc.Load(stream);
@@ -397,4 +397,4 @@ private static void StopServing(HttpContext context)
397397

398398
#endregion
399399
}
400-
}
400+
}

BlogEngine/BlogEngine.NET/Account/account.master

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<head id="Head1" runat="server">
77
<title>Account Login</title>
88
<meta name="description" content="Account Login Membership User Password" />
9-
<link href='http://fonts.googleapis.com/css?family=Roboto:400,500' rel='stylesheet' type='text/css'>
9+
<link href='https://fonts.googleapis.com/css?family=Roboto:400,500' rel='stylesheet' type='text/css'>
1010
<link href="account.css" rel="stylesheet" />
1111
<script src="../Scripts/jquery-2.1.4.min.js"></script>
1212
<script type="text/javascript" src="account.js"></script>
@@ -22,7 +22,7 @@
2222
<form id="Form1" runat="server">
2323
<div class="account">
2424
<div class="account-header text-center">
25-
<a href="http://dotnetblogengine.net/" target="_blank">
25+
<a href="https://blogengine.io/" target="_blank">
2626
<img alt="BlogEngine.NET" src="../Content/images/blog/logo.png" /></a>
2727
</div>
2828
<div id="StatusBox">

BlogEngine/BlogEngine.NET/AppCode/Api/NewsFeedController.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ public class NewsFeedController : ApiController
1010
public List<SelectOption> Get()
1111
{
1212
var items = new List<SelectOption>();
13-
string url = "http://dotnetblogengine.net/syndication.axd";
13+
string url = "https://blogengine.io/news.xml";
1414
try
1515
{
1616
var cnt = 0;
@@ -25,7 +25,7 @@ public List<SelectOption> Get()
2525
option.OptionValue = item.Id;
2626
items.Add(option);
2727
cnt++;
28-
if (cnt > 2) break;
28+
if (cnt > 5) break;
2929
}
3030
}
3131
catch (Exception ex)

BlogEngine/BlogEngine.NET/AppCode/Api/UploadController.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@ public HttpResponseMessage Post(string action, string dirPath = "")
2929
fileName = fileName.Replace("image.jpg", DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".jpg");
3030
fileName = fileName.Replace("image.png", DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".png");
3131

32+
var root = Blog.CurrentInstance.StorageLocation + Utils.FilesFolder;
33+
34+
dirPath = dirPath.SanitizePath(root);
35+
3236
if (!string.IsNullOrEmpty(dirPath))
3337
dirName = dirPath;
3438

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
22
<blogRoll>
3-
<item id="25e4d8da-3278-4e58-b0bf-932496dabc96" title="Mads Kristensen" description="Full featured simplicity in ASP.NET and C#" htmlUrl="http://madskristensen.net/" xmlUrl="http://feeds.feedburner.com/netslave" xfn="contact" sortIndex="0" />
43
<item id="dcdaa78b-0b77-4691-99f0-1bb6418945a1" title="Ruslan Tur" description=".NET and Open Source: better together" htmlUrl="http://rtur.net/blog/" xmlUrl="http://feeds.feedburner.com/rtur" xfn="contact" sortIndex="2" />
5-
<item id="973921aa-8909-40d9-a613-5752c3cdc5b7" title="Francis Bio" description="Front-End Developer" htmlUrl="http://francis.bio/" xmlUrl="http://francis.bio/feed.xml" xfn="contact" sortIndex="0" />
4+
<item id="973921aa-8909-40d9-a613-5752c3cdc5b7" title="Francis Bio" description="Front-End Developer" htmlUrl="http://francis.bio/" xmlUrl="https://francis.bio/feed.xml" xfn="contact" sortIndex="0" />
5+
<item id="b42bda14-5633-4e73-afb8-7c6540e6e40a" title="BlogEngine" description="Open Source Blogging platform" htmlUrl="https://blogengine.io/" xmlUrl="https://blogengine.io/feed.xml" xfn="contact" sortIndex="0" />
66
</blogRoll>

BlogEngine/BlogEngine.NET/App_Data/blogs/_new/settings.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
<searchbuttontext>Search</searchbuttontext>
3333
<showincludecommentsoption>False</showincludecommentsoption>
3434
<israzortheme>False</israzortheme>
35-
<endorsement>http://www.dotnetblogengine.net/syndication.axd</endorsement>
35+
<endorsement>https://blogengine.io/syndication.axd</endorsement>
3636
<blogrollmaxlength>23</blogrollmaxlength>
3737
<language>en-US</language>
3838
<smtpserver>mail.example.com</smtpserver>
Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
22
<categories>
3-
<category id="c223353c-1aef-4a46-afd1-cb61ab1a792d" description="" parent="">Blog</category>
43
<category id="19770e74-9ec9-4cde-b2ab-e5051aaaf348" description="Posts about my adventures with BlogEngine.NET" parent="">BlogEngine.NET</category>
54
</categories>
Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,27 @@
11
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
22
<CustomFields>
3-
<item customtype="THEME" objectid="Standard-2015" blogid="96d5b379-7e1d-4dac-a6ba-1e50db561b04" key="Facebook Account" value="" attribute="" />
4-
<item customtype="THEME" objectid="Standard-2015" blogid="96d5b379-7e1d-4dac-a6ba-1e50db561b04" key="Twitter Account" value="" attribute="" />
5-
<item customtype="THEME" objectid="Standard-2015" blogid="96d5b379-7e1d-4dac-a6ba-1e50db561b04" key="Google Plus Account" value="" attribute="" />
6-
<item customtype="THEME" objectid="Standard-2015" blogid="96d5b379-7e1d-4dac-a6ba-1e50db561b04" key="Linkedin Account" value="" attribute="" />
7-
<item customtype="THEME" objectid="Standard-2015" blogid="96d5b379-7e1d-4dac-a6ba-1e50db561b04" key="RSS Link" value="/syndication.axd" attribute="" />
8-
<item customtype="THEME" objectid="Standard-2015" blogid="96d5b379-7e1d-4dac-a6ba-1e50db561b04" key="Instagramm Account" value="" attribute="" />
9-
<item customtype="THEME" objectid="Standard-2015" blogid="96d5b379-7e1d-4dac-a6ba-1e50db561b04" key="Pinterest Account" value="" attribute="" />
10-
<item customtype="THEME" objectid="Standard-2015" blogid="96d5b379-7e1d-4dac-a6ba-1e50db561b04" key="Soundcloud Account" value="" attribute="" />
11-
<item customtype="THEME" objectid="Standard-2015" blogid="96d5b379-7e1d-4dac-a6ba-1e50db561b04" key="Youtube Account" value="" attribute="" />
12-
<item customtype="THEME" objectid="Standard-2015" blogid="96d5b379-7e1d-4dac-a6ba-1e50db561b04" key="Github Account" value="" attribute="" />
13-
<item customtype="THEME" objectid="Standard" blogid="96d5b379-7e1d-4dac-a6ba-1e50db561b04" key="background color left" value="#232526" attribute="" />
14-
<item customtype="THEME" objectid="Standard" blogid="96d5b379-7e1d-4dac-a6ba-1e50db561b04" key="background color right" value="#414345" attribute="" />
15-
<item customtype="THEME" objectid="Standard" blogid="96d5b379-7e1d-4dac-a6ba-1e50db561b04" key="Logo" value="Custom/Themes/Standard/src/img/logo.png" attribute="" />
16-
<item customtype="THEME" objectid="Standard" blogid="96d5b379-7e1d-4dac-a6ba-1e50db561b04" key="About Author" value="" attribute="" />
17-
<item customtype="THEME" objectid="Standard" blogid="96d5b379-7e1d-4dac-a6ba-1e50db561b04" key="Facebook Account" value="" attribute="" />
18-
<item customtype="THEME" objectid="Standard" blogid="96d5b379-7e1d-4dac-a6ba-1e50db561b04" key="Twitter Account" value="" attribute="" />
19-
<item customtype="THEME" objectid="Standard" blogid="96d5b379-7e1d-4dac-a6ba-1e50db561b04" key="Google Plus Account" value="" attribute="" />
20-
<item customtype="THEME" objectid="Standard" blogid="96d5b379-7e1d-4dac-a6ba-1e50db561b04" key="Linkedin Account" value="" attribute="" />
21-
<item customtype="THEME" objectid="Standard" blogid="96d5b379-7e1d-4dac-a6ba-1e50db561b04" key="Instagramm Account" value="" attribute="" />
3+
<item customtype="THEME" objectid="Standard-2017" blogid="96d5b379-7e1d-4dac-a6ba-1e50db561b04" key="background color left" value="#232526" attribute="" />
4+
<item customtype="THEME" objectid="Standard-2017" blogid="96d5b379-7e1d-4dac-a6ba-1e50db561b04" key="background color right" value="#414345" attribute="" />
5+
<item customtype="THEME" objectid="Standard-2017" blogid="96d5b379-7e1d-4dac-a6ba-1e50db561b04" key="Logo" value="Custom/Themes/Standard-2017/src/img/logo.png" attribute="" />
6+
<item customtype="THEME" objectid="Standard-2017" blogid="96d5b379-7e1d-4dac-a6ba-1e50db561b04" key="About Author" value="" attribute="" />
7+
<item customtype="THEME" objectid="Standard-2017" blogid="96d5b379-7e1d-4dac-a6ba-1e50db561b04" key="Facebook Account" value="" attribute="" />
8+
<item customtype="THEME" objectid="Standard-2017" blogid="96d5b379-7e1d-4dac-a6ba-1e50db561b04" key="Twitter Account" value="" attribute="" />
9+
<item customtype="THEME" objectid="Standard-2017" blogid="96d5b379-7e1d-4dac-a6ba-1e50db561b04" key="Google Plus Account" value="" attribute="" />
10+
<item customtype="THEME" objectid="Standard-2017" blogid="96d5b379-7e1d-4dac-a6ba-1e50db561b04" key="Linkedin Account" value="" attribute="" />
11+
<item customtype="THEME" objectid="Standard-2017" blogid="96d5b379-7e1d-4dac-a6ba-1e50db561b04" key="Instagramm Account" value="" attribute="" />
12+
<item customtype="THEME" objectid="Standard-2017" blogid="96d5b379-7e1d-4dac-a6ba-1e50db561b04" key="Youtube Account" value="" attribute="" />
13+
<item customtype="THEME" objectid="Standard-2017" blogid="96d5b379-7e1d-4dac-a6ba-1e50db561b04" key="Github Account" value="" attribute="" />
14+
<item customtype="THEME" objectid="Standard-2017" blogid="96d5b379-7e1d-4dac-a6ba-1e50db561b04" key="Pinterest Account" value="" attribute="" />
15+
<item customtype="THEME" objectid="Standard-2017" blogid="96d5b379-7e1d-4dac-a6ba-1e50db561b04" key="Home Alert Box (true or false?)" value="true" attribute="" />
16+
<item customtype="THEME" objectid="Standard" blogid="96d5b379-7e1d-4dac-a6ba-1e50db561b04" key="Logo" value="/Custom/Themes/Standard/src/img/logo.png" attribute="" />
17+
<item customtype="THEME" objectid="Standard" blogid="96d5b379-7e1d-4dac-a6ba-1e50db561b04" key="Facebook Account" value="#" attribute="" />
18+
<item customtype="THEME" objectid="Standard" blogid="96d5b379-7e1d-4dac-a6ba-1e50db561b04" key="Twitter Account" value="#" attribute="" />
19+
<item customtype="THEME" objectid="Standard" blogid="96d5b379-7e1d-4dac-a6ba-1e50db561b04" key="Google Plus Account" value="#" attribute="" />
20+
<item customtype="THEME" objectid="Standard" blogid="96d5b379-7e1d-4dac-a6ba-1e50db561b04" key="Linkedin Account" value="#" attribute="" />
21+
<item customtype="THEME" objectid="Standard" blogid="96d5b379-7e1d-4dac-a6ba-1e50db561b04" key="Instagramm Account" value="#" attribute="" />
2222
<item customtype="THEME" objectid="Standard" blogid="96d5b379-7e1d-4dac-a6ba-1e50db561b04" key="Youtube Account" value="" attribute="" />
23-
<item customtype="THEME" objectid="Standard" blogid="96d5b379-7e1d-4dac-a6ba-1e50db561b04" key="Github Account" value="" attribute="" />
2423
<item customtype="THEME" objectid="Standard" blogid="96d5b379-7e1d-4dac-a6ba-1e50db561b04" key="Pinterest Account" value="" attribute="" />
25-
<item customtype="THEME" objectid="Standard" blogid="96d5b379-7e1d-4dac-a6ba-1e50db561b04" key="Home Alert Box (true or false?)" value="true" attribute="" />
24+
<item customtype="THEME" objectid="Standard" blogid="96d5b379-7e1d-4dac-a6ba-1e50db561b04" key="Github Account" value="" attribute="" />
25+
<item customtype="THEME" objectid="Standard" blogid="96d5b379-7e1d-4dac-a6ba-1e50db561b04" key="Publisher Logo" value="http://exampleblog.com/logo.png" attribute="" />
26+
<item customtype="THEME" objectid="Standard" blogid="96d5b379-7e1d-4dac-a6ba-1e50db561b04" key="Post Thumbnail position" value="top" attribute="" />
2627
</CustomFields>

0 commit comments

Comments
 (0)