Repository files navigation

Uploader

Windows console application (.NET 4.5) for handling periodic FTP uploads and optionally sending a completion email.

  • Windows console application for processing file upload jobs
  • Upload jobs configured via plain-text JSON file
  • Ability to compress files before uploading (ZIP compression)
  • Replacement of {date} in destination file name with date in yyyy-MM-dd format
  • Optional ability to send an email notification when a job is complete
  • Does not handle scheduling

Requirements

  • .NET 4.5 or later on the system where the console application will run
  • Software to schedule running tasks periodically such as Task Scheduler (optional)
  • Mail server accepting SMTP connections (optional)

Initial setup

  • Build the application or download a release
  • Configure the mail portion in the Uploader.Console.exe.config (optional)
  • Configure the desired job(s) in the jobs.json file (see below)
  • Copy the application to the place where you want it to run
  • Set up scheduling to automatically run the program (if desired)

Configuration

Configure jobs by adding objects to jobs.json describing the upload jobs. The format of the jobs.json file is as follows:

{"Jobs": [{"Name": "JobName","Path": "c:\\awesomefile.txt","Site": "ftp://localhost/awesomefile.zip","Username": "ftp","Password": "ftp","ZipBeforeUpload": "true","DeleteSourceAfterUpload": "false","EmailTo": "person@whatever","EmailBcc": "manager@whatever""EmailSubject": "The file was uploaded!","EmailBody": "Upload successful!"},{
...
}]}

The following fields can be present in a Job description object:

  • Name - the name of the job (case-sensitive) - you run the job by calling Uploader.Console.exe <name> (with the above configuration, you'd run Uploader.Console.exe JobName)
  • Path - the full path to the file to upload, e.g. c:\\awesomefile.txt (backslashes must be escaped: type them twice). An asterisk (*) can be used to match partial file names - the upload will only be successful if there is a single file match.
  • Site - URL to upload the file to, e.g. ftp://localhost/awesomefile.zip - if the configuration line contains {date} it will be replaced with the current date in yyyy-MM-dd format
  • Username - optional - login to the FTP site
  • Password - optional - password to the ftp site
  • ZipBeforeUpload - optional - whether or not to zip the file before uploading it
  • DeleteSourceAfterUpload - optional - if true, delete the source file once it has s been uploaded
  • EmailTo - optional - who to send an email to once the file is uploaded
  • EmailBcc - optional - a person to blind CC on the email that the software sends
  • EmailSubject - optional - the subject of the email to send
  • EmailBody - optional - the body of the email to send, if EmailTo and EmailSubject are supplied but EmailBody is not then just put the number of bytes uploaded in the body of the email.

Configuring Email

Jobs can optionally be set to send email once they are complete. Email configuration is in the Uploader.Console.exe.config file:

<system.net>
<mailSettings>
<smtpfrom="from-email-address@whatever">
<networkhost="smtp.server.hostname"port="25" />
</smtp>
</mailSettings>
</system.net>

Logging

Console logging is on by default. Additional logging configurations can be set in Uploader.Console.exe.config:

SQL Server

In <appSettings> add:

<addkey="serilog:using:MSSqlSever"value="Serilog.Sinks.MSSqlServer"/>
<addkey="serilog:write-to:MSSqlServer.restrictedToMinimumLevel"value="Information"/>
<addkey="serilog:write-to:MSSqlServer.connectionString"value="[SQL Server connection string]"/>
<addkey="serilog:write-to:MSSqlServer.tableName"value="[SQL Server logging table name]"/>
<addkey="serilog:write-to:MSSqlServer.autoCreateSqlTable"value="true"/>

Seq

In <appSettings> add:

<addkey="serilog:using:Seq"value="Serilog.Sinks.Seq" />
<addkey="serilog:write-to:Seq.serverUrl"value="[Seq logging endpoint]" />
<addkey="serilog:write-to:Seq.apiKey"value="[optional API key here]" />

Dependencies

  • Newtonsoft.Json
  • Serilog
  • Serilog.Settings.AppSettings
  • Serilog.Sinks.Console
  • Serilog.Sinks.Literate
  • Serilog.Sinks.PeriodicBatching
  • Serilog.Sinks.Seq

License

Code released under the MIT License.

About

Windows console application (.NET 4.5) for handling periodic FTP uploads and optionally sending a completion email

Resources

Contributing

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Uploader

Windows console application (.NET 4.5) for handling periodic FTP uploads and optionally sending a completion email.

  • Windows console application for processing file upload jobs
  • Upload jobs configured via plain-text JSON file
  • Ability to compress files before uploading (ZIP compression)
  • Replacement of {date} in destination file name with date in yyyy-MM-dd format
  • Optional ability to send an email notification when a job is complete
  • Does not handle scheduling

Requirements

  • .NET 4.5 or later on the system where the console application will run
  • Software to schedule running tasks periodically such as Task Scheduler (optional)
  • Mail server accepting SMTP connections (optional)

Initial setup

  • Build the application or download a release
  • Configure the mail portion in the Uploader.Console.exe.config (optional)
  • Configure the desired job(s) in the jobs.json file (see below)
  • Copy the application to the place where you want it to run
  • Set up scheduling to automatically run the program (if desired)

Configuration

Configure jobs by adding objects to jobs.json describing the upload jobs. The format of the jobs.json file is as follows:

{"Jobs": [{"Name": "JobName","Path": "c:\\awesomefile.txt","Site": "ftp://localhost/awesomefile.zip","Username": "ftp","Password": "ftp","ZipBeforeUpload": "true","DeleteSourceAfterUpload": "false","EmailTo": "person@whatever","EmailBcc": "manager@whatever""EmailSubject": "The file was uploaded!","EmailBody": "Upload successful!"},{
...
}]}

The following fields can be present in a Job description object:

  • Name - the name of the job (case-sensitive) - you run the job by calling Uploader.Console.exe <name> (with the above configuration, you'd run Uploader.Console.exe JobName)
  • Path - the full path to the file to upload, e.g. c:\\awesomefile.txt (backslashes must be escaped: type them twice). An asterisk (*) can be used to match partial file names - the upload will only be successful if there is a single file match.
  • Site - URL to upload the file to, e.g. ftp://localhost/awesomefile.zip - if the configuration line contains {date} it will be replaced with the current date in yyyy-MM-dd format
  • Username - optional - login to the FTP site
  • Password - optional - password to the ftp site
  • ZipBeforeUpload - optional - whether or not to zip the file before uploading it
  • DeleteSourceAfterUpload - optional - if true, delete the source file once it has s been uploaded
  • EmailTo - optional - who to send an email to once the file is uploaded
  • EmailBcc - optional - a person to blind CC on the email that the software sends
  • EmailSubject - optional - the subject of the email to send
  • EmailBody - optional - the body of the email to send, if EmailTo and EmailSubject are supplied but EmailBody is not then just put the number of bytes uploaded in the body of the email.

Configuring Email

Jobs can optionally be set to send email once they are complete. Email configuration is in the Uploader.Console.exe.config file:

<system.net>
<mailSettings>
<smtpfrom="from-email-address@whatever">
<networkhost="smtp.server.hostname"port="25" />
</smtp>
</mailSettings>
</system.net>

Logging

Console logging is on by default. Additional logging configurations can be set in Uploader.Console.exe.config:

SQL Server

In <appSettings> add:

<addkey="serilog:using:MSSqlSever"value="Serilog.Sinks.MSSqlServer"/>
<addkey="serilog:write-to:MSSqlServer.restrictedToMinimumLevel"value="Information"/>
<addkey="serilog:write-to:MSSqlServer.connectionString"value="[SQL Server connection string]"/>
<addkey="serilog:write-to:MSSqlServer.tableName"value="[SQL Server logging table name]"/>
<addkey="serilog:write-to:MSSqlServer.autoCreateSqlTable"value="true"/>

Seq

In <appSettings> add:

<addkey="serilog:using:Seq"value="Serilog.Sinks.Seq" />
<addkey="serilog:write-to:Seq.serverUrl"value="[Seq logging endpoint]" />
<addkey="serilog:write-to:Seq.apiKey"value="[optional API key here]" />

Dependencies

  • Newtonsoft.Json
  • Serilog
  • Serilog.Settings.AppSettings
  • Serilog.Sinks.Console
  • Serilog.Sinks.Literate
  • Serilog.Sinks.PeriodicBatching
  • Serilog.Sinks.Seq

License

Code released under the MIT License.

About

Windows console application (.NET 4.5) for handling periodic FTP uploads and optionally sending a completion email

Resources

Contributing

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Uploader

Windows console application (.NET 4.5) for handling periodic FTP uploads and optionally sending a completion email.

  • Windows console application for processing file upload jobs
  • Upload jobs configured via plain-text JSON file
  • Ability to compress files before uploading (ZIP compression)
  • Replacement of {date} in destination file name with date in yyyy-MM-dd format
  • Optional ability to send an email notification when a job is complete
  • Does not handle scheduling

Requirements

  • .NET 4.5 or later on the system where the console application will run
  • Software to schedule running tasks periodically such as Task Scheduler (optional)
  • Mail server accepting SMTP connections (optional)

Initial setup

  • Build the application or download a release
  • Configure the mail portion in the Uploader.Console.exe.config (optional)
  • Configure the desired job(s) in the jobs.json file (see below)
  • Copy the application to the place where you want it to run
  • Set up scheduling to automatically run the program (if desired)

Configuration

Configure jobs by adding objects to jobs.json describing the upload jobs. The format of the jobs.json file is as follows:

{"Jobs": [{"Name": "JobName","Path": "c:\\awesomefile.txt","Site": "ftp://localhost/awesomefile.zip","Username": "ftp","Password": "ftp","ZipBeforeUpload": "true","DeleteSourceAfterUpload": "false","EmailTo": "person@whatever","EmailBcc": "manager@whatever""EmailSubject": "The file was uploaded!","EmailBody": "Upload successful!"},{
...
}]}

The following fields can be present in a Job description object:

  • Name - the name of the job (case-sensitive) - you run the job by calling Uploader.Console.exe <name> (with the above configuration, you'd run Uploader.Console.exe JobName)
  • Path - the full path to the file to upload, e.g. c:\\awesomefile.txt (backslashes must be escaped: type them twice). An asterisk (*) can be used to match partial file names - the upload will only be successful if there is a single file match.
  • Site - URL to upload the file to, e.g. ftp://localhost/awesomefile.zip - if the configuration line contains {date} it will be replaced with the current date in yyyy-MM-dd format
  • Username - optional - login to the FTP site
  • Password - optional - password to the ftp site
  • ZipBeforeUpload - optional - whether or not to zip the file before uploading it
  • DeleteSourceAfterUpload - optional - if true, delete the source file once it has s been uploaded
  • EmailTo - optional - who to send an email to once the file is uploaded
  • EmailBcc - optional - a person to blind CC on the email that the software sends
  • EmailSubject - optional - the subject of the email to send
  • EmailBody - optional - the body of the email to send, if EmailTo and EmailSubject are supplied but EmailBody is not then just put the number of bytes uploaded in the body of the email.

Configuring Email

Jobs can optionally be set to send email once they are complete. Email configuration is in the Uploader.Console.exe.config file:

<system.net>
<mailSettings>
<smtpfrom="from-email-address@whatever">
<networkhost="smtp.server.hostname"port="25" />
</smtp>
</mailSettings>
</system.net>

Logging

Console logging is on by default. Additional logging configurations can be set in Uploader.Console.exe.config:

SQL Server

In <appSettings> add:

<addkey="serilog:using:MSSqlSever"value="Serilog.Sinks.MSSqlServer"/>
<addkey="serilog:write-to:MSSqlServer.restrictedToMinimumLevel"value="Information"/>
<addkey="serilog:write-to:MSSqlServer.connectionString"value="[SQL Server connection string]"/>
<addkey="serilog:write-to:MSSqlServer.tableName"value="[SQL Server logging table name]"/>
<addkey="serilog:write-to:MSSqlServer.autoCreateSqlTable"value="true"/>

Seq

In <appSettings> add:

<addkey="serilog:using:Seq"value="Serilog.Sinks.Seq" />
<addkey="serilog:write-to:Seq.serverUrl"value="[Seq logging endpoint]" />
<addkey="serilog:write-to:Seq.apiKey"value="[optional API key here]" />

Dependencies

  • Newtonsoft.Json
  • Serilog
  • Serilog.Settings.AppSettings
  • Serilog.Sinks.Console
  • Serilog.Sinks.Literate
  • Serilog.Sinks.PeriodicBatching
  • Serilog.Sinks.Seq

License

Code released under the MIT License.

About

Windows console application (.NET 4.5) for handling periodic FTP uploads and optionally sending a completion email

Resources

Contributing

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Uploader

Windows console application (.NET 4.5) for handling periodic FTP uploads and optionally sending a completion email.

  • Windows console application for processing file upload jobs
  • Upload jobs configured via plain-text JSON file
  • Ability to compress files before uploading (ZIP compression)
  • Replacement of {date} in destination file name with date in yyyy-MM-dd format
  • Optional ability to send an email notification when a job is complete
  • Does not handle scheduling

Requirements

  • .NET 4.5 or later on the system where the console application will run
  • Software to schedule running tasks periodically such as Task Scheduler (optional)
  • Mail server accepting SMTP connections (optional)

Initial setup

  • Build the application or download a release
  • Configure the mail portion in the Uploader.Console.exe.config (optional)
  • Configure the desired job(s) in the jobs.json file (see below)
  • Copy the application to the place where you want it to run
  • Set up scheduling to automatically run the program (if desired)

Configuration

Configure jobs by adding objects to jobs.json describing the upload jobs. The format of the jobs.json file is as follows:

{"Jobs": [{"Name": "JobName","Path": "c:\\awesomefile.txt","Site": "ftp://localhost/awesomefile.zip","Username": "ftp","Password": "ftp","ZipBeforeUpload": "true","DeleteSourceAfterUpload": "false","EmailTo": "person@whatever","EmailBcc": "manager@whatever""EmailSubject": "The file was uploaded!","EmailBody": "Upload successful!"},{
...
}]}

The following fields can be present in a Job description object:

  • Name - the name of the job (case-sensitive) - you run the job by calling Uploader.Console.exe <name> (with the above configuration, you'd run Uploader.Console.exe JobName)
  • Path - the full path to the file to upload, e.g. c:\\awesomefile.txt (backslashes must be escaped: type them twice). An asterisk (*) can be used to match partial file names - the upload will only be successful if there is a single file match.
  • Site - URL to upload the file to, e.g. ftp://localhost/awesomefile.zip - if the configuration line contains {date} it will be replaced with the current date in yyyy-MM-dd format
  • Username - optional - login to the FTP site
  • Password - optional - password to the ftp site
  • ZipBeforeUpload - optional - whether or not to zip the file before uploading it
  • DeleteSourceAfterUpload - optional - if true, delete the source file once it has s been uploaded
  • EmailTo - optional - who to send an email to once the file is uploaded
  • EmailBcc - optional - a person to blind CC on the email that the software sends
  • EmailSubject - optional - the subject of the email to send
  • EmailBody - optional - the body of the email to send, if EmailTo and EmailSubject are supplied but EmailBody is not then just put the number of bytes uploaded in the body of the email.

Configuring Email

Jobs can optionally be set to send email once they are complete. Email configuration is in the Uploader.Console.exe.config file:

<system.net>
<mailSettings>
<smtpfrom="from-email-address@whatever">
<networkhost="smtp.server.hostname"port="25" />
</smtp>
</mailSettings>
</system.net>

Logging

Console logging is on by default. Additional logging configurations can be set in Uploader.Console.exe.config:

SQL Server

In <appSettings> add:

<addkey="serilog:using:MSSqlSever"value="Serilog.Sinks.MSSqlServer"/>
<addkey="serilog:write-to:MSSqlServer.restrictedToMinimumLevel"value="Information"/>
<addkey="serilog:write-to:MSSqlServer.connectionString"value="[SQL Server connection string]"/>
<addkey="serilog:write-to:MSSqlServer.tableName"value="[SQL Server logging table name]"/>
<addkey="serilog:write-to:MSSqlServer.autoCreateSqlTable"value="true"/>

Seq

In <appSettings> add:

<addkey="serilog:using:Seq"value="Serilog.Sinks.Seq" />
<addkey="serilog:write-to:Seq.serverUrl"value="[Seq logging endpoint]" />
<addkey="serilog:write-to:Seq.apiKey"value="[optional API key here]" />

Dependencies

  • Newtonsoft.Json
  • Serilog
  • Serilog.Settings.AppSettings
  • Serilog.Sinks.Console
  • Serilog.Sinks.Literate
  • Serilog.Sinks.PeriodicBatching
  • Serilog.Sinks.Seq

License

Code released under the MIT License.

About

Windows console application (.NET 4.5) for handling periodic FTP uploads and optionally sending a completion email

Resources

Contributing

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Uploader

Windows console application (.NET 4.5) for handling periodic FTP uploads and optionally sending a completion email.

  • Windows console application for processing file upload jobs
  • Upload jobs configured via plain-text JSON file
  • Ability to compress files before uploading (ZIP compression)
  • Replacement of {date} in destination file name with date in yyyy-MM-dd format
  • Optional ability to send an email notification when a job is complete
  • Does not handle scheduling

Requirements

  • .NET 4.5 or later on the system where the console application will run
  • Software to schedule running tasks periodically such as Task Scheduler (optional)
  • Mail server accepting SMTP connections (optional)

Initial setup

  • Build the application or download a release
  • Configure the mail portion in the Uploader.Console.exe.config (optional)
  • Configure the desired job(s) in the jobs.json file (see below)
  • Copy the application to the place where you want it to run
  • Set up scheduling to automatically run the program (if desired)

Configuration

Configure jobs by adding objects to jobs.json describing the upload jobs. The format of the jobs.json file is as follows:

{"Jobs": [{"Name": "JobName","Path": "c:\\awesomefile.txt","Site": "ftp://localhost/awesomefile.zip","Username": "ftp","Password": "ftp","ZipBeforeUpload": "true","DeleteSourceAfterUpload": "false","EmailTo": "person@whatever","EmailBcc": "manager@whatever""EmailSubject": "The file was uploaded!","EmailBody": "Upload successful!"},{
...
}]}

The following fields can be present in a Job description object:

  • Name - the name of the job (case-sensitive) - you run the job by calling Uploader.Console.exe <name> (with the above configuration, you'd run Uploader.Console.exe JobName)
  • Path - the full path to the file to upload, e.g. c:\\awesomefile.txt (backslashes must be escaped: type them twice). An asterisk (*) can be used to match partial file names - the upload will only be successful if there is a single file match.
  • Site - URL to upload the file to, e.g. ftp://localhost/awesomefile.zip - if the configuration line contains {date} it will be replaced with the current date in yyyy-MM-dd format
  • Username - optional - login to the FTP site
  • Password - optional - password to the ftp site
  • ZipBeforeUpload - optional - whether or not to zip the file before uploading it
  • DeleteSourceAfterUpload - optional - if true, delete the source file once it has s been uploaded
  • EmailTo - optional - who to send an email to once the file is uploaded
  • EmailBcc - optional - a person to blind CC on the email that the software sends
  • EmailSubject - optional - the subject of the email to send
  • EmailBody - optional - the body of the email to send, if EmailTo and EmailSubject are supplied but EmailBody is not then just put the number of bytes uploaded in the body of the email.

Configuring Email

Jobs can optionally be set to send email once they are complete. Email configuration is in the Uploader.Console.exe.config file:

<system.net>
<mailSettings>
<smtpfrom="from-email-address@whatever">
<networkhost="smtp.server.hostname"port="25" />
</smtp>
</mailSettings>
</system.net>

Logging

Console logging is on by default. Additional logging configurations can be set in Uploader.Console.exe.config:

SQL Server

In <appSettings> add:

<addkey="serilog:using:MSSqlSever"value="Serilog.Sinks.MSSqlServer"/>
<addkey="serilog:write-to:MSSqlServer.restrictedToMinimumLevel"value="Information"/>
<addkey="serilog:write-to:MSSqlServer.connectionString"value="[SQL Server connection string]"/>
<addkey="serilog:write-to:MSSqlServer.tableName"value="[SQL Server logging table name]"/>
<addkey="serilog:write-to:MSSqlServer.autoCreateSqlTable"value="true"/>

Seq

In <appSettings> add:

<addkey="serilog:using:Seq"value="Serilog.Sinks.Seq" />
<addkey="serilog:write-to:Seq.serverUrl"value="[Seq logging endpoint]" />
<addkey="serilog:write-to:Seq.apiKey"value="[optional API key here]" />

Dependencies

  • Newtonsoft.Json
  • Serilog
  • Serilog.Settings.AppSettings
  • Serilog.Sinks.Console
  • Serilog.Sinks.Literate
  • Serilog.Sinks.PeriodicBatching
  • Serilog.Sinks.Seq

License

Code released under the MIT License.

About

Windows console application (.NET 4.5) for handling periodic FTP uploads and optionally sending a completion email

Resources

Contributing

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Uploader

Windows console application (.NET 4.5) for handling periodic FTP uploads and optionally sending a completion email.

  • Windows console application for processing file upload jobs
  • Upload jobs configured via plain-text JSON file
  • Ability to compress files before uploading (ZIP compression)
  • Replacement of {date} in destination file name with date in yyyy-MM-dd format
  • Optional ability to send an email notification when a job is complete
  • Does not handle scheduling

Requirements

  • .NET 4.5 or later on the system where the console application will run
  • Software to schedule running tasks periodically such as Task Scheduler (optional)
  • Mail server accepting SMTP connections (optional)

Initial setup

  • Build the application or download a release
  • Configure the mail portion in the Uploader.Console.exe.config (optional)
  • Configure the desired job(s) in the jobs.json file (see below)
  • Copy the application to the place where you want it to run
  • Set up scheduling to automatically run the program (if desired)

Configuration

Configure jobs by adding objects to jobs.json describing the upload jobs. The format of the jobs.json file is as follows:

{"Jobs": [{"Name": "JobName","Path": "c:\\awesomefile.txt","Site": "ftp://localhost/awesomefile.zip","Username": "ftp","Password": "ftp","ZipBeforeUpload": "true","DeleteSourceAfterUpload": "false","EmailTo": "person@whatever","EmailBcc": "manager@whatever""EmailSubject": "The file was uploaded!","EmailBody": "Upload successful!"},{
...
}]}

The following fields can be present in a Job description object:

  • Name - the name of the job (case-sensitive) - you run the job by calling Uploader.Console.exe <name> (with the above configuration, you'd run Uploader.Console.exe JobName)
  • Path - the full path to the file to upload, e.g. c:\\awesomefile.txt (backslashes must be escaped: type them twice). An asterisk (*) can be used to match partial file names - the upload will only be successful if there is a single file match.
  • Site - URL to upload the file to, e.g. ftp://localhost/awesomefile.zip - if the configuration line contains {date} it will be replaced with the current date in yyyy-MM-dd format
  • Username - optional - login to the FTP site
  • Password - optional - password to the ftp site
  • ZipBeforeUpload - optional - whether or not to zip the file before uploading it
  • DeleteSourceAfterUpload - optional - if true, delete the source file once it has s been uploaded
  • EmailTo - optional - who to send an email to once the file is uploaded
  • EmailBcc - optional - a person to blind CC on the email that the software sends
  • EmailSubject - optional - the subject of the email to send
  • EmailBody - optional - the body of the email to send, if EmailTo and EmailSubject are supplied but EmailBody is not then just put the number of bytes uploaded in the body of the email.

Configuring Email

Jobs can optionally be set to send email once they are complete. Email configuration is in the Uploader.Console.exe.config file:

<system.net>
<mailSettings>
<smtpfrom="from-email-address@whatever">
<networkhost="smtp.server.hostname"port="25" />
</smtp>
</mailSettings>
</system.net>

Logging

Console logging is on by default. Additional logging configurations can be set in Uploader.Console.exe.config:

SQL Server

In <appSettings> add:

<addkey="serilog:using:MSSqlSever"value="Serilog.Sinks.MSSqlServer"/>
<addkey="serilog:write-to:MSSqlServer.restrictedToMinimumLevel"value="Information"/>
<addkey="serilog:write-to:MSSqlServer.connectionString"value="[SQL Server connection string]"/>
<addkey="serilog:write-to:MSSqlServer.tableName"value="[SQL Server logging table name]"/>
<addkey="serilog:write-to:MSSqlServer.autoCreateSqlTable"value="true"/>

Seq

In <appSettings> add:

<addkey="serilog:using:Seq"value="Serilog.Sinks.Seq" />
<addkey="serilog:write-to:Seq.serverUrl"value="[Seq logging endpoint]" />
<addkey="serilog:write-to:Seq.apiKey"value="[optional API key here]" />

Dependencies

  • Newtonsoft.Json
  • Serilog
  • Serilog.Settings.AppSettings
  • Serilog.Sinks.Console
  • Serilog.Sinks.Literate
  • Serilog.Sinks.PeriodicBatching
  • Serilog.Sinks.Seq

License

Code released under the MIT License.

About

Windows console application (.NET 4.5) for handling periodic FTP uploads and optionally sending a completion email

Resources

Contributing

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Uploader

Windows console application (.NET 4.5) for handling periodic FTP uploads and optionally sending a completion email.

  • Windows console application for processing file upload jobs
  • Upload jobs configured via plain-text JSON file
  • Ability to compress files before uploading (ZIP compression)
  • Replacement of {date} in destination file name with date in yyyy-MM-dd format
  • Optional ability to send an email notification when a job is complete
  • Does not handle scheduling

Requirements

  • .NET 4.5 or later on the system where the console application will run
  • Software to schedule running tasks periodically such as Task Scheduler (optional)
  • Mail server accepting SMTP connections (optional)

Initial setup

  • Build the application or download a release
  • Configure the mail portion in the Uploader.Console.exe.config (optional)
  • Configure the desired job(s) in the jobs.json file (see below)
  • Copy the application to the place where you want it to run
  • Set up scheduling to automatically run the program (if desired)

Configuration

Configure jobs by adding objects to jobs.json describing the upload jobs. The format of the jobs.json file is as follows:

{"Jobs": [{"Name": "JobName","Path": "c:\\awesomefile.txt","Site": "ftp://localhost/awesomefile.zip","Username": "ftp","Password": "ftp","ZipBeforeUpload": "true","DeleteSourceAfterUpload": "false","EmailTo": "person@whatever","EmailBcc": "manager@whatever""EmailSubject": "The file was uploaded!","EmailBody": "Upload successful!"},{
...
}]}

The following fields can be present in a Job description object:

  • Name - the name of the job (case-sensitive) - you run the job by calling Uploader.Console.exe <name> (with the above configuration, you'd run Uploader.Console.exe JobName)
  • Path - the full path to the file to upload, e.g. c:\\awesomefile.txt (backslashes must be escaped: type them twice). An asterisk (*) can be used to match partial file names - the upload will only be successful if there is a single file match.
  • Site - URL to upload the file to, e.g. ftp://localhost/awesomefile.zip - if the configuration line contains {date} it will be replaced with the current date in yyyy-MM-dd format
  • Username - optional - login to the FTP site
  • Password - optional - password to the ftp site
  • ZipBeforeUpload - optional - whether or not to zip the file before uploading it
  • DeleteSourceAfterUpload - optional - if true, delete the source file once it has s been uploaded
  • EmailTo - optional - who to send an email to once the file is uploaded
  • EmailBcc - optional - a person to blind CC on the email that the software sends
  • EmailSubject - optional - the subject of the email to send
  • EmailBody - optional - the body of the email to send, if EmailTo and EmailSubject are supplied but EmailBody is not then just put the number of bytes uploaded in the body of the email.

Configuring Email

Jobs can optionally be set to send email once they are complete. Email configuration is in the Uploader.Console.exe.config file:

<system.net>
<mailSettings>
<smtpfrom="from-email-address@whatever">
<networkhost="smtp.server.hostname"port="25" />
</smtp>
</mailSettings>
</system.net>

Logging

Console logging is on by default. Additional logging configurations can be set in Uploader.Console.exe.config:

SQL Server

In <appSettings> add:

<addkey="serilog:using:MSSqlSever"value="Serilog.Sinks.MSSqlServer"/>
<addkey="serilog:write-to:MSSqlServer.restrictedToMinimumLevel"value="Information"/>
<addkey="serilog:write-to:MSSqlServer.connectionString"value="[SQL Server connection string]"/>
<addkey="serilog:write-to:MSSqlServer.tableName"value="[SQL Server logging table name]"/>
<addkey="serilog:write-to:MSSqlServer.autoCreateSqlTable"value="true"/>

Seq

In <appSettings> add:

<addkey="serilog:using:Seq"value="Serilog.Sinks.Seq" />
<addkey="serilog:write-to:Seq.serverUrl"value="[Seq logging endpoint]" />
<addkey="serilog:write-to:Seq.apiKey"value="[optional API key here]" />

Dependencies

  • Newtonsoft.Json
  • Serilog
  • Serilog.Settings.AppSettings
  • Serilog.Sinks.Console
  • Serilog.Sinks.Literate
  • Serilog.Sinks.PeriodicBatching
  • Serilog.Sinks.Seq

License

Code released under the MIT License.

About

Windows console application (.NET 4.5) for handling periodic FTP uploads and optionally sending a completion email

Resources

Contributing

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Uploader

Windows console application (.NET 4.5) for handling periodic FTP uploads and optionally sending a completion email.

  • Windows console application for processing file upload jobs
  • Upload jobs configured via plain-text JSON file
  • Ability to compress files before uploading (ZIP compression)
  • Replacement of {date} in destination file name with date in yyyy-MM-dd format
  • Optional ability to send an email notification when a job is complete
  • Does not handle scheduling

Requirements

  • .NET 4.5 or later on the system where the console application will run
  • Software to schedule running tasks periodically such as Task Scheduler (optional)
  • Mail server accepting SMTP connections (optional)

Initial setup

  • Build the application or download a release
  • Configure the mail portion in the Uploader.Console.exe.config (optional)
  • Configure the desired job(s) in the jobs.json file (see below)
  • Copy the application to the place where you want it to run
  • Set up scheduling to automatically run the program (if desired)

Configuration

Configure jobs by adding objects to jobs.json describing the upload jobs. The format of the jobs.json file is as follows:

{"Jobs": [{"Name": "JobName","Path": "c:\\awesomefile.txt","Site": "ftp://localhost/awesomefile.zip","Username": "ftp","Password": "ftp","ZipBeforeUpload": "true","DeleteSourceAfterUpload": "false","EmailTo": "person@whatever","EmailBcc": "manager@whatever""EmailSubject": "The file was uploaded!","EmailBody": "Upload successful!"},{
...
}]}

The following fields can be present in a Job description object:

  • Name - the name of the job (case-sensitive) - you run the job by calling Uploader.Console.exe <name> (with the above configuration, you'd run Uploader.Console.exe JobName)
  • Path - the full path to the file to upload, e.g. c:\\awesomefile.txt (backslashes must be escaped: type them twice). An asterisk (*) can be used to match partial file names - the upload will only be successful if there is a single file match.
  • Site - URL to upload the file to, e.g. ftp://localhost/awesomefile.zip - if the configuration line contains {date} it will be replaced with the current date in yyyy-MM-dd format
  • Username - optional - login to the FTP site
  • Password - optional - password to the ftp site
  • ZipBeforeUpload - optional - whether or not to zip the file before uploading it
  • DeleteSourceAfterUpload - optional - if true, delete the source file once it has s been uploaded
  • EmailTo - optional - who to send an email to once the file is uploaded
  • EmailBcc - optional - a person to blind CC on the email that the software sends
  • EmailSubject - optional - the subject of the email to send
  • EmailBody - optional - the body of the email to send, if EmailTo and EmailSubject are supplied but EmailBody is not then just put the number of bytes uploaded in the body of the email.

Configuring Email

Jobs can optionally be set to send email once they are complete. Email configuration is in the Uploader.Console.exe.config file:

<system.net>
<mailSettings>
<smtpfrom="from-email-address@whatever">
<networkhost="smtp.server.hostname"port="25" />
</smtp>
</mailSettings>
</system.net>

Logging

Console logging is on by default. Additional logging configurations can be set in Uploader.Console.exe.config:

SQL Server

In <appSettings> add:

<addkey="serilog:using:MSSqlSever"value="Serilog.Sinks.MSSqlServer"/>
<addkey="serilog:write-to:MSSqlServer.restrictedToMinimumLevel"value="Information"/>
<addkey="serilog:write-to:MSSqlServer.connectionString"value="[SQL Server connection string]"/>
<addkey="serilog:write-to:MSSqlServer.tableName"value="[SQL Server logging table name]"/>
<addkey="serilog:write-to:MSSqlServer.autoCreateSqlTable"value="true"/>

Seq

In <appSettings> add:

<addkey="serilog:using:Seq"value="Serilog.Sinks.Seq" />
<addkey="serilog:write-to:Seq.serverUrl"value="[Seq logging endpoint]" />
<addkey="serilog:write-to:Seq.apiKey"value="[optional API key here]" />

Dependencies

  • Newtonsoft.Json
  • Serilog
  • Serilog.Settings.AppSettings
  • Serilog.Sinks.Console
  • Serilog.Sinks.Literate
  • Serilog.Sinks.PeriodicBatching
  • Serilog.Sinks.Seq

License

Code released under the MIT License.

About

Windows console application (.NET 4.5) for handling periodic FTP uploads and optionally sending a completion email

Resources

Contributing

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages