{"version":3,"sources":["components/LoaderButton.js","containers/NavBar.js","classes/BaseComponent.js","containers/Signin.js","containers/NotFound.js","components/AppliedRoute.js","containers/Signup.js","containers/SignOut.js","containers/ForgotPassword.js","components/LeftNav.js","classes/spfxdns.js","components/TopNav.js","components/RightNav.js","components/Footer.js","containers/quicksight.js","containers/Dashboard.js","config.js","classes/spfxioapi.js","classes/spfxdata.js","components/domain_dkim.js","containers/domains.js","containers/error.js","containers/profile.js","containers/spfinspector.js","Routes.js","App.js","serviceWorker.js","classes/CacheStorage.js","index.js"],"names":["isLoading","text","loadingText","className","disabled","pIcon","props","Button","Glyphicon","glyph","NavBar","handleLogout","event","a","Auth","signOut","setState","userHasAuthenticated","history","push","state","notes","currentSession","this","alert","isAuthenticating","Navbar","fluid","collapseOnSelect","Collapse","Nav","pullRight","to","NavItem","pullLeft","Component","createHistory","BaseComponent","err","susr","pageaudience","delay","ms","Promise","res","setTimeout","delay1","t","v","resolve","bind","sessioncopied","initiatingcopy","sessionitemcount","sessioncopyeventfired","hprops","window","addEventListener","sessionStorage_transfer","attachEvent","precomponentmounted","Object","keys","sessionStorage","length","allowsessioncopy","localStorage","setItem","removeItem","count","refreshSession","oncomponentmounted","location","href","JSON","stringify","jwtToken","redirecturl","API","put","body","headers","url","_storage","getItem","getsigninurl","idToken","params","refresh","newValue","key","clear","go","data","parse","Login","handleChange","target","id","value","handleSubmit","preventDefault","msg","signIn","email","password","result","user","challengeName","mfatype","showChallengeForm","completesignin","message","handleConfirmationCode","isConfirming","that","usr","code","confirmcode","confirmSignIn","then","catch","e","token","collectchallenge","isConfirmFocused","onSubmit","FormGroup","controlId","bsSize","ControlLabel","FormControl","type","autoFocus","onChange","tabIndex","block","validateForm","class","C","component","cProps","rest","Route","render","Signup","validform","error","signUp","username","attributes","name","newUser","errmsg","handleConfirmationSubmit","confirmSignUp","confirmationCode","confirmLoadingText","confirmPassword","terms","validateEmail","test","String","toLowerCase","HelpBlock","validateConfirmationForm","required","for","renderForm","renderConfirmationForm","Home","signout","showconfirm","forgotPassword","doconfirm","handlePasswordRecoverySubmit","validateRecoverPasswordForm","forgotPasswordSubmit","resetLoadingText","onBlur","renderPasswordRecoveryForm","LeftNav","spfxdns","config","dnsname","isvalidformat","isvalidrecord","isvalidspf","domaintest","pid","epoch","level","datestamp","objecttype","obj","errors","errno","syscall","hostname","spf","records","spfrecord","defaultaction","recordcount","numlookups","numip4","dmarc","action","fo","rua","ruf","valid","getsuggested","fetchspf","spfresult","recommendation","includes","domain","re","RegExp","match","TopNav","dns","txtlookupname","lookupresult","showlookupresult","getspflookup","reject","record","show","title","confirmButtonColor","confirmButtonText","closeOnConfirm","onConfirm","src","alt","role","dolookup","placeholder","data-target","data-toggle","aria-label","aria-expanded","data-dropdown-in","data-dropdown-out","RightNav","htmlFor","Footer","Date","getFullYear","quicksight","prepareredirect","geturl","retval","rel","dashboard","dashboardurl","userinfo","signinurl","getembeddeddashboard","dboardid","undefined","dashboardid","EmbedUrl","hash","s3","REGION","BUCKET","apiGateway","URL","wsendpoint","cognito","USER_POOL_ID","APP_CLIENT_ID","IDENTITY_POOL_ID","spfx","servicedomain","spfxioapi","spfxio_id","spfxdata","hosteddomainid","status","lastUpdated","toLocaleDateString","actions","stats","senders","defaultspfauthpolicy","defaultsourceauditing","enableIpIndexing","getuserdomains","domaindata","getuserorglist","orglist","updateuserprimaryorg","retobj","addhosteddomainpolicy","dmarcpct","adddmarcpolicy","addhosteddomain","addauthorizedsender","adddomainkey","upsertdkimkeys","deleteauthorizedsender","sendingdomain","lookups","getuserdomainsenders","ddata1","sdrs","rec","getaudittrails","ddata","gethosteddomaindnsns","ns","gethosteddomaindns","rxhd","d","exec","Name","uri","CONFIG","payload","sub","WebsocketClient","Domain_DKIM","handleTxtFieldChange","handleSelectChange","st","handleAddDKIM","keyinfo","keyname","txtkeyname","txtkeytype","txtkeyvalue","origsenderset","seldkeys","selectedSender","dkimkeys","origSender","handleSaveKeys","isvalidatingsave","pparams","selectedDomain","authsenderid","spfxd","upsertdomainkeys","handleDeleteRow","k","delkeys","crrdkeys","splice","indexOf","showmodal","showModal","addkeys","closeModal","domainKeys","setuser","domainkeys","oncancel","onclose","concat","map","i","ListGroupItem","onClick","Modal","dialogClassName","onHide","animation","Header","closeButton","Title","Body","options","label","isvalidatinghostedomain","ListGroup","renderDkimKeys","data-dismiss","nextProps","prevState","AWS","update","region","domains","includedomains","setActiveState","handleAddHostedDomain","isvalidatinghosteddomain","txthosteddomain","defaultSpfPolicy","rdoadddomainpolicy","defaultSourceAuditing","rdoadddomainaudit","rdoadddirectipindexing","enableRelayServices","rdoaddenablerelay","enableEmailCapture","rdoaddemailcapture","orgid","dmarcpolicy","dmarcrua","dmarcruf","tstate","showAddHostedDomainModal","hostedZoneId","defaultDmarcPolicy","selecteddomain","selecteddomainsenders","selectedrow","rdodefaultspfauthpolicy","rdosourceauditing","rdoemailcapture","rdoipindexing","rdodefaultdmarcaction","rdoenablerelay","txtrualist","dmarcRua","txtruflist","dmarcRuf","txtdmarcpct","dmarcPct","handleAddAuthorizedSender","isvalidatingsenderecord","vspfx","verifyDomain","txtsendingdomain","vres","validateAddSenderForm","sendingdomains","exists","sd","senderdomain","isinsert","rdoaddpolicy","rdoaddaudit","includehosts","modalmsg","sendingdomaindata","selectedsenderrow","selectedsenderdomain","selecteddomainkeys","handleRdoChange","updateDmarcPolicy","txtdmarcPct","addhosteddomaindmarcpolicy","showalert","updateSenderSettings","cascadeSenderSettings","updatedsenders","errorencountered","sdr","join","closeactivewssubscriptions","wsclient","readyState","OPEN","close","arrmsg","clvmsg","livefeedmessages","unshift","timestamp","getTime","recclass","wsconnectionactive","exportwsmessages","hdr","smtphostdomain","smtphostip","senderaddress","dtout","textField","document","createElement","innerHTML","buildplaintextlivefeed","appendChild","select","execCommand","remove","clearmessages","connectlivefeed","wsisconnecting","connectws","ws","onerror","onopen","send","onmessage","pop","sendertabclick","tab","getdnsrecordsfordomain","dnsdata","setaudittrails","activesendertab","handleAddIncludeDomain","txtincludedomain","isvalidspfrecorddomain","showdomain","rowindex","getauthorizedsenders","sdata","nameservers","getdomainkeynameservers","ssenderdomain","selectedsenderdkimns","showsenderdomain","logout","showAddSenderModal","audittrails","showDkimDomainModal","showconfirmeddeletealert","userrole","readonlyview","usrcreds","openModal","deleteSender","confirmDeleteSender","resetAllSettings","copyDnsToClipboard","copyAuditTrailsToClipboard","getdomainsforuser","currentUserInfo","info","currentCredentials","credentials","Credentials","modaltype","selkeys","sqs","receiveMessage","dnsrecords","dnsrecord","replace","Type","TTL","Value","messages","strret","trails","trail","actiondate","emailaddress","configs","fld","toString","events","row","evt","formatevtplaintextfield","readonlymenu","exportmessages","renderspfupdatemenuitems","renderdmarcmenuitems","renderdkimmenuitems","renderdnsmenuitems","renderaudittrailmenuitems","renderlivefeedmenuitems","renderselecteddomainmenuitems","myincludes","include","dkeys","dkey","header","verifySpf","scope","buildplaintextdnsrecords","buildplaintextaudittrails","selindex","origdomain","nameserver","ResourceRecords","vals","shift","translatespf","translatesourceauditing","translateemailcapture","renderKeys","policy","showCancelButton","onCancel","livefeedcolumns","accessor","renderdomainmenuitems","renderDomains","renderactionmenu","aria","expanded","renderNS","aria-multiselectable","data-parent","checked","defaultChecked","renderSenders","showPagination","columns","defaultPageSize","minRows","SubComponent","original","renderdnsrecords","renderIncludesList","onkeyschanged","cancelDkimSave","getuser","rendersweetalert","renderConfirmDelete","profile","enableSMSAuth","boolin","currentUserPoolUser","bypassCache","enableSMS","setPreferredMFA","disableSMS","mfaerr","enableTOTPAuth","setupTOTP","updateProfile","currentAuthenticatedUser","thismsg","selOrgId","getOrgValue","hasOrgValueChanged","primaryorgid","recordset","affectedRows","uporg","updateUserAttributes","phone","phoneverified","userattributes","phone_number","smsmfaenabledorig","smsmfaenabled","verifyPhone","isverifying","verifyCurrentUserAttribute","verifyCurrentUserAttributeSubmit","verifycode","handleVerifyOTP","isverifyingotp","verifyotp","txtverifyotp","showConfigureOtp","rdomfapreferenceorig","setupotp","totpsecret","rdomfapreference","smserr","showverifycell","country","totpmfaenabled","totpmfaenabledorig","authclass","ddlprimaryorg","tmp","phone_number_verified","getPreferredMFA","mfa","orgs","verifyTotpToken","pe","org","friendlyName","selval","readonly","style","marginTop","paddingTop","data-placeholder","tabindex","selected","getOrgOptions","size","renderAs","includeMargin","spfinspector","removeresultitem","crrresults","spfresults","arrfilters","handleLookup","fetch","cb","objid","spfrecords","confighints","numspfrecords","filter","r","parentrecord","spflookupcount","lookupcount","spflookuperrors","rxmailto","score","grade","renderconfighints","renderspfrecordtree","hints","hint","rootonly","displayrecords","sort","b","lsthost","h","gethostdisplay","index","renderErrors","bsStyle","renderSpfResults","childProps","Switch","AppliedRoute","path","exact","Signin","SignOut","ForgotPassword","NotFound","App","authenticated","isAuthenticated","Routes","withRouter","Boolean","CacheStorage","dataCacheConfig","defaultTTL","itemMaxSize","storage","prstCacheConfig","dataCache","Cache","createInstance","prstCache","prst","c","getAllKeys","includeprst","lrfrsh","prfrsh","Amplify","configure","mandatorySignIn","userPoolId","identityPoolId","userPoolWebClientId","endpoints","endpoint","authenticationFlowType","ReactDOM","getElementById","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.0db5bca3.chunk.js","sourcesContent":["import React from \"react\";\r\nimport { Button, Glyphicon } from \"react-bootstrap\";\r\nimport \"./LoaderButton.css\";\r\n\r\nexport default ({\r\n isLoading,\r\n text,\r\n loadingText,\r\n className = \"\",\r\n disabled = false,\r\n pIcon = \"\",\r\n ...props\r\n}) =>\r\n \r\n {isLoading && }\r\n {!isLoading ? text : loadingText}\r\n {pIcon}\r\n ;","import { Auth } from \"aws-amplify\";\r\nimport React, { Component, Fragment } from \"react\";\r\nimport { LinkContainer } from \"react-router-bootstrap\";\r\nimport { Nav, Navbar, NavItem } from \"react-bootstrap\";\r\n\r\nimport \"./NavBar.css\";\r\n\r\nexport default class NavBar extends Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n\t\tthis.state = {\r\n\t\t isLoading: true,\r\n\t\t notes: []\r\n\t\t};\r\n\t}\r\n \r\n handleLogout = async event => {\r\n\t await Auth.signOut();\r\n\t this.setState({ userHasAuthenticated:false });\r\n\t this.props.history.push(\"/signin\");\r\n\t}\r\n \r\n\tasync componentDidMount() {\r\n\t try {\r\n\t\tawait Auth.currentSession();\r\n\t\tthis.setState({ userHasAuthenticated: true });\r\n\t }\r\n\t catch(e) {\r\n\t\tif (e !== 'No current user') {\r\n\t\t alert(e);\r\n\t\t}\r\n\t }\r\n\r\n\t this.setState({ isAuthenticating: false });\r\n\t}\r\n\t\r\n\r\n\r\n\trender(){\r\n\t\treturn ();\r\n\t}\r\n \r\n\trender1() {\r\n return (\r\n \r\n\t \r\n\t\t\t\r\n\t\t\t{/* Toggle menu options according to user authentication status */}\r\n\t\t\t\t\t{this.state.userHasAuthenticated\r\n\t\t\t\t\t ?\r\n\t\t\t\t\t : \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t }\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t \r\n\t\t \r\n );\r\n }\r\n \r\n \r\n}\r\n\r\n\r\n","import { Auth, API } from \"aws-amplify\";\r\nimport React, { Component, useHistory } from \"react\";\r\nimport { Route, Switch } from \"react-router-dom\";\r\nimport createHistory from 'history/createBrowserHistory'\r\nconst history = createHistory();\r\n\r\n\r\n\r\n\r\nexport default class BaseComponent extends Component {\r\n\tconstructor(props) {\r\n super(props);\r\n \r\n \r\n this.state = {\r\n\t isLoading: true\r\n\t ,notes: []\r\n\t ,err: \"\"\r\n\t ,susr:null\r\n\t \r\n\t \r\n \t};\r\n \r\n \r\n\r\n\r\n this.pageaudience = \"private\"; //property set my inherited pages to deicpher between public/private pages. default to private\r\n \r\n //this.oncomponentmounted = null; //callback used from the componentDidMount function \r\n\r\n \r\n this.delay = ms => new Promise(res => setTimeout(res, ms));\r\n this.delay1 = (async(t, v)=> {\r\n \t return new Promise(function(resolve) { \r\n \t setTimeout(resolve.bind(null, v), t)\r\n \t });\r\n \t});\r\n \r\n this.sessioncopied = false;\r\n this.initiatingcopy=false;\r\n this.sessionitemcount=-1;\r\n this.sessioncopyeventfired=false;\r\n //this.allowsessioncopy=(this.state.allowsessioncopy==false)?false:true;\r\n this.hprops = props;\r\n \r\n // listen for changes to localStorage\r\n if(window.addEventListener) {\r\n window.addEventListener(\"storage\", this.sessionStorage_transfer, false);\r\n } else {\r\n window.attachEvent(\"onstorage\", this.sessionStorage_transfer);\r\n };\r\n\r\n\r\n \r\n \r\n \r\n //while(!this.sessioncopied){\r\n \t//this.delay(1000);\r\n //}\r\n} \r\n \r\n async componentDidMount() {\r\n \r\n\t if(this.precomponentmounted)\r\n\t\t this.precomponentmounted();\r\n\t \r\n\t// Ask other tabs for session storage (this is ONLY to trigger event)\r\n\t \r\n\t if (Object.keys(sessionStorage).length==0 && this.allowsessioncopy()) {\r\n\t \r\n\t this.initiatingcopy = true;\r\n\t localStorage.setItem('getSessionStorage', 'foobar');\r\n\t localStorage.removeItem('getSessionStorage', 'foobar');\r\n\t }/*else{\r\n\t \tlocalStorage.setItem('clearSessionStorage', 'foobar');\r\n\t\t localStorage.removeItem('clearSessionStorage', 'foobar');\r\n\t }*/\r\n\t \r\n\t /*while(!this.sessioncopied){\r\n \tthis.delay(1000);\r\n \talert('delay');\r\n }*/\r\n\t \r\n\t \r\n\t \r\n switch(this.pageaudience){\r\n case \"private\":\r\n try{\r\n //let susr = Auth.currentAuthenticatedUser();\r\n //alert('checking current session');\r\n var count=0;\r\n if(Object.keys(sessionStorage).length == 0){\r\n\t while((!this.sessioncopyeventfired && count< 10) && (this.sessionitemcount != Object.keys(sessionStorage).length)){\r\n\t \t await this.delay1(100);\r\n\t \t \r\n\t \t count++;\r\n\t }\r\n }\r\n let susr = await Auth.currentSession();\r\n //if(Auth._storage.getItem(\"ActiveSession\",true) && susr){\r\n if(susr){\r\n \tthis.refreshSession();\r\n \tthis.setState({susr:susr});\r\n \t\r\n if(this.oncomponentmounted){\r\n this.oncomponentmounted(susr);\r\n }\r\n }else{\r\n this.props.history.push(\"/signout\");\r\n }\r\n\r\n\r\n }catch(e){\r\n \r\n \r\n (e === 'No current user' || e === 'not authenticated')\t\t \r\n ? (this.props.history)?this.props.history.push(\"/signin\"):window.location.href=\"/signin\"\r\n : alert(JSON.stringify(e));//this.props.history.push(\"/error\");\r\n }\r\n\r\n break;\r\n case \"public\":\r\n this.oncomponentmounted();\r\n break;\r\n default:\r\n this.setState({\"err\":\"invalid page audience. check the value of this.pageaudience\"});\r\n alert(JSON.stringify('invalid page audience'));//this.props.history.push(\"/error\");\r\n break;\r\n }\r\n }\r\n \r\n \r\n \r\n getsigninurl(jwtToken, redirecturl){\r\n\t \r\n\t return API.put('getsigninurl', '/getsigninurl', { body:{ \"jwtToken\" : jwtToken, \"redirect_url\":redirecturl},headers:{}});\r\n }\r\n \r\n async doqsauth(susr){\r\n\t\r\n\t var url=null;\r\n\t if(!(Auth._storage.getItem(\"QuicksightActive_9997\",true))){\r\n url = await this.getsigninurl(susr.idToken.jwtToken,'https://us-east-1.quicksight.aws.amazon.com/sn/start');\r\n Auth._storage.setItem(\"QuicksightActive_9997\",true)\r\n }\r\n\t return url;\r\n\r\n }\r\n \r\n setActiveState(params){\r\n\t this.refreshSession();\r\n\t this.setState(params);\r\n }\r\n \r\n refreshSession(){\r\n\t Auth._storage.refresh(true);\r\n }\r\n \r\n preventsessioncopy(){\r\n\t \r\n\t this.setState({allowsessioncopy:false})\r\n\t \r\n\t \r\n };\r\n \r\n allowsessioncopy(){\r\n\t return true;\r\n };\r\n oncomponentmounted(susr){\r\n\t return false;\r\n };\r\n \r\n sessionStorage_transfer(event) {\r\n\t // transfers sessionStorage from one tab to another\r\n\t \r\n if(!event) { event = window.event; } // ie suq\r\n if(!event.newValue) {\r\n \t //alert('no values');\r\n \t return; // do nothing if no value to work with\r\n }\r\n if (event.key == 'getSessionStorage') {\r\n // another tab asked for the sessionStorage -> send it\r\n \t //alert(JSON.stringify(sessionStorage));\r\n localStorage.setItem('sessionStorage', JSON.stringify(sessionStorage));\r\n // the other tab should now have it, so we're done with it.\r\n localStorage.removeItem('sessionStorage'); // <- could do short timeout as well.\r\n } else if (event.key == 'sessionStorage' && !sessionStorage.length) {\r\n // another tab sent data <- get it\r\n var data = JSON.parse(event.newValue);\r\n this.sessionitemcount = data.length;\r\n for (var key in data) {\r\n sessionStorage.setItem(key, data[key]);\r\n }\r\n }else if (event.key == 'clearSessionStorage'){\r\n \t sessionStorage.clear();\r\n \t history.go(0)\r\n }\r\n //alert('copied storage');\r\n this.sessioncopied = true;\r\n this.initiatingcopy = false;\r\n this.sessioncopyeventfired=true;\r\n };\r\n \r\n \r\n}\r\n\r\n\r\n\r\n","import { Auth } from \"aws-amplify\";\r\n\r\nimport { FormGroup, FormControl, ControlLabel } from \"react-bootstrap\";\r\nimport LoaderButton from \"../components/LoaderButton\";\r\nimport React, { Component } from \"react\";\r\nimport NavBar from \"./NavBar\";\r\nimport \"../dist/css/style.css\";\r\nimport \"./Signin.css\";\r\nimport BaseComponent from \"../classes/BaseComponent\"\r\n\r\n\r\n\r\n\r\n\r\nexport default class Login extends BaseComponent {\r\n constructor(props) {\r\n super(props);\r\n \r\n this.pageaudience=\"public\";\r\n\r\n\tthis.state = {\r\n email: \"\"\r\n ,password: \"\"\r\n\t ,isLoading: false\r\n ,token: \"\"\r\n ,msg:\"\"\r\n ,collectchallenge:false\r\n ,confirmcode:\"\"\r\n ,isConfirming: false\r\n ,user:null\r\n ,isConfirmFocused:false\r\n ,mfatype:null\r\n };\r\n \r\n this.oncomponentmounted = async (susr)=> {\r\n //do stuff\r\n \r\n };\r\n}\r\n \r\n\r\n validateForm() {\r\n return this.state.email.length > 0 && this.state.password.length > 0;\r\n }\r\n\r\n handleChange = event => {\r\n this.setState({\r\n [event.target.id]: event.target.value\r\n });\r\n }\r\n\r\n handleSubmit = async event => {\r\n\t event.preventDefault();\r\n\r\n\t this.setState({ isLoading: true, msg:'' });\r\n\t \r\n\t try {\r\n var result = await Auth.signIn(this.state.email, this.state.password);\r\n this.setState({user:result});\r\n this.props.userHasAuthenticated(true);\r\n Auth._storage.setItem(\"ActiveSession\",true,true);\r\n \r\n switch(result.challengeName){\r\n case \"SMS_MFA\":\r\n //challengeParam\r\n //Auth.confirmSignIn(result,code)\r\n \r\n this.setState({ isLoading: false, mfatype:result.challengeName });\r\n this.showChallengeForm();\r\n\r\n break;\r\n case \"SOFTWARE_TOKEN_MFA\":\r\n \tthis.setState({ isLoading: false, mfatype:result.challengeName });\r\n this.showChallengeForm();\r\n break;\r\n default:\r\n \tthis.completesignin();\r\n break;\r\n }\r\n \r\n\t } catch (e) {\r\n\t\t\r\n\t\tthis.setState({ isLoading: false, msg: e.message}) ;\r\n\t }\r\n\t}\r\n\r\n handleConfirmationCode = async event =>{\r\n event.preventDefault();\r\n this.setState({ isConfirming: true});\r\n \r\n try {\r\n \r\n var that = this;\r\n \r\n var usr = this.state.user;\r\n var code = this.state.confirmcode;\r\n var mfatype = this.state.mfatype;\r\n \r\n Auth.confirmSignIn(usr,code,mfatype).then(result=>{\r\n \r\n that.completesignin()\r\n\r\n }).catch(function(e){\r\n that.setState({msg:'Failed confirming signin' + e.message})\r\n });\r\n \r\n \r\n\t } catch (e) {\r\n this.setState({ isConfirming: false,msg:e.message });\r\n }\r\n \r\n this.setState({ isConfirming: false} );\r\n\r\n }\r\n\r\n showChallengeForm(){\r\n\r\n this.setState({collectchallenge:true,isConfirmFocused:true});\r\n \r\n }\r\n\r\n completesignin(){\r\n\r\n this.props.userHasAuthenticated(true);\r\n Auth._storage.setItem(\"ActiveSession\",true,true);\r\n \r\n this.setState({ isLoading: false });\r\n this.props.history.push(\"/dashboard\");\r\n \r\n }\r\n\r\n render() {\r\n return (\r\n\t\t
\r\n\t\t\t \r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n \t
\r\n \t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t

Sign in

\r\n\t\t\t\t\t\t\t\t\t\t\t
Enter your details below
\r\n\t\t\t\t\t\t\t\t\t\t
\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n
\r\n \t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t\t\t\t\t\tOne Time Pass Code\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n
\r\n\t\t\t\t\t\t\t\t\t\t
\r\n \t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t\t\t\t\t\tEmail\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t\t\t\t\t\tPassword\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tforgot password ?\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\t\r\n\t\t\t\t\t\t\t\t\t
\r\n\t {this.state.msg}\r\n\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n );\r\n }\r\n}","import React, {Fragment} from \"react\";\r\nimport \"./NotFound.css\";\r\nimport \"../dist/css/style.css\";\r\nimport NavBar from \"./NavBar\";\r\n\r\nexport default () =>\r\n\r\n\r\n
\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t404\r\n\t\t\t\t\t\t\t\t\tPage Not Found\r\n\t\t\t\t\t\t\t\t\t

The URL may be misplaced or the pahe you are looking is no longer available.

\r\n\t\t\t\t\t\t\t\t
\t\r\n\t\t\t\t\t\t\t
\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n
\r\n\r\n","import React from \"react\";\r\nimport { Route } from \"react-router-dom\";\r\n\r\nexport default ({ component: C, props: cProps, ...rest }) =>\r\n } />;","import { Auth } from \"aws-amplify\";\r\nimport React, { Component, Fragment } from \"react\";\r\nimport {\r\n HelpBlock,\r\n FormGroup,\r\n FormControl,\r\n ControlLabel,\r\n Label\r\n} from \"react-bootstrap\";\r\nimport { Input } from 'reactstrap';\r\nimport LoaderButton from \"../components/LoaderButton\"\r\nimport BaseComponent from \"../classes/BaseComponent\"\r\n\r\nimport NavBar from \"./NavBar\";\r\nimport \"../css/style.css\";\r\nimport \"./Signup.css\";\r\n\r\nexport default class Signup extends BaseComponent {\r\n constructor(props) {\r\n super(props);\r\n this.pageaudience=\"public\";\r\n \r\n this.state = {\r\n isLoading: false\r\n\t , name: \"\"\r\n , email: \"\"\r\n , password: \"\"\r\n , confirmPassword: \"\"\r\n , confirmationCode: \"\"\r\n\t , terms: \"\"\r\n , newUser: null\r\n , validform:false\r\n , errmsg: ''\r\n , confirmLoadingText: 'Verifying'\r\n\r\n };\r\n\r\n this.oncomponentmounted = async (susr)=> {\r\n \r\n };\r\n\r\n\r\n }\r\n\r\n validateForm() {\r\n \r\n\r\n return (\r\n\t this.state.name.length > 0 &&\r\n this.validateEmail(this.state.email) &&\r\n\t this.state.terms.length > 0 &&\r\n this.state.password.length > 0 &&\r\n this.state.password === this.state.confirmPassword\r\n );\r\n }\r\n\r\n validateEmail(email) {\r\n var re = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n return re.test(String(email).toLowerCase());\r\n }\r\n\r\n validateConfirmationForm() {\r\n return this.state.confirmationCode.length > 0;\r\n }\r\n\r\n handleChange = async event => {\r\n\r\n await this.setState({\r\n [event.target.id]: event.target.value\r\n });\r\n\r\n if(this.validateForm()){\r\n \r\n this.setState({\r\n validform:true\r\n })\r\n }\r\n }\r\n\r\n handleSubmit = async event => {\r\n event.preventDefault();\r\n this.setState({ isLoading: true });\r\n\tvar error = '';\r\n try {\r\n\t\tconst newUser = await Auth.signUp({\r\n\t\t username: this.state.email,\r\n\t\t password: this.state.password,\r\n\t\t attributes: {\r\n\t\t\tname: this.state.name \r\n\t\t }\r\n\t\t \r\n\t\t});\r\n\t\tthis.setState({\r\n\t\t newUser\r\n\t\t});\r\n\t } catch (e) {\r\n switch(e.code){\r\n case \"UsernameExistsException\":\r\n error = 'Error encountered. Verify your details and try again. If you already have an account, but have forgotten the password, use the forgot password link.';\r\n break;\r\n case \"InvalidParameterException\":\r\n error = 'Please choose a stronger password.';\r\n break;\r\n default:\r\n error = JSON.stringify(e);\r\n break;\r\n }\r\n \r\n\t }\r\n\r\n this.setState({ errmsg:error, isLoading: false });\r\n }\r\n\r\n handleConfirmationSubmit = async event => {\r\n event.preventDefault();\r\n\r\n this.setState({ isLoading: true });\r\n\t try {\r\n\t\tawait Auth.confirmSignUp(this.state.email, this.state.confirmationCode);\r\n this.setState({confirmLoadingText: \"Initiating Sign in\"});\r\n await Auth.signIn(this.state.email, this.state.password);\r\n Auth._storage.setItem(\"ActiveSession\",true,true);\r\n this.setState({ isLoading: false });\r\n this.props.history.push(\"/dashboard\");\r\n\r\n \r\n \r\n \r\n\t } catch (e) {\r\n\t\tthis.setState({ errmsg:e,isLoading: false });\r\n\t }\r\n\t \r\n }\r\n\r\n renderConfirmationForm() {\r\n return (\r\n
\r\n \r\n Confirmation Code\r\n \r\n Please check your email for the code.\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n renderForm() {\r\n return (\r\n\t\r\n\t\r\n\t
\r\n\t\t

Sign Up

\r\n\t\t
{(this.state.errmsg!=='')?this.state.errmsg:'Enter your details below to create an account.'}
\r\n\t
\r\n\t
\r\n
\r\n\t \r\n Full Name\r\n \r\n \r\n \r\n Email\r\n \r\n \r\n \r\n Password\r\n \r\n \r\n \r\n Confirm Password\r\n \r\n \r\n\r\n\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n
\r\n\t\t\t\t\t\t\r\n\t\t
\r\n\t\t\t\r\n\t\t
\t\t\t\t\t\t\r\n \r\n
\r\n\t \r\n\t
\r\n\t
\r\n );\r\n }\r\n \r\n \r\n\r\n \r\n render(){\r\n\t return (\r\n\t \r\n\t \r\n\t \r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tthis.state.newUser === null\r\n\t\t\t\t\t\t\t\t\t\t ? this.renderForm()\r\n\t\t\t\t\t\t\t\t\t\t : this.renderConfirmationForm()\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
\t\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\t\r\n\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\r\n\t
);\r\n }\r\n \r\n}","import { Auth } from \"aws-amplify\";\r\nimport React, { Component } from \"react\";\r\nimport BaseComponent from \"../classes/BaseComponent\"\r\n\r\n\r\nimport NavBar from \"./NavBar\";\r\n\r\nimport \"../dist/css/style.css\";\r\n\r\nexport default class Home extends BaseComponent {\r\n\tconstructor(props) {\r\n super(props);\r\n \r\n\r\n //this.preventsessioncopy();\r\n this.allowsessioncopy=()=>{\r\n \treturn false;\r\n }\r\n \r\n \r\n this.state = {\r\n \t\t\r\n \t\t\r\n isLoading: true\r\n , allowsessioncopy:false\r\n , notes: []\r\n \r\n \r\n \r\n };\r\n\t\r\n this.oncomponentmounted=(susr)=>{\r\n \tlocalStorage.setItem('clearSessionStorage', 'foobar');\r\n\t localStorage.removeItem('clearSessionStorage', 'foobar');\r\n \tthis.signout();\r\n }\r\n\t\r\n \r\n\t\r\n }\r\n \r\n async signout(){\r\n Auth._storage.setItem(\"ActiveSession\",false,true);\r\n await Auth.signOut(); \r\n Auth._storage.clear();\r\n\tthis.setState({ userHasAuthenticated:false });\r\n\tthis.props.history.push(\"/signin\");\r\n }\r\n \r\n render() {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n \r\n \r\n}","import { Auth } from \"aws-amplify\";\r\nimport React, { Component, Fragment } from \"react\";\r\nimport {\r\n HelpBlock,\r\n FormGroup,\r\n FormControl,\r\n ControlLabel,\r\n Label\r\n} from \"react-bootstrap\";\r\nimport { Input } from 'reactstrap';\r\nimport LoaderButton from \"../components/LoaderButton\"\r\nimport BaseComponent from \"../classes/BaseComponent\"\r\n\r\nimport NavBar from \"./NavBar\";\r\nimport \"../css/style.css\";\r\nimport \"./Signup.css\";\r\n\r\nexport default class Signup extends BaseComponent {\r\n constructor(props) {\r\n super(props);\r\n this.pageaudience=\"public\";\r\n \r\n this.state = {\r\n isLoading: false\r\n\t , name: \"\"\r\n , email: \"\"\r\n , password: \"\"\r\n , confirmPassword: \"\"\r\n , confirmationCode: \"\"\r\n\t , terms: \"\"\r\n , newUser: null\r\n , validform:false\r\n , errmsg: ''\r\n , doconfirm: false\r\n , resetLoadingText: \"Completing reset...\"\r\n\r\n };\r\n\r\n this.oncomponentmounted = async (susr)=> {\r\n \r\n };\r\n\r\n\r\n }\r\n\r\n validateForm() {\r\n \r\n return (\r\n\t this.validateEmail(this.state.email)\r\n );\r\n }\r\n\r\n validateEmail(email) {\r\n var re = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n return re.test(String(email).toLowerCase());\r\n }\r\n\r\n validateRecoverPasswordForm() {\r\n return (this.state.confirmationCode.length > 0 &&\r\n this.state.password.length > 0 &&\r\n this.state.password === this.state.confirmPassword\r\n )\r\n }\r\n\r\n handleChange = async event => {\r\n\r\n await this.setState({\r\n [event.target.id]: event.target.value\r\n });\r\n\r\n if(this.validateForm()){\r\n \r\n this.setState({\r\n validform:true\r\n })\r\n }\r\n }\r\n\r\n handleSubmit = async event => {\r\n event.preventDefault();\r\n this.setState({ isLoading: true });\r\n var error = '';\r\n var showconfirm = false;\r\n try {\r\n\t\t\r\n var reset = await Auth.forgotPassword(this.state.email);\r\n showconfirm = true;\r\n \t\r\n\t } catch (e) {\r\n switch(e.code){\r\n case \"UsernameExistsException\":\r\n error = 'Error encountered. Verify your details and try again. If you already have an account, but have forgotten the password, use the forgot password link.';\r\n break;\r\n case \"InvalidParameterException\":\r\n error = 'Please choose a stronger password.';\r\n break;\r\n case \"UserNotFoundException\":\r\n error = 'Verify your email address and try again.';\r\n break;\r\n default:\r\n error = JSON.stringify(e);\r\n break;\r\n }\r\n \r\n\t }\r\n\r\n this.setState({ errmsg:error, isLoading: false, doconfirm:showconfirm });\r\n }\r\n\r\n handleConfirmationSubmit = async event => {\r\n event.preventDefault();\r\n\r\n this.setState({ isLoading: true });\r\n\t try {\r\n\t\tawait Auth.confirmSignUp(this.state.email, this.state.confirmationCode);\r\n\t\tawait Auth.signIn(this.state.email, this.state.password);\r\n\r\n\t\tthis.props.userHasAuthenticated(true);\r\n\t\tthis.props.history.push(\"/\");\r\n\t } catch (e) {\r\n\t\tthis.setState({ errmsg:e,isLoading: false });\r\n\t }\r\n\t \r\n }\r\n \r\n handlePasswordRecoverySubmit = async event => {\r\n event.preventDefault();\r\n var error='';\r\n if(this.validateRecoverPasswordForm()){\r\n this.setState({ isLoading: true });\r\n try {\r\n\r\n await Auth.forgotPasswordSubmit(this.state.email, this.state.confirmationCode, this.state.password);\r\n this.setState({resetLoadingText: \"Initiating Sign in...\"});\r\n await Auth.signIn(this.state.email, this.state.password);\r\n\r\n Auth._storage.setItem(\"ActiveSession\",true,true);\r\n \r\n this.setState({ isLoading: false });\r\n this.props.history.push(\"/dashboard\");\r\n } catch (e) {\r\n switch(e){\r\n case \"InvalidParameterException\":\r\n error='Please enter a stronger password';\r\n break;\r\n default:\r\n error=JSON.stringify(e);\r\n break;\r\n }\r\n this.setState({ errmsg: error,isLoading: false });\r\n }\r\n }\r\n\t \r\n }\r\n\r\n renderPasswordRecoveryForm() {\r\n return (\r\n \r\n
\r\n

Forgot Password

\r\n
{(this.state.errmsg!=='')?this.state.errmsg:'Check your inbox for a password reset confirmation code.'}
\r\n
\r\n
\r\n
\r\n \r\n Confirmation Code\r\n \r\n Please check your email for the code.\r\n \r\n \r\n Password\r\n \r\n \r\n \r\n \r\n Confirm Password\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n\r\n renderConfirmationForm() {\r\n return (\r\n \r\n
\r\n

Confirm Your Account

\r\n
{(this.state.errmsg!=='')?this.state.errmsg:'Check your inbox for your confirmation code and enter below to signin.'}
\r\n
\r\n
\r\n
\r\n \r\n Confirmation Code\r\n \r\n Please check your email for the code.\r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n\r\n renderForm() {\r\n return (\r\n\t\r\n\t\r\n\t
\r\n\t\t

Forgot Password

\r\n\t\t
{(this.state.errmsg!=='')?this.state.errmsg:'Enter your email address below and select the Reset Password button..'}
\r\n\t
\r\n\t
\r\n
\r\n\t \r\n \r\n Email\r\n \r\n \r\n \r\n \t\t\t\t\r\n\t\t
\r\n\t\t\t\r\n\t\t
\t\t\t\t\t\t\r\n \r\n
\r\n\t \r\n\t
\r\n\t
\r\n );\r\n }\r\n \r\n \r\n\r\n \r\n render(){\r\n\t return (\r\n\t \r\n\t \r\n\t \r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t(this.state.newUser === null)\r\n ? !(this.state.doconfirm)\r\n ?this.renderForm()\r\n :this.renderPasswordRecoveryForm()\r\n\t\t\t\t\t\t\t\t\t\t : this.renderConfirmationForm()\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
\t\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\t\r\n\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\r\n\t
);\r\n }\r\n \r\n}","import { Auth } from \"aws-amplify\";\r\nimport React, { Component } from \"react\";\r\n\r\n\r\nexport default class LeftNav extends Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n\t\tthis.state = {\r\n\t\t isLoading: true,\r\n\t\t notes: []\r\n\t\t};\r\n\t}\r\n \r\n handleLogout = async event => {\r\n\t await Auth.signOut();\r\n\t this.setState({ userHasAuthenticated:false });\r\n\t this.props.history.push(\"/signin\");\r\n\t}\r\n \r\n\tasync componentDidMount() {\r\n\t try {\r\n\t\tawait Auth.currentSession();\r\n\t\tthis.setState({ userHasAuthenticated: true });\r\n\t }\r\n\t catch(e) {\r\n\t\tif (e !== 'No current user') {\r\n\t\t alert(e);\r\n\t\t}\r\n\t }\r\n\r\n\t this.setState({ isAuthenticating: false });\r\n\t}\r\n\t\r\n\r\n\r\n\r\nrender(){\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t
    \r\n\t\t\t\t\t

  • \r\n\t\t\t\t\t
  • \r\n\t\t\t\t\t\tReporting \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
  • \r\n\t\t\t\t\t
  • \r\n\t\t\t\t\t\t
    dMARC dashboard
    \r\n\t\t\t\t\t
  • \r\n\t\t\t\t\t
  • \r\n\t\t\t\t\t\t
    sPF dashboard
    \r\n\t\t\t\t\t
  • \r\n\t\t\t\t\t
  • \r\n\t\t\t\t\t\t
    Sender Analysis
    \r\n\t\t\t\t\t
  • \r\n\t\t\t\t\r\n\t\t\t\t

  • \r\n\t\t\t\t
  • \r\n\t\t\t\t\tConfiguration \r\n\t\t\t\t\t\r\n\t\t\t\t
  • \r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t{/*
  • \r\n\t\t\t\t\t
    Risk Advisor
    \r\n\t\t\t\t
  • \r\n\t\t\t\t
  • \r\n\t\t\t\t\t
    Reporting
    \r\n
  • */}\r\n\t\t\t\t\r\n\t\t\t\t
  • \r\n\t\t\t\t\t
    Policy Manager
    \r\n\t\t\t\t
  • \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t

  • \r\n\t\t\t\t
  • \r\n\t\t\t\t\tTools \r\n\t\t\t\t\t\r\n\t\t\t\t
  • \r\n\t\t\t\t
  • \r\n\t\t\t\t\t
    Domain Inspector
    \r\n\t\t\t\t
  • \r\n {/*
  • \r\n\t\t\t\t\t
    DKIM Validator
    \r\n\t\t\t\t
  • \r\n
  • \r\n\t\t\t\t\t
    DMARC Builder
    \r\n\t\t\t\t
  • \r\n\t\t\t\t

  • \r\n\t\t\t\t
  • \r\n\t\t\t\t\taccount management \r\n\t\t\t\t\t\r\n\t\t\t\t
  • \r\n
  • \r\n\t\t\t\t\t
    Access Control
    \r\n\t\t\t\t\t
      \r\n\t\t\t\t\t\t
    • \r\n\t\t\t\t\t\t\tAccount Policies\r\n\t\t\t\t\t\t
    • \r\n\t\t\t\t\t\t
    • \r\n\t\t\t\t\t\t\tUser Roles\r\n\t\t\t\t\t\t
    • \r\n\t\t\t\t\t\t
    • \r\n\t\t\t\t\t\t\tIdentity Federation\r\n\t\t\t\t\t\t
    • \r\n\t\t\t\t\t\t
    • \r\n\t\t\t\t\t\t\tAPI Keys\r\n\t\t\t\t\t\t
    • \r\n\t\t\t\t\t
    \r\n\t\t\t\t
  • \r\n\t\t\t\t\r\n\t\t\t\t
  • \r\n\t\t\t\t\t
    Billing
    \r\n\t\t\t\t
  • \r\n\t\t\t\t
  • \r\n\t\t\t\t\t
    Support
    \r\n\t\t\t\t
  • \r\n\t\t\t\t
  • \r\n\t\t\t\t\t
    FAQ
    \r\n\t\t\t\t
  • \r\n */}\r\n\t\t\t
\r\n\t\t
\r\n\t\t);\r\n\r\n}\r\n\r\n\r\n}","/** @class */\r\n\r\nimport { Auth, API } from \"aws-amplify\";\r\n\r\nexport default class spfxdns {\r\n\r\n /**\r\n * Constructs a new spfxdns object\r\n * @param {object} config spfxdns config options \r\n */\r\n constructor(config) {\r\n \r\n var localConfig = (config)?config:{\r\n defaultTTL: (20*60) * 1000 //default 20 minutes set in millisconds\r\n ,itemMaxSize: 3000 // 3000 bytes\r\n };\r\n }\r\n\r\n /**\r\n * This is used to verify a valid spf record\r\n * @param {string} dnsname - Domain name to be checked\r\n */\r\n async verifySpf(dnsname) {\r\n\r\n var result = {\r\n isvalidformat: (this.isvalidformat(dnsname) &&\r\n true)\r\n , isvalidrecord: true\r\n , isvalidspf: true\r\n , domaintest : {\r\n pid :\"df53a80fe90c67b6d3c1ea68980be837\"\r\n , epoch:1550608545242\r\n , level:\"info\"\r\n , datestamp:\"2019-02-19T20:35:45.242Z\"\r\n , message:\"_spf.google.com\"\r\n , objecttype:\"object\"\r\n , obj :{errors:[\r\n []\r\n ,{errno:\"ENOTFOUND\"\r\n ,code:\"ENOTFOUND\"\r\n ,syscall:\"queryTxt\"\r\n ,hostname:\"_dmarc._spf.google.com\"}]\r\n ,spf:{records:[\r\n {spfrecord:\"v=spf1 include:_netblocks.google.com include:_netblocks2.google.com include:_netblocks3.google.com ~all\"\r\n , defaultaction:\"softfail\"\r\n , hostname :\"_spf.google.com\"}]\r\n ,recordcount:1\r\n ,defaultaction:\"softfail\"\r\n ,numlookups:3\r\n ,numip4:322778}\r\n ,dmarc:{action:\"\",fo:\"\",rua:\"\",ruf:\"\"}\r\n } \r\n }\r\n }\r\n\r\n result.valid = (result.isvalidformat\r\n &&result.isvalidrecord\r\n &&result.isvalidspf);\r\n\r\n return(result)\r\n\r\n }\r\n\r\n async verifyDomain(dnsname,getsuggested){\r\n\r\n var result = {\r\n isvalidformat: (this.isvalidformat(dnsname))\r\n , isvalidrecord: true\r\n , isvalidspf: true\r\n }\r\n\r\n \r\n if(result.isvalidformat){\r\n result.spfresult = await this.fetchspf(dnsname);\r\n \r\n return result;\r\n }else{\r\n return result;\r\n }\r\n }\r\n\r\n \r\n fetchspf(dnsname){\r\n\t \r\n\t return API.put('getspfrecord', '/getspfrecord', { body:{ \"dnsname\" : dnsname},headers:{}});\r\n\t \r\n }\r\n\r\n \r\n\r\n \r\n\r\n\r\n\r\n async verifyDomain1(dnsname,getsuggested){\r\n var result = {\r\n isvalidformat: (this.isvalidformat(dnsname) &&\r\n true)\r\n , isvalidrecord: true\r\n , isvalidspf: true\r\n }\r\n\r\n result.valid = (result.isvalidformat\r\n &&result.isvalidrecord)\r\n\r\n if(getsuggested&&result.isvalidrecord){\r\n //recommend SPF record for domain\r\n //if only one include, recommend the one include.\r\n //if more than one include, recommend the record itself\r\n\r\n result.recommendation = {\r\n includes : ['_spf.google.com']\r\n }\r\n\r\n }\r\n \r\n \r\n\r\n return(result)\r\n }\r\n\r\n \r\n\r\n isvalidformat(domain) { \r\n var re = new RegExp(/^((?:(?:(?:\\w[\\.\\-\\+]?)*)\\w)+)((?:(?:(?:\\w[\\.\\-\\+]?){0,62})\\w)+)\\.(\\w{2,6})$/); \r\n if(domain.match(re)){\r\n \treturn true;\r\n }else{\r\n \treturn false;\r\n }\r\n } \r\n\r\n\r\n\r\n}","import { Auth } from \"aws-amplify\";\r\nimport React, { Component } from \"react\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport spfxdns from \"../classes/spfxdns.js\"\r\n\r\nimport SweetAlert from 'sweetalert-react';\r\n\r\n\r\nimport \"../css/style.css\";\r\n\r\nexport default class TopNav extends Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n\t\t\r\n\r\n\t this.dns = new spfxdns();\r\n\t \r\n\t \r\n\t\tthis.state = {\r\n\t\t isLoading: true,\r\n\t\t txtlookupname:'',\r\n\t\t lookupresult:'',\r\n\t\t showlookupresult:false,\r\n\t\t notes: []\r\n\t\t};\r\n\t\t\r\n\t}\r\n \r\n handleLogout = async event => {\r\n\t await Auth.signOut();\r\n\t this.setState({ userHasAuthenticated:false });\r\n\t this.props.history.push(\"/signin\");\r\n\t}\r\n \r\n\tasync componentDidMount() {\r\n\t try {\r\n\t\tawait Auth.currentSession();\r\n\t\tthis.setState({ userHasAuthenticated: true });\r\n\t }\r\n\t catch(e) {\r\n\t\tif (e !== 'No current user') {\r\n\t\t alert(e);\r\n\t\t}\r\n\t }\r\n\r\n\t this.setState({ isAuthenticating: false });\r\n\t}\r\n\t\r\n\t\r\nasync dolookup(e){\r\n\t //onClick={(e) => this.handleVerifyOTP(e)} \r\n\t e.preventDefault();\r\n\t let spf = await this.getspflookup(this.state.txtlookupname);\r\n\t this.setState({lookupresult:spf,showlookupresult:true});\r\n\t \r\n\t\r\n}\r\n\r\nasync getspflookup (domain){\r\n\treturn new Promise((resolve,reject)=>{\r\n\t\tthis.dns.fetchspf(domain).then((data)=>{\r\n\t\t\t let spf= '';\r\n\t\t\t \r\n\t\t\t if(data){\r\n\t\t\t \r\n\t\t\t\t\tspf = data.spf[0].record; \r\n\t\t\t }\r\n\t\t\t resolve(spf);\r\n\t\t }).catch((err)=>{\r\n\t\t\t reject(err);\r\n\t\t })\r\n\t})\r\n\t\r\n}\r\n\r\nhandleChange = event => {\r\n this.setState({\r\n [event.target.id]: event.target.value\r\n });\r\n }\r\n\r\n\r\n\r\nrender(){\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\r\n\t\t \r\n\t\t);\r\n\r\n}\r\n\r\n\r\n}","import { Auth } from \"aws-amplify\";\r\nimport React, { Component, Fragment } from \"react\";\r\n\r\n\r\nexport default class RightNav extends Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n\t\tthis.state = {\r\n\t\t isLoading: true,\r\n\t\t notes: []\r\n\t\t};\r\n\t}\r\n \r\n handleLogout = async event => {\r\n\t await Auth.signOut();\r\n\t this.setState({ userHasAuthenticated:false });\r\n\t this.props.history.push(\"/signin\");\r\n\t}\r\n \r\n\tasync componentDidMount() {\r\n\t try {\r\n\t\tawait Auth.currentSession();\r\n\t\tthis.setState({ userHasAuthenticated: true });\r\n\t }\r\n\t catch(e) {\r\n\t\tif (e !== 'No current user') {\r\n\t\t alert(e);\r\n\t\t}\r\n\t }\r\n\r\n\t this.setState({ isAuthenticating: false });\r\n\t}\r\n\t\r\n\r\n\r\n\r\nrender(){\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t\t);\r\n\r\n}\r\n\r\n\r\n}","import { Auth } from \"aws-amplify\";\r\nimport React, { Component } from \"react\";\r\n\r\nexport default class Footer extends Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n\t\tthis.state = {\r\n\t\t isLoading: true,\r\n\t\t notes: []\r\n\t\t};\r\n\t}\r\n \r\n handleLogout = async event => {\r\n\t await Auth.signOut();\r\n\t this.setState({ userHasAuthenticated:false });\r\n\t this.props.history.push(\"/signin\");\r\n\t}\r\n \r\n\tasync componentDidMount() {\r\n\t try {\r\n\t\tawait Auth.currentSession();\r\n\t\tthis.setState({ userHasAuthenticated: true });\r\n\t }\r\n\t catch(e) {\r\n\t\tif (e !== 'No current user') {\r\n\t\t alert(e);\r\n\t\t}\r\n\t }\r\n\r\n\t this.setState({ isAuthenticating: false });\r\n\t}\r\n\t\r\n\r\n\r\n\r\nrender(){\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t

{ (new Date()).getFullYear() } ©DiMichele Cyber Strategies, Inc.

\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t);\r\n\r\n}\r\n\r\n\r\n}","import React, { Fragment } from \"react\";\r\nimport { Auth, API } from \"aws-amplify\";\r\n\r\nimport \"./quicksight.css\";\r\n\r\nimport LeftNav from \"../components/LeftNav\"\r\nimport TopNav from \"../components/TopNav\"\r\nimport RightNav from \"../components/RightNav\"\r\nimport Footer from \"../components/Footer\"\r\nimport BaseComponent from \"../classes/BaseComponent\"\r\n\r\n\r\n\r\nexport default class quicksight extends BaseComponent {\r\n constructor(props) {\r\n super(props);\r\n \r\n this.state = {\r\n isLoading: null\r\n , redirecturl: \"\"\r\n , msg:\"\"\r\n };\r\n \r\n this.oncomponentmounted = (susr)=> {\r\n //this.setState({\"msg\":\"page loaded\"});\r\n this.prepareredirect(susr);\r\n \r\n };\r\n\t\r\n\t\r\n }\r\n\r\n \r\n async prepareredirect(susr){\r\n try{\r\n var retval = await this.geturl(susr.idToken.jwtToken,'https://us-east-1.quicksight.aws.amazon.com/sn/start');\r\n this.setState({\"redirecturl\":retval});\r\n //var win = window.open(retval, '_blank');\r\n //win.focus();\r\n }catch(e){\r\n this.setState(\"error encountered during redirect. aborting.\");\r\n }\r\n }\r\n \r\n \r\n geturl(jwtToken, redirecturl){\r\n \r\n return API.put('getsigninurl', '/getsigninurl', { body:{ \"jwtToken\" : jwtToken, \"redirect_url\":redirecturl},headers:{}});\r\n }\r\n \r\n \r\n\t\r\n \r\n render(){\r\n \r\n\t\r\n \r\n\t return (\r\n \r\n\t\t\t\t\r\n \t\t\t\r\n\t\t\t\t\r\n {/**/}\r\n
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{/**/}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
Reporting
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n {/**/}\r\n
\r\n \t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t
Reporting
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t
\r\n
\r\n You are being redirected to the reporting platform. If you are not redirected, use the link below to access.\r\n \r\n Reports \r\n
\r\n
\r\n {this.state.msg}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n\t\t\t\t\t
\r\n \r\n\t\t\t\t{/**/}\r\n\t\t
\r\n\t\t
\r\n\t );\r\n\t \r\n }\r\n \r\n \r\n}","//import { Auth } from \"aws-amplify\";\r\nimport { Auth, API } from \"aws-amplify\";\r\nimport React, { Fragment } from \"react\";\r\nimport LeftNav from \"../components/LeftNav\"\r\nimport TopNav from \"../components/TopNav\"\r\nimport RightNav from \"../components/RightNav\"\r\nimport Footer from \"../components/Footer\"\r\nimport BaseComponent from \"../classes/BaseComponent\"\r\n\r\nimport AWS from \"aws-sdk\";\r\nimport https from \"https\";\r\n\r\nimport \"./dashboard.css\"\r\n\r\n\r\nexport default class dashboard extends BaseComponent {\r\n\tconstructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n isLoading: true\r\n , msg: ''\r\n , dashboardurl: null\r\n , userinfo:''\r\n , signinurl: null\r\n };\r\n \r\n\r\n this.oncomponentmounted = (susr)=> {\r\n this.setState({\"msg\":\"page loaded\"});\r\n\r\n //this.showuserinfo(susr);\r\n this.getembeddeddashboard(susr);\r\n };\r\n\r\n \r\n}\r\n\r\nasync showuserinfo(susr){\r\n try{\r\n this.setState({userinfo:JSON.stringify(susr.idToken)});\r\n }catch(e){\r\n this.setState(\"error encountered during redirect. aborting.\");\r\n }\r\n }\r\n\r\n\r\nasync getembeddeddashboard(susr){\r\n try{\r\n \t\r\n \r\n //var retsigninUrl = await this.getsigninurl(susr.idToken.jwtToken,'https://us-east-1.quicksight.aws.amazon.com/sn/start');\r\n /*var retsigninUrl = await this.doqsauth(susr);\r\n if(retsigninUrl){\r\n \tthis.setState({signinurl:retsigninUrl});\r\n }*/\r\n \r\n //set the default dashboard ID.\r\n var dboardid = 'ac2da67c-d5da-4902-b81b-8a2c3bf2af5f';\r\n \r\n if(this.props.match.params.dashboardid!=undefined){\r\n \tdboardid = this.props.match.params.dashboardid\r\n \t\r\n \t\r\n }\r\n \r\n var retval = await this.geturl(susr.idToken.jwtToken,dboardid);\r\n if(retval.EmbedUrl){\r\n this.setState({dashboardurl:retval.EmbedUrl+this.props.location.hash});\r\n }else{\r\n \talert(retval);\r\n }\r\n \r\n //var win = window.open(retval, '_blank');\r\n //win.focus();\r\n }catch(e){\r\n \talert('error encountered')\r\n \talert(e);\r\n this.setState({msg:\"error encountered during redirect. aborting.\"});\r\n }\r\n }\r\n \r\n \r\ngeturl(jwtToken, dashboardid){\r\n //dashboardid\\\":\\\"ac2da67c-d5da-4902-b81b-8a2c3bf2af5f\r\n return API.put('getembeddeddashboard', '/getembeddeddashboard', { body:{ \"jwtToken\" : jwtToken, \"dashboardid\":dashboardid},headers:{}});\r\n}\r\n\r\ngetsigninurl(jwtToken, redirecturl){\r\n \r\n return API.put('getsigninurl', '/getsigninurl', { body:{ \"jwtToken\" : jwtToken, \"redirect_url\":redirecturl},headers:{}});\r\n}\r\n\r\n\r\nrender() {\r\n \r\n return (\r\n\t\t\t\r\n\t\t\t\t\r\n \t\t\t\r\n\t\t\t\t\r\n
\r\n \r\n\t\t\t\t\t{/* */} \r\n\t\t\t\t
\r\n\t\t\t\r\n\t\t\t
\r\n
\r\n\t\t\r\n );\r\n }\r\n \r\n \r\n}","export default {\r\n \r\n s3: {\r\n REGION: \"us-east-1\",\r\n BUCKET: \"\"\r\n },\r\n apiGateway: {\r\n REGION: \"us-east-1\",\r\n URL: \" https://api.spfxio.com/prod\"\r\n },\r\n wsendpoint: \"wss://ws.spfxio.com/prod\",\r\n cognito: {\r\n REGION: \"us-east-1\",\r\n USER_POOL_ID: \"us-east-1_N9XknslwZ\",\r\n APP_CLIENT_ID: \"513a2rrkok318n0cm3mar8ue0k\",\r\n IDENTITY_POOL_ID: \"us-east-1:af2d860b-fd75-4f20-b1d9-1f2f96dc1205\"\r\n },\r\n spfx:{\r\n\t servicedomain : \"spfx.io\"\r\n }\r\n};\r\n\r\n//https://api.spfxio.com/prod","import { Auth, API } from \"aws-amplify\";\r\n\r\n/** @class */\r\nexport default class spfxioapi {\r\n\r\n /**\r\n * Constructs a new spfxioapi object\r\n * @param {object} config spfxdata config options \r\n */\r\n constructor(susr) {\r\n this.susr = susr;\r\n\r\n }\r\n\r\n async addauthorizedsender(params)\r\n {\r\n\t params.jwtToken = this.susr.idToken.jwtToken;\r\n\t var body = {};\r\n\t body.jwtToken = params.jwtToken;\r\n\t body.spfx = params.spfx;\r\n\t \r\n\t return API.put('addauthorizedsender', '/addauthorizedsender', { body: params, headers:{}});\r\n\t \r\n }\r\n \r\n async adddomainkey(params)\r\n {\r\n\t \r\n\t return new Promise((resolve,reject)=>{\r\n\t\t try{\r\n\t\t params.jwtToken = this.susr.idToken.jwtToken;\r\n\t\t var body = {};\r\n\t\t body.jwtToken = params.jwtToken;\r\n\t\t body.spfx = params.spfx;\r\n\t\t\t \r\n\t\t \tvar res = API.put('adddomainkey', '/adddomainkey', { body: params, headers:{}}) ;\r\n\t\t \tresolve(res);\r\n\t\t }catch(err){\r\n\t\t\t reject(err);\r\n\t\t } \r\n\t\t \r\n\t });\r\n\t\t \r\n\t \r\n\t \r\n }\r\n \r\n async upsertdkimkeys(params)\r\n {\r\n\t \r\n\t return new Promise((resolve,reject)=>{\r\n\t\t try{\r\n\t\t params.jwtToken = this.susr.idToken.jwtToken;\r\n\t\t var body = {};\r\n\t\t body.jwtToken = params.jwtToken;\r\n\t\t body.spfx = params.spfx;\r\n\t\t\t \r\n\t\t \tvar res = API.put('upsertdkimkeys', '/upsertdkimkeys', { body: params, headers:{}}) ;\r\n\t\t \tresolve(res);\r\n\t\t }catch(err){\r\n\t\t\t reject(err);\r\n\t\t } \r\n\t\t \r\n\t });\r\n\t\t \r\n\t \r\n\t \r\n }\r\n \r\n async addhosteddomainpolicy(params)\r\n {\r\n\t params.jwtToken = this.susr.idToken.jwtToken;\r\n\t var body = {};\r\n\t body.jwtToken = params.jwtToken;\r\n\t body.spfx = params.spfx;\r\n\t \r\n\t return API.put('addhosteddomainpolicy', '/addhosteddomainpolicy', { body: params, headers:{}});\r\n\t \r\n }\r\n \r\n async adddmarcpolicy(params)\r\n {\r\n\t params.jwtToken = this.susr.idToken.jwtToken;\r\n\t var body = {};\r\n\t body.jwtToken = params.jwtToken;\r\n\t body.spfx = params.spfx;\r\n\t \r\n\t return API.put('adddmarcpolicy', '/adddmarcpolicy', { body: params, headers:{}});\r\n\t \r\n }\r\n \r\n async addhosteddomain(params){\r\n\t params.jwtToken = this.susr.idToken.jwtToken;\r\n\t return API.put('addhosteddomain', '/addhosteddomain', { body: params, headers:{}});\r\n }\r\n \r\n \r\n \r\n async getuserdomains(){\r\n\t return API.put('getuserdomains', '/getuserdomains', { body:{ \"jwtToken\" : this.susr.idToken.jwtToken},headers:{}});\r\n }\r\n \r\n async getuserorglist(){\r\n\t \r\n\t return new Promise((resolve,reject)=>{\r\n\t\t try{\r\n\t\t\tvar body = {};\r\n\t\t\tbody.jwtToken = this.susr.idToken.jwtToken;\r\n\t\t\tvar res = API.put('getuserorglist', '/getuserorglist', { body:body,headers:{}});\r\n\t\t \r\n\t\t \t resolve(res);\r\n\t\t }catch(err){\r\n\t\t\t reject(err);\r\n\t\t } \r\n\t\t \r\n\t });\r\n\t \r\n }\r\n \r\n async updateuserprimaryorg(params){\r\n\t \r\n\t return new Promise((resolve,reject)=>{\r\n\t\t try{\r\n\t\t\t \r\n\t\t\t var body = {};\r\n\t\t\t\tbody.jwtToken = this.susr.idToken.jwtToken;\r\n\t\t\t\tbody.spfx = params.spfx;\r\n\t\t\t\tvar res = API.put('updateuserprimaryorg', '/updateuserprimaryorg', { body:body,headers:{}});\r\n\t\t\t \r\n\t\t\t \t resolve(res);\r\n\t\t }catch(err){\r\n\t\t\t reject(err);\r\n\t\t } \r\n\t })\r\n }\r\n \r\n \r\n async getuserdomainsenders(){\r\n\t return API.put('getuserdomainsenders', '/getuserdomainsenders', { body:{ \"jwtToken\" : this.susr.idToken.jwtToken},headers:{}});\r\n }\r\n \r\n async gethosteddomaindns(spfxio_id){\r\n\t return API.put('gethosteddomaindns', '/gethosteddomaindns', { body:{ \"jwtToken\" : this.susr.idToken.jwtToken, \"spfxio_id\" : spfxio_id},headers:{}});\r\n }\r\n \r\n async gethosteddomaindnsns(spfxio_id,hostname){\r\n\t return API.put('gethosteddomaindnsns', '/gethosteddomaindnsns', { body:{ \"jwtToken\" : this.susr.idToken.jwtToken, \"spfxio_id\" : spfxio_id, \"hostname\" : hostname},headers:{}});\r\n }\r\n \r\n \r\n\r\n async getaudittrails(spfxio_id){\r\n\t return API.put('getaudittrails', '/getaudittrails', { body:{ \"jwtToken\" : this.susr.idToken.jwtToken, \"spfxio_id\" : spfxio_id},headers:{}});\r\n }\r\n \r\n \r\n \r\n async deleteauthorizedsender(params)\r\n {\r\n\t params.jwtToken = this.susr.idToken.jwtToken;\r\n\t var body = {};\r\n\t body.jwtToken = params.jwtToken;\r\n\t body.spfx = params.spfx;\r\n\t \r\n\t return API.put('deleteauthorizedsender', '/deleteauthorizedsender', { body: params, headers:{}});\r\n }\r\n \r\n \r\n \r\n\r\n}","import { Auth, API } from \"aws-amplify\";\r\nimport spfxioapi from \"./spfxioapi\";\r\nimport { w3cwebsocket as WebsocketClient } from \"websocket\";\r\nimport CONFIG from \"../config.js\";\r\n\r\n/** @class */\r\nexport default class spfxdata {\r\n\r\n /**\r\n * Constructs a new spfxdata object\r\n * @param {object} config spfxdata config options \r\n */\r\n constructor(config) {\r\n var localConfig = (config)?config:{\r\n defaultTTL: (20*60) * 1000 //default 20 minutes set in millisconds\r\n ,itemMaxSize: 3000 // 3000 bytes\r\n };\r\n \r\n \r\n\r\n \r\n this.delay = ms => new Promise(res => setTimeout(res, ms)); \r\n }\r\n\r\n \r\n setuser(susr){\r\n\t //this.susr=susr;\r\n\t this.spfxioapi = new spfxioapi(susr);\r\n }\r\n \r\n getuser(){\r\n\t \r\n\t //this.susr=susr;\r\n\treturn (this.spfxioapi)?this.spfxioapi.susr:undefined;\r\n }\r\n /**\r\n * This is used to verify a valid spf record\r\n * @param {string} dnsname - Domain name to be checked\r\n */\r\n async dodata(dnsname) {\r\n\r\n var result = {\r\n isvalidformat: (this.isvalidformat(dnsname) &&\r\n true)\r\n , isvalidrecord: true\r\n , isvalidspf: true\r\n }\r\n\r\n result.valid = (result.isvalidformat\r\n &&result.isvalidrecord\r\n &&result.isvalidspf);\r\n\r\n return(result)\r\n\r\n }\r\n\r\n getdomaindatamodel(){\r\n return ({ domain: ''\r\n , hosteddomainid: ''\r\n , status: ''\r\n , dmarc: ''\r\n , spf: ''\r\n , lastUpdated: new Date().toLocaleDateString()\r\n , actions: ''\r\n , stats: []\r\n , senders: -1\r\n , key: -1\r\n , defaultspfauthpolicy:''\r\n , defaultsourceauditing:''\r\n , enableIpIndexing:''\r\n });\r\n }\r\n \r\n async getdomainsforuser(){\r\n \r\n try{\r\n \t var domaindata = await this.spfxioapi.getuserdomains();\r\n \t return (domaindata);\r\n\t }catch(err){\r\n\t\t alert(err);\r\n\t\t return \"\";\r\n\t }\r\n\t \r\n }\r\n async getuserorglist(){\r\n\t \r\n try{\r\n \t var orglist = await this.spfxioapi.getuserorglist();\r\n \t return (orglist);\r\n\t }catch(err){\r\n\t\t var obj = { error : err };\r\n\t\t return obj;\r\n\t }\r\n }\r\n async updateuserprimaryorg(params){\r\n\t try{\r\n \t var retval = await this.spfxioapi.updateuserprimaryorg(params);\r\n \t return retval;\r\n\t }catch(err){\r\n\t\t var obj = { error : err };\r\n\t\t return obj;\r\n\t }\r\n }\r\n \r\n async getuserprivileges(){\r\n\t \r\n\t //return ({ role: \"READONLY\" });\r\n\t return ({ role: \"WRITE\" });\r\n }\r\n \r\n async addhosteddomainpolicy(params){\r\n\t var retobj = {};\r\n\t \r\n\t try{\r\n\t var domaindata = await this.spfxioapi.addhosteddomainpolicy(params);\r\n \t return (domaindata);\r\n\t }catch(err){\r\n\t\t\t retobj.err = JSON.stringify(err);\r\n\t }\r\n\t \r\n\t return retobj;\r\n }\r\n async addhosteddomaindmarcpolicy(params){\r\n\t \r\n\t return new Promise(async(resolve,reject)=>{\r\n\t\t \r\n\t\t try{\r\n\t\t\t params.spfx.dmarcpct=params.spfx.dmarcpct/100.0;\r\n\t\t var domaindata = await this.spfxioapi.adddmarcpolicy(params);\r\n\t \t resolve (domaindata);\r\n\t\t }catch(err){\r\n\t\t\t \r\n\t\t\t reject(err);\r\n\t\t }\r\n\t\t \r\n\t });\r\n\t \r\n }\r\n async addhosteddomain(params){\r\n\t var retobj = {};\r\n\t try{\r\n\t\t params.spfx.dmarcpct=params.spfx/100.0;\r\n\t\t var domaindata = await this.spfxioapi.addhosteddomain(params);\r\n\t \t retobj.data = domaindata;\r\n\t }catch(err){\r\n\t\t //alert(JSON.stringify(err));\r\n\t\t retobj.err = \"error adding domain\";\r\n\t }\r\n\t return retobj;\r\n\t \r\n }\r\n \r\n async addauthorizedsender(params){\r\n\t var retobj = {};\r\n\t try{\r\n \t var domaindata = await this.spfxioapi.addauthorizedsender(params);\r\n \t retobj.data = domaindata;\r\n\t }catch(err){\r\n\t\t retobj.err = \"error processing your request\";\r\n\t }\r\n\t return retobj;\r\n }\r\n \r\n \r\n async adddomainkey(params){\r\n\t var retobj = {};\r\n\t\t \r\n\t return new Promise((resolve,reject)=>{\r\n\t \t \ttry{\r\n\t\t \t var domaindata = this.spfxioapi.adddomainkey(params);\r\n\t\t \t resolve(domaindata);\r\n\t\t\t }catch(err){\r\n\t\t\t\t reject(err);\r\n\t\t\t } \r\n\t })\r\n\t\t \r\n\t\t \r\n }\r\n \r\n async upsertdomainkeys(params){\r\n\t \r\n\t \r\n\t \r\n\t var retobj = {};\r\n\t\t \r\n\t return new Promise((resolve,reject)=>{\r\n\t \t \ttry{\r\n\t\t \t var keydata = this.spfxioapi.upsertdkimkeys(params);\r\n\t\t \t resolve(keydata);\r\n\t\t\t }catch(err){\r\n\t\t\t\t reject(err);\r\n\t\t\t } \r\n\t })\r\n }\r\n \r\n \r\n async deleteauthorizedsender(params){\r\n\t var retobj = {};\r\n\t try{\r\n \t var domaindata = await this.spfxioapi.deleteauthorizedsender(params);\r\n \t retobj.data = domaindata;\r\n\t }catch(err){\r\n\t\t retobj.err = err;\r\n\t }\r\n\t return retobj;\r\n }\r\n async getauthorizedsenders(hosteddomainid){\r\n \r\n //await this.delay(2500);\r\n var ddata = [{ hosteddomainid: 'xxxxxx1'\r\n , domain: 'domain1.com'\r\n , sendingdomain: 'google.com'\r\n , includes: ['_spf.google.com','_spf1.google.com']\r\n , defaultaction: 'softfail'\r\n , lookups: 3\r\n , key:1\r\n },\r\n { hosteddomainid: 'xxxxxx1'\r\n , domain: 'domain1.com'\r\n , sendingdomain: 'notgoogle.com'\r\n , includes: ['_spf.notgoogle.com','_spf1.notgoogle.com']\r\n , defaultaction: 'softfail'\r\n , lookups: 2\r\n , key:2\r\n }\r\n ,\r\n { hosteddomainid: 'xxxxxx1'\r\n , domain: 'domain1.com'\r\n , sendingdomain: 'spfxio.com'\r\n , includes: ['_spf.notgoogle.com','_spf1.notgoogle.com']\r\n , defaultaction: 'softfail'\r\n , lookups: 2\r\n , key:2\r\n }\r\n ];\r\n //var ddata1 = JSON.parse('[{\\\"domain\\\":\\\"dcssm.com\\\",\\\"spfxio_id\\\":\\\"oxfdx6b\\\",\\\"emailaddress\\\":\\\"tony.dimichele@dcssm.com\\\",\\\"hosteddomainid\\\":1,\\\"domain_defaultSpfPolicy\\\":\\\"-\\\",\\\"domain_defaultSourceAuditing\\\":1,\\\"senders\\\":[{\\\"hosteddomainid\\\":1,\\\"authsenderid\\\":1,\\\"senderdomain\\\":\\\"amazonses.com\\\",\\\"defaultSpfPolicy\\\":\\\"-\\\",\\\"defaultSourceAuditing\\\":1,\\\"includes\\\":[\\\"amazonses.com\\\"]},{\\\"hosteddomainid\\\":1,\\\"authsenderid\\\":2,\\\"senderdomain\\\":\\\"dmarcdepot.com\\\",\\\"defaultSpfPolicy\\\":\\\"-\\\",\\\"defaultSourceAuditing\\\":1,\\\"includes\\\":[\\\"_spf.dmarcdepot.com\\\"]},{\\\"hosteddomainid\\\":1,\\\"authsenderid\\\":3,\\\"senderdomain\\\":\\\"outlook.com\\\",\\\"defaultSpfPolicy\\\":\\\"-\\\",\\\"defaultSourceAuditing\\\":1,\\\"includes\\\":[\\\"spf.protection.outlook.com\\\"]},{\\\"hosteddomainid\\\":1,\\\"authsenderid\\\":4,\\\"senderdomain\\\":\\\"mailgun.info\\\",\\\"defaultSpfPolicy\\\":\\\"-\\\",\\\"defaultSourceAuditing\\\":1,\\\"includes\\\":[\\\"mailgun.org\\\"]}]},{\\\"domain\\\":\\\"investorsbank.com\\\",\\\"spfxio_id\\\":\\\"622470e\\\",\\\"emailaddress\\\":\\\"tony.dimichele@dcssm.com\\\",\\\"hosteddomainid\\\":2,\\\"domain_defaultSpfPolicy\\\":\\\"-\\\",\\\"domain_defaultSourceAuditing\\\":1,\\\"senders\\\":[{\\\"hosteddomainid\\\":2,\\\"authsenderid\\\":5,\\\"senderdomain\\\":\\\"bankserv.com\\\",\\\"defaultSpfPolicy\\\":\\\"-\\\",\\\"defaultSourceAuditing\\\":1,\\\"includes\\\":[\\\"bankserv.com\\\"]},{\\\"hosteddomainid\\\":2,\\\"authsenderid\\\":6,\\\"senderdomain\\\":\\\"cashedge.com\\\",\\\"defaultSpfPolicy\\\":\\\"-\\\",\\\"defaultSourceAuditing\\\":1,\\\"includes\\\":[\\\"customercenter.net\\\"]},{\\\"hosteddomainid\\\":2,\\\"authsenderid\\\":7,\\\"senderdomain\\\":\\\"mandrillapp.com\\\",\\\"defaultSpfPolicy\\\":\\\"-\\\",\\\"defaultSourceAuditing\\\":1,\\\"includes\\\":[\\\"spf.mandrillapp.com\\\"]},{\\\"hosteddomainid\\\":2,\\\"authsenderid\\\":9,\\\"senderdomain\\\":\\\"outlook.com\\\",\\\"defaultSpfPolicy\\\":\\\"-\\\",\\\"defaultSourceAuditing\\\":1,\\\"includes\\\":[\\\"spf.protection.outlook.com\\\"]},{\\\"hosteddomainid\\\":2,\\\"authsenderid\\\":10,\\\"senderdomain\\\":\\\"pphosted.com\\\",\\\"defaultSpfPolicy\\\":\\\"-\\\",\\\"defaultSourceAuditing\\\":1,\\\"includes\\\":[\\\"spf-00286d01.pphosted.com\\\"]},{\\\"hosteddomainid\\\":2,\\\"authsenderid\\\":11,\\\"senderdomain\\\":\\\"salesforce.com\\\",\\\"defaultSpfPolicy\\\":\\\"-\\\",\\\"defaultSourceAuditing\\\":1,\\\"includes\\\":[\\\"_spf.salesforce.com\\\"]},{\\\"hosteddomainid\\\":2,\\\"authsenderid\\\":12,\\\"senderdomain\\\":\\\"mailgun.info\\\",\\\"defaultSpfPolicy\\\":\\\"-\\\",\\\"defaultSourceAuditing\\\":1,\\\"includes\\\":[\\\"mailgun.org\\\"]},{\\\"hosteddomainid\\\":2,\\\"authsenderid\\\":13,\\\"senderdomain\\\":\\\"btbpo.net\\\",\\\"defaultSpfPolicy\\\":\\\"-\\\",\\\"defaultSourceAuditing\\\":1,\\\"includes\\\":[\\\"_spf.btbpo.net\\\"]},{\\\"hosteddomainid\\\":2,\\\"authsenderid\\\":14,\\\"senderdomain\\\":\\\"customercenter.net\\\",\\\"defaultSpfPolicy\\\":\\\"-\\\",\\\"defaultSourceAuditing\\\":1,\\\"includes\\\":[\\\"customercenter\\\"]},{\\\"hosteddomainid\\\":2,\\\"authsenderid\\\":15,\\\"senderdomain\\\":\\\"emailnotify.net\\\",\\\"defaultSpfPolicy\\\":\\\"-\\\",\\\"defaultSourceAuditing\\\":1,\\\"includes\\\":[\\\"emailnotify.net\\\"]},{\\\"hosteddomainid\\\":2,\\\"authsenderid\\\":16,\\\"senderdomain\\\":\\\"mailgun.net\\\",\\\"defaultSpfPolicy\\\":\\\"-\\\",\\\"defaultSourceAuditing\\\":1,\\\"includes\\\":[\\\"mailgun.org\\\"]},{\\\"hosteddomainid\\\":2,\\\"authsenderid\\\":17,\\\"senderdomain\\\":\\\"mbox.net\\\",\\\"defaultSpfPolicy\\\":\\\"-\\\",\\\"defaultSourceAuditing\\\":1,\\\"includes\\\":[\\\"mbox.net\\\"]},{\\\"hosteddomainid\\\":2,\\\"authsenderid\\\":18,\\\"senderdomain\\\":\\\"sendgrid.net\\\",\\\"defaultSpfPolicy\\\":\\\"-\\\",\\\"defaultSourceAuditing\\\":1,\\\"includes\\\":[\\\"sendgrid.net\\\"]}]},{\\\"domain\\\":\\\"gaffline.com\\\",\\\"spfxio_id\\\":null,\\\"emailaddress\\\":\\\"tony.dimichele@dcssm.com\\\",\\\"hosteddomainid\\\":null,\\\"domain_defaultSpfPolicy\\\":null,\\\"domain_defaultSourceAuditing\\\":null,\\\"senders\\\":[]},{\\\"domain\\\":\\\"myinvestorsbank.com\\\",\\\"spfxio_id\\\":null,\\\"emailaddress\\\":\\\"tony.dimichele@dcssm.com\\\",\\\"hosteddomainid\\\":null,\\\"domain_defaultSpfPolicy\\\":null,\\\"domain_defaultSourceAuditing\\\":null,\\\"senders\\\":[]},{\\\"domain\\\":\\\"irongatecr.com\\\",\\\"spfxio_id\\\":null,\\\"emailaddress\\\":\\\"tony.dimichele@dcssm.com\\\",\\\"hosteddomainid\\\":null,\\\"domain_defaultSpfPolicy\\\":null,\\\"domain_defaultSourceAuditing\\\":null,\\\"senders\\\":[]},{\\\"domain\\\":\\\"barawakmachining.com\\\",\\\"spfxio_id\\\":\\\"4vbj1ps\\\",\\\"emailaddress\\\":\\\"tony.dimichele@dcssm.com\\\",\\\"hosteddomainid\\\":null,\\\"domain_defaultSpfPolicy\\\":null,\\\"domain_defaultSourceAuditing\\\":null,\\\"senders\\\":[]},{\\\"domain\\\":\\\"saavha.com\\\",\\\"spfxio_id\\\":\\\"w2h9yng\\\",\\\"emailaddress\\\":\\\"tony.dimichele@dcssm.com\\\",\\\"hosteddomainid\\\":null,\\\"domain_defaultSpfPolicy\\\":null,\\\"domain_defaultSourceAuditing\\\":null,\\\"senders\\\":[]},{\\\"domain\\\":\\\"saavah.com\\\",\\\"spfxio_id\\\":\\\"8bj965a\\\",\\\"emailaddress\\\":\\\"tony.dimichele@dcssm.com\\\",\\\"hosteddomainid\\\":null,\\\"domain_defaultSpfPolicy\\\":null,\\\"domain_defaultSourceAuditing\\\":null,\\\"senders\\\":[]}]'); \r\n \r\n var ddata1 = await this.spfxioapi.getuserdomainsenders();\r\n \r\n var sdrs=null\r\n for(let rec of ddata1){\r\n \t if(rec.spfxio_id==hosteddomainid){\r\n \t\t \r\n \t\t sdrs = rec.senders;\r\n \t }\r\n }\r\n \r\n return (sdrs);\r\n \r\n }\r\n\r\n async getaudittrails(spfxio_id){\r\n\t \r\n\t try\r\n\t {\r\n\t\t var ddata = await this.spfxioapi.getaudittrails(spfxio_id);\r\n\t\t return ddata;\r\n\t\t \r\n\t }catch(err){\r\n\t\t alert(err)\r\n\t\t return '';\r\n\t }\r\n\t \r\n }\r\n \r\n\r\nasync getdomainkeynameservers(spfxio_id){\r\n\t return new Promise(async (resolve,reject)=>{\r\n\t\t \r\n\t\t\t this.spfxioapi.gethosteddomaindnsns(spfxio_id,\"_domainkey\").then((ns)=>{\r\n\t\t\t\t resolve(ns);\r\n\t\t\t }).catch((err)=>{\r\n\t\t\t\t reject(err);\r\n\t\t\t });\r\n\t\t\t \r\n\t });\r\n}\r\n \r\nasync getdnsrecordsfordomain(spfxio_id){\r\n\t \r\n\t return new Promise(async (resolve,reject)=>{\r\n\t\t \r\n\t\t try\r\n\t\t {\r\n\t\t\t var ddata1 = await this.spfxioapi.gethosteddomaindns(spfxio_id);\r\n\t\t\t //alert(JSON.stringify(ddata1));\r\n\t\t\t \r\n\t\t\t var retval = [];\r\n\t\t\t var rxhd = new RegExp(spfxio_id+'\\.spfx\\.((io)|(info))\\.?$');\r\n\t\t\t \r\n\t\t for(let d of ddata1){\r\n\t\t \t if(rxhd.exec(d.Name)){\r\n\t\t \t\t retval.push(d);;\r\n\t\t \t }\r\n\t\t }\r\n\t\t \r\n\t\t\t resolve(retval);\r\n\t\t }catch(err){\r\n\t\t\t reject(err);\r\n\t\t }\r\n\t });\r\n\t \r\n }\r\n \r\n \r\n async connectws(){\r\n\t \r\n\t \r\n\t \r\n\t return new Promise( (resolve,reject)=>{\r\n\t\t \r\n\t try{\r\n\t\t //region,userpoolid,usersub\r\n\t\t const wsendpoint = CONFIG.wsendpoint//'wss://wahjzx27c3.execute-api.us-east-1.amazonaws.com/dev';\r\n\t\t const event='';\r\n\t\t const uri = `${wsendpoint}?connectionType=${event}&Authorizer=${this.spfxioapi.susr.idToken.jwtToken}&usersub=${this.spfxioapi.susr.idToken.payload.sub}`;\r\n\t\t const client = new WebsocketClient(uri);\r\n\t\t resolve(client)\r\n\t\t \r\n\t }catch(err){\r\n\t\t reject(err); \r\n\t }\r\n\t\t /*\r\n\t client.on('connectFailed', (error) => {\r\n\t\t client.abort();\r\n\t\t reject(uri);\r\n\t\t});\r\n\t\tclient.on('connect', (connection) => {\r\n\t\t resolve(connection);\r\n\t\t});\r\n\t\t\r\n\t */\r\n\t \r\n\t });\r\n }\r\n \r\n \r\n /* async apihosteddnsrecords(spfxio_id){\r\n\t var jwtToken = this.susr.idToken.jwtToken\r\n\t \r\n\t return API.put('gethosteddomaindns', '/gethosteddomaindns', { body:{ \"jwtToken\" : jwtToken, \"spfxio_id\" : spfxio_id},headers:{}});\r\n }*/\r\n \r\n \r\n /*\r\n async getdomaindata(hosteddomainid){\r\n\r\n var ddata = \r\n { \r\n hosteddomainid: 'xxxxxx1'\r\n , domain: 'domain1.com'\r\n , defaultpolicy: 'fail'\r\n , sourceauditing: 'enabled'\r\n }\r\n //await this.delay(2500);\r\n \r\n return ddata;\r\n }\r\n\t*/\r\n\r\n\r\n\r\n\r\n}","import { Auth } from \"aws-amplify\";\r\nimport React, { Component, Fragment } from \"react\";\r\nimport { FormGroup, FormControl, ListGroup, ListGroupItem, Modal, Radio} from \"react-bootstrap\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport Select from 'react-select';\r\nimport BaseComponent from \"../classes/BaseComponent\"\r\n\r\nimport SweetAlert from 'sweetalert-react';\r\n\r\nimport spfxdata from \"../classes/spfxdata\"\r\n\r\nimport LoaderButton from \"../components/LoaderButton\"\r\n\r\nimport \"../css/style.css\";\r\n\r\n\r\nexport default class Domain_DKIM extends BaseComponent {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n\t\t\t \r\n\t\tthis.state = {\r\n\t\t isLoading: true\r\n\t\t , txtkeyname:''\r\n\t\t , txtkeytype:''\r\n\t\t , txtkeyvalue:''\r\n\t\t , showmodal:this.props.showModal\r\n\t\t , msg: this.props.msg\r\n\t\t , isvalidatingsave:false\r\n\t\t , origSender:[]\r\n\t\t , selectedSender:{}\r\n\t\t , origsenderset:false\r\n\t\t , addkeys:[]\r\n\t\t , delkeys:[]\r\n\t\t \r\n\t\t \r\n\t\t};\r\n\t\t\r\n\t\tthis.spfxd = new spfxdata();\r\n\t\t\r\n\t\t\r\n \tthis.closeModal = this.closeModal.bind(this);\r\n \r\n\r\n\r\n\tthis.oncomponentmounted = async (susr)=> {\r\n \r\n this.setState( { domainKeys : this.props.selectedSender.dkimkeys } );\r\n \r\n this.spfxd.setuser(susr);\r\n \r\n\t\t\r\n\t} \r\n\t \r\n \t\r\n}\r\n//-----------------------------------------------------------------------------------------------------------------------------\r\nstatic getDerivedStateFromProps(nextProps, prevState) {\r\n if (prevState.selectedSender !== nextProps.selectedSender) {\r\n return { selectedSender: nextProps.selectedSender };\r\n }\r\n \r\n return null;\r\n }\r\n\r\n \t\r\n \r\n//-----------------------------------------------------------------------------------------------------------------------------\r\nhandleChange = event => {\r\n this.setState({\r\n [event.target.id]: event.target.value\r\n });\r\n }\r\n//-----------------------------------------------------------------------------------------------------------------------------\r\ncloseModal(){\r\n\t\r\n\t\t\r\n\t\tthis.setState({\r\n\t\t txtkeyname:''\r\n\t\t , txtkeytype:''\r\n\t\t , txtkeyvalue:''\r\n\t\t , msg:''\r\n\t\t , domainkeys:[]\r\n\t\t , origsenderset:false\r\n\t\t , origSender:{}\r\n\t\t})\r\n\t\t\r\n\t\tif(this.state.origsenderset){\r\n\t\t\tthis.props.oncancel(this.state.origSender);\r\n\t\t}else{\r\n\t\t\tthis.props.oncancel(this.props.selectedSender)\r\n\t\t}\r\n\t\t\r\n\t\tthis.props.onclose();\r\n}\r\n\r\n//-----------------------------------------------------------------------------------------------------------------------------\r\n handleTxtFieldChange = event => {\r\n this.setState({\r\n [event.target.id]: event.target.value\r\n });\r\n }\r\n//----------------------------------------------------------------------------------------------------------------------------- \r\nhandleSelectChange = (event,id) =>{\r\n\r\n\tvar st = {};\r\n\tst[id]=event.value;\r\n\tthis.setState(st);\r\n} \r\n//-----------------------------------------------------------------------------------------------------------------------------\r\n\r\nhandleAddDKIM = async (event) =>{\r\n event.preventDefault();\r\n\t\r\n\t\r\n\tvar keyinfo = {};\r\n\t\tkeyinfo.keyname = this.state.txtkeyname;\r\n\t\tkeyinfo.type = this.state.txtkeytype;\r\n\t\tkeyinfo.value= this.state.txtkeyvalue;\r\n\t\r\n\t//var addkeys = this.state.addkeys;\r\n\t//\taddkeys.push(keyinfo);\r\n\t\t\r\n\t\t\r\n\tif(!this.state.origsenderset){\r\n\t\tconst origSender = JSON.parse(JSON.stringify(this.state.selectedSender));\r\n\t\t\r\n\t\tvar seldkeys = this.state.selectedSender.dkimkeys\r\n\t\t\r\n\t\tif(!seldkeys)\r\n\t\t\tseldkeys=[];\r\n\t\t\r\n\t\tseldkeys.push(keyinfo);\r\n\t\t\r\n\t\tthis.setState( { origSender : origSender, origsenderset:true, selectedSender :{ dkimkeys : seldkeys} });\r\n\t\t\r\n\t\t\r\n\t}else{\r\n\tvar seldkeys = this.state.selectedSender.dkimkeys\r\n\t\tif(!seldkeys)\r\n\t\t\tseldkeys=[];\r\n\t\t\t\r\n\t\tseldkeys.push(keyinfo);\r\n\t\r\n\t\tthis.setState({ selectedSender :{ dkimkeys : seldkeys}});\r\n\t\r\n\t}\r\n /* var pparams = {};\r\n \r\n\t pparams.spfx = {\r\n\t spfxio_id: this.props.selectedDomain.spfxio_id //spfxio hosted domain id\r\n\t , domain: this.props.selectedDomain.domain\r\n\t , authsenderid: this.props.selectedSender.authsenderid\r\n\t , keyname:keyinfo.keyname\r\n\t , keytype:keyinfo.type\r\n\t , keyvalue:keyinfo.value\r\n\t };\r\n\t \r\n\t this.spfxd.setuser(this.props.user);\r\n\t \r\n\t try{\r\n\t \r\n\r\n \t\t\tvar res = await this.spfxd.adddomainkey(pparams);\r\n \t\t\t\tthis.setState({msg:res.msg});\r\n \t\t\t\tthis.props.onkeyschanged(seldkeys);\r\n \t\t\t}catch(err){\r\n \t\t\t\tthis.setState({msg : JSON.stringify(err)});\r\n \t\t\t}\r\n\t \r\n\t*/\r\n\t\r\n}\r\n\r\n//-----------------------------------------------------------------------------------------------------------------------------\r\n handleSaveKeys = async (event) =>{\r\n event.preventDefault();\r\n\t\r\n\tvar iserror=false;\r\n\tthis.setState({ isvalidatingsave: true });\r\n \r\n \r\n\t\tvar pparams = {};\r\n pparams.spfx = {\r\n\t spfxio_id: this.props.selectedDomain.spfxio_id //spfxio hosted domain id\r\n\t , domain: this.props.selectedDomain.domain\r\n\t , authsenderid: this.props.selectedSender.authsenderid\r\n\t , dkimkeys : this.state.selectedSender.dkimkeys\r\n\t /*, keyname:keyinfo.keyname\r\n\t , keytype:keyinfo.type\r\n\t , keyvalue:keyinfo.value*/\r\n\t };\r\n\t //alert(JSON.stringify(pparams.spfx));\r\n\t \r\n\t try{\r\n\t \tvar res = await this.spfxd.upsertdomainkeys(pparams);\r\n\t \tswitch(res.code){\r\n\t \t\tcase 200:\r\n\t \t\t\tthis.setState({msg:\"Domain keys saved successfully.\"});\r\n\t \t\tbreak;\r\n\t \t\tdefault:\r\n\t \t\t\tthis.setState({msg:\"unknown response code: \" + res.code});\r\n\t \t\t;\r\n\t \t}\r\n\t \t\r\n\t }catch(err){\r\n\t \t\r\n\t \tthis.setState({msg : JSON.stringify(err)});\r\n\t \tiserror=true;\r\n\t }\r\n\t \r\n\t //send to service, which does the delta between implemented/not implemented, \r\n\t //- r53 and DB upsert to captures modifications and unecessary records are removed\r\n\t //alert('TO UPSERT' + JSON.stringify(this.state.selectedSender.dkimkeys));\r\n\t \r\n\t //this.spfxd.setuser(this.props.user);\r\n\t \r\n\t /*try{\r\n\t \r\n\r\n \t\t\tvar res = await this.spfxd.adddomainkey(pparams);\r\n \t\t\t\tthis.setState({msg:res.msg});\r\n \t\t\t\tthis.props.onkeyschanged(seldkeys);\r\n \t\t\t}catch(err){\r\n \t\t\t\tthis.setState({msg : JSON.stringify(err)});\r\n \t\t\t}\r\n \t\t*/\r\n\t \r\n\tthis.setState({ origsenderset:false, isvalidatingsave: false });\r\n\tif(!iserror){\r\n\t\t//this.props.onclose();\r\n\t}\r\n\r\n} \r\n//-----------------------------------------------------------------------------------------------------------------------------\r\n//-----------------------------------------------------------------------------------------------------------------------------\r\nhandleDeleteRow = async(k, e)=>{\r\n \t\r\n \tif(!this.state.origsenderset){\r\n\t\tconst origSender = JSON.parse(JSON.stringify(this.state.selectedSender));\r\n\t\t\r\n\t\r\n\t \tvar delkeys = this.state.delkeys;\r\n\t\t\t\r\n\t\t\r\n\t \tvar crrdkeys = this.state.selectedSender.dkimkeys;//.domainKeys;\r\n\t \t//this.props.selectedSender.dkimkeys.splice(k,1);\r\n\t \tdelkeys.push(crrdkeys.splice(crrdkeys.indexOf(k),1));\r\n\t \tthis.setState({ origSender : origSender, origsenderset:true, delkeys : delkeys });\r\n \t}else{\r\n \t\r\n\t \tvar delkeys = this.state.delkeys;\r\n\t\t\t\r\n\t\t\r\n\t \tvar crrdkeys = this.state.selectedSender.dkimkeys;//.domainKeys;\r\n\t \t//this.props.selectedSender.dkimkeys.splice(k,1);\r\n\t \tdelkeys.push(crrdkeys.splice(crrdkeys.indexOf(k),1));\r\n\t \tthis.setState({ delkeys : delkeys });\r\n \t}\r\n \t\r\n \t\r\n \t\r\n }\r\n//----------------------------------------------------------------------------------------------------------------------------- \r\n onafteropen(){\r\n\t\r\n\t \r\n\t \r\n }\r\n//-----------------------------------------------------------------------------------------------------------------------------\r\n\r\n renderDkimKeys(keys){\r\n \t\t\r\n \t\t\r\n\t\treturn [{}].concat(keys).map(\r\n\t\t\t (k, i) =>\r\n\t\t\t i !== 0 && k\r\n\t\t\t ? \r\n\t\t\t \r\n\t\t\t
\r\n\t\t\t \t
\r\n\t\t\t \t\r\n\t\t\t \t
{k.keyname}
\r\n\t\t\t \t\r\n\t\t\t
{k.type}
\r\n\t\t\t \r\n\t\t\t
{k.value}
\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t \r\n\t\t\t : \r\n\t\t\t \r\n\t\t\t );\r\n \r\n }\r\n\r\n\r\nrender(){\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n \r\n Domain Keys\r\n \r\n \r\n
\r\n { this.state.msg }\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n this.handleAddDKIM(e)} \r\n \r\n />\r\n \r\n \r\n \r\n
\r\n \r\n { this.renderDkimKeys(this.state.selectedSender.dkimkeys) } \r\n \r\n
\r\n \r\n
\r\n\r\n \r\n \r\n \r\n this.handleSaveKeys(e)} \r\n \r\n />\r\n \r\n \r\n\r\n
\r\n\t\t \r\n\t\t);\r\n\r\n\r\n}\r\n\r\n}","import { Auth } from \"aws-amplify\";\r\nimport React, { Fragment, Component } from \"react\";\r\n\r\nimport Select from 'react-select';\r\nimport AWS from 'aws-sdk';\r\nimport CONFIG from \"../config.js\";\r\nimport { FormGroup, FormControl, ListGroup, ListGroupItem, Modal, Radio} from \"react-bootstrap\";\r\nimport { LinkContainer } from \"react-router-bootstrap\";\r\n//import Routes from \"../Routes\";\r\nimport LeftNav from \"../components/LeftNav\"\r\nimport TopNav from \"../components/TopNav\"\r\nimport RightNav from \"../components/RightNav\"\r\nimport Footer from \"../components/Footer\"\r\nimport ReactTable from \"react-table\";\r\nimport BaseComponent from \"../classes/BaseComponent\"\r\nimport LoaderButton from \"../components/LoaderButton\"\r\n\r\nimport Domain_DKIM from \"../components/domain_dkim.js\"\r\n\r\n\r\nimport SweetAlert from 'sweetalert-react';\r\n\r\nimport { Nav, Navbar, NavItem } from \"react-bootstrap\";\r\n\r\nimport '../css/react-table.css';\r\nimport '../dist/css/style.css';\r\nimport '../vendors/bower_components/sweetalert/dist/sweetalert.css'\r\nimport './domains.css';\r\n\r\nimport spfxdata from \"../classes/spfxdata\"\r\nimport spfxdns from \"../classes/spfxdns\"\r\n\r\nAWS.config.update({ region: CONFIG.cognito.REGION } );\r\n\r\n\r\n\r\n\r\n\r\nasync function loaddomaindata(){\r\n\t\r\n}\r\n\r\n\r\nexport default class domains extends BaseComponent {\r\n\tconstructor(props) {\r\n super(props);\r\n\r\n this.logout=()=>{\r\n \talert('dologout');\r\n \tthis.props.history.push('/signin');\r\n }\r\n \r\n \r\n this.spfxd = new spfxdata();\r\n this.vspfx = new spfxdns();\r\n\r\n this.state = {\r\n msg:''\r\n , includedomains:[]\r\n , domaindata: []\r\n , selecteddomain: {}\r\n , selecteddomainsenders: []\r\n , selectedrow:1\r\n , selectedsenderrow:1\r\n , selectedsenderdomain:''\r\n , txtincludedomain:''\r\n , txtsendingdomain:''\r\n , rdoaddpolicy:''\r\n , rdoaddaudit:''\r\n , rdosourceauditing:''\r\n , rdoemailcapture:'0'\r\n , rdoipindexing:''\r\n , showAddSenderModal:false\r\n , isvalidatingsenderecord:false\r\n , modalmsg:''\r\n , sendingdomaindata:[]\r\n , rdodefaultdmarcaction:''\r\n , rdodefaultspfauthpolicy:''\r\n , activesendertab:'home'\r\n , showalert:false\r\n , dnsdata:[]\r\n , isinsert:''\r\n , audittrails:[]\r\n , showAddHostedDomainModal:false\r\n , showDkimDomainModal:false\r\n , domainkeys:[]\r\n , selecteddomainkeys:[]\r\n , txtkeyname:''\r\n , txtkeytype:''\r\n , txtkeyvalue:''\r\n , txthosteddomain:''\r\n , isvalidatinghostedomain:false\r\n , rdoadddomainpolicy:'-'\r\n , rdoadddomainaudit:0\r\n , rdoadddirectipindexing:0\r\n , rdoaddemailcapture:0\r\n , rdoenablerelay:0\r\n , rdoaddenablerelay:0\r\n , showconfirmeddeletealert:false\r\n , userrole: 'READONLY'\r\n , readonlyview:true\r\n , txtdmarcPct:0\r\n , txtrualist:''\r\n , txtruflist:''\r\n , usrcreds:{}\r\n , wsclient:{}\r\n , livefeedmessages:{}\r\n , wsisconnecting:false\r\n , selectedsenderdkimns:{}\r\n \r\n };\r\n \r\n \r\n this.openModal = this.openModal.bind(this);\r\n this.closeModal = this.closeModal.bind(this);\r\n \r\n this.deleteSender = this.deleteSender.bind(this);\r\n this.confirmDeleteSender = this.confirmDeleteSender.bind(this);\r\n this.sendertabclick = this.sendertabclick.bind(this);\r\n this.resetAllSettings = this.resetAllSettings.bind(this);\r\n this.copyDnsToClipboard = this.copyDnsToClipboard.bind(this);\r\n this.copyAuditTrailsToClipboard = this.copyAuditTrailsToClipboard.bind(this);\r\n \r\n\r\n \r\n \r\n this.oncomponentmounted = async (susr)=> {\r\n \r\n \r\n this.spfxd.setuser(susr);\r\n \r\n //this.setState({sendingdomaindata:(sdata), domaindata:ddata});\r\n \r\n var tstate = {};\r\n \r\n try{\r\n\t \t tstate.domaindata = await this.spfxd.getdomainsforuser();\r\n\t \t \r\n\t \t //tstate.userrole = (await this.spfxd.getuserprivileges()).role;\r\n\t \t\r\n\t \t \r\n\t if(tstate.domaindata){\r\n\t if(tstate.domaindata.length>0){\r\n\t tstate.selecteddomain = tstate.domaindata[0];\r\n\t tstate.userrole = tstate.domaindata[0].userrole;\r\n\t tstate.readonlyview =(tstate.userrole=='READONLY');\r\n\t tstate.rdoenablerelay = tstate.domaindata[0].enableRelayServices;\r\n\t \r\n\t var sdata = await this.spfxd.getauthorizedsenders(tstate.selecteddomain.spfxio_id);//hosteddomainid);\r\n\t tstate.selecteddomainsenders = sdata;\r\n\t tstate.selectedsenderdomain = (sdata)?(sdata.length>0)?sdata[0]:'':'';\r\n\t tstate.rdodefaultspfauthpolicy = tstate.selecteddomain.defaultSpfPolicy;\r\n\t tstate.rdosourceauditing = tstate.selecteddomain.defaultSourceAuditing;\r\n\t tstate.rdoipindexing = tstate.selecteddomain.enableIpIndexing;\r\n\t tstate.rdoemailcapture = tstate.selecteddomain.enableEmailCapture;\r\n\t tstate.rdodefaultdmarcaction = tstate.selecteddomain.defaultDmarcPolicy;\r\n\t tstate.txtrualist = tstate.selecteddomain.dmarcRua;\r\n\t\t tstate.txtruflist = tstate.selecteddomain.dmarcRuf;\r\n\t\t tstate.txtdmarcPct = (tstate.selecteddomain.dmarcPct)*100;\r\n\t\r\n\t \r\n\t var nameservers = {};\r\n\t\t\t try{\r\n\t\t\t nameservers= await this.spfxd.getdomainkeynameservers(tstate.selecteddomain.spfxio_id);\r\n\t\t\t \r\n\t\t\t }catch(nserr){\r\n\t\t\t nameservers=nserr;\r\n\t\t\t }\r\n\t\t\t tstate.selectedsenderdkimns = nameservers;\r\n\t\t\t \r\n\t }\r\n\t }else{\r\n\t \ttstate.msg = 'We couldn\\'t find any domains for you. Please be sure you are signed in.';\r\n\t }\r\n }catch(err){\r\n \t tstate.msg = 'We encountered an error while searching for your domains. Please be sure you are signed in.';\r\n }\r\n \r\n\t this.setState(tstate);\r\n \r\n }\r\n \r\n \r\n \r\n}\r\n\t\r\n//----------------------------------------------------------------------------------------------------------------------------- \r\nasync getUserInfo(){\r\n\t\r\n\treturn new Promise((resolve,reject)=>{\r\n\t\r\n\t\tAuth.currentUserInfo().then(info=>{\r\n\t\t\tresolve(info);\r\n\t\t}).catch(err=>{\r\n\t\t\treject(err);\r\n\t\t});\r\n\t\t\r\n\t});\r\n\t\r\n}\r\n//-----------------------------------------------------------------------------------------------------------------------------\r\n async getCredentials(){\r\n\r\n\treturn new Promise(function(resolve,reject){\r\n\t\r\n\t\tAuth.currentCredentials()\r\n\t\t .then(credentials => {\r\n\t\t\t resolve(credentials);\r\n\t\t }).catch(err=>{\r\n\t\t\t reject(null);\r\n\t\t});\r\n\t}).then(function(data){\r\n\t\treturn {data: data.data.Credentials};\r\n\t}).catch(function (err){\r\n\t\treturn {error:err};\r\n\t});\r\n }\r\n//-----------------------------------------------------------------------------------------------------------------------------\t\t \r\n /*\r\n * handleDeleteRow - removes added spf domain from Add Sender modal\r\n */\r\nhandleDeleteRow = (domain,event) =>{\r\n event.preventDefault();\r\n \r\n var includes = this.state.includedomains;\r\n includes.splice(includes.indexOf(domain),1);\r\n this.setActiveState({includedomains:includes});\r\n}\r\n//-----------------------------------------------------------------------------------------------------------------------------\r\n handleAddHostedDomain = async (event) =>{\r\n\t event.preventDefault();\r\n\t \r\n\t this.setState({isvalidatinghosteddomain:true});\r\n\t \r\n\t var params = {};\r\n\t params.spfx = { \r\n\t\t domain:this.state.txthosteddomain\r\n\t\t, defaultSpfPolicy:this.state.rdoadddomainpolicy\r\n\t\t, defaultSourceAuditing:this.state.rdoadddomainaudit\r\n\t\t, enableIpIndexing:this.state.rdoadddirectipindexing\r\n\t\t, enableRelayServices:this.state.rdoaddenablerelay\r\n\t\t, enableEmailCapture: this.state.rdoaddemailcapture\r\n\t\t, orgid: 1\r\n\t\t, dmarcpolicy:CONFIG.dmarcpolicy\r\n\t\t, dmarcrua:CONFIG.dmarcrua\r\n\t\t, dmarcruf:CONFIG.dmarcruf\r\n\t\t, dmarcpct:CONFIG.dmarcpct\r\n\t }\r\n\t \r\n\t\r\n\t \r\n\t var tstate={};\r\n\t var res = await this.spfxd.addhosteddomain(params);\r\n\t if(res.err){\r\n\t\t tstate.msg = res.err\r\n\t tstate.showAddHostedDomainModal = false;\r\n\t }else{\r\n\t var d = {};\r\n\t d.domain = params.spfx.domain;\r\n\t d.spfxio_id = res.spfxio_id;\r\n\t d.hostedZoneId = res.hostedZoneId;\r\n\t d.hosteddomainid=res.hosteddomainid;\r\n\t d.defaultSpfPolicy=params.spfx.defaultSpfPolicy\r\n\t d.defaultSourceAuditing=params.spfx.defaultSourceAuditing\r\n\t d.enableRelayServices=params.spfx.enableRelayServices\r\n\t d.defaultDmarcPolicy='none'\r\n\t d.enableEmailCapture=params.spfx.enableEmailCapture\r\n\t d.enableIpIndexing=params.spfx.enableIpIndexing;\r\n\t \r\n\t var domaindata = this.state.domaindata;\r\n\t domaindata.push(d);\r\n\t \r\n\t tstate.domaindata = domaindata;\r\n\t \r\n\t if(tstate.domaindata){\r\n\t if(tstate.domaindata.length>0){\r\n\t tstate.selecteddomain = tstate.domaindata[tstate.domaindata.length-1];\r\n\t tstate.selecteddomainsenders = [];\r\n\t tstate.selectedrow = tstate.domaindata.length;\r\n\t tstate.rdodefaultspfauthpolicy = tstate.selecteddomain.defaultSpfPolicy;\r\n\t tstate.rdosourceauditing = tstate.selecteddomain.defaultSourceAuditing;\r\n\t tstate.rdoemailcapture = tstate.selecteddomain.enableEmailCapture;\r\n\t tstate.rdoipindexing = tstate.selecteddomain.enableIpIndexing\r\n\t tstate.rdodefaultdmarcaction = tstate.selecteddomain.defaultDmarcPolicy;\r\n\t tstate.rdoenablerelay = tstate.selecteddomain.enableRelayServices;\r\n\t tstate.txtrualist = tstate.selecteddomain.dmarcRua;\r\n\t tstate.txtruflist = tstate.selecteddomain.dmarcRuf;\r\n\t tstate.txtdmarcpct = tstate.selecteddomain.dmarcPct;\r\n\t }\r\n\t }\r\n\t \r\n\t \r\n\t tstate.msg = \"Domain Added\"\r\n\t tstate.showAddHostedDomainModal = false;\r\n \r\n\t }\r\n tstate.isvalidatinghosteddomain = false;\r\n this.setActiveState( tstate );\r\n }\r\n//----------------------------------------------------------------------------------------------------------------------------- \r\n /*\r\n * handleAddAuthorizedSender - verifies data gathered from the Add Sender modal and saves with help of spfxdata\r\n */\r\n handleAddAuthorizedSender = async (event) =>{\r\n event.preventDefault();\r\n\r\n this.setActiveState({isvalidatingsenderecord:true});\r\n //alert(this.state.txtsendingdomain);\r\n var vres = await this.vspfx.verifyDomain(this.state.txtsendingdomain);\r\n \r\n //if form details are valid, and txtsendingdomain is verified, then add the domain\r\n if(this.validateAddSenderForm() && vres.isvalidformat ){\r\n //var sendingdomains = this.state.sendingdomaindata;\r\n var sendingdomains = this.state.selecteddomainsenders;\r\n \r\n \r\n var exists = false;\r\n for(let sd of this.state.selecteddomainsenders){\r\n exists = (sd.senderdomain == this.state.txtsendingdomain) || exists;\r\n }\r\n \r\n \r\n if(!exists || this.state.isinsert==false){\r\n\r\n var d = {}\r\n d.hosteddomainid = this.state.hosteddomainid\r\n d.senderdomain = this.state.txtsendingdomain\r\n d.includes = this.state.includedomains\r\n d.defaultSpfPolicy = this.state.rdoaddpolicy;\r\n d.defaultSourceAuditing = this.state.rdoaddaudit;\r\n d.enableEmailCapture = this.state.rdoaddemailcapture;\r\n //d.key = (this.state.isinsert==true)?sendingdomains.length+1:this.state.selectedsenderrow\r\n d.key = sendingdomains.length+1\r\n //d.key = Math.random().toString(36).substring(7);\r\n \r\n var pparams = {};\r\n \r\n pparams.spfx = {\r\n spfxio_id: this.state.selecteddomain.spfxio_id //spfxio hosted domain id\r\n , domain: this.state.selecteddomain.domain\r\n , senderdomain: d.senderdomain\r\n , includehosts: d.includes //must conform to dns formatted names\r\n , defaultSpfPolicy: d.defaultSpfPolicy//[~||-||?]\r\n , defaultSourceAuditing: d.defaultSourceAuditing //([true || false] as bit\r\n , enableEmailCapture : d.enableEmailCapture\r\n };\r\n \r\n \r\n var res = await this.spfxd.addauthorizedsender(pparams);\r\n if(res.err){\r\n\t \t this.setActiveState({isvalidatingsenderecord:false\r\n\t \t\t , modalmsg:res.err\r\n\t });\r\n }else{\r\n\t \tif(this.state.isinsert==true){\r\n\t \t\tsendingdomains.push(d);\r\n\t\t \t this.setState({isvalidatingsenderecord:false\r\n\t\t , includedomains:[]\r\n\t\t \t \t , domainkeys:[]\r\n\t\t , sendingdomaindata:sendingdomains\r\n\t\t , txtsendingdomain:''\r\n\t\t , modalmsg:'Authorized sender added. You may add another, or close the window.'\r\n\t\t });\r\n\t\t \t \r\n\t \t}else{\r\n\t \t\t\r\n\t \t\t\r\n\t \t\tsendingdomains.splice(this.state.selectedsenderrow-1,1,d);\r\n\t \t\t\r\n\t\t \t this.setActiveState({isvalidatingsenderecord:false\r\n\t\t\t \t\t , selecteddomainsenders:sendingdomains\r\n\t\t\t \t\t , selectedsenderdomain:d\r\n\t\t\t \t\t , modalmsg: \"Authorized sender updated.\"\r\n\t\t\t });\r\n\t\t \t\r\n\t\t \t \r\n\t\t \t\r\n\t \t}\r\n }\r\n \r\n\r\n }else{\r\n this.setActiveState({isvalidatingsenderecord:false\r\n , modalmsg:'Sending Domain already exists. Sending Domain must be unique.'\r\n });\r\n }\r\n }else{\r\n\r\n //set message in the modal\r\n this.setActiveState({modalmsg:'Please complete all required fields and try again.',isvalidatingsenderecord:false});\r\n } \r\n\r\n this.setActiveState({isvalidatingsenderecord:false});\r\n\r\n}\r\n//-----------------------------------------------------------------------------------------------------------------------------\r\n\r\nhandleAddDKIM = async (event) =>{\r\n event.preventDefault();\r\n\r\n\tvar keyinfo = {};\r\n\t\tkeyinfo.keyname = this.state.txtkeyname;\r\n\t\tkeyinfo.type = this.state.txtkeytype;\r\n\t\tkeyinfo.value= this.state.txtkeyvalue;\r\n\tvar seldkeys = this.state.selecteddomainkeys;\r\n\t\tseldkeys.push(keyinfo);\r\n\t\t\r\n\tthis.setActiveState({\r\n\t\tselecteddomainkeys: seldkeys\r\n\t});\r\n\t\r\n\t\r\n\r\n}\r\n\r\n//-----------------------------------------------------------------------------------------------------------------------------\r\n\r\nasync validateAddSenderForm() {\r\n \r\n \r\n var res = (this.state.includedomains.length >= 0\r\n && this.state.txtsendingdomain.length > 0\r\n && this.state.rdoaddpolicy.length>0\r\n );\r\n \r\n return res;\r\n}\r\n//-----------------------------------------------------------------------------------------------------------------------------\r\n handleTxtFieldChange = event => {\r\n this.setState({\r\n [event.target.id]: event.target.value\r\n });\r\n }\r\n//----------------------------------------------------------------------------------------------------------------------------- \r\nhandleSelectChange = (event,id) =>{\r\n\r\n\tvar st = {};\r\n\tst[id]=event.value;\r\n\tthis.setActiveState(st);\r\n\t\r\n\t\r\n} \r\n//-----------------------------------------------------------------------------------------------------------------------------\r\nhandleRdoChange = event => {\r\n \r\n this.setState({\r\n [event.target.name]: event.target.value\r\n });\r\n \r\n \r\n}\r\n//-----------------------------------------------------------------------------------------------------------------------------\r\nhandleChange = event => {\r\n\t this.setState({\r\n\t [event.target.name]: event.target.value\r\n\t });\r\n}\r\n//-----------------------------------------------------------------------------------------------------------------------------\r\nupdateDmarcPolicy = async(event) =>{\r\n\t \r\n\ttry{\r\n\t\r\n\tthis.setActiveState( { msg: '' });\r\n\t\r\n\t var pparams = {};\r\n\t pparams.spfx = {\r\n\t\t\t spfxio_id: this.state.selecteddomain.spfxio_id\r\n\t\t\t , domain: this.state.selecteddomain.domain\r\n\t\t\t , dmarcpolicy: this.state.rdodefaultdmarcaction\r\n\t\t\t , dmarcrua: this.state.txtrualist\r\n\t\t\t , dmarcruf: this.state.txtruflist\r\n\t\t\t , dmarcpct: this.state.txtdmarcPct\r\n\t\t\t \r\n\t }\r\n\t \r\n\t await this.spfxd.addhosteddomaindmarcpolicy(pparams).then((res)=>{\r\n \t \r\n \t var d = this.state.selecteddomain;\r\n \t d.defaultDmarcPolicy = pparams.spfx.dmarcpolicy;\r\n \t d.dmarcRua = pparams.spfx.dmarcrua;\r\n \t d.dmarcRuf = pparams.spfx.dmarcruf;\r\n \t d.dmarcPct = pparams.spfx.dmarcpct;\r\n \r\n \r\n this.setActiveState( { \r\n \t \t\t\t\t\t msg: 'Record updated successfully.'\r\n \t\t\t\t\t\t, selecteddomain: d\r\n\t\t \t\t\t\t\t\t, showalert: false \r\n\t\t \t\t\t\t\t});\r\n \r\n }).catch((err)=>{\r\n \t this.setActiveState( { msg: 'error updating record.' + err });\r\n });\r\n \r\n \r\n\t \r\n\t }catch(err){\r\n\t this.setActiveState( { msg: 'error updating record. please try again:' + JSON.stringify(err,0,10) });\r\n\t }\r\n\t \r\n}\r\n//----------------------------------------------------------------------------------------------------------------------------- \r\nupdateSenderSettings = async(event) => {\r\n\t \r\n\t try{\r\n\t\t var pparams = {};\r\n\t\r\n \r\n pparams.spfx = {\r\n spfxio_id: this.state.selecteddomain.spfxio_id\r\n , domain: this.state.selecteddomain.domain\r\n , defaultSpfPolicy: this.state.rdodefaultspfauthpolicy\r\n , defaultSourceAuditing: this.state.rdosourceauditing\r\n , enableIpIndexing: this.state.rdoipindexing\r\n , enableEmailCapture: this.state.rdoemailcapture\r\n , enableRelayServices: this.state.rdoenablerelay\r\n };\r\n\r\n \r\n var res = await this.spfxd.addhosteddomainpolicy(pparams);\r\n \r\n \t if(res.err){\r\n \t\tthis.setActiveState( { msg: 'error updating record.' });\r\n \t }\r\n \t else{\r\n var d = this.state.selecteddomain;\r\n \t d.defaultSpfPolicy = this.state.rdodefaultspfauthpolicy;\r\n d.defaultSourceAuditing = this.state.rdosourceauditing;\r\n d.enableIpIndexing = this.state.rdoipindexing;\r\n d.enableEmailCapture = this.state.rdoemailcapture;\r\n \r\n this.setActiveState( { msg: 'Record updated successfully.'\r\n \t\t \t\t\t\t\t\t, selecteddomain: d\r\n \t\t \t\t\t\t\t\t, showalert: false \r\n \t\t \t\t\t\t\t});\r\n \t \r\n \t }\r\n \t \r\n\t }catch(err){\r\n\t this.setActiveState( { msg: 'error updating record. please try again.' });\r\n\t }\r\n\t \r\n}\r\n//-----------------------------------------------------------------------------------------------------------------------------\r\ncascadeSenderSettings = async(event) => {\r\n\r\n\t var updatedsenders = [];\r\n\t var errorencountered=false;\r\n\t for(let sdr of this.state.selecteddomainsenders){\r\n\t\t if((sdr.defaultSpfPolicy != this.state.rdodefaultspfauthpolicy || sdr.defaultSourceAuditing != this.state.rdosourceauditing || sdr.enableEmailCapture != this.state.rdoemailcapture) && errorencountered==false){\r\n\t\t\t //alert(`cascade policy for ${JSON.stringify(sdr)}`);\r\n\t\t\t sdr.defaultSpfPolicy = this.state.rdodefaultspfauthpolicy;\r\n\t sdr.defaultSourceAuditing = this.state.rdosourceauditing;\r\n\t sdr.enableEmailCapture = this.state.rdoemailcapture;\r\n\t \r\n\t var pparams = {};\r\n\t \r\n\t pparams.spfx = {\r\n\t spfxio_id: this.state.selecteddomain.spfxio_id //spfxio hosted domain id\r\n\t , domain: this.state.selecteddomain.domain\r\n\t , senderdomain: sdr.senderdomain\r\n\t , includehosts: sdr.includes //must conform to dns formatted names\r\n\t , defaultSpfPolicy: sdr.defaultSpfPolicy//[~||-||?]\r\n\t , defaultSourceAuditing: sdr.defaultSourceAuditing //([true || false] as bit\r\n\t , enableEmailCapture: sdr.enableEmailCapture\r\n\t };\r\n\t \r\n\t //alert(`add auth sender with params ${pparams}`);\r\n\t var res = await this.spfxd.addauthorizedsender(pparams);\r\n\t if(res.err){\r\n\t \terrorencountered=true;\r\n\t }else{\r\n\t \tupdatedsenders.push(sdr.senderdomain);\r\n\t }\r\n\t\t }\r\n\t }\r\n\t var msg = 'Policies synchronized. No updates necessary.'\r\n\t if(errorencountered==true){\r\n\t\t \r\n\t\t msg = \"error encountered cascading policy.\"\r\n\t\t if(updatedsenders.length>0){\r\n\t\t\t msg += 'Policies updated for senders: ' + updatedsenders.join(',');\r\n\t\t }\r\n\t\t \r\n\t }else if(updatedsenders.length>0){\r\n\t\t msg = 'Policies updated for senders: ' + updatedsenders.join(',');\r\n\t }\r\n\t \r\n\t this.setActiveState({msg:msg});\r\n }\r\n//-----------------------------------------------------------------------------------------------------------------------------\r\nopenModal(modaltype){\r\n\t \r\n\t \tswitch(modaltype){\r\n\t \tcase 'update':\r\n\t \t\t\r\n\t \t\tvar d = this.state.selectedsenderdomain;\r\n\t \t\t\r\n\t \t\tthis.setActiveState({ showAddSenderModal:true\r\n\t \t\t\t\t\t\t , txtsendingdomain:d.senderdomain\r\n\t \t\t\t\t\t\t , includedomains:d.includes\r\n\t \t\t\t\t\t\t , rdoaddpolicy:d.defaultSpfPolicy\r\n\t \t\t\t\t\t\t , rdoaddaudit:d.defaultSourceAuditing\r\n\t \t\t\t\t\t\t , rdoaddemailcapture:d.enableEmailCapture\r\n\t \t\t\t\t\t\t , isinsert:false\r\n\t \t\t\t\t\t\t , hosteddomainid:d.hosteddomainid\r\n\t \t\t\t\t\t });\r\n\t \tbreak;\r\n\t \tcase 'addhostedomain':\r\n\t \t\tthis.setActiveState({\r\n\t \t\t\t\t\t showAddHostedDomainModal:true\r\n\t \t\t\t\t\t, modalmsg:''\r\n\t \t\t\t\t});\r\n\t \t\t\r\n\t \t\t\t\r\n\t \t\tbreak;\r\n\t \tcase 'managedkim':\r\n\t \t\r\n\t \t\tvar selkeys = this.state.selectedsenderdomain.dkimkeys;\r\n\t \t\t\r\n\t \t\tthis.setState({\r\n\t \t\t\t showDkimDomainModal:true\r\n\t \t\t\t, selecteddomainkeys:selkeys\r\n\t\t\t\t, modalmsg:''\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t \t\tbreak;\r\n\t \tdefault:\r\n\t \t\tthis.setActiveState({ rdoaddpolicy: this.state.selecteddomain.defaultSpfPolicy\r\n \t\t\t\t, rdoaddaudit:this.state.selecteddomain.defaultSourceAuditing\r\n \t\t\t\t, rdoaddemailcapture:this.state.selecteddomain.enableEmailCapture\r\n \t\t\t\t, rdoaddenablerelay:this.state.selecteddomain.enableRelayServices\r\n \t\t\t\t, showAddSenderModal:true\r\n \t\t\t\t, isinsert:true});\r\n\t \tbreak;\r\n\t \r\n\t \t}\r\n}\r\n//-----------------------------------------------------------------------------------------------------------------------------\r\ncloseModal(){\r\n this.setActiveState({showAddSenderModal:false, modalmsg:'',showAddHostedDomainModal:false,showDkimDomainModal:false});\r\n}\r\n//-----------------------------------------------------------------------------------------------------------------------------\r\ncloseactivewssubscriptions = async()=>{\r\n\tif(this.state.wsclient.readyState){\r\n\t\tif (this.state.wsclient.readyState === this.state.wsclient.OPEN){\r\n\t\t\tthis.state.wsclient.close();\r\n\t\t\t\r\n\t\t\tvar arrmsg = []\r\n\t \tvar clvmsg = this.state.livefeedmessages;\r\n\t \tif(this.state.livefeedmessages[this.state.selecteddomain.spfxio_id]){\r\n\t \t\tarrmsg = clvmsg[this.state.selecteddomain.spfxio_id];\t\r\n\t \t}\r\n\t \tarrmsg.unshift({timestamp: new Date().getTime(), message: { recclass:'DCONN', body:'disconnnecting Live Feed for ' + this.state.selecteddomain.spfxio_id}});\r\n\t \tclvmsg[this.state.selecteddomain.spfxio_id]=arrmsg;\r\n\t\t\t\r\n\t\t\tthis.setState({ livefeedmessages:clvmsg });\r\n\t\t\t\r\n\t\t}\r\n\t}\r\n}\r\n//-----------------------------------------------------------------------------------------------------------------------------\r\nwsconnectionactive = ()=>{\r\n\tvar retval = false;\r\n\tif(this.state.wsclient.readyState){\r\n\t\tif (this.state.wsclient.readyState === this.state.wsclient.OPEN){\r\n\t\t\tretval = true;\r\n\t\t}\r\n\t}\r\n\treturn retval;\r\n}\r\n//-----------------------------------------------------------------------------------------------------------------------------\r\nexportwsmessages = () =>{\r\n\tvar arrmsg = []\r\n\tvar clvmsg = this.state.livefeedmessages;\r\n\tif(this.state.livefeedmessages[this.state.selecteddomain.spfxio_id]){\r\n\t\tarrmsg = clvmsg[this.state.selecteddomain.spfxio_id];\t\r\n\t\r\n\t\r\n\t\r\n\tvar hdr = {};\r\n\t\thdr.message = {};\r\n\t\thdr.timestamp = \"Date\";\r\n\t\thdr.message.recclass = \"Class\"\r\n\t\thdr.message.smtphostdomain = \"SmtpHostDomain\";\r\n\t\thdr.message.smtphostip = \"SmtpIp\";\r\n\t\thdr.message.senderdomain = \"EmailDomain\";\r\n\t\thdr.message.senderaddress = \"EmailAddress\";\r\n\t\t\r\n\t\t \r\n\t var dtout = [hdr];\r\n\t dtout = dtout.concat(this.state.livefeedmessages[this.state.selecteddomain.spfxio_id])\r\n\t \r\n\t \r\n\t var textField = document.createElement('textarea')\r\n\t textField.innerHTML = this.buildplaintextlivefeed(dtout);\r\n\t document.body.appendChild(textField)\r\n\t textField.select()\r\n\t document.execCommand('copy')\r\n\t textField.remove()\r\n\t \r\n\t //e.target.focus();\r\n\t this.setState({ msg: 'Live feed records copied to clipboard.' });\r\n\t \r\n\t \r\n\t}\r\n\t \r\n\t \r\n\t\r\n}\r\n//-----------------------------------------------------------------------------------------------------------------------------\r\nclearmessages = () =>{\r\n\tvar arrmsg = []\r\n\tvar clvmsg = this.state.livefeedmessages;\r\n\tif(this.state.livefeedmessages[this.state.selecteddomain.spfxio_id]){\r\n\t\tclvmsg[this.state.selecteddomain.spfxio_id] = []\t\r\n\t}\r\n\tthis.setState({ livefeedmessages:clvmsg });\r\n\r\n}\r\n//-----------------------------------------------------------------------------------------------------------------------------\r\nconnectlivefeed = async() =>{\r\n\t\r\n\ttry{\r\n\t\t\r\n\t\tthis.setActiveState({wsisconnecting:true});\r\n\t\tconst ws = await this.spfxd.connectws();\r\n\t\tlet that = this;\r\n\t\t//this.setState({msg:'Establishing Live Feed connection. Please wait.'});\r\n\t\tws.onerror = function() {\r\n\t\t //alert('Connection Error');\r\n\t\t\t//this.setActiveState({msg:'Error establishing connection to the live feed.'});\r\n\t\t};\r\n\r\n\t\tws.onopen = function() {\r\n\t\t //alert('WebSocket Client Connected');\r\n\t\t\t\r\n\t\t function sendmsg(msg) {\r\n\t\t if (ws.readyState === ws.OPEN) {\r\n\t\t ws.send(JSON.stringify(msg));\r\n\t\t }\r\n\t\t }\r\n\t\t \r\n\t\t that.setState({ msg: 'Live Feed connection established.'});\r\n\t\t \r\n\t\t\t\r\n\t\t \r\n\t\t sendmsg({'action':'subscribe', 'spfxioid':that.state.selecteddomain.spfxio_id});\r\n\t\t \r\n\t\t};\r\n\r\n\t\tws.onclose = function() {\r\n\t\t\tthat.setActiveState({msg:'Live Feed connection closed.'});\r\n\t\t};\r\n\r\n\t\tws.onmessage = ((e)=>{\r\n\t\t if (typeof e.data === 'string') {\r\n\t\t \r\n\t\t \tvar obj = JSON.parse(e.data);\r\n\t\t \tvar arrmsg = []\r\n\t\t \tvar clvmsg = that.state.livefeedmessages;\r\n\t\t \tif(that.state.livefeedmessages[that.state.selecteddomain.spfxio_id]){\r\n\t\t \t\tarrmsg = clvmsg[that.state.selecteddomain.spfxio_id];\t\r\n\t\t \t}\r\n\t\t \tif(obj.timestamp==undefined)\r\n\t\t \t\tobj.timestamp = new Date().getTime();\r\n\t\t \tif(obj.message == undefined){\r\n\t\t \t\tobj.message = {};\r\n\t\t \t\tobj.message.recclass=\"CONN\";\r\n\t\t \t\tobj.message.body = obj.msg;\r\n\t\t \t\tdelete obj.msg;\r\n\t\t \t}\r\n\t\t \t\t\r\n\t\t \t\r\n\t\t \tarrmsg.unshift(obj);\r\n\t\t \tif(arrmsg.length>100){\r\n\t\t \t\tarrmsg.pop();\r\n\t\t \t}\r\n\t\t \t\r\n\t\t \tclvmsg[that.state.selecteddomain.spfxio_id]=arrmsg;\r\n\t\t\t\t\r\n\t\t\t\tthat.setState({ livefeedmessages:clvmsg });\r\n\t\t\t\t\r\n\t\t }\r\n\t\t \t\r\n\t\t \r\n\t\t});\r\n\t\t\r\n\t\t\r\n\t\tthis.setState ( {wsclient:ws});\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t}catch(err){\r\n\t\tthis.setState({ msg: 'Error establishing Live Feed connection.' + JSON.stringify(err)})\r\n\t}\r\n\t\r\n\tthis.setActiveState({wsisconnecting:false});\r\n\t\r\n}\r\n//-----------------------------------------------------------------------------------------------------------------------------\r\nsendertabclick = async (tab, event)=>{\r\n\t\r\n\tif(event)\r\n\t\tevent.preventDefault();\r\n\t\r\n\tthis.closeactivewssubscriptions();\r\n\t\r\n\tswitch(tab){\r\n\tcase 'dns':\r\n\t\tawait this.spfxd.getdnsrecordsfordomain(this.state.selecteddomain.spfxio_id).then((data)=>{\r\n\t\t\tthis.setActiveState({dnsdata:data});\r\n\t\t}).catch((err)=>{\r\n\t\t\tthis.setActiveState({msg:'Error loading DNS for domain. Please try again, or contact support.'});\r\n\t\t});\r\n\t\t\r\n\t\tbreak;\r\n\tcase 'audit':\r\n\t\tawait this.setaudittrails(this.state.selecteddomain.spfxio_id);\r\n\t\t\r\n\t\tbreak;\r\n\tcase 'livefeed':\r\n\t\tawait this.connectlivefeed();\r\n\t\t\r\n\t\t\r\n\t\tbreak;\r\n\t}\r\n\t \r\n this.setActiveState({activesendertab:tab})\r\n\r\n }\r\n \r\n \t\t\r\n async receivesqs(sqs,params){\r\n\t \r\n \t return new Promise(function(resolve,reject){\r\n\t\r\n\t\t sqs.receiveMessage(params, function(err, data) {\r\n\t\t\t if (err) {\r\n\t\t\t\t reject(err);\r\n\t\t\t }\r\n\t\t\t else { \r\n\t\t\t\t resolve(data);\r\n\t\t\t }\r\n\t\t\t\t \r\n\t\t\t\t \r\n\t\t});\r\n\t\t\t \r\n\t }).then(function(data){\r\n\t\t return data;\r\n\t }).catch(function(err){\r\n\t\t return ({error:err});\r\n\t });\r\n\t \r\n }\r\n \r\n async setaudittrails(spfxio_id){\r\n\t var data = await this.spfxd.getaudittrails(spfxio_id);\r\n\t this.setState({audittrails:data});\r\n }\r\n \r\n renderdnsrecords(dnsrecords){\r\n\t return [{}].concat(dnsrecords).map(\r\n\t\t\t (dnsrecord, i) =>\r\n\t\t\t i !== 0 && dnsrecord\r\n\t\t\t ? \r\n\t\t\t \r\n\t\t\t
\r\n\t\t\t \t {dnsrecord.Name.replace('\\\\052','*')} \r\n\t\t\t {dnsrecord.Type} \r\n\t\t\t {dnsrecord.TTL} \r\n\t\t\t \t {dnsrecord.Value}\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t \r\n\t\t\t : \r\n\t\t\t \r\n\t\t\t );\r\n }\r\n \r\n \r\n renderlivefeed(messages){\r\n\t return [{}].concat(messages).map(\r\n\t\t\t (message, i) =>\r\n\t\t\t i !== 0\r\n\t\t\t ? \r\n\t\t\t \r\n\t\t\t \t { JSON.stringify(message) } \r\n\t\t\t \r\n\t\t\t : \r\n\t\t\t \r\n\t\t\t );\r\n }\r\n \r\n buildplaintextdnsrecords(dnsrecords){\r\n\t var strret = ''\r\n\t for(let dnsrecord of dnsrecords){\r\n\t\t strret += dnsrecord.Name.replace('\\\\052','*') + '\\t'\r\n\t\t strret += dnsrecord.Type + '\\t';\r\n\t\t strret += dnsrecord.TTL + '\\t';\r\n\t\t strret += dnsrecord.Value + '\\r\\n';\r\n\t }\r\n\t return strret;\r\n}\r\n \r\n buildplaintextaudittrails(trails){\r\n\t var strret = ''\r\n\t for(let trail of trails){\r\n\t\t strret += trail.actiondate + '\\t';\r\n\t\t strret += trail.src + '\\t';\r\n\t\t strret += trail.action + '\\t';\r\n\t\t strret += trail.emailaddress + '\\t';\r\n\t\t strret += trail.configs + '\\r\\n'\r\n\t }\r\n\t return strret;\r\n}\r\n\r\nformatevtplaintextfield(fld){\r\n\t\r\n\tif(fld){\r\n\t\treturn fld.toString().replace(/\\r?\\n|\\r/g,'');\r\n\t}else{\r\n\t\treturn '-';\r\n\t}\r\n\t\r\n\t\r\n}\r\n\r\nbuildplaintextlivefeed(events){\r\n\t var strret = ''\r\n var row = 0;\r\n\t for(let evt of events){\r\n\t\t strret += ((row>0)?this.formatevtplaintextfield(new Date(evt.timestamp).toString()):evt.timestamp) + '\\t';\r\n\t\t strret += this.formatevtplaintextfield(evt.message.recclass) + '\\t';\r\n\t\t strret += this.formatevtplaintextfield(evt.message.smtphostdomain) + '\\t';\r\n\t\t strret += this.formatevtplaintextfield(evt.message.smtphostip) + '\\t';\r\n\t\t strret += this.formatevtplaintextfield(evt.message.senderdomain) + '\\t'\r\n\t\t strret += this.formatevtplaintextfield(evt.message.senderaddress) + '\\t'\r\n\t\t strret += this.formatevtplaintextfield(evt.message.senderdomain) + '\\t'\r\n\t\t strret += ((row>0)?this.formatevtplaintextfield(JSON.stringify(evt.message)):'MessageSource');\r\n\t\t strret += '\\r\\n';\r\n\t\t row++;\r\n\t }\r\n\t return strret;\r\n}\r\n \r\n renderspfupdatemenuitems(readonlymenu){\r\n\t \r\n\t \r\n\t if(!readonlymenu && this.state.userrole=='WRITE'){\r\n\t\t return (\r\n \t\r\n\t \t
  • Update Policy
  • \r\n\t
  • Cascade Policy
  • \r\n\t
  • Add Sender
  • \r\n\t
  • this.openModal('update', e)} data-toggle=\"modal\" data-target=\"#responsive-modal\">Manage SPF
  • \r\n\t
  • this.openModal('managedkim', e)} data-toggle=\"modal\" data-target=\"#responsive-modal\">Manage DKIM
  • \r\n\t
  • Delete Sender
  • \r\n\t
  • this.resetAllSettings('spf', e)} data-toggle=\"modal\" data-target=\"#responsive-modal\">Reset SPF
  • \r\n
    \r\n );\r\n\t }else if(readonlymenu){\r\n\t\t return (\r\n\t\t\t \t\t \t\t\r\n\t );\r\n\t }\r\n\t \r\n }\r\n \r\n renderselecteddomainmenuitems(readonlymenu){\r\n\t \r\n\t if(!readonlymenu && this.state.userrole=='WRITE'){\r\n\t\t return (\r\n \t\r\n\t \t
  • this.resetAllSettings('all', e)} data-toggle=\"modal\" data-target=\"#responsive-modal\">Reset All
  • \r\n
    \r\n );\r\n\t }else if(readonlymenu){\r\n\t\t return (\r\n\t\t\t \t\r\n\t\t\t \t\t{/*
  • Run SPF Test
  • \r\n\t\t\t \t\t
  • Run DMARC Test
  • */}\r\n\t\t\t \t
    \r\n\t );\r\n\t }\r\n\t \r\n }\r\n \r\n renderdomainmenuitems(readonlymenu){\r\n\t if(!readonlymenu && this.state.userrole=='WRITE'){\r\n\t\t return (\r\n\t\t\t\t \r\n\t\t\t\t \t
  • this.openModal('addhostedomain', e)} data-toggle=\"modal\" data-target=\"#responsive-modal\">Add Domain
  • \r\n\t\t\t\t\t
  • Delete Selected Domain
  • \r\n\t\t\t\t\t
  • Disable Domain
  • \r\n\t\t\t\t
    \r\n\t\t )\r\n\t }else if(readonlymenu){\r\n\t\t return (\r\n\t\t\t\t \t\r\n\t\t\t\t \t\t\r\n\t\t\t\t \t\r\n\t\t );\r\n\t\t }\r\n }\r\n \r\n renderaudittrailmenuitems(readonlymenu){\r\n\t if(!readonlymenu && this.state.userrole=='WRITE'){\r\n\t\t return()\r\n\t }else if(readonlymenu){\r\n\t\t return (\r\n\t\t\t\t \r\n\t\t\t\t \t
  • this.copyAuditTrailsToClipboard('',e)} data-toggle=\"modal\" data-target=\"#responsive-modal\">Copy Audit Trails
  • \r\n\t\t\t\t
    \r\n\t\t )\r\n\t }\r\n }\r\n renderdnsmenuitems(readonlymenu){\r\n\t if(!readonlymenu && this.state.userrole=='WRITE'){\r\n\t\t return()\r\n\t }else if(readonlymenu){\r\n\t\t return (\r\n\t\t\t\t \r\n\t\t\t\t \t
  • this.copyDnsToClipboard('',e)} data-toggle=\"modal\" data-target=\"#responsive-modal\">Copy Records
  • \r\n\t\t\t\t
    \r\n\t\t )\r\n\t }\r\n }\r\n \r\n renderdmarcmenuitems(readonlymenu){\r\n\t if(!readonlymenu && this.state.userrole=='WRITE'){\r\n\t\t return(\r\n\t\t\t\r\n\t\t\t
  • Update Policy
  • \r\n\t
  • this.resetAllSettings('dmarc', e)} data-toggle=\"modal\" data-target=\"#responsive-modal\">Reset DMARC
  • \r\n\t\t \t
    \r\n\t\t )\r\n\t }else if(readonlymenu){\r\n\t\t return (\r\n\t\t\t\t \r\n\t\t )\r\n\t }\r\n }\r\n renderdkimmenuitems(readonlymenu){\r\n\t if(!readonlymenu && this.state.userrole=='WRITE'){\r\n\t\t return(\r\n\t\t\t\r\n\t\t\t\t
  • Add DKIM Record
  • \r\n\t\t\t\t
  • Update DKIM Record
  • \r\n\t\t\t\t
  • Delete DKIM Record
  • \r\n\t\t \t
    \r\n\t\t )\r\n\t }else if(readonlymenu){\r\n\t\t return (\r\n\t\t\t\t \r\n\t\t )\r\n\t }\r\n }\r\n renderlivefeedmenuitems(){\r\n\t \r\n\t \r\n\t if(this.wsconnectionactive()||this.state.wsisconnecting){\r\n\t \t return(\r\n\t\t\t\r\n\t\t\t\t
  • {(this.wsconnectionactive())?'Reconnect':'Connect'}
  • \r\n\t\t\t\t
  • Disconnect
  • \r\n\t\t\t\t
  • this.exportwsmessages('',e)} data-toggle=\"modal\" data-target=\"#responsive-modal\">Copy to Clipboard
  • \r\n\t\t\t\t
  • Clear
  • \r\n\t\t \t
    \r\n\t\t )\r\n\t }else{\r\n\t\t return(\r\n\t\t \t \r\n\t\t\t
  • Connect
  • \r\n\t\t\t
  • Export
  • \r\n\t\t\t
    \r\n\t\t )\r\n\t }\r\n\t\r\n }\r\n \r\n renderactionmenu(){\r\n\r\n switch(this.state.activesendertab){\r\n case \"spf\":\r\n \treturn ( \r\n \t\t\t
      \r\n \t\t\t\t{this.renderspfupdatemenuitems(true)}{this.renderspfupdatemenuitems(false)} \r\n \t\t\t
    \r\n \t\t\t)\r\n\t \r\n break;\r\n case \"dmarc\":\r\n\t return (\r\n\t
      \r\n\t { this.renderdmarcmenuitems(true)}{this.renderdmarcmenuitems(false)}\r\n\t
    \r\n\t );\r\n break;\r\n case \"dkim\":\r\n\t return (\r\n\t
      \r\n\t { this.renderdkimmenuitems(true)}{this.renderdkimmenuitems(false)}\r\n\t
    \r\n\t );\r\n break;\r\n case \"dns\":\r\n return (\r\n
      \r\n \t{this.renderdnsmenuitems(true)}{this.renderdnsmenuitems(false)}\r\n
    \r\n );\r\n break;\r\n case \"audit\":\r\n \t return (\r\n
      \r\n {this.renderaudittrailmenuitems(true)}{this.renderaudittrailmenuitems(false)}\r\n
    \r\n );\r\n \tbreak;\r\n case \"livefeed\":\r\n \t return (\r\n
      \r\n {this.renderlivefeedmenuitems()}\r\n
    \r\n );\r\n \t break;\r\n case \"home\":\r\n return (\r\n
      \r\n {this.renderselecteddomainmenuitems(true)}{this.renderselecteddomainmenuitems(false)}\r\n
    \r\n );\r\n break;\r\n \r\n }\r\n }\r\n\r\n /*\r\n * renderIncludesList - function obtains includedomains from state and renders them in the AddSender Modal dialogue\r\n */\r\n renderIncludesList() {\r\n var myincludes = this.state.includedomains;\r\n\r\n if(myincludes.length>0){\r\n return [{}].concat(myincludes).map(\r\n (include, i) =>\r\n i !== 0\r\n ? \r\n
    \r\n\t\t\t \t
    \r\n\t\t\t \t\r\n\t\t\t
    \r\n
    \r\n : \r\n \r\n );\r\n }else{\r\n return;\r\n }\r\n }\r\n\r\n renderDkimList(){\r\n\t var dkeys = this.state.domainkeys;\r\n\r\n\t if(dkeys.length>0){\r\n\t return [{}].concat(dkeys).map(\r\n\t (dkey, i) =>\r\n\t i !== 0\r\n\t ? \r\n\t \r\n\t \r\n\t : \r\n\t \r\n\t );\r\n\t }else{\r\n\t return;\r\n\t }\r\n }\r\n \r\n renderDkimKeys(keys){\r\n \r\n \t\treturn [{}].concat(keys).map(\r\n\t\t\t (k, i) =>\r\n\t\t\t i !== 0 && k\r\n\t\t\t ? \r\n\t\t\t \r\n\t\t\t
    \r\n\t\t\t \t
    \r\n\t\t\t \t\r\n\t\t\t \t
    {k.keyname}
    \r\n\t\t\t \t\r\n\t\t\t
    {k.type}
    \r\n\t\t\t \r\n\t\t\t
    {k.value}
    \r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t \r\n\t\t\t : \r\n\t\t\t \r\n\t\t\t );\r\n \r\n }\r\n\r\n /*handleDeleteRow = async(k, e)=>{\r\n \t\r\n \tvar crrdkeys = this.state.selecteddomainkeys;\r\n \tcrrdkeys.splice(k,1);\r\n \tthis.setActiveState({selecteddomainkeys:crrdkeys});\r\n\r\n }*/\r\n/*\r\n * handleAddIncludeDomain - function validates domain name entered references valid records and adds accordingly\r\n */\r\n handleAddIncludeDomain = async (event) =>{\r\n event.preventDefault();\r\n \r\n this.setState({ isLoading: true });\r\n \r\n var domain = this.state.txtincludedomain;//this.state.txtincludedomain\r\n \r\n if(await this.isvalidspfrecorddomain(domain)){\r\n \r\n var domains = this.state.includedomains.concat([domain]);\r\n \r\n \r\n this.setState({includedomains:domains});\r\n this.setState({txtincludedomain:\"\"});\r\n \r\n }else{\r\n\r\n this.setState({modalmsg:'Domain name does not reference a valid SPF record. Specify a domain with a valid SPF reference.'});\r\n }\r\n\r\n this.setState({ isLoading: false });\r\n\r\n\r\n }\r\n\r\n /*\r\n * isvalidspfrecorddomain - validates the referenced domain name is valid, and references a valid SPF record usng spfxdns library.\r\n */\r\n async isvalidspfrecorddomain(domain){\r\n \r\n //return (domain.length > 0);\r\n var result = await this.vspfx.verifySpf(domain);\r\n \r\n //alert(JSON.stringify(result.domaintest));\r\n return result.valid\r\n }\r\n\r\n\r\n\r\n\r\n resetAllSettings(scope){\r\n switch(scope){\r\n case \"all\":\r\n this.setState(\r\n {\r\n rdodefaultspfauthpolicy:this.state.selecteddomain.defaultSpfPolicy\r\n , rdosourceauditing:this.state.selecteddomain.defaultSourceAuditing\r\n , rdoipindexing:this.state.selecteddomain.enableIpIndexing\r\n , rdoemailcapture:this.state.selecteddomain.enableEmailCapture\r\n , rdodefaultdmarcaction:this.state.selecteddomain.defaultDmarcPolicy\r\n }\r\n );\r\n break;\r\n case \"spf\":\r\n this.setState(\r\n {\r\n rdodefaultspfauthpolicy:this.state.selecteddomain.defaultSpfPolicy\r\n , rdosourceauditing:this.state.selecteddomain.defaultSourceAuditing\r\n , rdoipindexing:this.state.selecteddomain.enableIpIndexing\r\n , rdoemailcapture:this.state.selecteddomain.enableEmailCapture\r\n \r\n }\r\n );\r\n break;\r\n case \"dmarc\":\r\n this.setState(\r\n {\r\n rdodefaultdmarcaction:this.state.selecteddomain.defaultDmarcPolicy\r\n , txtrualist:this.state.selecteddomain.dmarcRua\r\n , txtruflist:this.state.selecteddomain.dmarcRuf\r\n , txtdmarcPct:this.state.selecteddomain.dmarcPct\r\n }\r\n );\r\n break;\r\n }\r\n \r\n \r\n }\r\n \r\n copyDnsToClipboard(d){\r\n\t //this.taDnsRecords.select();\r\n\t //document.execCommand('copy');\r\n\t \r\n\t var dnsrecords = this.state.dnsdata;\r\n\t \r\n\t var hdr = {};\r\n\t hdr.Name=\"Host\";\r\n\t \t hdr.Type =\"Type\";\r\n\t \t hdr.TTL = \"TTL\";\r\n\t \t hdr.Value = \"Value\";\r\n\t \r\n\t var dtout = [hdr];\r\n\t dtout = dtout.concat(dnsrecords)\r\n\t \r\n\t \r\n\t var textField = document.createElement('textarea')\r\n\t textField.innerHTML = this.buildplaintextdnsrecords(dtout);\r\n\t document.body.appendChild(textField)\r\n\t textField.select()\r\n\t document.execCommand('copy')\r\n\t textField.remove()\r\n\t \r\n\t \r\n\t \r\n\t //e.target.focus();\r\n\t this.setState({ msg: 'DNS Records copied to clipboard.' });\r\n }\r\n \r\n copyAuditTrailsToClipboard(d){\r\n\t //this.taDnsRecords.select();\r\n\t //document.execCommand('copy');\r\n\t \r\n\t var audittrails = this.state.audittrails\r\n\t \r\n\t var hdr = {};\r\n\t hdr.actiondate=\"Date\";\r\n\t \t hdr.src =\"Source\";\r\n\t \t hdr.action = \"Action\";\r\n\t \t hdr.emailaddress = \"User\";\r\n\t \t hdr.configs = \"Configuration\"\r\n\t \r\n\t var dtout = [hdr];\r\n\t dtout = dtout.concat(audittrails)\r\n\t \r\n\t \r\n\t var textField = document.createElement('textarea')\r\n\t textField.innerHTML = this.buildplaintextaudittrails(dtout);\r\n\t document.body.appendChild(textField)\r\n\t textField.select()\r\n\t document.execCommand('copy')\r\n\t textField.remove()\r\n\t \r\n\t //e.target.focus();\r\n\t this.setState({ msg: 'Audit trails copied to clipboard.' });\r\n }\r\n \r\n \r\n\r\n showdomain= async (domain,rowindex, event) => {\r\n\t\r\n\t//close any active ws subscriptions on domain change\r\n\tthis.closeactivewssubscriptions();\r\n \r\n \t\r\n\t \r\n\t \r\n //populate panel with domain details\r\n if((this.state.selecteddomain.defaultSpfPolicy != this.state.rdodefaultspfauthpolicy) ||\r\n (this.state.selecteddomain.defaultSourceAuditing != this.state.rdosourceauditing) ||\r\n (this.state.selecteddomain.enableEmailCapture != this.state.rdoemailcapture)||\r\n (this.state.selecteddomain.enableIpIndexing != this.state.rdoipindexing) ||\r\n (this.state.selecteddomain.defaultDmarcPolicy != this.state.rdodefaultdmarcaction)){\r\n \r\n this.setState({showalert:true});\r\n \r\n }else{\r\n\t \r\n\t var sdata = await this.spfxd.getauthorizedsenders(domain.spfxio_id);\r\n\t var nameservers = {};\r\n\t try{\r\n\t \t \r\n\t nameservers= await this.spfxd.getdomainkeynameservers(domain.spfxio_id);\r\n\t \r\n\t }catch(nserr){\r\n\t nameservers=nserr;\r\n\t }\r\n \t\t \r\n\t \r\n\t var ssenderdomain = (sdata)?(sdata.length>0)?sdata[0]:'':'';\r\n\t this.setState({ selecteddomain:domain\r\n\t\t\t\t , rdodefaultspfauthpolicy:domain.defaultSpfPolicy\r\n\t\t\t\t , rdosourceauditing:domain.defaultSourceAuditing\r\n\t\t\t\t , rdoemailcapture:domain.enableEmailCapture\r\n\t\t\t\t , rdoipindexing:domain.enableIpIndexing\r\n\t\t\t\t , rdoenablerelay:domain.enableRelayServices\r\n\t , rdodefaultdmarcaction:domain.defaultDmarcPolicy\r\n\t , txtdmarcPct:domain.dmarcPct*100\r\n\t , txtrualist:domain.dmarcRua\r\n\t , txtruflist:domain.dmarcRuf\r\n\t , selectedrow:rowindex\r\n\t , selecteddomainsenders:sdata\r\n\t , selectedsenderdomain:ssenderdomain\r\n\t , selectedsenderdkimns:nameservers\r\n\t , selectedsenderrow:1\r\n\t , dnsdata:[]\r\n\t \t\t\t\t, msg:''\r\n\t });\r\n\t \r\n\t \r\n\t\t\tif(this.state.activesendertab=='dns'){\r\n\t\t\t\tvar t = await this.sendertabclick('dns',null)\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(this.state.activesendertab=='audit'){\r\n\t\t\t\tawait this.setaudittrails(domain.spfxio_id);\r\n\t\t\t}\r\n\t\t\t\r\n }\r\n \r\n }\r\n\r\n \r\n showsenderdomain= async (domain,rowindex, event) => {\r\n //populate panel with domain details\r\n this.setActiveState({selectedsenderrow:rowindex,selectedsenderdomain:domain, msg:'' });\r\n\r\n \r\n }\r\n\r\nconfirmDeleteSender(){\r\n\tthis.setState({showconfirmeddeletealert:true});\r\n\t\r\n}\r\nasync deleteSender(){\r\n \r\n var selecteddomain = this.state.selectedsenderdomain\r\n var senders = this.state.selecteddomainsenders\r\n var selindex = senders.indexOf(selecteddomain);\r\n \r\n var d = selecteddomain;\r\n var pparams = {};\r\n pparams.spfx = {\r\n spfxio_id: this.state.selecteddomain.spfxio_id //spfxio hosted domain id\r\n , domain: this.state.selecteddomain.domain\r\n , senderdomain: d.senderdomain\r\n , includehosts: d.includes //must conform to dns formatted names\r\n , defaultSpfPolicy: d.defaultSpfPolicy//[~||-||?]\r\n , defaultSourceAuditing: d.defaultSourceAuditing //([true || false] as bit\r\n , enableEmailCapture : d.enableEmailCapture\r\n \r\n };\r\n\r\n \r\n var res = await this.spfxd.deleteauthorizedsender(pparams);\r\n \r\n if(res.err){\r\n \tthis.setActiveState({msg: \"error processing delete\", showconfirmeddeletealert: false});\r\n }else{\r\n \r\n\t //senders.splice(senders.indexOf(selecteddomain),1);\r\n\t senders.splice(selindex,1);\r\n\t \r\n\t \r\n\t \r\n\t if(selindex>=senders.length){\r\n\t \tselindex=senders.length-1;\r\n\t }\r\n\t \r\n\t this.setState({selecteddomainsenders:senders,selectedsenderdomain:senders[selindex], msg: \"Sending Domain Deleted Successfully\", showconfirmeddeletealert: false});\r\n }\r\n\r\n}\r\n\r\ncancelDkimSave(origdomain){\r\n\tvar selecteddomain = this.state.selectedsenderdomain\r\n var senders = this.state.selecteddomainsenders\r\n var selindex = senders.indexOf(selecteddomain);\r\n \r\n senders[selindex].dkimkeys=origdomain.dkimkeys;\r\n this.setState({selecteddomainsenders:senders});\r\n \r\n}\r\n\r\nrenderDomains(domains) {\r\n return [{}].concat(domains).map(\r\n (domain, i) =>\r\n i !== 0\r\n ? \r\n this.showdomain(domain,i, e)}>\r\n {/*{domain.status}*/}\r\n {/*{domain.stats.join(',')}*/}\r\n {/* { domain.senders.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\") }*/}\r\n \r\n \r\n : ''\r\n );\r\n}\r\n\r\nrenderNS(nameservers){\r\n\ttry{\r\n\tif(nameservers){\r\n\t\t\r\n\t\tvar res = []\r\n\t\tfor(var nameserver of nameservers)\r\n\t\t{\r\n\t\t\tif(nameserver.ResourceRecords)\r\n\t\t\t{\r\n\t\t\t\tfor(var rec of nameserver.ResourceRecords)\r\n\t\t\t\t{\r\n\t\t\t\t\tres.push(rec.Value);\t\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn [{}].concat(res).map(\r\n\t\t\t(v,i)=>\r\n\t\t\ti !== 0\r\n\t\t\t\t?
    {v}
    \r\n\t\t\t\t: ''\r\n\t\t\r\n\t\t);\r\n\t\r\n\t}else{\r\n\t\treturn [{}]\r\n\t}\r\n\treturn [{}].concat(nameservers).map(\r\n\t\t(nameserver,i)=>\r\n\t\ti !== 0\r\n\t\t\t?
    { JSON.stringify(nameserver.ResourceRecords) }
    \r\n\t\t\t: ''\r\n\t);\r\n\t}catch(err){\r\n\t\treturn [];\r\n\t}\r\n}\r\n\r\nrenderKeys(keys){\r\n\tvar vals = [{}].concat(keys).map((key, i) => (i !==0 && key)?key.keyname:'');\r\n\tvals.shift();\r\n\treturn vals.join(',');\r\n}\r\n\r\nrenderSenders(domains) {\r\n return [{}].concat(domains).map(\r\n (domain, i) =>\r\n i !== 0\r\n ? \r\n this.showsenderdomain(domain,i, e)}>\r\n
    \r\n\t \t\t
    {this.translatespf(domain.defaultSpfPolicy)}
    \r\n\t
    {this.translatesourceauditing(domain.defaultSourceAuditing)}
    \r\n\t
    {this.translateemailcapture(domain.enableEmailCapture)}
    \r\n\t
    {domain.includes.join(',')}
    \r\n\t
    {this.renderKeys(domain.dkimkeys)}
    \r\n
    \r\n
    \r\n
    \r\n : ''\r\n );\r\n}\r\n\r\ntranslatespf(policy){\r\n\tswitch(policy){\r\n\t\tcase '-':\r\n\t\t\treturn 'fail';\r\n\t\tbreak;\r\n\t\tcase '~':\r\n\t\t\treturn 'softfail';\r\n\t\tbreak;\r\n\t\tcase '?':\r\n\t\t\treturn 'neutral';\r\n\t\tbreak;\r\n\t}\r\n}\r\n\r\ntranslatesourceauditing(policy){\r\n\tif(policy){\r\n\t\tswitch(policy.toString()){\r\n\t\t\tcase '2':\r\n\t\t\t\treturn 'all unauthorized sources';\r\n\t\t\t\tbreak;\r\n\t\t\r\n\t\t\tcase '1':\r\n\t\t\t\treturn 'spf failures only';\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\treturn 'disabled';\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}else{\r\n\t\treturn 'disabled';\r\n\t}\r\n}\r\ntranslateemailcapture(policy){\r\n\tif(policy){\r\n\t\tswitch(policy.toString()){\r\n\t\t\tcase '1':\r\n\t\t\t\treturn 'enabled';\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\treturn 'disabled';\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}else{\r\n\t\treturn 'disabled';\r\n\t}\r\n}\r\n\r\nrenderConfirmDelete(){\r\n\treturn (\r\n\t\t\t\r\n\t\t this.setState({ showconfirmeddeletealert: false })}\r\n\t\t onConfirm={() => this.deleteSender()}\r\n\t\t />\r\n\t\t \r\n\t\t );\r\n}\r\n\r\nrendersweetalert() {\r\n return (\r\n \r\n this.setState({ showalert: false })}\r\n onConfirm={() => this.updateSenderSettings()}\r\n />\r\n \r\n );\r\n}\r\n\r\n \r\n\trender() {\r\n\r\n\t\tvar audittrailcolumns = \r\n\t\t [\r\n\t\t {\r\n\t\t Header:'Date',\r\n\t\t accessor: 'actiondate'\r\n\t\t } \r\n\t\t , {\r\n\t\t Header:'Source',\r\n\t\t accessor: 'src'\r\n\t\t }\r\n\t\t , {\r\n\t\t Header:'Action',\r\n\t\t accessor: 'action'\r\n\t\t } \r\n\t\t , {\r\n\t\t Header:'User',\r\n\t\t accessor: 'emailaddress'\r\n\t\t }\r\n\t\t ];\r\n\t\t\r\n\t\tvar livefeedcolumns = \r\n \t[\r\n\t {\r\n\t id:'dtstamp',\r\n\t Header:'Date',\r\n\t accessor: row => new Date(row.timestamp).toString()\r\n\t } \r\n\t , {\r\n\t Header:'Class',\r\n\t accessor: 'message.recclass'\r\n\t }\r\n\t , {\r\n\t Header:'Smtp Host Domain',\r\n\t accessor: 'message.smtphostdomain'\r\n\t } , {\r\n\t Header:'Smtp IP',\r\n\t accessor: 'message.smtphostip'\r\n\t }, {\r\n\t \t Header:'Email Address Domain',\r\n\t \t accessor: 'message.senderdomain'\r\n\t } , {\r\n\t \t Header:'Email Address',\r\n\t \t accessor: 'message.senderaddress'\r\n\t }\r\n\t \r\n\t \r\n\t ];\r\n\r\n\r\n\t\t \r\n return (\r\n \r\n\r\n \r\n\r\n\t\t\t\t\r\n \t\t\t\r\n\t\t\t\t\r\n\t\t\t\t
    \r\n
    \r\n
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n \r\n\t\t\t\t\t\r\n {/* */}\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    Registered Domains
    \r\n
    \r\n
    \r\n
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
      \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{this.renderdomainmenuitems(true)}{this.renderdomainmenuitems(false)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\t\t\t\t\t\t\t\t\t\t
    \r\n \r\n { !(this.state.domaindata.length===0) && this.renderDomains(this.state.domaindata) }\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \t\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n \r\n\t\t\t\t\t\t\t\t\t\t\t\t \r\n {this.renderactionmenu()}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Create the following DNS records to enable spfXio for your domain::\r\n \t\r\n\t\t \t\t\t\r\n\t\t \t\t\t\r\n\t\t \t\t\t\r\n\t\t \t\t\t\r\n\t\t \t\t\r\n\t\t \t\t\r\n\t\t \t\t\t \r\n\t\t \t\t\t\r\n\t\t \t\t\t\r\n\t\t \r\n\t\t \r\n\t\t \t\t\t \r\n\t\t \t\t\t\r\n\t\t \t\t\t\r\n\t\t \r\n\t\t \r\n\t\t \t\r\n\t\t \t\r\n\t\t \t\r\n\t\t \r\n\t\t
    HostTypeValue
    {this.state.selecteddomain.domain}TXT\r\n\t\t \r\n\t\t v=spf1 redirect=%{'{h2}'}.inc.%{'{d2}'}.{this.state.selecteddomain.spfxio_id}.{CONFIG.spfx.servicedomain}\r\n\t\t \r\n\t\t
    _dmarc.{this.state.selecteddomain.domain}CNAME\r\n\t\t \r\n\t\t \t_dmarc.{this.state.selecteddomain.spfxio_id}.{CONFIG.spfx.servicedomain}\r\n\t\t \r\n\t\t
    _domainkey.{this.state.selecteddomain.domain}NS\r\n\t\t \t\t\r\n\t\t \t\t\t{ this.renderNS(this.state.selectedsenderdkimns) }\r\n\t\t \t\t\r\n\t\t \t
    \r\n\r\n {/*\r\n\t
    \r\n\t
    \r\n\t
    \r\n\t
    \r\n\t
    \r\n\t
    bar Chart
    \r\n\t
    \r\n\t
    \r\n\t
    \r\n\t
    \r\n\t
    \r\n\t \r\n\t
    \t\r\n\t
    \r\n\t
    \r\n\t
    \r\n\t
    \r\n\t */\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n\t \t\t\t\t\t\t\t\t\t
    \r\n\t \t\t\t\t\t\t\t\t\t\t
    \r\n\t \t\t\t\t\t\t\t\t\t\t\t
    \r\n\t \t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t \t\t\t\t\t\t\t\t\t\t\t\t\t
    Domain SPF Policies
    \r\n\t \t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t \t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t \t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t \t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t \r\n\t\t\t
    \r\n\t\t\t \t\r\n\t\t\t
    \r\n\t\t\t\t \r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t \r\n\t\t\t \r\n\t\t\t \r\n\t\t\t \r\n\t\t\t \r\n\t\t\t \r\n\t\t\t \t \r\n\t\t\t \t \r\n\t\t\t \t \r\n\t\t\t \t \r\n\t\t\t \t \r\n\t\t\t \t \r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t \t
    \r\n\t\t\t \t \r\n\t\t\t \t
    \r\n\t\t\t \t
    \r\n\t\t\t \t \r\n\t\t\t \t\t \r\n\t\t\t \t\t \r\n\t\t\t \t\t \r\n\t\t\t \t\t \r\n\t\t\t \t \r\n\t\t\t \t \r\n\t\t\t \t \r\n\t\t\t \t
    \r\n\t\t\t \t
    \r\n\t\t\t \t
    \r\n\t\t\t \t
    \r\n\t\t\t \t
    \r\n\t\t\t \t
    \r\n\t\t\t \t \r\n\t\t\t \t
    \r\n\t\t\t \t
    \r\n\t\t\t \t \r\n\t\t\t \t \r\n\t\t\t \t \r\n\t\t\t \t \r\n\t\t\t \t \r\n\t\t\t \t \r\n\t\t\t \t \r\n\t\t\t \t \r\n\t\t\t \t \r\n\t\t\t \t \r\n\t\t\t \t \r\n\t\t\t \t \r\n\t\t\t \t
    \r\n\t\t\t \t\t
    \r\n\t\t\t \t\t
    \r\n\t\t\t \t
    \r\n\t\t\t \t
    \r\n\t\t\t \t
    \r\n\t\t\t \t \r\n\t\t\t \t
    \r\n\t\t\t \t
    \r\n\t\t\t \t \r\n\t\t\t \t \r\n\t\t\t \t \r\n\t\t\t \t \r\n\t\t\t \t \r\n\t\t\t \t \r\n\t\t\t \t \r\n\t\t\t \t \r\n\t\t\t \t
    \r\n\t\t\t \t\t
    \r\n\t\t\t \t\t
    \r\n\t\t\t \t
    \r\n\t\t\t \t
    \r\n\t\t\t \t
    \r\n\t\t\t \t \r\n\t\t\t \t
    \r\n\t\t\t \t
    \r\n\t\t\t \t \r\n\t\t\t \t \r\n\t\t\t \t \r\n\t\t\t \t \r\n\t\t\t \t \r\n\t\t\t \t \r\n\t\t\t \t \r\n\t\t\t \t \r\n\t\t\t \t
    \r\n\t\t\t \t\t
    \r\n\t\t\t \t\t
    \r\n\t\t\t \t
    \r\n\t\t\t
    \r\n\t \t\t\t\t\t\t\t\t\t\t\t\t\r\n\t \t\t\t\t\t\t\t\t\t\t\t\t\r\n\t \t\t\t\t\t\t\t\t\t\t\t\t\r\n\t \t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t \t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t \t\t\t\t\t\t\t\t\t\t\t
    \r\n\t \t\t\t\t\t\t\t\t\t\t\t
    \r\n\t \t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t \t\t\t\t\t\t\t\t\t\t\t\t\t
    Authorized Sending Domains
    \r\n\t \t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t \t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t \t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t \t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t \r\n\t\t { !(this.state.selecteddomainsenders.length===0) && this.renderSenders(this.state.selecteddomainsenders) }\r\n\t\t \r\n\t\t
    \r\n\t \t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t \t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t \t\t\t\t\t\t\t\t\t\t\t
    \r\n\t \t\t\t\t\t\t\t\t\t\t\t\r\n\t \t\t\t\t\t\t\t\t\t\t
    \r\n\t \t\t\t\t\t\t\t\t\t
    \r\n\t \t\t\t\t\t\t\t\t
    \r\n \r\n \r\n
    \r\n
    \r\n \t

    manage dkim keys for your domain

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\t
    \r\n\t \r\n\t
    \r\n\t
    \r\n\t \r\n\t \r\n\t \r\n\t \r\n\t
    \r\n\t
    \r\n\t \r\n\t \r\n\t \r\n\t \r\n\t
    \r\n\t
    \r\n\t \r\n\t \r\n\t \r\n\t \r\n\t
    \r\n\t
    \r\n\t
    \r\n\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t \r\n
    \r\n \r\n
    \r\n
    \r\n \t
    \r\n\t\t {\r\n\t\t \t\treturn (\r\n\t\t \t\t\t\t
    {row.original.configs}
    \r\n\t\t \t\t)\r\n\t\t \t\r\n\t\t \t}}\r\n\t\t \t\r\n\t\t \t\r\n\t\t />\r\n\t\t
    \r\n
    \r\n
    \r\n\t
    \r\n\t \t\r\n \t\t{ this.renderdnsrecords(this.state.dnsdata) }\r\n \t\r\n \t\r\n \t\r\n
    \r\n
    \r\n \r\n
    \r\n\t
    \r\n\t \t\t\r\n\t \t\t{/*{this.renderlivefeed(this.state.livefeedmessages[this.state.selecteddomain.spfxio_id])}*/}\r\n\t \t\t {\r\n\t\t\t \t\treturn (\r\n\t\t\t \t\t\t\t
    {JSON.stringify(row.original.message)}
    \r\n\t\t\t \t\t)\r\n\t\t\t \t\r\n\t\t\t \t}}\r\n\t\t />\r\n\t \t\r\n\t
    \r\n\t
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {/**/}\r\n\r\n {/**/}\r\n \r\n \r\n SPF Authorized Sending Domains\r\n \r\n \r\n
    \r\n { this.state.modalmsg }\r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\t \r\n\t \r\n\t \r\n\t \r\n\t
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n {/**/}\r\n 0)}\r\n isLoading={this.state.isLoading}\r\n loadingText=\"validating...\"\r\n className=\"btn btn-warning\"\r\n onClick={(e) => this.handleAddIncludeDomain(e)} \r\n />\r\n \r\n \r\n
    \r\n \r\n {this.renderIncludesList()}\r\n \r\n \r\n
    \r\n \r\n
    \r\n\r\n \r\n this.handleAddAuthorizedSender(e)} \r\n \r\n />\r\n \r\n \r\n\r\n
    \r\n \r\n \r\n {/**/}\r\n \r\n \r\n Add New Domain\r\n \r\n \r\n
    \r\n { this.state.modalmsg }\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n\t \r\n\t
    \r\n\t \r\n\t
    \r\n\t \r\n\t \r\n\t \r\n\t \r\n\t
    \r\n\t
    \r\n\t \r\n\t \r\n\t \r\n\t \r\n\t
    \r\n\t \r\n\t
    \r\n\t
    \r\n
    \r\n \r\n
    \r\n
    \r\n\t \r\n\t \r\n\t \r\n\t \r\n\t
    \r\n \t
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n\t \r\n\t \r\n\t \r\n\t \r\n\t
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n\t \r\n\t
    \r\n\t
    \r\n\t \r\n\t \r\n\t \r\n\t \r\n\t
    \r\n \t
    \r\n\t \r\n\t \r\n\t \r\n\t \r\n\t
    \r\n\t \r\n\t
    \r\n\t
    \r\n \r\n\t \r\n \r\n
    \r\n\t \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n\r\n \r\n this.handleAddHostedDomain(e)} \r\n \r\n />\r\n \r\n \r\n\r\n
    \r\n \r\n \r\n this.setState({selecteddomainkeys:keys}) }\r\n \toncancel = {(origdomain) => this.cancelDkimSave(origdomain) }\r\n \tuser = { this.spfxd.getuser() }\r\n />\r\n\r\n\r\n\r\n\t\t\t\t\t\t
    \r\n { this.rendersweetalert() }\r\n { this.renderConfirmDelete() }\r\n\t\t\t\t\t
    \r\n \r\n\t\t\t
    \r\n
    \r\n\t\t\r\n );\r\n }\r\n \r\n \r\n}","import React, { Component} from \"react\";\r\nimport BaseComponent from \"../classes/BaseComponent\"\r\nimport \"../dist/css/style.css\";\r\n\r\nexport default class error extends BaseComponent {\r\n constructor(props) {\r\n super(props);\r\n \r\n this.pageaudience=\"public\"\r\n \r\n\t/*this.state = {\r\n email: \"\",\r\n password: \"\",\r\n\t isLoading: false,\r\n\t token: \"\"\r\n };*/\r\n\r\n }\r\n \r\n\r\n render() {\r\n return (\r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t
    \r\n ERROR\r\n\t\t\t\t\t\t\t\t\t\t{ this.state.err }\r\n\t\t\t\t\t\t\t\t\t
    \t\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t
    \r\n );\r\n }\r\n}","\r\nimport { Auth } from \"aws-amplify\";\r\n\r\nimport { FormGroup, FormControl, ControlLabel, Modal } from \"react-bootstrap\";\r\n\r\nimport Select from 'react-select';\r\n//import { FormGroup, FormControl, ListGroup, ListGroupItem, Modal, Radio } from \"react-bootstrap\";\r\nimport React, { Fragment } from \"react\";\r\nimport LeftNav from \"../components/LeftNav\"\r\nimport TopNav from \"../components/TopNav\"\r\nimport RightNav from \"../components/RightNav\"\r\nimport Footer from \"../components/Footer\"\r\nimport BaseComponent from \"../classes/BaseComponent\"\r\nimport LoaderButton from \"../components/LoaderButton\"\r\nimport QRCode from \"qrcode.react\";\r\nimport SweetAlert from 'sweetalert-react';\r\n\r\n\r\nimport spfxdata from \"../classes/spfxdata\"\r\n\r\nimport \"./profile.css\"\r\n\r\nexport default class profile extends BaseComponent {\r\n\tconstructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n isLoading: false\r\n ,msg: ''\r\n ,name:''\r\n ,email:''\r\n ,phone:''\r\n ,country:'US'\r\n ,verifycode:''\r\n ,isverifying:false\r\n ,phoneverified: false\r\n ,userattributes:{}\r\n ,smsmfaenabled:false\r\n ,smsmfaenabledorig:false\r\n ,totpmfaenabled:false\r\n ,totpmfaenabledorig:false\r\n ,rdomfapreference:'none'\r\n ,rdomfapreferenceorig:'none'\r\n ,totpsecret:''\r\n ,txtverifyotp:''\r\n ,authclass:{}\r\n ,showConfigureOtp:false\r\n ,isverifyingotp:false\r\n ,modalmsg:''\r\n ,ddlprimaryorg:''\r\n };\r\n \r\n this.spfxd = new spfxdata();\r\n \r\n this.openModal = this.openModal.bind(this);\r\n this.closeModal = this.closeModal.bind(this);\r\n\r\n this.oncomponentmounted = (susr)=> {\r\n\r\n\r\n this.spfxd.setuser(susr);\r\n \r\n var that = this;\r\n \r\n \r\n //Auth.currentAuthenticatedUser().then(user=>{\r\n Auth.currentUserPoolUser({bypassCache:true}).then(user=>{\r\n\r\n Auth.currentUserInfo().then(info=>{\r\n var tmp = {};\r\n tmp.name = info.attributes.name;\r\n tmp.email = info.attributes.email;\r\n tmp.phone = info.attributes.phone_number;\r\n tmp.phoneverified = (info.attributes.phone_number_verified);\r\n tmp.userattributes = info.attributes;\r\n that.setState(tmp);\r\n \r\n \r\n }).catch(function(e){\r\n that.setState({msg:'Failed to get the current session' + JSON.stringify(e)})\r\n });\r\n\r\n Auth.getPreferredMFA(user).then(mfa=>{\r\n \t\r\n switch(mfa){\r\n case \"SMS_MFA\":\r\n that.setState({rdomfapreference:'sms',rdomfapreferenceorig:'sms'});\r\n break;\r\n case \"SOFTWARE_TOKEN_MFA\":\r\n that.setState({rdomfapreference:'totp',rdomfapreferenceorig:'totp'});\r\n break;\r\n default:\r\n //NOFMA\r\n that.setState({rdomfapreference:'none',rdomfapreferenceorig:'none'});\r\n \r\n break;\r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }).catch(function(e){\r\n that.setState({msg:'Failed to get MFA preference' + e.message})\r\n });\r\n\r\n \r\n }).catch(function(e){\r\n that.setState({msg:'Failed to get currentAuthenticatedUser' + e.message})\r\n });\r\n \r\n \r\n\t this.spfxd.getuserorglist().then((orgs)=>{\r\n\t \tthat.setState({ orglist : orgs });\r\n\t }).catch((e)=>{\r\n\t \tthat.setState({msg:'Failed to get orgs for user.' + e.message})\r\n\t });\r\n\t \r\n \r\n \r\n\r\n /*Auth.currentUserPoolUser({bypassCache:false}).then(user=>{\r\n Auth.userSession(user).then(function (session) {\r\n that.setState({msg:JSON.stringify(session.idToken.payload),isLoading:false});\r\n \r\n var tmp = {};\r\n tmp.name = session.idToken.payload.name;\r\n tmp.email = session.idToken.payload.email;\r\n tmp.phone = (session.idToken.payload.phone_number)?session.idToken.payload.phone_number:'';\r\n //tmp.msg = JSON.stringify(susr.idtoken.payload);\r\n //tmp.msg = JSON.stringify(susr)\r\n //that.setState(tmp);\r\n\r\n \r\n }).catch(function (e) {\r\n that.setState({msg:'Failed to get the current session' + JSON.stringify(e)})\r\n \r\n });\r\n });*/\r\n\r\n //let user = await Auth.currentAuthenticatedUser();\r\n \r\n \r\n //this.setState({});\r\n\r\n };\r\n\r\n\r\n}\r\n\r\nhandleChange = event => {\r\n \r\n if(event.target.value=='true'||event.target.value=='false'){\r\n this.setState({\r\n [event.target.id]: (event.target.value==true || event.target.value=='true')\r\n });\r\n }else{\r\n this.setState({\r\n [event.target.id]: event.target.value\r\n });\r\n }\r\n }\r\n\r\n\r\nenableSMSAuth = async (boolin) => {\r\n \r\n\treturn new Promise(async (resolve,reject)=>{\r\n\t\t\r\n\t\ttry{\r\n\t\t\t\r\n\t\t\t Auth.currentUserPoolUser({bypassCache:true}).then(async (user)=>{\r\n\t\t\t\t \r\n\t\t\tvar res;\r\n if(boolin){\r\n res = await Auth.enableSMS(user);\r\n res = await Auth.setPreferredMFA(user, 'SMS');\r\n resolve(res);\r\n }else{\r\n res = Auth.disableSMS(user);\r\n reject(res);\r\n }\t\t\t\r\n \r\n\t\t\t });\r\n\t \r\n\t }catch(mfaerr){\r\n\t //error\r\n\t \treject(mfaerr);\t \r\n\t }\r\n\t \r\n\t});\r\n\t\r\n \r\n}\r\n\r\nenableTOTPAuth = async (user, boolin) =>\r\n{\r\n\t try{\r\n if(boolin){\r\n //alert('do enable')\r\n Auth.setupTOTP(user).then((data)=>{\r\n \t this.setState({msg:JSON.stringify(data)});\r\n }).catch((err)=>{\r\n \t this.setState({msg:JSON.stringify(err)});\r\n });\r\n \r\n }else{\r\n //alert('do disable')\r\n //await Auth.disableSMS(user);\r\n }\r\n \r\n }catch(mfaerr){\r\n //error\r\n //alert(JSON.stringify(mfaerr));\r\n\t this.setState({msg:JSON.stringify(mfaerr)});\r\n }\r\n}\r\n\r\nupdateProfile = async event => {\r\n event.preventDefault();\r\n\r\n \r\n //use user.accessToken.jwtToken to enable TOTP via soft device;\r\n // aws cognito-idp associate-software-token --access-token\r\n // aws cognito-idp verify-software-token --friendly-device-name spfXio --user-code /d{6} --access-token\r\n // aws cognito-idp set-user-mfa-preference --software-token-mfa-settings Enabled=true,PreferredMfa=true --access-token\r\n //tstate.msg = JSON.stringify(susr.accessToken,10);\r\n this.setState({isLoading:true})\r\n try{\r\n let user = await Auth.currentAuthenticatedUser();\r\n\r\n //check to see if anything has changed before updating\r\n //alert(this.state.smsmfaenabled);\r\n \r\n var thismsg = '';\r\n \r\n //do updates if user has more than one organization, and the organization selection has changed\r\n if(this.state.orglist.length>1){\r\n \tvar selOrgId = this.getOrgValue(this.state.orglist).value\r\n \tif(this.hasOrgValueChanged(this.state.orglist,selOrgId)){\r\n \t\tvar params = {};\r\n \t\tparams.spfx={};\r\n \t\tparams.spfx.primaryorgid = selOrgId;\r\n \t\ttry{\r\n \t\t\tvar res = await this.spfxd.updateuserprimaryorg(params);\r\n \t\t\t\r\n \t\t\tif(res.recordset.affectedRows==1){\r\n \t\t\t\tthismsg += 'updated primary org for user';\r\n \t\t\t\t\r\n \t\t\t\tvar uporg = this.state.orglist;\r\n \t\t\t\tfor(var o of uporg){\r\n \t\t\t\t\to.primaryorgid=selOrgId;\r\n \t\t\t\t}\r\n \t\t\t\t\r\n \t\t\t\tthis.setState({ orglist:uporg } );\r\n \t\t\t\t\r\n \t\t\t}else{\r\n \t\t\t\tthismsg += 'failed updating primary org for user';\r\n \t\t\t}\r\n \t\t}catch(err){\r\n \t\t\tthismsg += 'error updating user primary org;';\r\n \t\t}\r\n \t}\r\n }\r\n \r\n let result = await Auth.updateUserAttributes(user,{\r\n 'name': this.state.name\r\n ,'phone_number':this.state.phone\r\n \r\n });\r\n\r\n\r\n thismsg += 'profile updated';\r\n var phoneverified = (this.state.phone==this.state.userattributes.phone_number)\r\n //if(!phoneverified){\r\n // this.enableSMSAuth(user,false);\r\n //}\r\n //alert(`is phone verified ${phoneverified}`)\r\n var that=this;\r\n this.setState({\r\n phoneverified: phoneverified\r\n , msg:thismsg\r\n , isLoading:false\r\n , smsmfaenabledorig:that.state.smsmfaenabled\r\n });\r\n \r\n }catch(err){\r\n this.setState({msg:JSON.stringify(err),isLoading:false});\r\n }\r\n}\r\n\r\nverifyPhone = async event =>{\r\n event.preventDefault();\r\n\r\n this.setState({isLoading:true})\r\n try{\r\n //let user = await Auth.currentAuthenticatedUser();\r\n var isverifying = this.state.isverifying\r\n var thismsg = ''\r\n var phoneverified = this.state.phoneverified;\r\n if(!this.state.isverifying){\r\n let result = await Auth.verifyCurrentUserAttribute('phone_number');\r\n isverifying=true;\r\n thismsg = 'verification code sent';\r\n }else{\r\n //verifyCurrentUserAttributeSubmit\r\n let result = await Auth.verifyCurrentUserAttributeSubmit('phone_number',this.state.verifycode);\r\n isverifying=false;\r\n thismsg = 'phone number verified';\r\n phoneverified = true;\r\n }\r\n\r\n this.setState({isLoading:false,msg:thismsg,isverifying:isverifying,phoneverified:phoneverified});\r\n\r\n }catch(err){\r\n this.setState({msg:JSON.stringify(err),isLoading:false});\r\n }\r\n}\r\n//-----------------------------------------------------------------------------------------------------------------------------\r\nhandleVerifyOTP = async (event) =>{\r\n\t event.preventDefault();\r\n\t \r\n\t this.setActiveState({isverifyingotp:true});\r\n\t var tstate = {}; \r\n\t \r\n\t \ttry{\r\n\t \r\n\t \tlet res = await this.verifyotp(this.state.txtverifyotp);\r\n\t \t tstate.msg = \"TOTP Enabled\"\r\n\t\t tstate.showConfigureOtp = false;\r\n\t \t\t tstate.rdomfapreferenceorig = 'totp';\r\n\t\t}catch(err) {\r\n\t\t // Token is not verified\r\n\t\t\ttstate.modalmsg = err.message;\r\n\t\t\ttstate.showConfigureOtp = true;\r\n\t\t};\r\n\t \r\n\t \r\n tstate.isverifyingotp = false;\r\n this.setActiveState( tstate );\r\n}\r\n\r\n//-----------------------------------------------------------------------------------------------------------------------------\r\nhandleTxtFieldChange = event => {\r\n this.setState({\r\n [event.target.id]: event.target.value\r\n });\r\n }\r\n//-----------------------------------------------------------------------------------------------------------------------------\r\nhandleRdoChange = async event => {\r\n \r\n this.setState({\r\n [event.target.name]: event.target.value\r\n });\r\n \r\n \r\n switch(event.target.name){\r\n \r\n case \"rdomfapreference\":\r\n \t\tswitch(event.target.value){\r\n \t\t\tcase 'totp':\r\n \t\t\t\t\r\n \t\t\t\tvar code = await this.setupotp(this.susr).catch((err)=>{alert(err)});\r\n \t\t\t\tif(code){\r\n \t\t\t\t\tthis.setState({totpsecret:code,showConfigureOtp:true});\r\n \t\t\t\t}\r\n break;\r\n \r\n \t\t\tcase 'sms':\r\n \t\t\t\tif(!this.state.phoneverified){\r\n \t\t\t\t\tthis.setState( {showverifycell:true});\r\n \t\t\t\t}else{\r\n \t\t\t\t\t \r\n \t\t\t\t\t try{\r\n \t\t\t\t\t this.enableSMSAuth(true).then((res)=>{\r\n \t\t\t\t \tif(res=='SUCCESS'){\r\n \t\t\t\t \t\tthis.setState({msg:'SMS MFA Enabled'});\r\n \t\t\t\t \t} else{\r\n \t\t\t\t \t\tthis.setState({msg:res});\r\n \t\t\t\t \t}\r\n \t\t\t\t \t\r\n \t\t\t\t \tthis.setState({rdomfapreferenceorig:this.state.rdomfapreference});\r\n \t\t\t\t }).catch(smserr=>{\r\n \t\t\t\t \t this.setState({msg:smserr.message})\r\n \t\t\t\t });\r\n \t\t\t\t \r\n \t\t\t\t\t }catch(err){\r\n \t\t\t\t\t\t this.setState({msg:err.message});\r\n \t\t\t\t\t }\r\n \t\t\t\t}\r\n \t\t\t\t \r\n \t\t\tbreak;\r\n \t\t\tcase 'none':\r\n \t\t\t\t\tlet user = await Auth.currentAuthenticatedUser();\r\n \t\t\t\t\tAuth.setPreferredMFA(user, 'NOMFA');\r\n \t\t\t\t\tthis.setState({rdomfapreferenceorig:this.state.rdomfapreference});\r\n \t\t\t\tbreak;\r\n \t\t}\r\n\r\n \tbreak;\r\n \r\n }\r\n \r\n}\r\n\r\nasync verifyotp(code){\r\n\treturn new Promise((resolve,reject)=>{\r\n\t\t\r\n\t\t Auth.currentUserPoolUser({bypassCache:true}).then(user=>{\r\n\r\n\t\t\t Auth.verifyTotpToken(user,code).then(() => {\r\n\t\t\t \t// don't forget to set TOTP as the preferred MFA method\r\n\t\t\t\t Auth.setPreferredMFA(user, 'TOTP').then((data)=>{\r\n\t\t\t\t \tresolve(data);\r\n\t\t\t\t }).catch(pe =>{\r\n\t\t\t\t \treject(pe);\r\n\t\t\t\t });\r\n\t\t\t\t \r\n\t\t\t\t}).catch( e => {\r\n\t\t\t\t // Token is not verified\r\n\t\t\t\t\treject(e)\r\n\t\t\t\t});\r\n\t\t\t \r\n\t\t }).catch((err)=>{\r\n\t\t\t reject(err);\r\n\t\t })\r\n\t\t \r\n\t\t \r\n\t\t \r\n\t});\r\n}\r\nasync setupotp(user){\r\n\treturn new Promise((resolve,reject)=>{\r\n\t Auth.currentUserPoolUser({bypassCache:true}).then(user=>{\r\n\t\t \r\n\t\t Auth.setupTOTP(user).then((code)=>{\r\n\t\t\t\tresolve(code);\r\n\t\t\t}).catch((err)=>{\r\n\t\t\t\treject(err)\r\n\t\t\t});\r\n\t\t \r\n\t }).catch((err)=>{\r\n\t\t reject(err);\r\n\t })\r\n\t});\r\n\r\n\t\t\r\n}\r\n\r\nvalidateForm(){\r\n return (\r\n (this.state.name.length > 0 \r\n && this.state.phone > 0)\r\n )\r\n}\r\n\r\nopenModal(modaltype){\r\n\t \r\n \tswitch(modaltype){\r\n \tcase 'configureotp':\r\n \t\t\r\n \t\t/*\r\n \t\tthis.setActiveState({ showConfigure:true\r\n \t\t\t\t\t\t , txtsendingdomain:d.senderdomain\r\n \t\t\t\t\t\t , includedomains:d.includes\r\n \t\t\t\t\t\t , rdoaddpolicy:d.defaultSpfPolicy\r\n \t\t\t\t\t\t , rdoaddaudit:d.defaultSourceAuditing\r\n \t\t\t\t\t\t , rdoaddemailcapture:d.enableEmailCapture\r\n \t\t\t\t\t\t , isinsert:false\r\n \t\t\t\t\t\t , hosteddomainid:d.hosteddomainid\r\n \t\t\t\t\t });*/\r\n \tbreak;\r\n \t\r\n \t\r\n \r\n \t}\r\n}\r\n//-----------------------------------------------------------------------------------------------------------------------------\r\ncloseModal(){\r\n this.setActiveState({showConfigureOtp:false,rdomfapreference:this.state.rdomfapreferenceorig});\r\n}\r\n \r\ngetOrgOptions(orgs){\r\n\tvar options = [];\r\n\ttry{\r\n\t\tif(orgs){\r\n\t\t\t\r\n\t\t\tfor(let org of orgs){\r\n\t\t\t\t \r\n\t\t\t\toptions.push({ value: org.orgid, label :org.friendlyName })\r\n\t\t\t\t\r\n\t\t\t}\r\n\t\t}\r\n\t}catch(err){\r\n\t\t//this.setActiveState({msg:err.message});\r\n\t}\r\n\treturn options;\r\n\t\r\n}\r\nhasOrgValueChanged(orgs,selval){\r\n\tvar retval = false;\r\n\tif(orgs){\r\n\t\tfor(let org of orgs){\r\n\t\t\tif(org.orgid==this.state.ddlprimaryorg && org.orgid!= org.primaryorgid){\r\n\t\t\t\tretval=true;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t}\r\n\treturn retval;\r\n}\r\ngetOrgValue(orgs){\r\n\tvar value = {};\r\n\ttry{\r\n\tif(orgs){\r\n\t\tif(this.state.ddlprimaryorg==''){\r\n\t\t\tfor(let org of orgs){\r\n\t\t\t\tif(org.orgid==org.primaryorgid || this.state.ddlprimaryorg == org.orgid){\r\n\t\t\t\t\tvalue = { value: org.orgid, label :org.friendlyName }\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tfor(let org of orgs){\r\n\t\t\t\tif(this.state.ddlprimaryorg == org.orgid){\r\n\t\t\t\t\tvalue = { value: org.orgid, label :org.friendlyName }\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t}\r\n\t}catch(err){\r\n\t\t//this.setActiveState({msg:err.message});\r\n\t\t\r\n\t}\r\n\treturn value;\r\n\t\r\n}\r\n\r\n\r\nhandleSelectChange = (event,id) =>{\r\n\t\r\n\tvar st = {};\r\n\tst[id]=event.value;\r\n\tthis.setState(st);\r\n} \r\n\r\n\r\nrender() {\r\n \r\n return (\r\n\t\t\t\r\n\t\t\t\t\r\n \t\t\t\r\n\t\t\t\t\r\n
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n
    \r\n
    \r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n
    \r\n \r\n
    \r\n
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    }\r\n / >
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n \r\n Verification Code\r\n \r\n \r\n \r\n
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    1)?'form-group':'hide':'hide'}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t \r\n\t\t \r\n\t\t \r\n\t\t \r\n\t\t \t \r\n\t\t \t \r\n\t\t \t \r\n\t\t \t \r\n\t\t \t \r\n\t\t \t \r\n\t\t
    \r\n\t\t
    \t\r\n\t\t\t\t
    \r\n\t\t\t\t \r\n\t\t\t\t \r\n\t\t\t\t \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \r\n \r\n \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t\t\t
    \r\n
    \r\n
    \r\n\r\n\t\t\t\t\t\r\n \r\n \r\n Configure Timebased One-Time Password Authentication\r\n \r\n \r\n
    \r\n \tScan the QR code or enter the Secret Code to configure your soft-token application.\r\n \t

    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \t \r\n
    {this.state.totpsecret}
    \r\n
    \r\n
    \r\n\t \t \r\n\t \t \r\n\t
    \r\n\t \t
    \r\n\t \t \r\n\t \t
    \r\n \r\n
    \r\n
    \r\n\r\n \r\n this.handleVerifyOTP(e)} \r\n \r\n />\r\n \r\n \r\n\r\n
    \r\n\r\n this.setState({ showverifycell: false,rdomfapreference:this.state.rdomfapreferenceorig })}\r\n \t\t />\r\n \r\n\t\t\t\t\t\t