296 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			296 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| /*********************************************************************************************
 | |
|  * Copyright 2004 - Volian Enterprises, Inc. All rights reserved.
 | |
|  * Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
 | |
|  * ------------------------------------------------------------------------------
 | |
|  * $Workfile: SerialNo.cs $     $Revision: 7 $
 | |
|  * $Author: Jsj $   $Date: 12/06/07 3:32p $
 | |
|  *
 | |
|  * $History: SerialNo.cs $
 | |
|  * 
 | |
|  * *****************  Version 7  *****************
 | |
|  * User: Jsj          Date: 12/06/07   Time: 3:32p
 | |
|  * Updated in $/LibSource/Utils
 | |
|  * turn on backgrounds for point beach
 | |
|  * 
 | |
|  * *****************  Version 6  *****************
 | |
|  * User: Jsj          Date: 7/18/06    Time: 11:40a
 | |
|  * Updated in $/LibSource/Utils
 | |
|  * fixed parse of plant name from SERIAL.NO file
 | |
|  * 
 | |
|  * *****************  Version 5  *****************
 | |
|  * User: Jsj          Date: 6/29/06    Time: 1:38p
 | |
|  * Updated in $/LibSource/Utils
 | |
|  * turned on enhanced backgrounds for byron and braidwood
 | |
|  * 
 | |
|  * *****************  Version 4  *****************
 | |
|  * User: Jsj          Date: 6/29/06    Time: 1:27p
 | |
|  * Updated in $/LibSource/Utils
 | |
|  * turned on Deviations for byron and braidwood
 | |
|  * 
 | |
|  * *****************  Version 3  *****************
 | |
|  * User: Jsj          Date: 5/17/05    Time: 11:53a
 | |
|  * Updated in $/LibSource/Utils
 | |
|  * cleanup
 | |
|  * 
 | |
|  * *****************  Version 2  *****************
 | |
|  * User: Kathy        Date: 4/12/05    Time: 1:00p
 | |
|  * Updated in $/LibSource/Utils
 | |
|  * B2005-019: bad serial num message
 | |
|  * 
 | |
|  * *****************  Version 1  *****************
 | |
|  * User: Kathy        Date: 7/27/04    Time: 8:34a
 | |
|  * Created in $/LibSource/Utils
 | |
|  *********************************************************************************************/
 | |
| 
 | |
| using System;
 | |
| using System.IO;
 | |
| using System.Text;
 | |
| using System.Windows.Forms;
 | |
| 
 | |
| namespace Utils
 | |
| {
 | |
| 	/// <summary>
 | |
| 	/// Summary description for SerialNo.
 | |
| 	/// </summary>
 | |
| 	public class SerialNo
 | |
| 	{
 | |
| 		private string sernofile;
 | |
| 		public int SerialNum;
 | |
| 		private string SerialNumTitle;
 | |
| 		private static byte sum =0xcf;// used in serial number code (nextchar)
 | |
| 
 | |
| 		public enum SN_Flags
 | |
| 		{
 | |
| 			SN_NETWORK_ON			=0x0001,
 | |
| 			SN_BACKGROUND_ON		=0x0002,
 | |
| 			SN_DEVIATION_ON			=0x0004,
 | |
| 			SN_CHECKLISTEXPORT_ON	=0x0008,
 | |
| 			SN_REVISIONFUNCTION_ON	=0x0010,
 | |
| 			SN_ONLYAPPROVEONCE_ON	=0x0020,
 | |
| 			SN_BGEPLANTWIDEOPT_ON	=0x0040,
 | |
| 			SN_REVISESTRIPPC_ON		=0x0080,
 | |
| 			SN_PROCCOMMENT_ON		=0x0400,
 | |
| 			SN_REMOVECHGID_ON		=0x0800,
 | |
| 			SN_OPTIONALACCEDIT_ON	=0x1000,
 | |
| 			SN_TEMPCHANGE_ON		=0X2000,
 | |
| 			SN_VOLIANONLY_ON		=0x8000		
 | |
| 		};
 | |
| 
 | |
| 		public SN_Flags[] SerialNumberOptionsByPlant=
 | |
| 		{
 | |
| 			/* 0 Volian Enterprises, Inc.                                     */ (SN_Flags)0xFFFF,
 | |
| 			/* 1 Entergy Nuclear Northeast - Indian Point Unit 2			  */ SN_Flags.SN_BACKGROUND_ON|SN_Flags.SN_NETWORK_ON,
 | |
| 			/* 2 Virginia Power - Surry (1A)                                  */ SN_Flags.SN_NETWORK_ON,
 | |
| 			/* 3 Virginia Power - North Anna                                  */ SN_Flags.SN_DEVIATION_ON|SN_Flags.SN_NETWORK_ON,
 | |
| 			/* 4 Northern States Power - Prairie Island                       */ SN_Flags.SN_DEVIATION_ON,
 | |
| 			/* 5 American Electric Power - D. C. Cook - AOPs                  */ SN_Flags.SN_NETWORK_ON|SN_Flags.SN_BACKGROUND_ON,
 | |
| 			/* 6 Wisconsin Electric Power - Point Beach                       */ SN_Flags.SN_NETWORK_ON|SN_Flags.SN_BACKGROUND_ON,
 | |
| 			/* 7 Rochester Gas and Electric Corp. - Ginna                     */ SN_Flags.SN_BACKGROUND_ON,
 | |
| 			/* 8 TUEC - Comanche Peak                                         */ 0,
 | |
| 			/* 9 Entergy Nuclear Northeast - Indian Point Unit 3              */ SN_Flags.SN_BACKGROUND_ON|SN_Flags.SN_NETWORK_ON,
 | |
| 			/*10 Maine Yankee Atomic Power Company - Maine Yankee             */ 0,
 | |
| 			/*11 Yankee Atomic Electric - Yankee Rowe                         */ 0,
 | |
| 			/*12 Wisconsin Public Service Corp.- Kewaunee                     */ SN_Flags.SN_NETWORK_ON|SN_Flags.SN_BACKGROUND_ON,
 | |
| 			/*13 Wisconsin Public Service Corp.- Kewaunee Operating Procedures*/ SN_Flags.SN_NETWORK_ON|SN_Flags.SN_BACKGROUND_ON,
 | |
| 			/*14 South Carolina Gas and Electric - V.C. Summer                */ 0,
 | |
| 			/*15 Louisiana Power and Light - Waterford                        */ 0,
 | |
| 			/*16 Pacific Gas and Electric - Diablo Canyon                     */ SN_Flags.SN_OPTIONALACCEDIT_ON,
 | |
| 			/*17 Southern California Edison - San Onofre                      */ 0,
 | |
| 			/*18 Carolina Power and Light - Robinson                          */ SN_Flags.SN_NETWORK_ON,/*|SN_BACKGROUND_ON|SN_DEVIATION_ON, */
 | |
| 			/*19 Arkansas Nuclear One - Unit 1                                */ 0,
 | |
| 			/*20 Arkansas Nuclear One - Unit 2                                */ SN_Flags.SN_NETWORK_ON|SN_Flags.SN_ONLYAPPROVEONCE_ON|SN_Flags.SN_REVISIONFUNCTION_ON|SN_Flags.SN_REVISESTRIPPC_ON|SN_Flags.SN_PROCCOMMENT_ON,
 | |
| 			/*21 Southern Nuclear Operating Company - Vogtle                  */ SN_Flags.SN_BACKGROUND_ON|SN_Flags.SN_DEVIATION_ON,
 | |
| 			/*22 Florida Power and Light - Turkey Point (Unit 3)              */ SN_Flags.SN_NETWORK_ON|SN_Flags.SN_DEVIATION_ON|SN_Flags.SN_BACKGROUND_ON,
 | |
| 			/*23 Houston Lighting & Power Company - South Texas               */ SN_Flags.SN_NETWORK_ON|SN_Flags.SN_BACKGROUND_ON,
 | |
| 			/*24 Carolina Power & Light - Shearon Harris                      */ 0,
 | |
| 			/*25 Virginia Power - EPIP                                        */ SN_Flags.SN_NETWORK_ON,
 | |
| 			/*26 Wolf Creek Nuclear Operating Corp. - Wolf Creek              */ SN_Flags.SN_NETWORK_ON|SN_Flags.SN_BACKGROUND_ON|SN_Flags.SN_OPTIONALACCEDIT_ON|SN_Flags.SN_TEMPCHANGE_ON|SN_Flags.SN_CHECKLISTEXPORT_ON,
 | |
| 			/*27 Duke Power - Catawba                                         */ SN_Flags.SN_NETWORK_ON|SN_Flags.SN_BACKGROUND_ON|SN_Flags.SN_DEVIATION_ON,
 | |
| 			/*28 Duke Power - McGuire                                         */ SN_Flags.SN_NETWORK_ON|SN_Flags.SN_BACKGROUND_ON|SN_Flags.SN_DEVIATION_ON,
 | |
| 			/*29 Exelon Nuclear - Braidwood                                   */ SN_Flags.SN_NETWORK_ON | SN_Flags.SN_BACKGROUND_ON | SN_Flags.SN_DEVIATION_ON,
 | |
| 			/*30 Exelon Nuclear - Byron                                       */ SN_Flags.SN_NETWORK_ON | SN_Flags.SN_BACKGROUND_ON | SN_Flags.SN_DEVIATION_ON,
 | |
| 			/*31 Virginia Power - Innsbrook                                   */ SN_Flags.SN_NETWORK_ON,
 | |
| 			/*32 Constellation Energy Group - Calvert Cliffs                  */ SN_Flags.SN_NETWORK_ON|SN_Flags.SN_REVISIONFUNCTION_ON|SN_Flags.SN_ONLYAPPROVEONCE_ON|SN_Flags.SN_BGEPLANTWIDEOPT_ON|SN_Flags.SN_OPTIONALACCEDIT_ON|SN_Flags.SN_REMOVECHGID_ON,
 | |
| 			/*33 American Electric Power - D. C. Cook - EOPs                  */ SN_Flags.SN_NETWORK_ON|SN_Flags.SN_BACKGROUND_ON,
 | |
| 			/*34 American Electric Power - D. C. Cook - Training              */ 0,
 | |
| 			/*35 North Atlantic Energy Service Corp. - Seabrook Nuclear Plant */ SN_Flags.SN_TEMPCHANGE_ON,
 | |
| 			/*36 Entergy - River Bend Nuclear Station                         */ SN_Flags.SN_NETWORK_ON|SN_Flags.SN_REVISIONFUNCTION_ON,
 | |
| 			/*37 Southern Nuclear Operating Company - Farley Nuclear Plant    */ SN_Flags.SN_NETWORK_ON|SN_Flags.SN_BACKGROUND_ON|SN_Flags.SN_DEVIATION_ON,
 | |
| 			/*38 AmerenUE - Callaway Plant					                  */ SN_Flags.SN_NETWORK_ON|SN_Flags.SN_BACKGROUND_ON
 | |
| 		};
 | |
| 
 | |
| 		public SerialNo(string isernofile,string ucfgpath, UserRunTime usrRT, bool DemoMode)
 | |
| 		{
 | |
| 			sernofile = isernofile;
 | |
| 			PrivateProfile ppCfg;
 | |
| 			string sn;
 | |
| //			byte xor=0xCF;
 | |
| 			ppCfg = new PrivateProfile(ucfgpath);
 | |
| 			//			sn=ppCfg.Attr("/ini/section[@name='override']/param[@name='SN']/@value");
 | |
| 			sn=ppCfg.Attr("override","SN");
 | |
| 			if (sn!=null && sn!="")
 | |
| 			{
 | |
| 				int indx = 0;
 | |
| 				if ((indx = sn.IndexOf(";",0,sn.Length))>0)
 | |
| 					SerialNum=System.Convert.ToInt32(sn.Substring(0,indx));
 | |
| 				else
 | |
| 					SerialNum=System.Convert.ToInt32(sn);
 | |
| 				if (SerialNum>SerialNumberOptionsByPlant.Length)
 | |
| 				{
 | |
| 					MessageBox.Show("Serial number in " + ucfgpath + " is invalid. Demo mode will be used","VE-PROMS");
 | |
| 					SerialNum=-1;					
 | |
| 				}
 | |
| 				SerialNumTitle="Override";
 | |
| 				return;
 | |
| 			}
 | |
| 
 | |
| 			ppCfg=null;
 | |
| 			SerialNum = -1;
 | |
| 			if (DemoMode || !File.Exists(usrRT.ExeAdjust(sernofile)))
 | |
| 			{
 | |
| 				// no serial number file, put into demo mode.
 | |
| 				SerialNumTitle = "Demo Mode";
 | |
| 				//				MessageBox.Show("No Serial Number. Defaulting to Working Demo Mode.\n\nTo purchase VE-PROMS, contact Volian Enterorices Inc.\n\nPhone: (724) 335-3744\n\nEmail: VEPROMS@VOLIAN.COM\n\nSerial Number Warning"); 
 | |
| 				if (DemoMode)
 | |
| 				{
 | |
| 					MessageBox.Show("Thank you for trying our VE-PROMS Working Demo.\n\n"+
 | |
| 						"To purchase VE-PROMS, contact Volian Enterprises, Inc.\n\n"+
 | |
| 						"Phone:  (724) 335-3744\n\n"+
 | |
| 						"Email:  VolianEnterprises@volian.com",
 | |
| 						"VE-PROMS Working Demo");
 | |
| 				}
 | |
| 				else
 | |
| 				{
 | |
| 					MessageBox.Show("No Serial Number.  Defaulting to Working Demo Mode.\n\n"+
 | |
| 						"To purchase VE-PROMS, contact Volian Enterprises, Inc.\n\n"+
 | |
| 						"Phone:  (724) 335-3744\n\n"+
 | |
| 						"Email:  VolianEnterprises@volian.com",
 | |
| 						"Serial Number Warning");
 | |
| 				}
 | |
| 				return;
 | |
| 			}
 | |
| 
 | |
| 			// open file & read in serial number
 | |
| 			int i;
 | |
| 			byte j;
 | |
| 			FileStream fssn = null;
 | |
| 			BinaryReader brsn = null;
 | |
| 			byte xor=0xCF;
 | |
| //			sum=0xcf;
 | |
| 			try
 | |
| 			{
 | |
| 				fssn = new FileStream(usrRT.ExeAdjust(sernofile),FileMode.Open,FileAccess.Read,FileShare.ReadWrite);
 | |
| 				brsn = new BinaryReader(fssn);
 | |
| 				int length = (int)fssn.Length-1024;
 | |
| 				for (i=0;i<1024;i++)
 | |
| 				{
 | |
| 					j = nextchar(brsn);
 | |
| 					xor ^= (byte)j;
 | |
| 					if (j==0xCF)
 | |
| 					{
 | |
| 						if (SerialNum != -1) return;
 | |
| 						SerialNum=i;
 | |
| 					}
 | |
| 				}
 | |
| 				if (SerialNum == -1)
 | |
| 				{
 | |
| 					SerialNumTitle = "Demo Mode";
 | |
| //					MessageBox.Show("No Serial Number. Defaulting to Working Demo Mode.\n\nTo purchase VE-PROMS, contact Volian Enterorices Inc.\n\nPhone: (724) 335-3744\n\nEmail: VEPROMS@VOLIAN.COM\n\nSerial Number Warning","VE-PROMS"); 
 | |
| 					MessageBox.Show("No Serial Number.  Defaulting to Working Demo Mode.\n\n"+
 | |
| 						"To purchase VE-PROMS, contact Volian Enterprises, Inc.\n\n"+
 | |
| 						"Phone:  (724) 335-3744\n\n"+
 | |
| 						"Email:  VolianEnterprises@volian.com",
 | |
| 						"Serial Number Warning");
 | |
| 					return;
 | |
| 				}
 | |
| 				// Just read past this byte. At this point we already
 | |
| 				// have a serial number.  We now just want to get the
 | |
| 				// description text (usually plant/utility name) associated
 | |
| 				// with the serial number.
 | |
| 				j = nextchar(brsn);
 | |
| //
 | |
| //	This was always failing.  Could not find a reason why. Appears that
 | |
| //  the Exclusive OR arithmatic is a little different in .NET.  The
 | |
| //  nextchar() funtion seems to be returning the correct values.
 | |
| //
 | |
| //				if (j!=xor)
 | |
| //				{
 | |
| //					if (brsn!=null) brsn.Close();
 | |
| //					if (fssn!=null) fssn.Close();
 | |
| //					return;
 | |
| //				}
 | |
| 				char [] title = new char[length];
 | |
| 				i=0;
 | |
| 				while((--length) > 0 && (j=nextchar(brsn))!=0xFF)
 | |
| 				{
 | |
| 					title[i++] = (char)j;
 | |
| 				}
 | |
| 				SerialNumTitle = new string(title);
 | |
| 				// remove the serial number at the beginning of the title
 | |
| 				// - we didn't need to do this - jsj 7/18/2006
 | |
| //				SerialNumTitle = SerialNumTitle.Substring(SerialNumTitle.IndexOf(' ')+1);
 | |
| 			}
 | |
| 			catch(Exception e)
 | |
| 			{
 | |
| 				MessageBox.Show(e.Message,"Serial Number Error");
 | |
| 				return;
 | |
| 			}
 | |
| 			if (brsn!=null) brsn.Close();
 | |
| 			if (fssn!=null) fssn.Close();
 | |
| 		}
 | |
| 
 | |
| 		private byte nextchar(BinaryReader br)
 | |
| 		{
 | |
| 			byte retval = 0xFF; // unsigned -1
 | |
| 			try 
 | |
| 			{
 | |
| 				byte nxt;
 | |
| 				retval = br.ReadByte();
 | |
| 				if(retval != 0xFF)
 | |
| 				{
 | |
| 					nxt=retval;
 | |
| 					retval=(byte)((nxt-sum) & 0xFF);
 | |
| 					sum=(byte)(((nxt<<1) & 0xFE) | ((nxt>>7) & 0x1));
 | |
| 				}
 | |
| 			}
 | |
| 			catch(Exception e)
 | |
| 			{
 | |
| //				MessageBox.Show(e.Message);
 | |
| 				return retval;
 | |
| 			}
 | |
| 
 | |
| 			return retval;
 | |
| 		}
 | |
| 
 | |
| 		public uint GetSNOption(uint a) 
 | |
| 		{
 | |
| 			if (SerialNum == -1)
 | |
| 				return 0;
 | |
| 			else
 | |
| 				return ((uint)SerialNumberOptionsByPlant[SerialNum]&(uint)a);
 | |
| 		}
 | |
| 
 | |
| 		public string SerialNumberString
 | |
| 		{
 | |
| 			get
 | |
| 			{
 | |
| 				string rtnstr  = "";
 | |
| 				if (SerialNum == -1) // demo
 | |
| 					rtnstr  = "Thank you for trying VE-PROMS";
 | |
| 				else
 | |
| 					rtnstr  = "Serial Number:  " + SerialNum.ToString();
 | |
| 
 | |
| 				return rtnstr;
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		public string SerialNumberTitleString
 | |
| 		{
 | |
| 			get
 | |
| 			{
 | |
| 				return SerialNumTitle;
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| }
 |