Skip to content

Commit

Permalink
- Add PasswordHash field in DanbooruProvider.xml
Browse files Browse the repository at this point in the history
  - This field is calculated based on the password and salt.
- Clear the Password field everytime the provider is saved.
  - You still can edit using notepad to add the password, this will be used
    for calculating the hash and will be cleared when fetching the list for
    the first time.
  • Loading branch information
Nandaka committed Jul 24, 2012
1 parent 868d1ee commit 5fef091
Show file tree
Hide file tree
Showing 7 changed files with 67 additions and 13 deletions.
9 changes: 7 additions & 2 deletions DanbooruDownloader3/DAO/DanbooruProviderDao.cs
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ public List<DanbooruProvider> Read(string filename = @"DanbooruProviderList.xml"
case "Password": newProvider.Password = reader.ReadElementContentAsString(); break;
case "UseAuth": newProvider.UseAuth = reader.ReadElementContentAsBoolean(); break;
case "PasswordSalt": newProvider.PasswordSalt = reader.ReadElementContentAsString(); break;
case "PasswordHash": newProvider.PasswordHash = reader.ReadElementContentAsString(); break;
case "BoardType":
string type = reader.ReadElementContentAsString();
newProvider.BoardType = (BoardType)Enum.Parse(typeof(BoardType), type); //Type.Equals("Danbooru") ? BoardType.Danbooru:BoardType.Gelbooru ;
Expand Down Expand Up @@ -81,13 +82,17 @@ public void Save(List<DanbooruProvider> list, string filename = @"DanbooruProvid
propertyInfos = typeof(DanbooruProvider).GetProperties();
foreach (PropertyInfo info in propertyInfos)
{
var value = info.GetValue(p, null);
if(value == null) value = "";
if (info.Name == "Password") value = ""; //Blank the password.

if (info.PropertyType.Name == "Boolean")
{
writer.WriteElementString(info.Name, info.GetValue(p, null).ToString().ToLowerInvariant());
writer.WriteElementString(info.Name, value.ToString().ToLowerInvariant());
}
else
{
writer.WriteElementString(info.Name, info.GetValue(p, null).ToString());
writer.WriteElementString(info.Name, value.ToString());
}
}

Expand Down
18 changes: 18 additions & 0 deletions DanbooruDownloader3/DanbooruProviderList.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
<Password />
<UseAuth>false</UseAuth>
<PasswordSalt>choujin-steiner--%PASSWORD%--</PasswordSalt>
<PasswordHash></PasswordHash>
<BoardType>Danbooru</BoardType>
</DanbooruProvider>
<DanbooruProvider>
Expand All @@ -26,6 +27,7 @@
<Password />
<UseAuth>false</UseAuth>
<PasswordSalt>choujin-steiner--%PASSWORD%--</PasswordSalt>
<PasswordHash></PasswordHash>
<BoardType>Danbooru</BoardType>
</DanbooruProvider>
<DanbooruProvider>
Expand All @@ -40,6 +42,7 @@
<Password />
<UseAuth>false</UseAuth>
<PasswordSalt>choujin-steiner--%PASSWORD%--</PasswordSalt>
<PasswordHash></PasswordHash>
<BoardType>Danbooru</BoardType>
</DanbooruProvider>
<DanbooruProvider>
Expand All @@ -54,6 +57,7 @@
<Password />
<UseAuth>false</UseAuth>
<PasswordSalt>choujin-steiner--%PASSWORD%--</PasswordSalt>
<PasswordHash></PasswordHash>
<BoardType>Danbooru</BoardType>
</DanbooruProvider>
<DanbooruProvider>
Expand All @@ -68,6 +72,7 @@
<Password />
<UseAuth>false</UseAuth>
<PasswordSalt>choujin-steiner--%PASSWORD%--</PasswordSalt>
<PasswordHash></PasswordHash>
<BoardType>Danbooru</BoardType>
</DanbooruProvider>
<DanbooruProvider>
Expand All @@ -82,6 +87,7 @@
<Password />
<UseAuth>false</UseAuth>
<PasswordSalt>choujin-steiner--%PASSWORD%--</PasswordSalt>
<PasswordHash></PasswordHash>
<BoardType>Gelbooru</BoardType>
</DanbooruProvider>
<DanbooruProvider>
Expand All @@ -96,6 +102,7 @@
<Password />
<UseAuth>false</UseAuth>
<PasswordSalt>choujin-steiner--%PASSWORD%--</PasswordSalt>
<PasswordHash></PasswordHash>
<BoardType>Danbooru</BoardType>
</DanbooruProvider>
<DanbooruProvider>
Expand All @@ -110,6 +117,7 @@
<Password />
<UseAuth>false</UseAuth>
<PasswordSalt>choujin-steiner--%PASSWORD%--</PasswordSalt>
<PasswordHash></PasswordHash>
<BoardType>Gelbooru</BoardType>
</DanbooruProvider>
<DanbooruProvider>
Expand All @@ -124,6 +132,7 @@
<Password />
<UseAuth>false</UseAuth>
<PasswordSalt>choujin-steiner--%PASSWORD%--</PasswordSalt>
<PasswordHash></PasswordHash>
<BoardType>Danbooru</BoardType>
</DanbooruProvider>
<DanbooruProvider>
Expand All @@ -138,6 +147,7 @@
<Password />
<UseAuth>false</UseAuth>
<PasswordSalt>choujin-steiner--%PASSWORD%--</PasswordSalt>
<PasswordHash></PasswordHash>
<BoardType>Gelbooru</BoardType>
</DanbooruProvider>
<DanbooruProvider>
Expand All @@ -152,6 +162,7 @@
<Password />
<UseAuth>false</UseAuth>
<PasswordSalt>choujin-steiner--%PASSWORD%--</PasswordSalt>
<PasswordHash></PasswordHash>
<BoardType>Danbooru</BoardType>
</DanbooruProvider>
<DanbooruProvider>
Expand All @@ -166,6 +177,7 @@
<Password />
<UseAuth>false</UseAuth>
<PasswordSalt>choujin-steiner--%PASSWORD%--</PasswordSalt>
<PasswordHash></PasswordHash>
<BoardType>Danbooru</BoardType>
</DanbooruProvider>
<DanbooruProvider>
Expand All @@ -180,6 +192,7 @@
<Password />
<UseAuth>false</UseAuth>
<PasswordSalt>choujin-steiner--%PASSWORD%--</PasswordSalt>
<PasswordHash></PasswordHash>
<BoardType>Gelbooru</BoardType>
</DanbooruProvider>
<DanbooruProvider>
Expand All @@ -194,6 +207,7 @@
<Password />
<UseAuth>false</UseAuth>
<PasswordSalt>choujin-steiner--%PASSWORD%--</PasswordSalt>
<PasswordHash></PasswordHash>
<BoardType>Shimmie2</BoardType>
</DanbooruProvider>
<DanbooruProvider>
Expand All @@ -208,6 +222,7 @@
<Password />
<UseAuth>false</UseAuth>
<PasswordSalt>choujin-steiner--%PASSWORD%--</PasswordSalt>
<PasswordHash></PasswordHash>
<BoardType>Shimmie2</BoardType>
</DanbooruProvider>
<DanbooruProvider>
Expand All @@ -222,6 +237,7 @@
<Password />
<UseAuth>false</UseAuth>
<PasswordSalt>choujin-steiner--%PASSWORD%--</PasswordSalt>
<PasswordHash></PasswordHash>
<BoardType>Shimmie2</BoardType>
</DanbooruProvider>
<DanbooruProvider>
Expand All @@ -236,6 +252,7 @@
<Password />
<UseAuth>false</UseAuth>
<PasswordSalt />
<PasswordHash></PasswordHash>
<BoardType>Shimmie2</BoardType>
</DanbooruProvider>
<DanbooruProvider>
Expand All @@ -250,6 +267,7 @@
<Password />
<UseAuth>false</UseAuth>
<PasswordSalt />
<PasswordHash></PasswordHash>
<BoardType>Shimmie2</BoardType>
</DanbooruProvider>
</DanbooruProviderList>
1 change: 1 addition & 0 deletions DanbooruDownloader3/Entity/DanbooruProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ public class DanbooruProvider
public string Password { get; set; }
public bool UseAuth { get; set; }
public string PasswordSalt { get; set; }
public string PasswordHash { get; set; }
public BoardType BoardType { get; set; }

public override string ToString()
Expand Down
16 changes: 14 additions & 2 deletions DanbooruDownloader3/FormMain.cs
Original file line number Diff line number Diff line change
Expand Up @@ -461,7 +461,13 @@ private void GetList()
string authString = "";
if (_currProvider.UseAuth)
{
authString = "login=" + _currProvider.UserName + "&password_hash=" + Helper.GeneratePasswordHash(_currProvider.Password, _currProvider.PasswordSalt);
var hash = _currProvider.PasswordHash;
if (String.IsNullOrWhiteSpace(hash))
{
hash = Helper.GeneratePasswordHash(_currProvider.Password, _currProvider.PasswordSalt);
_currProvider.PasswordHash = hash;
}
authString = "login=" + _currProvider.UserName + "&password_hash=" + hash;
}
var queryUrl = GetQueryUrl(authString);
Program.Logger.Info("Getting list: " + Helper.RemoveAuthInfo(queryUrl));
Expand Down Expand Up @@ -714,7 +720,13 @@ public void DoBatchJob(BindingList<DanbooruBatchJob> batchJob)

if (batchJob[i].Provider.UseAuth)
{
string authString = "login=" + batchJob[i].Provider.UserName + "&password_hash=" + Helper.GeneratePasswordHash(batchJob[i].Provider.Password, batchJob[i].Provider.PasswordSalt);
var hash = batchJob[i].Provider.PasswordHash;
if (String.IsNullOrWhiteSpace(hash))
{
hash = Helper.GeneratePasswordHash(batchJob[i].Provider.Password, batchJob[i].Provider.PasswordSalt);
batchJob[i].Provider.PasswordHash = hash;
}
string authString = "login=" + batchJob[i].Provider.UserName + "&password_hash=" + hash;
url = url + "&" + authString;
}
#endregion
Expand Down
12 changes: 6 additions & 6 deletions DanbooruDownloader3/FormProvider.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

18 changes: 15 additions & 3 deletions DanbooruDownloader3/FormProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ private void CreateControls()
{
PropertyInfo[] propertyInfos;
propertyInfos = typeof(DanbooruProvider).GetProperties();
tableLayoutPanel1.RowCount = propertyInfos.Length;
tableLayoutPanel1.RowCount = propertyInfos.Length + 1;

foreach (var info in propertyInfos)
{
Expand All @@ -56,7 +56,7 @@ private void CreateControls()
ComboBox _cbx = new ComboBox();
_cbx.Name = info.Name;
_cbx.Items.AddRange(new object[] { true, false });

tableLayoutPanel1.Controls.Add(_cbx);
}
else if (info.PropertyType.IsEnum)
Expand All @@ -75,12 +75,24 @@ private void CreateControls()
TextBox _txt = new TextBox();
_txt.Name = info.Name;
_txt.Dock = DockStyle.Fill;
if (info.Name.ToLowerInvariant().Contains("password")) _txt.UseSystemPasswordChar = true;
if (info.Name == "Password")
{
_txt.UseSystemPasswordChar = true;
_txt.TextChanged += new EventHandler(_txt_TextChanged);
}
tableLayoutPanel1.Controls.Add(_txt);
}
}
}

void _txt_TextChanged(object sender, EventArgs e)
{
TextBox _txtPasswordHash = (TextBox)tableLayoutPanel1.Controls.Find("PasswordHash", true)[0];
TextBox _txtPassword = (TextBox)tableLayoutPanel1.Controls.Find("Password", true)[0];
TextBox _txtPasswordSalt = (TextBox)tableLayoutPanel1.Controls.Find("PasswordSalt", true)[0];
_txtPasswordHash.Text = Helper.GeneratePasswordHash(_txtPassword.Text, _txtPasswordSalt.Text);
}

void _cbx_SelectedIndexChanged(object sender, EventArgs e)
{
ComboBox cbx = (ComboBox)sender;
Expand Down
6 changes: 6 additions & 0 deletions readme.txt
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,12 @@ Changelog:
- DanbooruDownloader20120724
- Add option to remember the save folder when exit.
- FormProvider: OK button will always save the Provider settings.
- Add PasswordHash field in DanbooruProvider.xml
- This field is calculated based on the password and salt.
- Clear the Password field everytime the provider is saved.
- You still can edit using notepad to add the password, this will be used
for calculating the hash and will be cleared when fetching the list for
the first time.

- DanbooruDownloader20120626
- Add custom autocomplete for tags.
Expand Down

0 comments on commit 5fef091

Please sign in to comment.