[CHANGE] Added dev page
This commit is contained in:
@@ -0,0 +1,14 @@
|
|||||||
|
|
||||||
|
|
||||||
|
<MudText>SAPISID Hash generator</MudText>
|
||||||
|
<MudStack Row Spacing="2">
|
||||||
|
<MudTextField HelperText="Datasync id" @bind-Value="@DatasyncId"/>
|
||||||
|
<MudTextField HelperText="Time" Mask="@(new PatternMask("0000000000"))" @bind-Value="@Time"/>
|
||||||
|
<MudTextField HelperText="SAPISID" @bind-Value="@SecureCookie"/>
|
||||||
|
<MudTextField HelperText="Origin" @bind-Value="@Origin"/>
|
||||||
|
</MudStack>
|
||||||
|
<MudTextField HelperText="Hash" ReadOnly @bind-Value="@OutputHash"/>
|
||||||
|
<MudStack Row Spacing="2">
|
||||||
|
<MudButton OnClick="Hash">Generate</MudButton>
|
||||||
|
<MudButton OnClick="Clear">Clear</MudButton>
|
||||||
|
</MudStack>
|
@@ -0,0 +1,30 @@
|
|||||||
|
using Manager.YouTube.Util;
|
||||||
|
using Microsoft.AspNetCore.Components;
|
||||||
|
|
||||||
|
namespace Manager.App.Components.Application.Dev;
|
||||||
|
|
||||||
|
public partial class AuthenticationHasher : ComponentBase
|
||||||
|
{
|
||||||
|
private const string DefaultOrigin = "https://www.youtube.com";
|
||||||
|
public string DatasyncId { get; set; } = "";
|
||||||
|
public string Time { get; set; } = "";
|
||||||
|
public string SecureCookie { get; set; } = "";
|
||||||
|
public string Origin { get; set; } = DefaultOrigin;
|
||||||
|
|
||||||
|
public string OutputHash { get; set; } = "";
|
||||||
|
|
||||||
|
private void Clear()
|
||||||
|
{
|
||||||
|
DatasyncId = "";
|
||||||
|
Time = "";
|
||||||
|
SecureCookie = "";
|
||||||
|
Origin = DefaultOrigin;
|
||||||
|
OutputHash = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Hash()
|
||||||
|
{
|
||||||
|
var hashedValue= AuthenticationUtilities.GetSapisidHash(DatasyncId, SecureCookie, Origin, Time);
|
||||||
|
OutputHash = hashedValue ?? "Hash failed!";
|
||||||
|
}
|
||||||
|
}
|
@@ -4,4 +4,5 @@
|
|||||||
<MudNavLink Href="/Channels" Icon="@Icons.Material.Filled.SupervisorAccount" Match="NavLinkMatch.All">Channels</MudNavLink>
|
<MudNavLink Href="/Channels" Icon="@Icons.Material.Filled.SupervisorAccount" Match="NavLinkMatch.All">Channels</MudNavLink>
|
||||||
<MudNavLink Href="/Library" Icon="@Icons.Material.Filled.LocalLibrary" Match="NavLinkMatch.All">Library</MudNavLink>
|
<MudNavLink Href="/Library" Icon="@Icons.Material.Filled.LocalLibrary" Match="NavLinkMatch.All">Library</MudNavLink>
|
||||||
<MudNavLink Href="/Playlists" Icon="@Icons.Material.Filled.ViewList" Match="NavLinkMatch.All">Playlists</MudNavLink>
|
<MudNavLink Href="/Playlists" Icon="@Icons.Material.Filled.ViewList" Match="NavLinkMatch.All">Playlists</MudNavLink>
|
||||||
|
<MudNavLink Href="/Development" Icon="@Icons.Material.Filled.DeveloperMode" Match="NavLinkMatch.All">Development</MudNavLink>
|
||||||
</MudNavMenu>
|
</MudNavMenu>
|
9
Manager.App/Components/Pages/Development.razor
Normal file
9
Manager.App/Components/Pages/Development.razor
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
@page "/Development"
|
||||||
|
@using Manager.App.Components.Application.Dev
|
||||||
|
<title>Development page</title>
|
||||||
|
|
||||||
|
<MudTabs Outlined Position="Position.Left" PanelClass="pa-4" ApplyEffectsToContainer Style="height: 100%">
|
||||||
|
<MudTabPanel Text="Authentication">
|
||||||
|
<AuthenticationHasher />
|
||||||
|
</MudTabPanel>
|
||||||
|
</MudTabs>
|
8
Manager.App/Components/Pages/Development.razor.cs
Normal file
8
Manager.App/Components/Pages/Development.razor.cs
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
using Microsoft.AspNetCore.Components;
|
||||||
|
|
||||||
|
namespace Manager.App.Components.Pages;
|
||||||
|
|
||||||
|
public partial class Development : ComponentBase
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
@@ -16,13 +16,16 @@ public static class AuthenticationUtilities
|
|||||||
return new AuthenticationHeaderValue(HeaderScheme, strHash);
|
return new AuthenticationHeaderValue(HeaderScheme, strHash);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string? GetSapisidHash(string datasyncId, string sapisid, string origin)
|
public static string? GetSapisidHash(string datasyncId, string sapisid, string origin, string? time = null)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrWhiteSpace(datasyncId) || string.IsNullOrWhiteSpace(sapisid) || string.IsNullOrWhiteSpace(origin))
|
if (string.IsNullOrWhiteSpace(datasyncId) || string.IsNullOrWhiteSpace(sapisid) || string.IsNullOrWhiteSpace(origin))
|
||||||
return null;
|
return null;
|
||||||
datasyncId = datasyncId.Replace("||", "");
|
datasyncId = datasyncId.Replace("||", "");
|
||||||
sapisid = Uri.UnescapeDataString(sapisid);
|
sapisid = Uri.UnescapeDataString(sapisid);
|
||||||
var time = GetTime();
|
if (string.IsNullOrWhiteSpace(time))
|
||||||
|
{
|
||||||
|
time = GetTime();
|
||||||
|
}
|
||||||
var sha1 = HashString($"{datasyncId} {time} {sapisid} {origin}");
|
var sha1 = HashString($"{datasyncId} {time} {sapisid} {origin}");
|
||||||
var completeHash = $"{time}_{sha1}_u";
|
var completeHash = $"{time}_{sha1}_u";
|
||||||
return completeHash;
|
return completeHash;
|
||||||
|
Reference in New Issue
Block a user