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;
 | 
						|
			}
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 |