diff --git a/docker-compose.yml b/docker-compose.yml index 0c3891beb..d0966ab59 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -35,7 +35,7 @@ services: depends_on: - mariadb environment: - ConnectionStrings__FilterListsConnection: ${FILTERLISTS_CONNECTION_STRING} + ConnectionStrings__FilterListsConnection: ${API_CONNECTION_STRING} mariadb: image: mariadb:10 @@ -45,10 +45,10 @@ services: volumes: - data:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD: ${FILTERLISTS_MYSQL_ROOT_PASSWORD} - MYSQL_DATABASE: ${FILTERLISTS_MYSQL_DATABASE} - MYSQL_USER: ${FILTERLISTS_MYSQL_USER} - MYSQL_PASSWORD: ${FILTERLISTS_MYSQL_PASSWORD} + MYSQL_ROOT_PASSWORD: ${API_MYSQL_ROOT_PASSWORD} + MYSQL_DATABASE: ${API_MYSQL_DATABASE} + MYSQL_USER: ${API_MYSQL_USER} + MYSQL_PASSWORD: ${API_MYSQL_PASSWORD} command: [ "mysqld", @@ -65,12 +65,16 @@ services: volumes: - archives:/app/archives environment: - ConnectionStrings__FilterListsConnection: ${FILTERLISTS_CONNECTION_STRING} - ApplicationInsights__InstrumentationKey: ${FILTERLISTS_AGENT_APPLICATION_INSIGHTS_INSTRUMENTATION_KEY} - GitHub__ProductHeaderValue: ${FILTERLISTS_AGENT_GITHUB_PRODUCT_HEADER_VALUE} - GitHub__PersonalAccessToken: ${FILTERLISTS_AGENT_GITHUB_PERSONAL_ACCESS_TOKEN} - GitHub__RepositoryOwner: ${FILTERLISTS_AGENT_GITHUB_REPOSITORY_OWNER} - GitHub__Repository: ${FILTERLISTS_AGENT_GITHUB_REPOSITORY} + ConnectionString__FilterListsConnection: ${API_CONNECTION_STRING} + ApplicationInsights__InstrumentationKey: ${AGENT_APPLICATION_INSIGHTS_INSTRUMENTATION_KEY} + GitHub__ProductHeaderValue: ${AGENT_GITHUB_PRODUCT_HEADER_VALUE} + GitHub__PersonalAccessToken: ${AGENT_GITHUB_PERSONAL_ACCESS_TOKEN} + GitHub__RepositoryOwner: ${AGENT_GITHUB_REPOSITORY_OWNER} + GitHub__Repository: ${AGENT_GITHUB_REPOSITORY} + Archive__CommitMessageSuffix: ${AGENT_ARCHIVE_GIT_COMMIT_MESSAGE_SUFFIX} + Archive__RepositoryDirectory: ${AGENT_ARCHIVE_GIT_REPOSITORY_DIRECTORY} + Archive__SignatureName: ${AGENT_ARCHIVE_GIT_SIGNATURE_NAME} + Archive__SignatureEmail: ${AGENT_ARCHIVE_GIT_SIGNATURE_EMAIL} networks: reverse-proxy: diff --git a/src/FilterLists.Agent/AppSettings/ArchiveSettings.cs b/src/FilterLists.Agent/AppSettings/ArchiveSettings.cs new file mode 100644 index 000000000..708cde30f --- /dev/null +++ b/src/FilterLists.Agent/AppSettings/ArchiveSettings.cs @@ -0,0 +1,10 @@ +namespace FilterLists.Agent.AppSettings +{ + public class ArchiveSettings + { + public string CommitMessageSuffix { get; set; } + public string RepositoryDirectory { get; set; } + public string SignatureName { get; set; } + public string SignatureEmail { get; set; } + } +} \ No newline at end of file diff --git a/src/FilterLists.Agent/AppSettings/ConnectionStringsSettings.cs b/src/FilterLists.Agent/AppSettings/ConnectionStringSettings.cs similarity index 79% rename from src/FilterLists.Agent/AppSettings/ConnectionStringsSettings.cs rename to src/FilterLists.Agent/AppSettings/ConnectionStringSettings.cs index 52f7a480d..7a63287a9 100644 --- a/src/FilterLists.Agent/AppSettings/ConnectionStringsSettings.cs +++ b/src/FilterLists.Agent/AppSettings/ConnectionStringSettings.cs @@ -3,7 +3,7 @@ namespace FilterLists.Agent.AppSettings { [UsedImplicitly] - public class ConnectionStringsSettings + public class ConnectionStringSettings { public string FilterListsConnection { get; set; } } diff --git a/src/FilterLists.Agent/Options.cs b/src/FilterLists.Agent/CommandLineOptions.cs similarity index 52% rename from src/FilterLists.Agent/Options.cs rename to src/FilterLists.Agent/CommandLineOptions.cs index fc683e2da..d0c1e094c 100644 --- a/src/FilterLists.Agent/Options.cs +++ b/src/FilterLists.Agent/CommandLineOptions.cs @@ -4,16 +4,16 @@ namespace FilterLists.Agent { [UsedImplicitly] - public class Options + public class CommandLineOptions { - public Options(bool captureLists, bool validateUrls) + public CommandLineOptions(bool archiveLists, bool validateUrls) { - CaptureLists = captureLists; + ArchiveLists = archiveLists; ValidateUrls = validateUrls; } - [Option('c', "capture", Required = false, HelpText = "Capture copies of all lists in the archives repository.")] - public bool CaptureLists { get; } + [Option('a', "archive", Required = false, HelpText = "Archive copies of all lists in a git repository.")] + public bool ArchiveLists { get; } [Option('v', "validate", Required = false, HelpText = "Validate all URLs in the FilterLists database.")] public bool ValidateUrls { get; } diff --git a/src/FilterLists.Agent/Extensions/ServiceCollectionExtensions.cs b/src/FilterLists.Agent/Extensions/ServiceCollectionExtensions.cs index 7da38b732..a16d1a2d7 100644 --- a/src/FilterLists.Agent/Extensions/ServiceCollectionExtensions.cs +++ b/src/FilterLists.Agent/Extensions/ServiceCollectionExtensions.cs @@ -38,7 +38,8 @@ private static void AddConfiguration(this IServiceCollection services) #endif .Build(); services.ConfigureCustom(config); - services.ConfigureCustom(config); + services.ConfigureCustom(config); + services.ConfigureCustom(config); services.ConfigureCustom(config); } diff --git a/src/FilterLists.Agent/Features/Lists/CaptureLists.cs b/src/FilterLists.Agent/Features/Lists/ArchiveLists.cs similarity index 96% rename from src/FilterLists.Agent/Features/Lists/CaptureLists.cs rename to src/FilterLists.Agent/Features/Lists/ArchiveLists.cs index d187ddd95..f8931100b 100644 --- a/src/FilterLists.Agent/Features/Lists/CaptureLists.cs +++ b/src/FilterLists.Agent/Features/Lists/ArchiveLists.cs @@ -5,7 +5,7 @@ namespace FilterLists.Agent.Features.Lists { - public static class CaptureLists + public static class ArchiveLists { public class Command : IRequest { diff --git a/src/FilterLists.Agent/Features/Lists/CommitLists.cs b/src/FilterLists.Agent/Features/Lists/CommitLists.cs index 6e80ef16f..06380f619 100644 --- a/src/FilterLists.Agent/Features/Lists/CommitLists.cs +++ b/src/FilterLists.Agent/Features/Lists/CommitLists.cs @@ -1,6 +1,8 @@ using System; +using FilterLists.Agent.AppSettings; using LibGit2Sharp; using MediatR; +using Microsoft.Extensions.Options; namespace FilterLists.Agent.Features.Lists { @@ -12,21 +14,25 @@ public class Command : IRequest public class Handler : RequestHandler { - private const string RepoDirectory = "archives"; - private const string SignatureName = "FilterLists.Agent"; - private const string SignatureEmail = "noreply@filterlists.com"; - private const string CommitMessageSuffix = " FilterLists archive by FilterLists.Agent"; + private readonly ArchiveSettings _archiveSettings; + + public Handler(IOptions archiveSettings) + { + _archiveSettings = archiveSettings.Value; + } protected override void Handle(Command request) { - if (!Repository.IsValid(RepoDirectory)) - Repository.Init(RepoDirectory); - using (var repo = new Repository(RepoDirectory)) + if (!Repository.IsValid(_archiveSettings.RepositoryDirectory)) + Repository.Init(_archiveSettings.RepositoryDirectory); + using (var repo = new Repository(_archiveSettings.RepositoryDirectory)) { Commands.Stage(repo, "*"); var utcNow = DateTime.UtcNow; - var signature = new Signature(SignatureName, SignatureEmail, utcNow); - repo.Commit(utcNow.ToShortDateString() + CommitMessageSuffix, signature, signature); + var signature = new Signature(_archiveSettings.SignatureName, _archiveSettings.SignatureEmail, + utcNow); + repo.Commit(utcNow.ToShortDateString() + _archiveSettings.CommitMessageSuffix, signature, + signature); } } } diff --git a/src/FilterLists.Agent/Program.cs b/src/FilterLists.Agent/Program.cs index 3d13a53d7..3899c3b8a 100644 --- a/src/FilterLists.Agent/Program.cs +++ b/src/FilterLists.Agent/Program.cs @@ -19,10 +19,10 @@ public static async Task Main(string[] args) var parser = _serviceProvider.GetService(); var mediator = _serviceProvider.GetService(); - await parser.ParseArguments(args).MapResult(async o => + await parser.ParseArguments(args).MapResult(async o => { - if (o.CaptureLists) - await mediator.Send(new CaptureLists.Command()); + if (o.ArchiveLists) + await mediator.Send(new ArchiveLists.Command()); if (o.ValidateUrls) await mediator.Send(new ValidateAllUrls.Command()); }, diff --git a/src/FilterLists.Agent/Properties/launchSettings.json b/src/FilterLists.Agent/Properties/launchSettings.json index 738b9cac6..b4a3e74ce 100644 --- a/src/FilterLists.Agent/Properties/launchSettings.json +++ b/src/FilterLists.Agent/Properties/launchSettings.json @@ -2,7 +2,7 @@ "profiles": { "FilterLists.Agent": { "commandName": "Project", - "commandLineArgs": "-c -v" + "commandLineArgs": "-a -v" } } } \ No newline at end of file diff --git a/src/FilterLists.Agent/appsettings.json b/src/FilterLists.Agent/appsettings.json index 66663f1f9..90605d914 100644 --- a/src/FilterLists.Agent/appsettings.json +++ b/src/FilterLists.Agent/appsettings.json @@ -2,7 +2,13 @@ "ApplicationInsights": { "InstrumentationKey": "" }, - "ConnectionStrings": { + "Archive": { + "RepositoryDirectory": "", + "SignatureName": "", + "SignatureEmail": "", + "CommitMessageSuffix": "" + }, + "ConnectionString": { "FilterListsConnection": "" }, "GitHub": {