package Ġnet . cord a . node . services . config Ċ Ċ import Ġnet . cord a . core . node . services . Service Info Ċ import Ġnet . cord a . core . utilities . Network Host And Port Ċ import Ġnet . cord a . node . internal . Network Map Info Ċ import Ġnet . cord a . node . services . messaging . Certificate Chain Check Policy Ċ import Ġnet . cord a . node . services . network . Network Map Service Ċ import Ġnet . cord a . node api . User Ċ import Ġnet . cord a . node api . config . Node SSL Configuration Ċ import Ġnet . cord a . node api . config . Old Config Ċ import Ġorg . bouncycastle . asn 1 . x 5 0 0 . X 5 0 0 Name Ċ import Ġjava . net . URL Ċ import Ġjava . nio . file . Path Ċ import Ġjava . util .* Ċ Ċ /** Ġ@ param Ġexpose R aces Ġfor Ġtesting Ġonly , Ġso Ġits Ġdefault Ġis Ġnot Ġin Ġreference . conf Ġbut Ġhere . Ġ*/ Ċ data Ġclass ĠB FT SM a Rt Configuration ( val Ġreplica Id : ĠInt , Ġval Ġdebug : ĠBoolean , Ġval Ġexpose R aces : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠ Ġfun ĠisValid () Ġ= Ġreplica Id Ġ>= Ġ 0 Ċ } Ċ Ċ interface ĠNode Configuration Ġ: ĠNode SSL Configuration Ġ{ ĊĠĠĠ Ġval Ġmy Legal Name : ĠX 5 0 0 Name ĊĠĠĠ Ġval Ġnetwork Map Service : ĠNetwork Map Info ? ĊĠĠĠ Ġval Ġminimum Platform Version : ĠInt ĊĠĠĠ Ġval Ġemail Address : ĠString ĊĠĠĠ Ġval Ġexport J MX to : ĠString ĊĠĠĠ Ġval ĠdataSource Properties : ĠProperties ĊĠĠĠ Ġval Ġdatabase : ĠProperties ? ĊĠĠĠ Ġval Ġrpc Users : ĠList < User > ĊĠĠĠ Ġval Ġdev Mode : ĠBoolean ĊĠĠĠ Ġval Ġcertificate Signing Service : ĠURL ĊĠĠĠ Ġval Ġcertificate Chain Check Policies : ĠList < Cert Chain Policy Config > ĊĠĠĠ Ġval Ġverifier Type : ĠVer ifier Type ĊĠĠĠ Ġval Ġmessage Re delivery Delay Seconds : ĠInt ĊĠĠĠ Ġval Ġb ft SM a Rt : ĠB FT SM a Rt Configuration ĊĠĠĠ Ġval Ġnot ary Node Address : ĠNetwork Host And Port ? ĊĠĠĠ Ġval Ġnot ary Cluster Addresses : ĠList < Network Host And Port > Ċ } Ċ Ċ data Ġclass ĠFull Node Configuration ( ĊĠĠĠĠĠĠĠ Ġ// ĠTODO ĠRemove Ġthis Ġsubs itution Ġvalue Ġand Ġuse Ġbase Directory Ġas Ġthe Ġsubs itution Ġinstead ĊĠĠĠĠĠĠĠ Ġ@ Deprecated ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" This Ġis Ġa Ġsubs itution Ġvalue Ġwhich Ġpoints Ġto Ġthe Ġbase Directory Ġand Ġis Ġmanually Ġadded Ġinto Ġthe Ġconfig Ġbefore Ġparsing ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠReplace With (" base Directory ")) ĊĠĠĠĠĠĠĠ Ġval Ġbase dir : ĠPath , ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġmy Legal Name : ĠX 5 0 0 Name , ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġemail Address : ĠString , ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġkey Store Password : ĠString , ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġtrust Store Password : ĠString , ĊĠĠĠĠĠĠĠ Ġoverride Ġval ĠdataSource Properties : ĠProperties , ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġdatabase : ĠProperties ?, ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġcertificate Signing Service : ĠURL , ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġnetwork Map Service : ĠNetwork Map Info ?, ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġminimum Platform Version : ĠInt Ġ= Ġ 1 , ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġrpc Users : ĠList < User >, ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġverifier Type : ĠVer ifier Type , ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġmessage Re delivery Delay Seconds : ĠInt Ġ= Ġ 3 0 , ĊĠĠĠĠĠĠĠ Ġval Ġuse HTTPS : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġ@ Old Config (" art emis Address ") ĊĠĠĠĠĠĠĠ Ġval Ġp 2 p Address : ĠNetwork Host And Port , ĊĠĠĠĠĠĠĠ Ġval Ġrpc Address : ĠNetwork Host And Port ?, ĊĠĠĠĠĠĠĠ Ġ// ĠTODO ĠThis Ġfield Ġis Ġslightly Ġredundant Ġas Ġp 2 p Address Ġis Ġsufficient Ġto Ġhold Ġthe Ġaddress Ġof Ġthe Ġnode 's ĠMQ Ġbroker . ĊĠĠĠĠĠĠĠ Ġ// ĠInstead Ġthis Ġshould Ġbe Ġa ĠBoolean Ġindicating Ġwhether Ġthat Ġbroker Ġis Ġan Ġinternal Ġone Ġstarted Ġby Ġthe Ġnode Ġor Ġan Ġexternal Ġone ĊĠĠĠĠĠĠĠ Ġval Ġmessaging Server Address : ĠNetwork Host And Port ?, ĊĠĠĠĠĠĠĠ Ġval Ġextra Ad vert ised Service Ids : ĠList < String >, ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġb ft SM a Rt : ĠB FT SM a Rt Configuration , ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġnot ary Node Address : ĠNetwork Host And Port ?, ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġnot ary Cluster Addresses : ĠList < Network Host And Port >, ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġcertificate Chain Check Policies : ĠList < Cert Chain Policy Config >, ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġdev Mode : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġval Ġuse Test Clock : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġval Ġdetect Public Ip : ĠBoolean Ġ= Ġtrue Ċ ) Ġ: ĠNode Configuration Ġ{ ĊĠĠĠ Ġ/** ĠThis Ġis Ġnot Ġretrieved Ġfrom Ġthe Ġconfig Ġfile Ġbut Ġrather Ġfrom Ġa Ġcommand Ġline Ġargument . Ġ*/ ĊĠĠĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠĠĠ Ġoverride Ġval Ġbase Directory : ĠPath Ġget () Ġ= Ġbase dir ĊĠĠĠ Ġoverride Ġval Ġexport J MX to : ĠString Ġget () Ġ= Ġ" http " ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠThis Ġis Ġa Ġsanity Ġfeature Ġdo Ġnot Ġremove . ĊĠĠĠĠĠĠĠ Ġrequire (! use Test Clock Ġ|| Ġdev Mode ) Ġ{ Ġ" Cannot Ġuse Ġtest Ġclock Ġoutside Ġof Ġdev Ġmode " Ġ} ĊĠĠĠĠĠĠĠ Ġ// ĠTODO ĠMove Ġthis Ġto ĠArt emis Messaging Server ĊĠĠĠĠĠĠĠ Ġrpc Users . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire ( it . username . matches ("\\ w +". to Regex ())) Ġ{ Ġ" Username Ġ${ it . username } Ġcontains Ġinvalid Ġcharacters " Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcalculate Services (): ĠSet < Service Info > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġadvert ised Services Ġ= Ġextra Ad vert ised Service Ids ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter ( String :: isNotBlank ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĠService Info . parse ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Mutable Set () ĊĠĠĠĠĠĠĠ Ġif Ġ( network Map Service Ġ== Ġnull ) Ġadvert ised Services Ġ+= ĠService Info ( Network Map Service . type ) ĊĠĠĠĠĠĠĠ Ġreturn Ġadvert ised Services ĊĠĠĠ Ġ} Ċ } Ċ Ċ enum Ġclass ĠVer ifier Type Ġ{ ĊĠĠĠ ĠIn Memory , ĊĠĠĠ ĠOut Of Process Ċ } Ċ Ċ enum Ġclass ĠCert Chain Policy Type Ġ{ ĊĠĠĠ ĠAny , ĊĠĠĠ ĠRoot Must Match , ĊĠĠĠ ĠLeaf Must Match , ĊĠĠĠ ĠMust Contain OneOf Ċ } Ċ Ċ data Ġclass ĠCert Chain Policy Config ( val Ġrole : ĠString , Ġval Ġpolicy : ĠCert Chain Policy Type , Ġval Ġtrusted Aliases : ĠSet < String >) Ġ{ ĊĠĠĠ Ġval Ġcertificate Chain Check Policy : ĠCertificate Chain Check Policy Ġget () Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( policy ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCert Chain Policy Type . Any Ġ-> ĠCertificate Chain Check Policy . Any ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCert Chain Policy Type . Root Must Match Ġ-> ĠCertificate Chain Check Policy . Root Must Match ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCert Chain Policy Type . Leaf Must Match Ġ-> ĠCertificate Chain Check Policy . Leaf Must Match ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCert Chain Policy Type . Must Contain OneOf Ġ-> ĠCertificate Chain Check Policy . Must Contain OneOf ( trusted Aliases ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ