mirror of
https://git.teknik.io/Teknikode/Teknik.git
synced 2023-08-02 14:16:22 +02:00
Added cleaning of unused email and git accounts
This commit is contained in:
parent
4280ff04f6
commit
8d3f1ccf3e
@ -19,6 +19,12 @@ namespace ServerMaint
|
|||||||
[Option('u', "clean-users", DefaultValue = false, Required = false, HelpText = "Clean all inactive users")]
|
[Option('u', "clean-users", DefaultValue = false, Required = false, HelpText = "Clean all inactive users")]
|
||||||
public bool CleanUsers { get; set; }
|
public bool CleanUsers { get; set; }
|
||||||
|
|
||||||
|
[Option('e', "clean-emails", DefaultValue = false, Required = false, HelpText = "Clean all unused email accounts")]
|
||||||
|
public bool CleanEmails { get; set; }
|
||||||
|
|
||||||
|
[Option('g', "clean-git", DefaultValue = false, Required = false, HelpText = "Clean all unused git accounts")]
|
||||||
|
public bool CleanGit { get; set; }
|
||||||
|
|
||||||
[Option('s', "scan", DefaultValue = false, Required = false, HelpText = "Scan all uploads for viruses")]
|
[Option('s', "scan", DefaultValue = false, Required = false, HelpText = "Scan all uploads for viruses")]
|
||||||
public bool ScanUploads { get; set; }
|
public bool ScanUploads { get; set; }
|
||||||
|
|
||||||
|
@ -56,6 +56,19 @@ namespace ServerMaint
|
|||||||
{
|
{
|
||||||
CleanUsers(config, db, options.DaysBeforeDeletion, options.EmailsToSend);
|
CleanUsers(config, db, options.DaysBeforeDeletion, options.EmailsToSend);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Cleans the email for unused accounts
|
||||||
|
if (options.CleanEmails)
|
||||||
|
{
|
||||||
|
CleanEmail(config, db);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Cleans all the git accounts that are unused
|
||||||
|
if (options.CleanGit)
|
||||||
|
{
|
||||||
|
CleanGit(config, db);
|
||||||
|
}
|
||||||
|
|
||||||
Output(string.Format("[{0}] Finished Server Maintainence Process.", DateTime.Now));
|
Output(string.Format("[{0}] Finished Server Maintainence Process.", DateTime.Now));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -219,22 +232,6 @@ Thank you for your use of Teknik and I hope you decide to come back.
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Missing Email Accounts
|
|
||||||
if (!UserHelper.UserEmailExists(config, user.Username))
|
|
||||||
{
|
|
||||||
// They are missing an email account. Something bad happened, so let's delete their account so they can start over. :D
|
|
||||||
UserHelper.DeleteUser(db, config, user);
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Missing Git Accounts
|
|
||||||
if (!UserHelper.UserGitExists(config, user.Username))
|
|
||||||
{
|
|
||||||
// They are missing a git account. Something bad happened, so let's delete their account so they can start over. :D
|
|
||||||
UserHelper.DeleteUser(db, config, user);
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add to transparency report if any users were removed
|
// Add to transparency report if any users were removed
|
||||||
@ -249,6 +246,60 @@ Thank you for your use of Teknik and I hope you decide to come back.
|
|||||||
db.SaveChanges();
|
db.SaveChanges();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void CleanEmail(Config config, TeknikEntities db)
|
||||||
|
{
|
||||||
|
if (config.EmailConfig.Enabled)
|
||||||
|
{
|
||||||
|
List<User> curUsers = db.Users.ToList();
|
||||||
|
|
||||||
|
// Connect to hmailserver COM
|
||||||
|
var app = new hMailServer.Application();
|
||||||
|
app.Connect();
|
||||||
|
app.Authenticate(config.EmailConfig.Username, config.EmailConfig.Password);
|
||||||
|
|
||||||
|
var domain = app.Domains.ItemByName[config.EmailConfig.Domain];
|
||||||
|
var accounts = domain.Accounts;
|
||||||
|
for (int i = 0; i < accounts.Count; i++)
|
||||||
|
{
|
||||||
|
var account = accounts[i];
|
||||||
|
|
||||||
|
bool userExists = curUsers.Exists(u => UserHelper.GetUserEmailAddress(config, u.Username) == account.Address);
|
||||||
|
bool isReserved = UserHelper.GetReservedUsernames(config).Exists(r => UserHelper.GetUserEmailAddress(config, r).ToLower() == account.Address.ToLower());
|
||||||
|
if (!userExists && !isReserved)
|
||||||
|
{
|
||||||
|
// User doesn't exist, and it isn't reserved. Let's nuke it.
|
||||||
|
UserHelper.DeleteUserEmail(config, account.Address);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void CleanGit(Config config, TeknikEntities db)
|
||||||
|
{
|
||||||
|
if (config.EmailConfig.Enabled)
|
||||||
|
{
|
||||||
|
List<User> curUsers = db.Users.ToList();
|
||||||
|
|
||||||
|
// We need to check the actual git database
|
||||||
|
MysqlDatabase mySQL = new MysqlDatabase(config.GitConfig.Database);
|
||||||
|
string sql = @"SELECT gogs.user.login_name AS login_name, gogs.user.lower_name AS username FROM gogs.user";
|
||||||
|
var results = mySQL.Query(sql);
|
||||||
|
|
||||||
|
if (results != null && results.Any())
|
||||||
|
{
|
||||||
|
foreach (var account in results)
|
||||||
|
{
|
||||||
|
bool userExists = curUsers.Exists(u => UserHelper.GetUserEmailAddress(config, u.Username).ToLower() == account["login_name"].ToString().ToLower());
|
||||||
|
bool isReserved = UserHelper.GetReservedUsernames(config).Exists(r => UserHelper.GetUserEmailAddress(config, r) == account["login_name"].ToString().ToLower());
|
||||||
|
if (!userExists && !isReserved)
|
||||||
|
{
|
||||||
|
UserHelper.DeleteUserGit(config, account["username"].ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static void Output(string message)
|
public static void Output(string message)
|
||||||
{
|
{
|
||||||
Console.WriteLine(message);
|
Console.WriteLine(message);
|
||||||
|
@ -124,6 +124,17 @@
|
|||||||
<Install>false</Install>
|
<Install>false</Install>
|
||||||
</BootstrapperPackage>
|
</BootstrapperPackage>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<COMReference Include="hMailServer">
|
||||||
|
<Guid>{DB241B59-A1B1-4C59-98FC-8D101A2995F2}</Guid>
|
||||||
|
<VersionMajor>1</VersionMajor>
|
||||||
|
<VersionMinor>0</VersionMinor>
|
||||||
|
<Lcid>0</Lcid>
|
||||||
|
<WrapperTool>tlbimp</WrapperTool>
|
||||||
|
<Isolated>False</Isolated>
|
||||||
|
<EmbedInteropTypes>True</EmbedInteropTypes>
|
||||||
|
</COMReference>
|
||||||
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
<Import Project="..\packages\GitVersionTask.3.5.3\build\dotnet\GitVersionTask.targets" Condition="Exists('..\packages\GitVersionTask.3.5.3\build\dotnet\GitVersionTask.targets')" />
|
<Import Project="..\packages\GitVersionTask.3.5.3\build\dotnet\GitVersionTask.targets" Condition="Exists('..\packages\GitVersionTask.3.5.3\build\dotnet\GitVersionTask.targets')" />
|
||||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||||
|
@ -60,6 +60,7 @@ login
|
|||||||
logout
|
logout
|
||||||
logs
|
logs
|
||||||
mail
|
mail
|
||||||
|
mailer
|
||||||
mailman
|
mailman
|
||||||
map
|
map
|
||||||
maps
|
maps
|
||||||
|
@ -316,14 +316,7 @@ namespace Teknik.Areas.Users.Controllers
|
|||||||
User user = UserHelper.GetUser(db, User.Identity.Name);
|
User user = UserHelper.GetUser(db, User.Identity.Name);
|
||||||
if (user != null)
|
if (user != null)
|
||||||
{
|
{
|
||||||
try
|
UserHelper.DeleteUser(db, Config, user);
|
||||||
{
|
|
||||||
UserHelper.DeleteUser(db, Config, user);
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
return Json(new { error = ex.Message });
|
|
||||||
}
|
|
||||||
// Sign Out
|
// Sign Out
|
||||||
Logout();
|
Logout();
|
||||||
return Json(new { result = true });
|
return Json(new { result = true });
|
||||||
|
@ -78,7 +78,7 @@ namespace Teknik.Areas.Users.Utility
|
|||||||
|
|
||||||
isAvailable &= ValidUsername(db, config, username);
|
isAvailable &= ValidUsername(db, config, username);
|
||||||
isAvailable &= !UserExists(db, username);
|
isAvailable &= !UserExists(db, username);
|
||||||
isAvailable &= !UserEmailExists(config, username);
|
isAvailable &= !UserEmailExists(config, GetUserEmailAddress(config, username));
|
||||||
isAvailable &= !UserGitExists(config, username);
|
isAvailable &= !UserGitExists(config, username);
|
||||||
|
|
||||||
return isAvailable;
|
return isAvailable;
|
||||||
@ -89,9 +89,8 @@ namespace Teknik.Areas.Users.Utility
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
DateTime lastActive = new DateTime(1900, 1, 1);
|
DateTime lastActive = new DateTime(1900, 1, 1);
|
||||||
string email = string.Format("{0}@{1}", user.Username, config.EmailConfig.Domain);
|
|
||||||
|
|
||||||
DateTime emailLastActive = UserEmailLastActive(config, user.Username);
|
DateTime emailLastActive = UserEmailLastActive(config, GetUserEmailAddress(config, user.Username));
|
||||||
if (lastActive < emailLastActive)
|
if (lastActive < emailLastActive)
|
||||||
lastActive = emailLastActive;
|
lastActive = emailLastActive;
|
||||||
|
|
||||||
@ -115,10 +114,10 @@ namespace Teknik.Areas.Users.Utility
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
// Create an Email Account
|
// Create an Email Account
|
||||||
AddUserEmail(config, user, password);
|
AddUserEmail(config, GetUserEmailAddress(config, user.Username), password);
|
||||||
|
|
||||||
// Create a Git Account
|
// Create a Git Account
|
||||||
AddUserGit(config, user, password);
|
AddUserGit(config, user.Username, password);
|
||||||
|
|
||||||
// Add User
|
// Add User
|
||||||
user.HashedPassword = SHA384.Hash(user.Username, password);
|
user.HashedPassword = SHA384.Hash(user.Username, password);
|
||||||
@ -141,15 +140,14 @@ namespace Teknik.Areas.Users.Utility
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
string email = string.Format("{0}@{1}", user.Username, config.EmailConfig.Domain);
|
|
||||||
// Changing Password?
|
// Changing Password?
|
||||||
if (changePass)
|
if (changePass)
|
||||||
{
|
{
|
||||||
// Change email password
|
// Change email password
|
||||||
EditUserEmailPassword(config, user, password);
|
EditUserEmailPassword(config, GetUserEmailAddress(config, user.Username), password);
|
||||||
|
|
||||||
// Update Git password
|
// Update Git password
|
||||||
EditUserGitPassword(config, user, password);
|
EditUserGitPassword(config, user.Username, password);
|
||||||
|
|
||||||
// Update User password
|
// Update User password
|
||||||
user.HashedPassword = SHA384.Hash(user.Username, password);
|
user.HashedPassword = SHA384.Hash(user.Username, password);
|
||||||
@ -168,10 +166,12 @@ namespace Teknik.Areas.Users.Utility
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
// Delete Email Account
|
// Delete Email Account
|
||||||
DeleteUserEmail(config, user);
|
if (UserEmailExists(config, GetUserEmailAddress(config, user.Username)))
|
||||||
|
DeleteUserEmail(config, GetUserEmailAddress(config, user.Username));
|
||||||
|
|
||||||
// Delete Git Account
|
// Delete Git Account
|
||||||
DeleteUserGit(config, user);
|
if (UserGitExists(config, user.Username))
|
||||||
|
DeleteUserGit(config, user.Username);
|
||||||
|
|
||||||
// Update uploads
|
// Update uploads
|
||||||
List<Upload.Models.Upload> uploads = db.Uploads.Include("User").Where(u => u.User.Username == user.Username).ToList();
|
List<Upload.Models.Upload> uploads = db.Uploads.Include("User").Where(u => u.User.Username == user.Username).ToList();
|
||||||
@ -245,12 +245,16 @@ namespace Teknik.Areas.Users.Utility
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Email Management
|
#region Email Management
|
||||||
public static bool UserEmailExists(Config config, string username)
|
public static string GetUserEmailAddress(Config config, string username)
|
||||||
|
{
|
||||||
|
return string.Format("{0}@{1}", username, config.EmailConfig.Domain);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool UserEmailExists(Config config, string email)
|
||||||
{
|
{
|
||||||
// If Email Server is enabled
|
// If Email Server is enabled
|
||||||
if (config.EmailConfig.Enabled)
|
if (config.EmailConfig.Enabled)
|
||||||
{
|
{
|
||||||
string email = string.Format("{0}@{1}", username, config.EmailConfig.Domain);
|
|
||||||
// Connect to hmailserver COM
|
// Connect to hmailserver COM
|
||||||
var app = new hMailServer.Application();
|
var app = new hMailServer.Application();
|
||||||
app.Connect();
|
app.Connect();
|
||||||
@ -268,13 +272,12 @@ namespace Teknik.Areas.Users.Utility
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static DateTime UserEmailLastActive(Config config, string username)
|
public static DateTime UserEmailLastActive(Config config, string email)
|
||||||
{
|
{
|
||||||
DateTime lastActive = new DateTime(1900, 1, 1);
|
DateTime lastActive = new DateTime(1900, 1, 1);
|
||||||
|
|
||||||
if (config.EmailConfig.Enabled)
|
if (config.EmailConfig.Enabled)
|
||||||
{
|
{
|
||||||
string email = string.Format("{0}@{1}", username, config.EmailConfig.Domain);
|
|
||||||
var app = new hMailServer.Application();
|
var app = new hMailServer.Application();
|
||||||
app.Connect();
|
app.Connect();
|
||||||
app.Authenticate(config.EmailConfig.Username, config.EmailConfig.Password);
|
app.Authenticate(config.EmailConfig.Username, config.EmailConfig.Password);
|
||||||
@ -292,14 +295,13 @@ namespace Teknik.Areas.Users.Utility
|
|||||||
return lastActive;
|
return lastActive;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void AddUserEmail(Config config, User user, string password)
|
public static void AddUserEmail(Config config, string email, string password)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// If Email Server is enabled
|
// If Email Server is enabled
|
||||||
if (config.EmailConfig.Enabled)
|
if (config.EmailConfig.Enabled)
|
||||||
{
|
{
|
||||||
string email = string.Format("{0}@{1}", user.Username, config.EmailConfig.Domain);
|
|
||||||
// Connect to hmailserver COM
|
// Connect to hmailserver COM
|
||||||
var app = new hMailServer.Application();
|
var app = new hMailServer.Application();
|
||||||
app.Connect();
|
app.Connect();
|
||||||
@ -321,14 +323,13 @@ namespace Teknik.Areas.Users.Utility
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void EditUserEmailPassword(Config config, User user, string password)
|
public static void EditUserEmailPassword(Config config, string email, string password)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// If Email Server is enabled
|
// If Email Server is enabled
|
||||||
if (config.EmailConfig.Enabled)
|
if (config.EmailConfig.Enabled)
|
||||||
{
|
{
|
||||||
string email = string.Format("{0}@{1}", user.Username, config.EmailConfig.Domain);
|
|
||||||
var app = new hMailServer.Application();
|
var app = new hMailServer.Application();
|
||||||
app.Connect();
|
app.Connect();
|
||||||
app.Authenticate(config.EmailConfig.Username, config.EmailConfig.Password);
|
app.Authenticate(config.EmailConfig.Username, config.EmailConfig.Password);
|
||||||
@ -344,19 +345,18 @@ namespace Teknik.Areas.Users.Utility
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void DeleteUserEmail(Config config, User user)
|
public static void DeleteUserEmail(Config config, string email)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// If Email Server is enabled
|
// If Email Server is enabled
|
||||||
if (config.EmailConfig.Enabled)
|
if (config.EmailConfig.Enabled)
|
||||||
{
|
{
|
||||||
string email = string.Format("{0}@{1}", user.Username, config.EmailConfig.Domain);
|
|
||||||
var app = new hMailServer.Application();
|
var app = new hMailServer.Application();
|
||||||
app.Connect();
|
app.Connect();
|
||||||
app.Authenticate(config.EmailConfig.Username, config.EmailConfig.Password);
|
app.Authenticate(config.EmailConfig.Username, config.EmailConfig.Password);
|
||||||
var domain = app.Domains.ItemByName[config.EmailConfig.Domain];
|
var domain = app.Domains.ItemByName[config.EmailConfig.Domain];
|
||||||
var account = domain.Accounts.ItemByAddress[string.Format("{0}@{1}", user.Username, config.EmailConfig.Domain)];
|
var account = domain.Accounts.ItemByAddress[email];
|
||||||
if (account != null)
|
if (account != null)
|
||||||
{
|
{
|
||||||
account.Delete();
|
account.Delete();
|
||||||
@ -399,7 +399,7 @@ namespace Teknik.Areas.Users.Utility
|
|||||||
|
|
||||||
if (config.GitConfig.Enabled)
|
if (config.GitConfig.Enabled)
|
||||||
{
|
{
|
||||||
string email = string.Format("{0}@{1}", username, config.EmailConfig.Domain);
|
string email = GetUserEmailAddress(config, username);
|
||||||
// We need to check the actual git database
|
// We need to check the actual git database
|
||||||
MysqlDatabase mySQL = new MysqlDatabase(config.GitConfig.Database);
|
MysqlDatabase mySQL = new MysqlDatabase(config.GitConfig.Database);
|
||||||
string sql = @"SELECT MAX(gogs.repository.updated) AS LastUpdate
|
string sql = @"SELECT MAX(gogs.repository.updated) AS LastUpdate
|
||||||
@ -419,18 +419,18 @@ namespace Teknik.Areas.Users.Utility
|
|||||||
return lastActive;
|
return lastActive;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void AddUserGit(Config config, User user, string password)
|
public static void AddUserGit(Config config, string username, string password)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// If Git is enabled
|
// If Git is enabled
|
||||||
if (config.GitConfig.Enabled)
|
if (config.GitConfig.Enabled)
|
||||||
{
|
{
|
||||||
string email = string.Format("{0}@{1}", user.Username, config.EmailConfig.Domain);
|
string email = GetUserEmailAddress(config, username);
|
||||||
// Add gogs user
|
// Add gogs user
|
||||||
using (var client = new WebClient())
|
using (var client = new WebClient())
|
||||||
{
|
{
|
||||||
var obj = new { source_id = config.GitConfig.SourceId, username = user.Username, email = email, login_name = email, password = password };
|
var obj = new { source_id = config.GitConfig.SourceId, username = username, email = email, login_name = email, password = password };
|
||||||
string json = Newtonsoft.Json.JsonConvert.SerializeObject(obj);
|
string json = Newtonsoft.Json.JsonConvert.SerializeObject(obj);
|
||||||
client.Headers[HttpRequestHeader.ContentType] = "application/json";
|
client.Headers[HttpRequestHeader.ContentType] = "application/json";
|
||||||
Uri baseUri = new Uri(config.GitConfig.Host);
|
Uri baseUri = new Uri(config.GitConfig.Host);
|
||||||
@ -445,21 +445,21 @@ namespace Teknik.Areas.Users.Utility
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void EditUserGitPassword(Config config, User user, string password)
|
public static void EditUserGitPassword(Config config, string username, string password)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// If Git is enabled
|
// If Git is enabled
|
||||||
if (config.GitConfig.Enabled)
|
if (config.GitConfig.Enabled)
|
||||||
{
|
{
|
||||||
string email = string.Format("{0}@{1}", user.Username, config.EmailConfig.Domain);
|
string email = GetUserEmailAddress(config, username);
|
||||||
using (var client = new WebClient())
|
using (var client = new WebClient())
|
||||||
{
|
{
|
||||||
var obj = new { source_id = config.GitConfig.SourceId, email = email, password = password };
|
var obj = new { source_id = config.GitConfig.SourceId, email = email, password = password };
|
||||||
string json = Newtonsoft.Json.JsonConvert.SerializeObject(obj);
|
string json = Newtonsoft.Json.JsonConvert.SerializeObject(obj);
|
||||||
client.Headers[HttpRequestHeader.ContentType] = "application/json";
|
client.Headers[HttpRequestHeader.ContentType] = "application/json";
|
||||||
Uri baseUri = new Uri(config.GitConfig.Host);
|
Uri baseUri = new Uri(config.GitConfig.Host);
|
||||||
Uri finalUri = new Uri(baseUri, "api/v1/admin/users/" + user.Username + "?token=" + config.GitConfig.AccessToken);
|
Uri finalUri = new Uri(baseUri, "api/v1/admin/users/" + username + "?token=" + config.GitConfig.AccessToken);
|
||||||
string result = client.UploadString(finalUri, "PATCH", json);
|
string result = client.UploadString(finalUri, "PATCH", json);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -470,7 +470,7 @@ namespace Teknik.Areas.Users.Utility
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void DeleteUserGit(Config config, User user)
|
public static void DeleteUserGit(Config config, string username)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -480,7 +480,7 @@ namespace Teknik.Areas.Users.Utility
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
Uri baseUri = new Uri(config.GitConfig.Host);
|
Uri baseUri = new Uri(config.GitConfig.Host);
|
||||||
Uri finalUri = new Uri(baseUri, "api/v1/admin/users/" + user.Username + "?token=" + config.GitConfig.AccessToken);
|
Uri finalUri = new Uri(baseUri, "api/v1/admin/users/" + username + "?token=" + config.GitConfig.AccessToken);
|
||||||
WebRequest request = WebRequest.Create(finalUri);
|
WebRequest request = WebRequest.Create(finalUri);
|
||||||
request.Method = "DELETE";
|
request.Method = "DELETE";
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user