static void Main(string[] args) { try { List <string> inputFilenames = new List <string>(); string osFilename = null; string oiFilename = null; bool notExcel = false; string hashPassPhrase = null; DIDFlags didFlags = DIDFlags.None; OutputFormat outputFormat = OutputFormat.Dw; int maxResponse = 0; bool help = false; for (int i = 0; i < args.Length; ++i) { switch (args[i]) { case "-h": help = true; break; case "-i": { ++i; if (i >= args.Length) { throw new ArgumentException("Invalid command line. '-i' option not followed by filename."); } inputFilenames.Add(args[i]); } break; case "-os": { ++i; if (i >= args.Length) { throw new ArgumentException("Invalid command line. '-o' option not followed by filename."); } if (osFilename != null) { throw new ArgumentException("Only one output file may be specified."); } string filename = Path.GetFullPath(args[i]); osFilename = filename; } break; case "-oi": { ++i; if (i >= args.Length) { throw new ArgumentException("Invalid command line. '-o' option not followed by filename."); } if (oiFilename != null) { throw new ArgumentException("Only one output file may be specified."); } string filename = Path.GetFullPath(args[i]); oiFilename = filename; } break; case "-notxl": notExcel = true; break; case "-hid": { ++i; if (i >= args.Length) { throw new ArgumentException("Invalid command line. '-hid' option not followed by passphrase."); } hashPassPhrase = args[i]; } break; case "-did": { ++i; if (i >= args.Length) { throw new ArgumentException("Invalid command line. '-did' option not followed by flags."); } foreach (char c in args[i]) { switch (Char.ToLowerInvariant(c)) { case 'i': didFlags |= DIDFlags.Id; break; case 'n': didFlags |= DIDFlags.Name; break; case 'b': didFlags |= DIDFlags.Birthdate; break; case 'd': didFlags |= DIDFlags.Demographics; break; case 's': didFlags |= DIDFlags.School; break; default: throw new ArgumentException(string.Format("Invalid command line. '.did' flag '{0}' is undefined.", c)); } } } break; case "-fmt": ++i; if (i >= args.Length) { throw new ArgumentException("Invalid command line. '-fmt' option not followed by format type."); } switch (args[i]) { case "dw": outputFormat = OutputFormat.Dw; break; case "all": outputFormat = OutputFormat.All; break; case "allshort": outputFormat = OutputFormat.All; maxResponse = 10; break; default: throw new ArgumentException(string.Format("Invalid command line. Output format '{0}' is unknown.", args[i])); } break; default: throw new ArgumentException(string.Format("Unknown command line option '{0}'. Use '-h' for syntax help.", args[i])); } } if (help || args.Length == 0) { Console.WriteLine(sSyntax); } else { if (inputFilenames.Count == 0 || (osFilename == null && oiFilename == null)) { throw new ArgumentException("Invalid command line. Use '-h' for syntax help"); } if (osFilename != null) { Console.WriteLine("Writing student assessment results to: " + osFilename); } if (oiFilename != null) { Console.WriteLine("Writing item level results to: " + oiFilename); } using (ToCsvProcessor processor = new ToCsvProcessor(osFilename, oiFilename, outputFormat)) { processor.HashPassPhrase = hashPassPhrase; processor.DIDFlags = didFlags; processor.MaxResponse = maxResponse; processor.NotExcel = notExcel; foreach (string filename in inputFilenames) { ProcessInputFilename(filename, processor); } } } if (s_ErrorCount > 0) { Console.Error.WriteLine("{0} total errors", s_ErrorCount); } } catch (Exception err) { Console.WriteLine(); #if DEBUG Console.WriteLine(err.ToString()); #else Console.WriteLine(err.Message); #endif } if (Win32Interop.ConsoleHelper.IsSoleConsoleOwner) { Console.Write("Press any key to exit."); Console.ReadKey(true); } }
static void Main(string[] args) { try { List <string> inputFilenames = new List <string>(); string osFilename = null; string oiFilename = null; string hashPassPhrase = null; string didcsv = null; DIDFlags didFlags = DIDFlags.None; OutputFormat outputFormat = OutputFormat.Dw; int maxResponse = 0; bool help = false; for (int i = 0; i < args.Length; ++i) { switch (args[i]) { case "-h": help = true; break; case "-i": { ++i; if (i >= args.Length) { throw new ArgumentException("Invalid command line. '-i' option not followed by filename."); } inputFilenames.Add(args[i]); } break; case "-os": { ++i; if (i >= args.Length) { throw new ArgumentException("Invalid command line. '-o' option not followed by filename."); } if (osFilename != null) { throw new ArgumentException("Only one output file may be specified."); } string filename = Path.GetFullPath(args[i]); osFilename = filename; } break; case "-d": { ++i; if (i >= args.Length) { throw new ArgumentException("Invalid command line. '-d' option not followed by directory."); } string [] fileEntries = Directory.GetFiles(args[i]); foreach (string fileName in fileEntries) { inputFilenames.Add(fileName); } } break; case "-oi": { ++i; if (i >= args.Length) { throw new ArgumentException("Invalid command line. '-o' option not followed by filename."); } if (oiFilename != null) { throw new ArgumentException("Only one output file may be specified."); } string filename = Path.GetFullPath(args[i]); oiFilename = filename; } break; case "-hid": { ++i; if (i >= args.Length) { throw new ArgumentException("Invalid command line. '-hid' option not followed by passphrase."); } hashPassPhrase = args[i]; } break; case "-didcsv": { ++i; if (i >= args.Length) { throw new ArgumentException("Invalid command line. '-didcsv' needs file arg."); } didcsv = args[i]; } break; case "-did": { ++i; if (i >= args.Length) { throw new ArgumentException("Invalid command line. '-did' option not followed by flags."); } foreach (char c in args[i]) { switch (Char.ToLowerInvariant(c)) { case 'i': didFlags |= DIDFlags.Id; break; case 'n': didFlags |= DIDFlags.Name; break; case 'b': didFlags |= DIDFlags.Birthdate; break; case 'd': didFlags |= DIDFlags.Demographics; break; case 's': didFlags |= DIDFlags.School; break; default: throw new ArgumentException(string.Format("Invalid command line. '.did' flag '{0}' is undefined.", c)); } } } break; case "-fmt": Console.WriteLine("WTF"); ++i; if (i >= args.Length) { throw new ArgumentException("Invalid command line. '-fmt' option not followed by format type."); } switch (args[i]) { case "dw": outputFormat = OutputFormat.Dw; break; case "all": outputFormat = OutputFormat.All; break; case "allshort": outputFormat = OutputFormat.All; maxResponse = 10; break; default: throw new ArgumentException(string.Format("Invalid command line. Output format '{0}' is unknown.", args[i])); } break; default: throw new ArgumentException(string.Format("Unknown command line option '{0}'. Use '-h' for syntax help.", args[i])); } } if (help || args.Length == 0) { Console.WriteLine(sSyntax); } else if (didcsv != "") { var reader = new StreamReader(File.OpenRead(didcsv)); SHA1 sha = new SHA1CryptoServiceProvider(); byte[] pfb = UTF8NoByteOrderMark.GetBytes("smarter"); byte[] m_hashKey = sha.ComputeHash(pfb); List <string> listA = new List <string>(); //List<string> listB = new List<string>(); while (!reader.EndOfStream) { var line = reader.ReadLine(); listA.Add(line); //var values = line.Split(','); //listA.Add(values[0]); //listB.Add(values[1]); } foreach (string l in listA) { //Console.WriteLine(l); var values = l.Split(','); if (values[0] == "State") { Console.WriteLine(l); continue; } HMACSHA1 hmac = new HMACSHA1(m_hashKey); //Console.WriteLine(values[10]); byte[] bid = UTF8NoByteOrderMark.GetBytes(values[10]); byte[] hash = hmac.ComputeHash(bid); string new10 = ByteArrayToHexString(hash); values[9] = ""; //fname values[8] = ""; //mname values[7] = ""; //lname values[14] = ""; //bday values[10] = new10; //ssid values[11] = new10; //altssid string newline = string.Join(",", values); Console.WriteLine(newline); } } else { if (inputFilenames.Count == 0 || (osFilename == null && oiFilename == null)) { throw new ArgumentException("Invalid command line. Use '-h' for syntax help"); } if (osFilename != null) { Console.WriteLine("Writing student assessment results to: " + osFilename); } if (oiFilename != null) { Console.WriteLine("Writing item level results to: " + oiFilename); } using (ToCsvProcessor processor = new ToCsvProcessor(osFilename, oiFilename, outputFormat)) { processor.HashPassPhrase = hashPassPhrase; processor.DIDFlags = didFlags; processor.MaxResponse = maxResponse; foreach (string filename in inputFilenames) { ProcessInputFilename(filename, processor); } } } if (s_ErrorCount > 0) { Console.Error.WriteLine("{0} total errors", s_ErrorCount); } } catch (Exception err) { Console.WriteLine(); #if DEBUG Console.WriteLine(err.ToString()); #else Console.WriteLine(err.Message); #endif } /* * if (Win32Interop.ConsoleHelper.IsSoleConsoleOwner) * { * Console.Write("Press any key to exit."); * Console.ReadKey(true); * } */ }