예제 #1
0
        private void frmMain_Load(object sender, EventArgs e)
        {
            var objSettings = Settings.Default;

            // force save settings right away
            objSettings.LastReference = objSettings.LastReference;
            objSettings.Save();

            m_Logger = new Logger(objSettings.ViewLogFile);
            m_Logger.WriteLine("Startup SMPP Simulator");

            m_objSimWorker    = new SimWorker();
            m_objSimModel     = m_objSimWorker.SimModel;
            m_objSmsConstants = new AxSms.Constants();

            // IP Version combo box
            var dctIpVersion = new Dictionary <string, int>();

            dctIpVersion.Add("IPv6/IPv4", m_objSmsConstants.SMPP_IPVERSION_BOTH);
            dctIpVersion.Add("IPv6", m_objSmsConstants.SMPP_IPVERSION_6);
            dctIpVersion.Add("IPv4", m_objSmsConstants.SMPP_IPVERSION_4);

            cbxIpVersion.DisplayMember = "Key";
            cbxIpVersion.ValueMember   = "Value";
            cbxIpVersion.DataSource    = new BindingSource(dctIpVersion, null);

            // Make sure to update all the SESSION_ constants when changing stuff here !!!!
            lvSessions.Columns.Add("Client IP", (int)(lvSessions.Width * .25), HorizontalAlignment.Left);
            lvSessions.Columns.Add("Client Port", (int)(lvSessions.Width * .25), HorizontalAlignment.Left);
            lvSessions.Columns.Add("SystemID", (int)(lvSessions.Width * .24), HorizontalAlignment.Left);
            lvSessions.Columns.Add("Connection State", (int)(lvSessions.Width * .25), HorizontalAlignment.Left);
            lvSessions.AutoResizeColumn(3, ColumnHeaderAutoResizeStyle.HeaderSize);

            // Make sure to update all the MESSAGE_ constants when changing stuff here !!!!
            lvMessages.Columns.Add("Dir.", (int)(lvMessages.Width * .1), HorizontalAlignment.Left);
            lvMessages.Columns.Add("SystemID", (int)(lvMessages.Width * .20), HorizontalAlignment.Left);
            lvMessages.Columns.Add("ToAddress", (int)(lvMessages.Width * .15), HorizontalAlignment.Left);
            lvMessages.Columns.Add("Reference", (int)(lvMessages.Width * .15), HorizontalAlignment.Left);
            lvMessages.Columns.Add("State", (int)(lvMessages.Width * .15), HorizontalAlignment.Left);
            lvMessages.Columns.Add("Body", -2, HorizontalAlignment.Left);

            // Make sure to update all the AUTOMESSAGE_ constants when changing stuff here !!!!
            lvAutoMessage.Columns.Add("FromAddress", (int)(lvAutoMessage.Width * .20), HorizontalAlignment.Left);
            lvAutoMessage.Columns.Add("ToAddress", (int)(lvAutoMessage.Width * .20), HorizontalAlignment.Left);
            lvAutoMessage.Columns.Add("Body", (int)(lvAutoMessage.Width * .59), HorizontalAlignment.Left);

            // Set the hyperlinks in the GUI
            llblAxLink.Text = "Try other SMS software products by Auron Software.";
            llblAxLink.Links.Add(llblAxLink.Text.IndexOf("SMS software products"), "SMS software products".Length, "https://www.auronsoftware.com/products/");
            llblAxLink.LinkClicked += new LinkLabelLinkClickedEventHandler(llblAxLink_LinkClicked);

            llblFooterText.Text  = "Auron SMPP Simulator is freeware. It uses Auron SMS Component.\r\n";
            llblFooterText.Text += "For more information on Auron SMS products, click here.";
            llblFooterText.Links.Add(llblFooterText.Text.IndexOf("click here"), "click here".Length, "https://www.auronsoftware.com/products/");
            llblFooterText.LinkClicked += new LinkLabelLinkClickedEventHandler(llblAxLink_LinkClicked);

            // Initialize model
            m_objSimModel.LastReference       = objSettings.LastReference + SimConstants.ADDREFERENCES_ONAPPSTART;
            m_objSimModel.Port                = objSettings.Port;
            m_objSimModel.IpVersion           = objSettings.IpVersion;
            m_objSimModel.IsAuthRequired      = objSettings.AuthRequired;
            m_objSimModel.SystemId            = objSettings.SystemId;
            m_objSimModel.Password            = objSettings.Password;
            m_objSimModel.IsPduLogEnabled     = objSettings.PduLogEnabled;
            m_objSimModel.IsServerLogEnabled  = objSettings.ServerLogEnabled;
            m_objSimModel.IsSessionLogEnabled = objSettings.SessionLogEnabled;
            m_objSimModel.ServerLog           = objSettings.ServerLog;
            m_objSimModel.SessionLog          = objSettings.SessionLog;
            m_objSimModel.GeneratePerMinute   = objSettings.GeneratePerMinute;
            m_objSimModel.RandomOrder         = objSettings.RandomOrder;
            m_objSimModel.Echo                = objSettings.Echo;
            m_objSimModel.PduTimeout          = objSettings.PduTimeout;
            m_objSimModel.EnquireInterval     = objSettings.EnquireInterval;
            m_objSimModel.UseGsmEncoding      = objSettings.UseGsmEncoding;
            m_objSimModel.MultipartMode       = objSettings.MultipartMode;
            m_objSimModel.DeliverMode         = objSettings.DeliverMode;
            m_objSimModel.CertificateStore    = objSettings.CertificateStore;

            m_nKeepMaxMessages    = objSettings.KeepMessages;
            m_strAutoMessagesFile = objSettings.AutoMessageFile;

            // pre-load auto messages
            if (LoadAutoMessages(m_strAutoMessagesFile) != 0)
            {
                SimMessage objMessage = null;
                AddToAutoMessage(new SimMessage("+123123123", SimConstants.DEFAULT_FROMADDRESS, "Hello, World!"));
                AddToAutoMessage(objMessage = new SimMessage("+321321321", SimConstants.DEFAULT_FROMADDRESS, "مرحبا، العالم"));
                objMessage.DataCoding       = m_objSmsConstants.DATACODING_UNICODE;
                AddToAutoMessage(objMessage = new SimMessage("+231231231", SimConstants.DEFAULT_FROMADDRESS, "नमस्ते दुनिया"));
                objMessage.DataCoding       = m_objSmsConstants.DATACODING_DEFAULT;
                objMessage.LanguageShift    = m_objSmsConstants.LANGUAGE_SINGLESHIFT_HINDI;
                AddToAutoMessage(objMessage = new SimMessage("+123123123", SimConstants.DEFAULT_FROMADDRESS, "48656c6c6f2c20576f726c6421"));
                objMessage.BodyFormat       = m_objSmsConstants.BODYFORMAT_HEX;
            }
            PushAutoMessages();

            // Push error rates to model.
            SimErrorRates objErrorRates    = new SimErrorRates();
            string        strMessageRates  = objSettings.MessageErrorRates;
            string        strDeliveryRates = objSettings.DeliveryErrorRates;

            string[] aMessageRates = strMessageRates.Split(';');
            try
            {
                foreach (string strMessageRate in aMessageRates)
                {
                    SimMessageErrorRate objErrr      = new SimMessageErrorRate();
                    string[]            aMessageRate = strMessageRate.Split(',');
                    objErrr.StatusCode = int.Parse(aMessageRate[0]);
                    objErrr.Occurance  = int.Parse(aMessageRate[1]);
                    objErrorRates.MessageErrorRates.Add(objErrr);
                }
            }
            catch (Exception x)
            {
                m_Logger.WriteLine("Error while parsing message rates: {0}", x.ToString());
            }

            string[] aDeliveryRates = strDeliveryRates.Split(';');
            try
            {
                foreach (string strDeliveryRate in aDeliveryRates)
                {
                    SimDeliveryErrorRate objErrr       = new SimDeliveryErrorRate();
                    string[]             aDeliveryRate = strDeliveryRate.Split(',');
                    objErrr.Code      = int.Parse(aDeliveryRate[0]);
                    objErrr.Text      = aDeliveryRate[1];
                    objErrr.Occurance = int.Parse(aDeliveryRate[2]);
                    objErrorRates.DeliveryErrorRates.Add(objErrr);
                }
            }
            catch (Exception x)
            {
                m_Logger.WriteLine("Error while parsing delivery rates: {0}", x.ToString());
            }

            m_objSimModel.SetErrorRates(objErrorRates);

            // Set other control values
            txtServerLog.Text          = m_objSimModel.ServerLog;
            txtSessionLog.Text         = m_objSimModel.SessionLog;
            cbEnableServerLog.Checked  = m_objSimModel.IsServerLogEnabled;
            cbEnableSessionLog.Checked = m_objSimModel.IsSessionLogEnabled;
            cbEnablePduLog.Checked     = m_objSimModel.IsPduLogEnabled;
            cbAuthentication.Checked   = m_objSimModel.IsAuthRequired;
            txtSystemId.Text           = m_objSimModel.SystemId;
            txtPassword.Text           = m_objSimModel.Password;
            txtMaxSendPerMinute.Text   = m_objSimModel.GeneratePerMinute.ToString();
            cbRandom.Checked           = m_objSimModel.RandomOrder;
            cbEcho.Checked             = m_objSimModel.Echo;

            ReloadCertificates();

            objSettings.Save();
            UpdateControls();
        }
예제 #2
0
 public frmOptions(SimModel objSimModel)
 {
     InitializeComponent();
     m_objSimModel = objSimModel;
 }