object MainForm: TMainForm Left = 0 Top = 0 Caption = 'ICS MQTT Server / Client Demo - https://www.overbyte.eu - 21st ' + 'March 2025' ClientHeight = 743 ClientWidth = 1040 Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'Tahoma' Font.Style = [] OnClose = FormClose OnCreate = FormCreate OnShow = FormShow TextHeight = 13 object PixTxt: TLabel Left = 618 Top = 2 Width = 193 Height = 13 Alignment = taCenter AutoSize = False end object PageControl1: TPageControl Left = 0 Top = 0 Width = 1040 Height = 743 ActivePage = SheetClient Align = alClient TabOrder = 0 object SheetClient: TTabSheet Caption = 'MQTT Client' object GroupBoxClient: TGroupBox Left = 0 Top = 0 Width = 1032 Height = 261 Align = alTop Caption = 'MQTT Client' TabOrder = 0 object Label6: TLabel Left = 736 Top = 65 Width = 42 Height = 13 Caption = 'Message' end object Label5: TLabel Left = 507 Top = 16 Width = 91 Height = 13 Caption = 'Subscription Topics' end object Label18: TLabel Left = 734 Top = 16 Width = 25 Height = 13 Caption = 'Topic' end object Label13: TLabel Left = 356 Top = 54 Width = 20 Height = 13 Caption = 'Port' end object Label12: TLabel Left = 10 Top = 53 Width = 68 Height = 26 Caption = 'Client Host or Address' WordWrap = True end object Label7: TLabel Left = 10 Top = 107 Width = 52 Height = 13 Caption = 'User Name' end object Label21: TLabel Left = 213 Top = 110 Width = 46 Height = 13 Caption = 'Password' end object Label22: TLabel Left = 10 Top = 84 Width = 66 Height = 13 Caption = 'MQTT Version' end object Label20: TLabel Left = 198 Top = 133 Width = 100 Height = 13 Caption = 'ClientID (blank Auto)' WordWrap = True end object MsgBox: TMemo Left = 736 Top = 82 Width = 219 Height = 113 Lines.Strings = ( 'WARNING' 'Coolant Leak.' 'Primary Cooling System.' 'Reactor 5.') TabOrder = 9 end object CliJTxt: TEdit Left = 329 Top = 134 Width = 74 Height = 21 TabOrder = 17 end object ButtonCliPublish: TButton Left = 677 Top = 216 Width = 91 Height = 25 Caption = 'Publish Message' TabOrder = 12 OnClick = ButtonCliPublishClick end object ButtonCliUnsub: TButton Left = 602 Top = 216 Width = 69 Height = 25 Caption = 'Unsubscribe' TabOrder = 11 OnClick = ButtonCliUnsubClick end object ButtonCliShow: TButton Left = 242 Top = 20 Width = 69 Height = 25 Caption = 'Show' TabOrder = 3 OnClick = ButtonCliShowClick end object ButtonCliSubs: TButton Left = 527 Top = 216 Width = 69 Height = 25 Caption = 'Subscribe' TabOrder = 10 OnClick = ButtonCliSubsClick end object TopicsTxt: TMemo Left = 506 Top = 31 Width = 214 Height = 163 Lines.Strings = ( 'update/memo' 'update/png/+' 'will/#') TabOrder = 7 end object TopicTxt: TEdit Left = 735 Top = 32 Width = 216 Height = 21 TabOrder = 8 Text = 'update/memo' end object CMBoxCli: TCheckBox Left = 23 Top = 238 Width = 108 Height = 17 Caption = 'Client Monitor' Checked = True State = cbChecked TabOrder = 16 end object BounceBoxCli: TCheckBox Left = 150 Top = 160 Width = 85 Height = 17 Caption = ' Local Bounce' TabOrder = 15 end object RetainBox: TCheckBox Left = 150 Top = 180 Width = 97 Height = 17 Caption = 'Retain' TabOrder = 14 OnClick = RetainBoxClick end object CleanBox2: TCheckBox Left = 10 Top = 133 Width = 195 Height = 15 Caption = 'Clean Session (not persistent)' Checked = True State = cbChecked TabOrder = 13 end object ButtonCliUpdate: TButton Left = 359 Top = 20 Width = 53 Height = 25 Caption = 'Update' TabOrder = 4 OnClick = ButtonCliUpdateClick end object ButtonCliKill: TButton Left = 167 Top = 20 Width = 69 Height = 27 Caption = 'Kill' TabOrder = 2 OnClick = ButtonCliKillClick end object ButtonCliStop: TButton Left = 91 Top = 20 Width = 69 Height = 27 Caption = 'Stop' TabOrder = 1 OnClick = ButtonCliStopClick end object ButtonCliStart: TButton Left = 16 Top = 20 Width = 69 Height = 27 Caption = 'Start' TabOrder = 0 OnClick = ButtonCliStartClick end object VerifyCertChain: TCheckBox Left = 322 Top = 84 Width = 141 Height = 17 Caption = 'Verify Certificate Chain' Checked = True State = cbChecked TabOrder = 5 end object ClientQOS: TRadioGroup Left = 10 Top = 154 Width = 113 Height = 77 Caption = 'Quality of Service' ItemIndex = 1 Items.Strings = ( 'A Most Once' 'At Least Once' 'Exactly Once') TabOrder = 6 end object ClientHost: TComboBox Left = 93 Top = 54 Width = 247 Height = 21 ItemIndex = 0 TabOrder = 18 Text = 'localhost' Items.Strings = ( 'localhost' '127.0.0.1' 'test.mosquitto.org') end object ClientUser: TEdit Left = 82 Top = 108 Width = 121 Height = 21 TabOrder = 19 end object ClientPassword: TEdit Left = 278 Top = 108 Width = 149 Height = 21 TabOrder = 20 end object MqttVersion: TComboBox Left = 102 Top = 81 Width = 109 Height = 21 Style = csDropDownList TabOrder = 21 Items.Strings = ( 'Version 3.1' 'Version 3.1.1' 'Version 5') end object LogPackets: TCheckBox Left = 139 Top = 238 Width = 108 Height = 17 Caption = 'Log Packets' Checked = True State = cbChecked TabOrder = 22 end object CPortTxt: TComboBox Left = 387 Top = 54 Width = 61 Height = 21 ItemIndex = 0 TabOrder = 23 Text = '1883' OnChange = CPortTxtChange Items.Strings = ( '1883' '8883' '1884' '8884' '8885' '8886' '8887' '') end object UseSSL: TCheckBox Left = 225 Top = 84 Width = 62 Height = 17 Caption = 'Use SSL' TabOrder = 24 end object GroupBox2: TGroupBox Left = 253 Top = 167 Width = 209 Height = 82 Caption = 'Publish ClientId' TabOrder = 25 object Label23: TLabel Left = 14 Top = 57 Width = 52 Height = 13 Caption = 'MessageId' end object ButtonCliSend: TButton Left = 14 Top = 18 Width = 50 Height = 25 Caption = 'Send' TabOrder = 0 OnClick = ButtonCliSendClick end object ButtonCliOn: TButton Left = 82 Top = 18 Width = 50 Height = 25 Caption = 'On' TabOrder = 1 OnClick = ButtonCliOnClick end object ButtonCliOff: TButton Left = 148 Top = 19 Width = 50 Height = 25 Caption = 'Off' TabOrder = 2 OnClick = ButtonCliOffClick end object CMsgId: TEdit Left = 82 Top = 53 Width = 89 Height = 21 TabOrder = 3 Text = '3' end end object BlankClientId: TCheckBox Left = 413 Top = 137 Width = 89 Height = 17 Caption = 'Send Blank Id' TabOrder = 26 end object BurstMode: TCheckBox Left = 150 Top = 200 Width = 97 Height = 17 Caption = 'Burst Mode' TabOrder = 27 OnClick = RetainBoxClick end end object GroupBoxCliLogs: TGroupBox Left = 0 Top = 261 Width = 1032 Height = 454 Align = alClient Caption = 'GroupBoxCliLogs' TabOrder = 1 object CMsgTxt: TLabel Left = 63 Top = 21 Width = 40 Height = 13 Caption = '' end object Label8: TLabel Left = 10 Top = 21 Width = 46 Height = 13 Caption = 'Last Msg:' end object Label16: TLabel Left = 201 Top = 21 Width = 23 Height = 13 Caption = 'Qos:' end object CQosTxt: TLabel Left = 239 Top = 21 Width = 33 Height = 13 Caption = '' end object Label3: TLabel Left = 450 Top = 21 Width = 38 Height = 13 Caption = 'Enabled' Font.Charset = DEFAULT_CHARSET Font.Color = clRed Font.Height = -11 Font.Name = 'Tahoma' Font.Style = [] ParentFont = False end object CEnableTxt: TLabel Left = 494 Top = 21 Width = 15 Height = 13 Caption = 'NO' Font.Charset = DEFAULT_CHARSET Font.Color = clRed Font.Height = -11 Font.Name = 'Tahoma' Font.Style = [] ParentFont = False end object Label4: TLabel Left = 545 Top = 21 Width = 30 Height = 13 Caption = 'Online' Font.Charset = DEFAULT_CHARSET Font.Color = clRed Font.Height = -11 Font.Name = 'Tahoma' Font.Style = [] ParentFont = False end object COnlineTxt: TLabel Left = 589 Top = 21 Width = 15 Height = 13 Caption = 'NO' Font.Charset = DEFAULT_CHARSET Font.Color = clRed Font.Height = -11 Font.Name = 'Tahoma' Font.Style = [] ParentFont = False end object ClientIDTxt: TLabel Left = 645 Top = 21 Width = 38 Height = 13 Caption = 'ClientID' end object ClientMemo: TMemo Left = 11 Top = 43 Width = 701 Height = 399 ScrollBars = ssVertical TabOrder = 0 OnDblClick = ClientMemoDblClick end object ClientMemo3: TMemo Left = 726 Top = 47 Width = 232 Height = 395 TabOrder = 1 OnDblClick = ClientMemo3DblClick end end end object SheetServer: TTabSheet Caption = 'MQTT Server' ImageIndex = 1 object GroupBoxServer: TGroupBox Left = 0 Top = 0 Width = 1032 Height = 256 Align = alTop Caption = 'MQTT Server' TabOrder = 0 object Label10: TLabel Left = 22 Top = 89 Width = 110 Height = 13 Caption = 'Server Ports: Non-SSL' end object CIDTxt: TLabel Left = 373 Top = 8 Width = 17 Height = 13 AutoSize = False end object Label1: TLabel Left = 19 Top = 65 Width = 102 Height = 13 Caption = 'Server Listen IP Addr' end object Label2: TLabel Left = 194 Top = 90 Width = 40 Height = 13 Caption = 'SSL Port' end object Label17: TLabel Left = 20 Top = 115 Width = 105 Height = 13 Caption = 'Certificate Host Name' end object Label19: TLabel Left = 19 Top = 140 Width = 104 Height = 13 Caption = 'Certificate Bundle File' end object ButtonSrvStart: TButton Left = 12 Top = 20 Width = 69 Height = 27 Caption = 'Start' TabOrder = 0 OnClick = ButtonSrvStartClick end object ButtonSrvStop: TButton Left = 87 Top = 20 Width = 69 Height = 27 Caption = 'Stop' TabOrder = 1 OnClick = ButtonSrvStopClick end object ButtonSrvShowCli: TButton Left = 162 Top = 20 Width = 80 Height = 27 Caption = 'Show Clients' TabOrder = 2 OnClick = ButtonSrvShowCliClick end object BounceBoxSrv: TCheckBox Left = 170 Top = 187 Width = 90 Height = 17 Caption = ' Local Bounce' TabOrder = 10 end object CMBoxSrvr: TCheckBox Left = 20 Top = 189 Width = 137 Height = 17 Caption = 'Client Monitor for Server' Checked = True State = cbChecked TabOrder = 9 end object ButtonSrvBrokers: TButton Left = 248 Top = 20 Width = 96 Height = 27 Caption = 'Brokers Windows' TabOrder = 3 OnClick = ButtonSrvBrokersClick end object ServerNonPort: TEdit Left = 140 Top = 85 Width = 38 Height = 21 TabOrder = 5 Text = '1883' end object ServerIpAddr: TComboBox Left = 140 Top = 60 Width = 179 Height = 21 TabOrder = 4 end object ServerSSLPort: TEdit Left = 253 Top = 85 Width = 38 Height = 21 TabOrder = 6 Text = '8883' end object CertHostName: TEdit Left = 140 Top = 110 Width = 226 Height = 21 TabOrder = 7 Text = 'localhost' end object CertBundleFile: TEdit Left = 140 Top = 135 Width = 293 Height = 21 TabOrder = 8 Text = 'localhost.pem' end object CertAutoOrder: TCheckBox Left = 266 Top = 187 Width = 161 Height = 17 Caption = 'Auto Order SSL Certificate' Enabled = False TabOrder = 11 end end object GroupBox1: TGroupBox Left = 0 Top = 256 Width = 1032 Height = 459 Align = alClient Caption = 'GroupBox1' TabOrder = 1 object Label11: TLabel Left = 5 Top = 21 Width = 42 Height = 13 Caption = 'Last Msg' end object SMsgTxt: TLabel Left = 61 Top = 21 Width = 40 Height = 13 Caption = '' end object Label15: TLabel Left = 311 Top = 21 Width = 38 Height = 13 Caption = 'Enabled' Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clRed Font.Height = -11 Font.Name = 'Tahoma' Font.Style = [] ParentColor = False ParentFont = False end object SEnableTxt: TLabel Left = 355 Top = 21 Width = 15 Height = 13 Caption = 'NO' Font.Charset = DEFAULT_CHARSET Font.Color = clRed Font.Height = -11 Font.Name = 'Tahoma' Font.Style = [] ParentFont = False end object Label9: TLabel Left = 376 Top = 21 Width = 32 Height = 13 Caption = 'Clients' Font.Charset = DEFAULT_CHARSET Font.Color = clRed Font.Height = -11 Font.Name = 'Tahoma' Font.Style = [] ParentFont = False end object SClientsTxt: TLabel Left = 414 Top = 21 Width = 6 Height = 13 Caption = '0' Font.Charset = DEFAULT_CHARSET Font.Color = clRed Font.Height = -11 Font.Name = 'Tahoma' Font.Style = [] ParentFont = False end object Label14: TLabel Left = 169 Top = 19 Width = 19 Height = 13 Caption = 'Qos' end object SQosTxt: TLabel Left = 205 Top = 21 Width = 33 Height = 13 Caption = '' end object ServerMemo: TMemo Left = 8 Top = 39 Width = 864 Height = 406 ScrollBars = ssVertical TabOrder = 0 OnDblClick = ServerMemoDblClick end end end end object MQTTServer: TIcsMQTTServer MaxRetries = 4 RetryTime = 60 LocalBounce = False IcsHosts = < item HostNames.Strings = ( '*') HostEnabled = True BindIpAddr = '0.0.0.0' BindSslPort = 8883 BindNonPort = 1883 HostTag = 'HostTag' ForwardProxy = False WebLogIdx = 0 SslSrvSecurity = sslSrvSecBack AuthSslCmd = False AuthForceSsl = False WebRedirectStat = 0 CliCertMethod = sslCliCertNone SslLoadSource = CertLoadFile CertSupplierProto = SuppProtoNone CertChallenge = ChallNone CertPKeyType = PrivKeyRsa1024 CertSignDigest = Digest_md5 AcmeSupplier = AcmeLetsEncrypt ExpireDays = 30 AcmeCertValidity = 90 end> SslCertAutoOrder = False CertExpireDays = 30 SslX509Certs = SslX509Certs1 OnFailure = MQTTServerFailure OnStoreSession = MQTTServerStoreSession OnRestoreSession = MQTTServerRestoreSession OnDeleteSession = MQTTServerDeleteSession OnBrokerOnline = MQTTServerBrokerOnline OnBrokerOffline = MQTTServerBrokerOffline OnBrokerEnableChange = MQTTServerBrokerEnableChange OnEnableChange = MQTTServerEnableChange OnSubscription = MQTTServerSubscription OnClientsChange = MQTTServerClientsChange OnCheckUser = MQTTServerCheckUser OnObituary = MQTTServerObituary OnMon = MQTTServerMon Left = 422 Top = 503 end object MQTTClient: TIcsMQTTClient KeepAlive = 10 MaxRetries = 8 RetryTime = 60 Clean = True Broker = False AutoSubscribe = False Host = 'localhost' Port = 1883 LocalBounce = False SslVerifyCerts = False SslReportChain = False SslRevocation = False SslCliSecurity = sslCliSecIgnore MQTTVer = V310 LogPackets = False BlankClient = False UseSSL = False BurstMode = False OnClientID = MQTTClientClientID OnMon = MQTTClientMon OnOnline = MQTTClientOnline OnOffline = MQTTClientOffline OnEnableChange = MQTTClientEnableChange OnFailure = MQTTClientFailure OnMsg = MQTTClientMsg Left = 305 Top = 505 end object SslX509Certs1: TSslX509Certs AcmeAccKeyType = PrivKeyRsa2048 AutoOrderComplete = False CertSubAltNames = <> CertCsrOrigin = CsrOriginProps CertOutFmts = [] CertSerNumType = SerNumRandom CertSignDigestType = Digest_sha256 CertValidity = 365 DebugLevel = DebugConn DomWebSrvIP = '0.0.0.0' DomWebSrvIP2 = '::' MsCertLoc = MsLocMachine KeepOldCA = False LogJson = False LogPkeys = False OAAuthType = OAuthTypeWeb OARefreshAuto = False OARefrMinsPrior = 120 OAWebSrvIP = '127.0.0.1' OAWebSrvPort = '8080' PrivKeyCipher = PrivKeyEncNone PrivKeyType = PrivKeyRsa2048 AutoAccountClose = False AccountTimeOutMins = 10 SeqOrderNum = 0 SocketFamily = sfAny SuppCertChallenge = ChallNone SupplierProto = SuppProtoNone SupplierTitle = 'Unknown Supplier' AcmeSupplier = AcmeLetsEncrypt Left = 545 Top = 499 end end