Files
BDF3/Switches.cs
Doug Macintosh bfe37f6426 3.5.2 commit
2026-03-08 16:20:06 -04:00

249 lines
9.3 KiB
C#

using System;
using System.Data;
using System.Diagnostics;
using System.IO;
using static bdf.bdf; //globals from Main.cs
namespace bdf
{
public class myArgs
{
public static void ProcessSwitches(Arguments myargs)
{
if (myargs.Exists("help") || myargs.Exists("h"))
{
// Environment.GetCommandLineArgs() or Environment.ProcessPath. You can then use System.IO.Path.GetFileName(Environment.GetCommandLineArgs());
Logger.Log(" usage: " + System.IO.Path.GetFileName(Environment.GetCommandLineArgs()[0]) + " [-options]");
Logger.Log(" login: -u user -p passwd");
Logger.Log(" detail files: -all OR any combo of -ldf -wav -sip");
Logger.Log(" output path: -path " + (Path.DirectorySeparatorChar.ToString() == "\\" ? "C:" : "") + "/directory/subdir");
Logger.Log(" basepath: -so C:\\Users\\us.er\\OneDrive\\path\\");
Logger.Log(" svc subdirs: -ldfdir .\\LDF\\ | -wavdir .\\WAV\\ | -sipdir .\\SIP\\");
Logger.Log("invoice offset: -month=x [x = +/- 6, default is coming bill cycle, ie '1']");
Logger.Log("Megatool reuse: -reuse");
Logger.Log("Megatool redo: -redo");
Logger.Log(" SFTP upload: -upload");
Logger.Log(" SIP PDF ZIP: -zip");
Logger.Log(" verbose: -v");
//Logger.Log(" debug: -debug n");
return;
}
if (!myargs.Exists("licensed"))
{
ExpirationGuard.ThrowIfExpired();
}
if (myargs.Exists("debug"))
{
debug = int.Parse(myargs.Single("debug"));
Logger.Log(5, "Setting debug level to {0}", debug);
}
if (myargs.Exists("v"))
{
debug += 1;
Logger.Log(0, "Logging verbosity increased.");
}
if (myargs.Exists("backbill"))
{
double amt = Double.Parse(myargs.Single("backbill"));
if ((amt >= 0) && (amt <= 1000000))
backBillAmt = amt;
}
if (myargs.Exists("upload"))
{
upload = true;
Logger.Log(0, "Files will be securely transferred to EFT");
}
if (myargs.Exists("zip"))
{
archive = true;
Logger.Log(0, "Invoices will be aggregated into a ZIP archive.");
}
// Start User cred
{
if (!fullUser.StartsWith("RCI"))
{
Logger.Log(0, "Your current userid ({0}) must be a member of RCI to proceed.", fullUser);
if ((debug < 2) && !(fullUser == "doug"))
{
return;
}
else username = fullUser;
}
else
{
domain = fullUser.Split('\\')[0];
username = fullUser.Split('\\')[1];
Logger.Log(4, "Using credentials for ({0})", username);
}
if ((myargs.Exists("u")) && (myargs.Exists("p")))
{
username = myargs.Single("u");
password = myargs.Single("p");
Logger.Log(5, "Setting authorized account to: {0}", username);
}
else if (myargs.Exists("p"))
{
password = myargs.Single("p");
Logger.Log(5, "Setting password for {0}", username);
}
}
// end User cred
// SO Type defs below
{
if (myargs.Exists("all"))
{
todo.Add("LDF");
todo.Add("WAV");
todo.Add("SIP");
}
if (myargs.Exists("ldf"))
{
todo.Add("LDF");
}
if (myargs.Exists("wav"))
{
todo.Add("WAV");
}
if (myargs.Exists("sip"))
{
todo.Add("SIP");
}
if (todo.Count == 0)
{
todo.Add("LDF"); // default
}
string todos = "";
foreach (string t in todo)
{
todos += t + " ";
}
Logger.Log(0, "Generating Bill Detail files for: {0}", todos);
if (myargs.Exists("so"))
{
if (myargs.Single("so") != "") base_path = myargs.Single("so");
if (!base_path.EndsWith(Path.DirectorySeparatorChar.ToString()))
{
base_path += Path.DirectorySeparatorChar.ToString();
}
}
else
{
base_path = "C:\\Users\\" + username +
"\\OneDrive - Rogers Communications Inc\\Jeff Hawthorne's files - GCNS Stream 5 - Dark Fibre - Billing BDF Files\\";
}
Logger.Log(1, "SO Base Path: {0}", base_path);
}
ToDo["LDFprefix"] = "GCNSLDF";
ToDo["WAVprefix"] = "GCNSWAV";
ToDo["SIPprefix"] = "SSCGPAS";
ToDo["LDFpath"] = "." + Path.DirectorySeparatorChar + "Dark Fibre Service Orders" + Path.DirectorySeparatorChar;
ToDo["WAVpath"] = "." + Path.DirectorySeparatorChar + "Wavelength Service Orders" + Path.DirectorySeparatorChar;
ToDo["SIPpath"] = "." + Path.DirectorySeparatorChar + "SIP Service Orders" + Path.DirectorySeparatorChar;
{
if (myargs.Exists("ldfdir"))
{
if (myargs.Single("ldfdir") != "") ToDo["LDFpath"] = myargs.Single("ldfdir"); ;
if (!ToDo["LDFpath"].EndsWith(Path.DirectorySeparatorChar.ToString()))
{
ToDo["LDFpath"] += Path.DirectorySeparatorChar.ToString();
}
}
if (todo.Contains("LDF"))
Logger.Log(0, " LDF SO files expected in sub-directory: {0}", ToDo["LDFpath"]);
if (myargs.Exists("wavdir"))
{
if (myargs.Single("wavdir") != "") ToDo["WAVpath"] = myargs.Single("wavdir"); ;
if (!ToDo["WAVpath"].EndsWith(Path.DirectorySeparatorChar.ToString()))
{
ToDo["WAVpath"] += Path.DirectorySeparatorChar.ToString();
}
}
if (todo.Contains("WAV"))
Logger.Log(0, " WAV SO files expected in sub-directory: {0}", ToDo["WAVpath"]);
if (myargs.Exists("sipdir"))
{
if (myargs.Single("sipdir") != "") ToDo["SIPpath"] = myargs.Single("sipdir"); ;
if (!ToDo["SIPpath"].EndsWith(Path.DirectorySeparatorChar.ToString()))
{
ToDo["SIPpath"] += Path.DirectorySeparatorChar.ToString();
}
}
if (todo.Contains("SIP"))
Logger.Log(0, " SIP SO files expected in sub-directory: {0}", ToDo["SIPpath"]);
}
//end SO Type defs
if (myargs.Exists("path"))
{
output_path = myargs.Single("path");
if (output_path == "") output_path = ".";
if (!output_path.EndsWith(Path.DirectorySeparatorChar.ToString()))
{
output_path += Path.DirectorySeparatorChar.ToString();
}
}
else
{
output_path = "." + Path.DirectorySeparatorChar.ToString();
}
Logger.Log(5, "Setting filestore root path to {0}", output_path);
if ((username == "") && !reuse)
{
Logger.Log(0, "No valid login credentials found. Exiting.");
return;
}
if (myargs.Exists("month"))
{
// if (myargs.Exists("1")) offset = -1;
int offset = Int32.Parse(myargs.Single("month"));
if ((offset >= -16) && (offset <= 12))
month_offset = offset;
}
}
public static class ExpirationGuard
{
// Hardcoded expiration date (UTC recommended)
private static readonly DateTime ExpirationDate = new DateTime(2027, 12, 31, 0, 0, 0, DateTimeKind.Utc);
public static void ThrowIfExpired()
{
if (DateTime.UtcNow >= ExpirationDate)
{
Console.WriteLine("It appears that Doug has left the building. Please reach out for licensing options if desired.");
throw new InvalidOperationException(
$"This software is not licensed for continued use.");
}
}
public static bool IsExpired()
{
return DateTime.UtcNow >= ExpirationDate;
}
}
}
}