HEX
Server: nginx/1.18.0
System: Linux test-ipsremont 5.4.0-214-generic #234-Ubuntu SMP Fri Mar 14 23:50:27 UTC 2025 x86_64
User: ips (1000)
PHP: 8.0.30
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/quadcode.com/.svelte-kit/adapter-node/entries/endpoints/api/send/_server.ts.js
import{j as R}from"../../../../chunks/index.js";import{t as i,l}from"../../../../chunks/index3.js";import{W as n,l as I}from"../../../../chunks/WLogger.js";import{b as _}from"../../../../chunks/shared-server.js";import{S as c,s as m}from"../../../../chunks/ActiveCampaign.js";const N=e=>{if(n.log("info","[Recaptcha]: START",c({token:e})),!_?.PRIVATE_RECAPTCHA_SECRET){n.log("error","[Recaptcha]: END",{error:"PRIVATE_RECAPTCHA_SECRET: undefined"});return}const o={secret:_.PRIVATE_RECAPTCHA_SECRET,response:e};return fetch("https://www.google.com/recaptcha/api/siteverify",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams(Object.entries(o)).toString()}).then(t=>t.json()).then(t=>({...t,error:u[t["error-codes"]?.[0]]})).catch(t=>t)},u={"missing-input-secret":"The secret parameter is missing.","invalid-input-secret":"The secret parameter is invalid or malformed.","missing-input-response":"The response parameter is missing.","invalid-input-response":"The response parameter is invalid or malformed.","bad-request":"The request is invalid or malformed.","timeout-or-duplicate	":"The response is no longer valid: either is too old or has been used previously."},g=e=>{const o={};return Object.values(e).length?(e.email===void 0||e.email===""?o.email=`*${i.get("Required field")}`:e.email.match(/^(([^<>()[\]\\.,;:\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,}))$/)||(o.email=`*${i.get("Not valid email")}`),(e.name===void 0||e.name==="")&&(o.name=`*${i.get("Required field")}`),e.phone===void 0||e.phone===""?o.phone=`*${i.get("Required field")}`:e.phone.match(/^[\d\+][\d\(\)\ -]{4,14}\d$/)||(o.phone=`*${i.get("Not valid phone number")}`),(e.agreement===void 0||!e.agreement)&&(o.agreement=`*${i.get("Required field")}`)):(o.email=`*${i.get("Required field")}`,o.name=`*${i.get("Required field")}`,o.phone=`*${i.get("Required field")}`,o.agreement=`*${i.get("Required field")}`),o},T=e=>e===""||e===void 0?"":e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;").replace(/`/g,"&#x60;"),s={LANDING_URL:"UF_CRM_1708364992",GCLID:"UF_CRM_1708366868784",LANG:"UF_CRM_1708365178",LANG_BY_BROWSER:"UF_CRM_1728917539511",BUSINESS_IDENTIFICATION:"UF_CRM_1709012311521",INITIAL_INVESTMENT:"UF_CRM_1708365367",REGION:"UF_CRM_1708366122",COUNTRY_CODE:"UF_CRM_1708366441792",UTM_CONTENT:"UF_CRM_1712249375",UTM_TERMS:"UF_CRM_1712249249",UTM_MEDIUM:"UF_CRM_1712248114",UTM_CAMPAIGN:"UF_CRM_1712248092",UTM_SOURCE:"UF_CRM_1712248129",ROISTAT_ID:"UF_CRM_1744804235"},f=[79,81,83,85,87,89],p=[47,49,51,53,55,57],A=[69,71,73,75,77],U=[{key:"landing_url",keyNew:s.LANDING_URL},{key:"gclid",keyNew:s.GCLID},{key:"language",keyNew:s.LANG},{key:"lang_by_browser",keyNew:s.LANG_BY_BROWSER},{key:"business_identification",keyNew:s.BUSINESS_IDENTIFICATION},{key:"price",keyNew:s.INITIAL_INVESTMENT},{key:"region",keyNew:s.REGION},{key:"country_code",keyNew:s.COUNTRY_CODE},{key:"utm_content",keyNew:s.UTM_CONTENT},{key:"utm_term",keyNew:s.UTM_TERMS},{key:"utm_medium",keyNew:s.UTM_MEDIUM},{key:"utm_campaign",keyNew:s.UTM_CAMPAIGN},{key:"utm_source",keyNew:s.UTM_SOURCE},{key:"roistatId",keyNew:s.ROISTAT_ID}],h=e=>{const t={TITLE:`New lead from ${e?.landing_url} from ${e.email}`,NAME:T(e.name),COMMENTS:T(e?.text)??null,PHONE:{VALUE:e.phone,VALUE_TYPE:"WORK"},EMAIL:{VALUE:e.email,VALUE_TYPE:"WORK"},UTM_CONTENT:T(e?.utm_content||"")??null,UTM_TERM:T(e?.utm_term||"")??null,UTM_MEDIUM:T(e?.utm_medium||"")??null,UTM_CAMPAIGN:T(e?.utm_campaign||"")??null,UTM_SOURCE:T(e?.utm_source||"")??null};return["first_name","name","last_name","text","phone","email"].forEach(r=>{delete e[r]}),U.forEach(r=>{if(r.key in e){switch(r.key){case"business_identification":t[r.keyNew]=f[Number(e[r.key])];break;case"price":t[r.keyNew]=p[Number(e[r.key])];break;case"region":t[r.keyNew]=A[Number(e[r.key])];break;default:t[r.keyNew]=e[r.key];break}delete e[r.key]}}),Object.keys(e).length&&(t.SOURCE_DESCRIPTION=JSON.stringify(e)),t},d=e=>{const o={...e};if(n.log("info","[BITRIX24]: START",c(o)),!_?.PRIVATE_BITRIX24_HOST||!_?.PRIVATE_BITRIX24_USER_ID||!_?.PRIVATE_BITRIX24_TOKEN){n.log("error","[BITRIX24]: END",{error:"PRIVATE_BITRIX24_TOKEN or PRIVATE_BITRIX24_USER_ID or PRIVATE_BITRIX24_HOST: undefined"});return}const t=h(o),a=new URL(`${_.PRIVATE_BITRIX24_HOST}/rest/${_.PRIVATE_BITRIX24_USER_ID}/${_.PRIVATE_BITRIX24_TOKEN}/crm.lead.add.json`);return Object.keys(t).forEach(function(r){t[r]?.VALUE?a.searchParams.append(`fields[${r}][0][VALUE]`,t[r]?.VALUE):t[r]?.VALUE_TYPE?a.searchParams.append(`fields[${r}][0][VALUE_TYPE]`,t[r]?.VALUE_TYPE):a.searchParams.append(`fields[${r}]`,t[r])}),fetch(a.href,{method:"GET"}).then(r=>r.json()).then(r=>("error"in r?n.log("error","[BITRIX24]: ADD LEAD END",{error:r}):n.log("info","[BITRIX24]: ADD LEAD END",{res:r}),r)).catch(r=>(n.log("error","[BITRIX24]: ADD LEAD END",{...r}),r))},D=async e=>{const{request:o}=e,t=await o.json();console.log(o),t.lang_by_browser=l.get(),n.log("info","[Limiter]: START",c(t));const a=await I.isLimited(e);if(a)return n.log("error","[Limiter]: END",{error:"429 Too Many Requests",isLimited:a}),R({error:`${i.get("Too Many Requests. Try again later")}`},{status:429});n.log("info","[Limiter]: END",{isLimited:a}),n.log("info","[Validation]: START",c(t));const r=g(t);if(Object.values(r).length)return n.log("error","[Validation]: END",{...r}),R({...r},{status:403});n.log("info","[Validation]: END",c(t));const E=await N(t.token);return E&&!E.success?(n.log("error","[Recaptcha]: END",{error:E.error,...c(t)}),R({token:E.error},{status:403})):(n.log("info","[Recaptcha]: END",c(t)),await d(t),await m(t),R({status:"ok"},{status:200}))};export{D as POST};