249 lines
9.3 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|