import{e2 as u,co as me,dF as e,a0 as U,r as ue,ai as m,cA as h,bh as R,aF as w,bj as xe,bL as ge,e as pe,m as he,eG as be,eL as fe,ev as je,aK as ve,al as ye,z as Ne,bZ as Se,ao as Ce,Z as J}from"./index-DhXi8AjX.js";import{L as ke}from"./log-streaming-setup-locked-DMdBKEiQ.js";import{a as Be,e as Ae,b as Z}from"./log-streaming-setup-BbrXV02s.js";import{S as V}from"./sensitive-input-C9-03bwZ.js";import"./eye-DGjmZ2ZD.js";function Fe(){const[d,l]=u.useState(),[S,f]=u.useState(!1);return{data:d,posting:S,createAWSExternalID:()=>(f(!0),me.post("/public/tailnet/-/aws-external-id",{reusable:!0}).then(p=>p.data.data).then(p=>{f(!1),l(p)}).catch(p=>{throw f(!1),p}))}}const ze="w-[250px] h-[44px] p-2 border border-border-interactive hover:border-border-interactive-hover rounded-lg gap-2 items-center flex hover:cursor-pointer",X="https://http-intake.logs.datadoghq.com/api/v2/logs",Y="https://api.axiom.co/v1/datasets/$DATASET/ingest",Ie="empty-region";function Pe(d){const{endpoint:l,onSubmit:S,streamType:f,isLoading:j,availableProviders:p}=d,[s,C]=u.useState(),[a,v]=u.useState({}),[x,F]=u.useState();u.useEffect(()=>{const t=l?.s3AuthenticationType==="rolearn"?"s3":l?.s3AuthenticationType==="accesskey"?"s3Compatible":"s3";L(t)},[]);const y=u.useMemo(()=>[{value:"zstd",label:"zstd",type:"string-constant"},{value:"gzip",label:"gzip",type:"string-constant"},{value:"none",label:"none",type:"string-constant"}],[]),B=u.useCallback(()=>{const t=s===void 0?"none":a[s]?.compressionFormat;return y.find(i=>i.value===t)||y[0]},[y,s,a]),{data:k,posting:z,createAWSExternalID:P}=Fe();u.useEffect(()=>{l&&(C(l.destinationType),v({[l.destinationType]:{...l,token:"",s3SecretAccessKey:""}}))},[l]);const I=u.useMemo(()=>s==="datadog"?X:s==="axiom"?Y:"",[s]),b=()=>{const t=l===void 0;if(s!==void 0&&!N()){let i=a[s].url;!i&&s==="datadog"&&(i=X),!i&&s==="axiom"&&(i=Y);let c=a[s].s3Region;!c&&x==="s3Compatible"&&(c=Ie);let g,A;s==="s3"&&(x==="s3"?(g=k?.externalId||l?.s3ExternalId,A="rolearn"):A="accesskey",a[s].compressionFormat||(a[s].compressionFormat="zstd")),s==="gcs"&&!a[s].compressionFormat&&(a[s].compressionFormat="zstd"),s==="azureblob"&&!a[s].compressionFormat&&(a[s].compressionFormat="zstd");const K={url:i,token:a[s].token,user:a[s].user,s3Bucket:a[s].s3Bucket,s3Region:c,s3AccessKeyId:a[s].s3AccessKeyId,s3SecretAccessKey:a[s].s3SecretAccessKey,s3RoleArn:a[s].s3RoleArn,s3KeyPrefix:a[s].s3KeyPrefix,s3AuthenticationType:A,s3ExternalId:g,destinationType:s,logType:f,uploadPeriodMinutes:a[s].uploadPeriodMinutes,compressionFormat:a[s].compressionFormat,gcsBucket:a[s].gcsBucket,gcsKeyPrefix:a[s].gcsKeyPrefix,gcsCredentials:a[s].gcsCredentials,gcsScopes:a[s].gcsScopes,azureBlobContainerName:a[s].azureBlobContainerName,azureBlobKeyPrefix:a[s].azureBlobKeyPrefix,azureBlobTenantId:a[s].azureBlobTenantId,azureBlobClientId:a[s].azureBlobClientId,azureBlobStorageAccountUrl:a[s].azureBlobStorageAccountUrl};S(K,t)}},N=()=>{if(!s)return!0;const t=a[s]?.url||I,i=a[s]?.token||"",c=a[s]?.user||"",g=a[s]?.s3Bucket||"",A=a[s]?.s3Region||"",K=a[s]?.s3AccessKeyId||"",D=a[s]?.s3SecretAccessKey||"",M=a[s]?.s3RoleArn||"",ne=a[s]?.s3KeyPrefix||"",re=a[s]?.uploadPeriodMinutes||1,oe=a[s]?.compressionFormat||"",O=a[s]?.gcsBucket||"",ce=a[s]?.gcsKeyPrefix||"",W=a[s]?.gcsCredentials||"",_=a[s]?.gcsScopes||[],$=a[s]?.azureBlobContainerName||"",ie=a[s]?.azureBlobKeyPrefix||"",q=a[s]?.azureBlobTenantId||"",G=a[s]?.azureBlobClientId||"",H=a[s]?.azureBlobStorageAccountUrl||"",de=t!==l?.url||i!==l?.token||c!==l?.user||g!==l?.s3Bucket||A!==l?.s3Region||K!==l?.s3AccessKeyId||D!==l?.s3SecretAccessKey||M!==l?.s3RoleArn||ne!==l?.s3KeyPrefix||re!==l?.uploadPeriodMinutes||oe!==l?.compressionFormat||O!==l?.gcsBucket||ce!==l?.gcsKeyPrefix||W!==l?.gcsCredentials||JSON.stringify(_)!==JSON.stringify(l?.gcsScopes||[])||$!==l?.azureBlobContainerName||ie!==l?.azureBlobKeyPrefix||q!==l?.azureBlobTenantId||G!==l?.azureBlobClientId||H!==l?.azureBlobStorageAccountUrl;return!(s!=="s3"&&s!=="gcs"&&s!=="azureblob"&&(s!=="elastic"||c!=="")&&t!==""&&i!==""||x==="s3"&&g!==""&&A!==""&&M!==""||x==="s3Compatible"&&t!==""&&K!==""&&D!==""||s==="gcs"&&O!==""&&W!==""&&_.length>0||s==="azureblob"&&$!==""&&q!==""&&G!==""&&H!=="")||!de},r=u.useCallback((t,i)=>{if(s!==void 0){const c={...a[s],[t]:i},g={...a,[s]:c};v(g)}},[s,a,v]),T=u.useCallback(()=>{if(s!==void 0){const t=a[s]?.uploadPeriodMinutes||1;return t>=0&&t<=1440}return!1},[s,a]),E=u.useCallback(()=>s!==void 0&&a[s]?.uploadPeriodMinutes||1,[s,a]),Q=()=>{let t=k?.tailscaleAwsAccountId,i=k?.externalId;return l&&l.tailscaleAWSAccountId&&l.s3ExternalId&&(t=l.tailscaleAWSAccountId,i=l.s3ExternalId),t!==void 0&&i!==void 0?`"Principal": {"AWS": "${t}"}, "Condition": {"StringEquals": {"sts:ExternalId": "${i}"}}`:"Loading..."},L=u.useCallback(t=>{F(t),t==="s3"&&!l?.s3ExternalId&&!k&&!z&&P()},[k,P,l?.s3ExternalId,z]),n="font-medium",o="mt-2 h-9",ee=()=>s==null?e.jsx(e.Fragment,{}):e.jsxs("fieldset",{className:"flex flex-col gap-3 mt-5",children:[e.jsxs("div",{className:"flex flex-col",children:[e.jsx("label",{htmlFor:"url",className:n,children:"URL"}),e.jsx(m,{className:o,name:"url",type:"text",placeholder:"https://example.com/streaming",value:a[s]?.url||I,onChange:t=>{r("url",t.target.value)}})]}),s==="elastic"&&e.jsxs("div",{className:"flex flex-col",children:[e.jsx("label",{htmlFor:"token",className:n,children:"Username"}),e.jsx(m,{className:o,name:"username",type:"text",placeholder:"user",value:a[s]?.user||"",onChange:t=>r("user",t.target.value)})]}),e.jsxs("div",{className:"flex flex-col",children:[e.jsx("label",{htmlFor:"token",className:n,children:"Token or API Key"}),e.jsx(V,{className:o,name:"token",placeholder:l&&l.destinationType===s?"Re-enter the token to save changes":"token123",value:a[s]?.token||"",onChange:t=>r("token",t.target.value)})]})]}),se=()=>s==null?e.jsx(e.Fragment,{}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:h(n,"mt-5"),children:"Sub-destination"}),e.jsxs("fieldset",{className:"flex mt-2",children:[e.jsxs("label",{className:"flex",children:[e.jsx("input",{type:"radio",name:"keytype",className:"radio mt-0.5",disabled:!1,checked:x==="s3",onChange:()=>L("s3")}),e.jsx("div",{className:"ml-2",children:"Amazon S3"})]}),e.jsxs("label",{className:"flex ml-5",children:[e.jsx("input",{type:"radio",name:"keytype",className:"radio mt-0.5",disabled:!1,checked:x==="s3Compatible",onChange:()=>L("s3Compatible")}),e.jsx("div",{className:"ml-2",children:"S3 compatible service"})]})]}),e.jsxs("fieldset",{className:"grid gap-y-5 gap-x-3 grid-cols-2 mt-5",children:[x==="s3"&&e.jsxs("div",{children:[e.jsx("label",{htmlFor:"s3Region",className:n,children:"Region"}),e.jsx(m,{className:o,name:"s3Region",type:"text",placeholder:"E.g. us-east-1",value:a[s]?.s3Region,onChange:t=>{r("s3Region",t.target.value)}})]}),x==="s3Compatible"&&e.jsxs("div",{children:[e.jsx("label",{htmlFor:"url",className:n,children:"URL"}),e.jsx(m,{className:o,name:"url",type:"text",placeholder:"Enter endpoint URL",value:a[s]?.url||I,onChange:t=>{r("url",t.target.value)}})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"s3Bucket",className:n,children:"Bucket"}),e.jsx(m,{className:o,name:"s3Bucket",type:"text",placeholder:"E.g. tailscale-audit-logs",value:a[s]?.s3Bucket,onChange:t=>{r("s3Bucket",t.target.value)}})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"compressionFormat",className:n,children:"Compression"}),e.jsx(R,{className:h(o,"w-full"),values:y,selected:B(),onUpdateSelected:t=>{r("compressionFormat",t.value)}})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"uploadPeriod",className:n,children:"Upload period"}),e.jsxs("div",{className:"flex",children:[e.jsx(w,{inputClassName:h(o,"rounded-r-none"),value:E(),onChange:t=>{r("uploadPeriodMinutes",t)},min:1,steppers:"off",error:!T()}),e.jsx("div",{className:h("flex mt-2 items-center px-3 bg-gray-50","dark:bg-gray-700 text-text-muted border rounded-r border-l-0","border-border-interactive h-9"),children:"minute(s)"})]})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"s3KeyPrefix",className:n,children:["Object key prefix"," ",e.jsx("span",{className:"text-text-muted",children:"(optional)"})]}),e.jsx(m,{className:o,name:"s3KeyPrefix",type:"text",value:a[s]?.s3KeyPrefix,onChange:t=>{r("s3KeyPrefix",t.target.value)}})]}),x==="s3Compatible"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"s3Region",className:n,children:["Region ",e.jsx("span",{className:"text-text-muted",children:"(optional)"})]}),e.jsx(m,{className:o,name:"s3Region",type:"text",placeholder:"E.g. us-east-1",value:a[s]?.s3Region,onChange:t=>{r("s3Region",t.target.value)}})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"s3AccessKeyId",className:n,children:"Access key ID"}),e.jsx(m,{className:o,name:"s3AccessKeyId",type:"text",value:a[s]?.s3AccessKeyId,onChange:t=>{r("s3AccessKeyId",t.target.value)}})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"s3SecretAccessKey",className:n,children:"Secret access key"}),e.jsx(V,{className:o,name:"s3SecretAccessKey",value:a[s]?.s3SecretAccessKey||"",onChange:t=>{r("s3SecretAccessKey",t.target.value)}})]})]}),x==="s3"&&e.jsxs("div",{children:[e.jsx("label",{htmlFor:"s3RoleArn",className:n,children:"Role ARN"}),e.jsx(m,{className:o,name:"s3RoleArn",type:"text",value:a[s]?.s3RoleArn,onChange:t=>{r("s3RoleArn",t.target.value)}})]})]}),x==="s3"&&e.jsx("div",{className:"mt-5",children:e.jsxs("div",{children:[e.jsx("label",{className:n,children:"Required IAM trust policy"}),e.jsxs("div",{className:"text-text-muted",children:["Copy and paste this snippet into your Amazon S3 IAM trust policy."," ",e.jsx(U,{kbTopic:"log streaming",url:"https://tailscale.com/kb/1255/log-streaming"})]}),e.jsx(xe,{className:"w-full-2 font-medium",text:Q()||"",prompt:!1,allowWrap:!0})]})})]}),ae=()=>{if(s==null)return e.jsx(e.Fragment,{});const t=c=>c?c.join(", "):"",i=c=>c.split(",").map(g=>g.trim()).filter(g=>g.length>0);return e.jsx(e.Fragment,{children:e.jsxs("fieldset",{className:"grid gap-y-5 gap-x-3 grid-cols-2 mt-5",children:[e.jsxs("div",{children:[e.jsx("label",{htmlFor:"gcsBucket",className:n,children:"Bucket"}),e.jsx(m,{className:o,name:"gcsBucket",type:"text",placeholder:"E.g. tailscale-audit-logs",value:a[s]?.gcsBucket||"",onChange:c=>{r("gcsBucket",c.target.value)}})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"gcsKeyPrefix",className:n,children:["Object key prefix"," ",e.jsx("span",{className:"text-text-muted",children:"(optional)"})]}),e.jsx(m,{className:o,name:"gcsKeyPrefix",type:"text",value:a[s]?.gcsKeyPrefix||"",onChange:c=>{r("gcsKeyPrefix",c.target.value)}})]}),e.jsxs("div",{className:"col-span-2",children:[e.jsx("label",{htmlFor:"gcsScopes",className:n,children:"Scopes"}),e.jsx(m,{className:o,name:"gcsScopes",type:"text",placeholder:"Enter comma-separated scopes",value:t(a[s]?.gcsScopes),onChange:c=>{const g=i(c.target.value);r("gcsScopes",g)}})]}),e.jsxs("div",{className:"col-span-2 resize-none",children:[e.jsx("label",{htmlFor:"gcsCredentials",className:n,children:"Config file content"}),e.jsx(ge,{className:"mt-2",rows:4,maxHeight:84,name:"gcsCredentials",placeholder:"{ “universe_domain”: “googleapis.com”, “type”: “external_account”, ...",value:a[s]?.gcsCredentials||"",onChange:c=>{r("gcsCredentials",c.currentTarget.value)}})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"compressionFormat",className:n,children:"Compression"}),e.jsx(R,{className:h(o,"w-full"),values:y,selected:B(),onUpdateSelected:c=>{r("compressionFormat",c.value)}})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"uploadPeriod",className:n,children:"Upload period"}),e.jsxs("div",{className:"flex",children:[e.jsx(w,{inputClassName:h(o,"rounded-r-none"),value:E(),onChange:c=>{r("uploadPeriodMinutes",c)},min:1,steppers:"off",error:!T()}),e.jsx("div",{className:h("flex mt-2 items-center px-3 bg-gray-50","dark:bg-gray-700 text-text-muted border rounded-r border-l-0","border-border-interactive h-9"),children:"minute(s)"})]})]})]})})},te=()=>s==null?e.jsx(e.Fragment,{}):e.jsx(e.Fragment,{children:e.jsxs("fieldset",{className:"grid gap-y-5 gap-x-3 grid-cols-2 mt-5",children:[e.jsxs("div",{children:[e.jsx("label",{htmlFor:"azureBlobContainerName",className:n,children:"Container name"}),e.jsx(m,{className:o,name:"azureBlobContainerName",type:"text",placeholder:"E.g. tailscale-audit-logs",value:a[s]?.azureBlobContainerName||"",onChange:t=>{r("azureBlobContainerName",t.target.value)}})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"azureBlobKeyPrefix",className:n,children:["Key prefix ",e.jsx("span",{className:"text-text-muted",children:"(optional)"})]}),e.jsx(m,{className:o,name:"azureBlobKeyPrefix",type:"text",value:a[s]?.azureBlobKeyPrefix||"",onChange:t=>{r("azureBlobKeyPrefix",t.target.value)}})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"azureBlobTenantId",className:n,children:"Tenant ID"}),e.jsx(m,{className:o,name:"azureBlobTenantId",type:"text",placeholder:"E.g. 00000000-0000-0000-0000-000000000000",value:a[s]?.azureBlobTenantId||"",onChange:t=>{r("azureBlobTenantId",t.target.value)}})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"azureBlobClientId",className:n,children:"Client ID"}),e.jsx(m,{className:o,name:"azureBlobClientId",type:"text",placeholder:"E.g. 00000000-0000-0000-0000-000000000000",value:a[s]?.azureBlobClientId||"",onChange:t=>{r("azureBlobClientId",t.target.value)}})]}),e.jsxs("div",{className:"col-span-2",children:[e.jsx("label",{htmlFor:"azureBlobStorageAccountUrl",className:n,children:"Storage account URL"}),e.jsx(m,{className:o,name:"azureBlobStorageAccountUrl",type:"text",placeholder:"https://logstreaming-example.blob.core.windows.net/",value:a[s]?.azureBlobStorageAccountUrl||"",onChange:t=>{r("azureBlobStorageAccountUrl",t.target.value)}})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"compressionFormat",className:n,children:"Compression"}),e.jsx(R,{className:h(o,"w-full"),values:y,selected:B(),onUpdateSelected:t=>{r("compressionFormat",t.value)}})]}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"uploadPeriod",className:n,children:"Upload period"}),e.jsxs("div",{className:"flex",children:[e.jsx(w,{inputClassName:h(o,"rounded-r-none"),value:E(),onChange:t=>{r("uploadPeriodMinutes",t)},min:1,steppers:"off",error:!T()}),e.jsx("div",{className:h("flex mt-2 items-center px-3 bg-gray-50","dark:bg-gray-700 text-text-muted border rounded-r border-l-0","border-border-interactive h-9"),children:"minute(s)"})]})]})]})}),le=t=>{t.preventDefault(),b()};return e.jsxs("form",{onSubmit:le,className:"max-w-[512px]",children:[e.jsxs("p",{className:"mb-4 mt-2",children:["Log streaming lets you stream configuration or network flow logs into a security information and event management (SIEM) system."," ",e.jsx(U,{kbTopic:"log streaming",url:"https://tailscale.com/kb/1255/log-streaming"})]}),e.jsxs("fieldset",{children:[e.jsx("legend",{className:"font-medium",children:"Select a destination"}),e.jsx("div",{className:"flex flex-wrap gap-3 mt-3",children:p.map(t=>e.jsx(Ke,{provider:t,currentlyChecked:s,onChange:C},t))})]}),s==="s3"&&se(),s==="gcs"&&ae(),s==="azureblob"&&te(),s!=="s3"&&s!=="gcs"&&s!=="azureblob"&&ee(),e.jsx("div",{className:"flex mt-5 justify-start",children:e.jsx(ue,{type:"submit",intent:"primary",disabled:N(),loading:j,children:l?"Save changes":"Start streaming"})})]})}function Ke({provider:d,currentlyChecked:l,onChange:S,disabled:f=!1,badge:j}){const p=u.useMemo(()=>j?j==="alpha"?e.jsx(pe,{className:"text-sm"}):e.jsx(he,{className:"text-sm"}):null,[j]),{name:s,Icon:C}=Be[d];return f?null:e.jsxs("label",{htmlFor:d,title:s,className:h("group bg-bg-base",ze,{"!border-blue-400":l===d}),children:[e.jsx("input",{type:"radio",name:"destination",id:d,checked:l===d,onChange:()=>S(d),className:"radio group-hover:border-border-interactive-hover checked:group-hover:border-blue-500 dark:checked:group-hover:border-blue-400 bg-w"}),e.jsx(C,{className:"h-[18px] w-[18px] dark:[--icon-color:#fff]"}),e.jsx("span",{children:s}),p]})}function Me({streamType:d}){const{data:l,error:S,isLoading:f,updateStreamSettings:j,logstreamChangeInProgress:p}=Ae(d),{data:s}=be(),[,C]=fe(),a=je(!1),[v,x]=u.useState(),F=d==="network"?"/admin/logs/network":"/admin/logs",y=u.useMemo(()=>s.featureAzureLogStreaming?Z:Z.filter(b=>b!=="azureblob"),[s.featureAzureLogStreaming]),B=()=>C(F),k=b=>{x(b),a.setTrue()},z=(b=!0)=>{if(!v)return;const N=v;N.mayShareNode=b,N.mayUpdateACL=b,j(N,l===void 0,void 0,B),a.setFalse()},P=(b,N)=>{j(b,N,k,B)},I=l?`Edit ${d} logs streaming`:`Start streaming ${d} logs`;return e.jsx(ve,{enabled:s.logStreaming,fallback:e.jsx(ke,{streamType:d}),children:e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"max-w-2xl",children:[e.jsxs(ye,{href:F,className:"flex link items-center",children:[e.jsx(Ne,{className:"pr-1",size:16}),"Back"]}),e.jsx(Se,{title:I,className:"my-6",children:f&&!S?e.jsx(Ce,{}):e.jsx(Pe,{endpoint:l,streamType:d,availableProviders:y,onSubmit:P,onCancel:()=>C(F),isLoading:p})})]}),e.jsx(J,{open:a.value,onOpenChange:a.toggle,title:"Grant share access to private host?",children:e.jsxs(J.Form,{submitButton:"Yes",cancelButton:{children:"No",onClick:()=>{z(!1)}},onSubmit:()=>{z(!0)},children:[e.jsxs("p",{className:"mb-2",children:["The host you have specified is a Tailscale node. To stream to this node, it must be shared into a Tailscale-managed tailnet and your tailnet policy file must have access rules to allow a Tailscale-managed node to send logs to your node."," ",e.jsx(U,{kbTopic:"private endpoints",url:"https://tailscale.com/kb/1255/log-streaming/#private-endpoints"})]}),e.jsx("p",{className:"mb-2",children:v?.mayShareNode&&v?.mayUpdateACL?"Can we share your node and modify the tailnet policy file on your behalf?":v?.mayShareNode?"Can we share your node on your behalf?":"Can we modify the tailnet policy file on your behalf?"})]})})]})})}export{Me as default};