Add /how-pay-works pay-flow diagram page
Visual explainer of the two income streams: entry rewards you keep, and the depth-matched upgrade ladder (each layer pays you once, at the one level matching its depth) as an SVG flow diagram. Route + CSS added; linked from training body and all footers. Educational, on-chain-factual framing with disclaimer link. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -27,5 +27,5 @@
|
||||
<p class="micro" style="margin-top:18px">Review method: complete verified source (Sourcify exact-match, creation + runtime bytecode) read against the deployed contract on 2026-08-13; payout math cross-checked against live on-chain transactions. Reviewed independently by this team's tooling — not by the contract's developers.</p>
|
||||
</div></section>
|
||||
</main>
|
||||
<footer class="wrap disclaimer">This independent team page is educational and is not an earnings guarantee or investment advice. Cryptocurrency and smart-contract participation involve risk, including possible loss of funds. Never use funds you cannot afford to lose.<div class="footer-links"><a href="/">Strategy</a><a href="/start">Getting Started</a><a href="/training">Training</a><a href="/my">Member Dashboard</a><a href="/disclaimer">Disclaimers</a></div></footer>
|
||||
<footer class="wrap disclaimer">This independent team page is educational and is not an earnings guarantee or investment advice. Cryptocurrency and smart-contract participation involve risk, including possible loss of funds. Never use funds you cannot afford to lose.<div class="footer-links"><a href="/">Strategy</a><a href="/start">Getting Started</a><a href="/training">Training</a><a href="/my">Member Dashboard</a><a href="/disclaimer">Disclaimers</a><a href="/how-pay-works">How You Get Paid</a></div></footer>
|
||||
<script src="/track.js"></script><script src="/chat.js" defer></script></body></html>
|
||||
|
||||
@@ -24,5 +24,5 @@
|
||||
<p class="micro" style="margin-top:8px">By continuing to use this website you accept these disclaimers. If you do not agree, please do not use the site. Questions can go to the team's Telegram group linked on the site.</p>
|
||||
</div></section>
|
||||
</main>
|
||||
<footer class="wrap disclaimer">Independent, unaffiliated team resource. Informational and educational only. Not an offer, solicitation, or guarantee of income. Cryptocurrency participation carries risk of total loss.<div class="footer-links"><a href="/">Home</a><a href="/contract">Contract Security</a><a href="/training">Training</a><a href="/start">Getting Started</a></div></footer>
|
||||
<footer class="wrap disclaimer">Independent, unaffiliated team resource. Informational and educational only. Not an offer, solicitation, or guarantee of income. Cryptocurrency participation carries risk of total loss.<div class="footer-links"><a href="/">Home</a><a href="/contract">Contract Security</a><a href="/training">Training</a><a href="/start">Getting Started</a><a href="/how-pay-works">How You Get Paid</a></div></footer>
|
||||
<script src="/track.js"></script><script src="/chat.js" defer></script></body></html>
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta name="description" content="How you get paid in the RM Circle team build — the two income streams shown as a simple flow diagram: entry rewards you keep, and depth-matched upgrade payments."><title>How You Get Paid | Crypto Team Build</title>
|
||||
<link rel="canonical" href="https://rmcircle.saasy.top/how-pay-works">
|
||||
<meta property="og:type" content="website"><meta property="og:site_name" content="Crypto Team Build Network"><meta property="og:title" content="How you get paid — the RM Circle pay flow"><meta property="og:description" content="Two ways you earn: entry rewards you keep, and upgrade payments where each layer below pays you at exactly one matching level. Shown as a simple diagram."><meta property="og:url" content="https://rmcircle.saasy.top/how-pay-works"><meta property="og:image" content="https://rmcircle.saasy.top/og-card.jpg"><meta property="og:image:width" content="1200"><meta property="og:image:height" content="630">
|
||||
<meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="How you get paid — the RM Circle pay flow"><meta name="twitter:image" content="https://rmcircle.saasy.top/og-card.jpg">
|
||||
<link rel="stylesheet" href="/styles.css"></head>
|
||||
<body>
|
||||
<header class="wrap nav"><a class="brand" href="/"><div class="brand-mark">RM</div><span><span id="brandName">Crypto Team Build</span><small>How you get paid</small></span></a><div class="nav-actions"><a class="btn btn-secondary hide-mobile" href="/training">Training</a><a class="btn btn-primary" href="/start">Get Started</a></div></header>
|
||||
<main>
|
||||
<section class="section"><div class="wrap" style="max-width:960px">
|
||||
<div class="section-head" style="max-width:820px"><div class="eyebrow">The pay flow</div><h1 style="font-size:clamp(30px,5vw,46px);margin:8px 0 10px">How you get paid — <span class="gold">two ways.</span></h1><p>There are exactly two ways money reaches your position. Once you see them, the whole plan clicks. No income is guaranteed — this shows the <em>mechanics</em>, not a promise of earnings.</p></div>
|
||||
|
||||
<div class="card" style="margin-bottom:20px"><div class="eyebrow" style="color:var(--ok)">Stream 1 · you keep these</div><h2 style="margin:6px 0 14px">Entry rewards — from your own directs</h2>
|
||||
<div class="pay-entry"><div class="pay-node pay-you">YOUR<br>POSITION</div><div class="pay-arrow-up"><span>+326 POL</span>↑</div><div class="pay-node pay-join">Someone joins<br>under your link</div></div>
|
||||
<p style="color:var(--muted);line-height:1.65;margin:14px 0 0">When someone joins the program using <strong style="color:var(--text)">your</strong> link, you receive their entry reward (<strong style="color:var(--text)">326 POL</strong> at Premium) — <strong style="color:var(--text)">directly, and you keep it.</strong> You earn this on <em>every</em> direct you ever bring, not just the first two. Two is simply the number that <em>qualifies</em> you.</p></div>
|
||||
|
||||
<div class="card"><div class="eyebrow" style="color:var(--gold)">Stream 2 · the depth ladder</div><h2 style="margin:6px 0 6px">Upgrade payments — each layer pays you at ONE level</h2>
|
||||
<p style="color:var(--muted);line-height:1.65;margin:0 0 8px">This is the part people ask about. When your team <strong style="color:var(--text)">upgrades</strong>, each payment travels <em>up</em> the matrix to the position at the matching depth. <strong style="color:var(--text)">Each person below you pays you exactly once — at the single level that matches how far below you they sit.</strong></p>
|
||||
<div class="pay-diagram-wrap">
|
||||
<svg viewBox="0 0 900 560" class="pay-diagram" role="img" aria-label="Diagram: each layer below your position pays you at one matching upgrade level, flowing up to your position.">
|
||||
<defs>
|
||||
<marker id="ah" markerWidth="9" markerHeight="9" refX="6.5" refY="3" orient="auto"><path d="M0,0 L6.5,3 L0,6 Z" fill="#f3be43"/></marker>
|
||||
<marker id="at" markerWidth="8" markerHeight="8" refX="6" refY="3" orient="auto"><path d="M0,0 L6,3 L0,6 Z" fill="#4ed6cb"/></marker>
|
||||
</defs>
|
||||
<!-- YOU node (top right) -->
|
||||
<rect x="600" y="28" width="240" height="72" rx="16" fill="#132d45" stroke="#f3be43" stroke-width="2"/>
|
||||
<text x="720" y="60" text-anchor="middle" fill="#f3be43" font-size="18" font-weight="800">YOUR POSITION</text>
|
||||
<text x="720" y="84" text-anchor="middle" fill="#aebdca" font-size="12.5">every payment below flows here</text>
|
||||
<text x="50" y="44" fill="#8498aa" font-size="12.5">Each layer of your team pays you once —</text>
|
||||
<text x="50" y="63" fill="#8498aa" font-size="12.5">at the ONE level that matches its depth below you.</text>
|
||||
<text x="50" y="82" fill="#8498aa" font-size="12.5">(POL amounts shown at Premium tier.)</text>
|
||||
<!-- depth spine -->
|
||||
<line x1="34" y1="176" x2="34" y2="488" stroke="#27445e" stroke-width="2" stroke-dasharray="4 5"/>
|
||||
<text x="20" y="332" fill="#8498aa" font-size="11" transform="rotate(-90 20 332)" text-anchor="middle">deeper in your team ↓</text>
|
||||
<!-- layer boxes (left) -->
|
||||
<g font-size="13.5" font-weight="800" fill="#f7f9fc">
|
||||
<rect x="50" y="176" width="180" height="52" rx="12" fill="#0d2236" stroke="#2a4a66"/><text x="140" y="207" text-anchor="middle">Layer 1 · directs</text>
|
||||
<rect x="50" y="278" width="180" height="52" rx="12" fill="#0d2236" stroke="#2a4a66"/><text x="140" y="309" text-anchor="middle">Layer 2</text>
|
||||
<rect x="50" y="380" width="180" height="52" rx="12" fill="#0d2236" stroke="#2a4a66"/><text x="140" y="411" text-anchor="middle">Layer 3</text>
|
||||
<rect x="50" y="482" width="180" height="52" rx="12" fill="#0d2236" stroke="#2a4a66"/><text x="140" y="513" text-anchor="middle">Layer 4</text>
|
||||
</g>
|
||||
<!-- box -> label connectors (teal: their action) -->
|
||||
<g fill="none" stroke="#4ed6cb" stroke-width="2" marker-end="url(#at)" opacity="0.75">
|
||||
<path d="M230,202 L266,202"/><path d="M230,304 L266,304"/><path d="M230,406 L266,406"/><path d="M230,508 L266,508"/>
|
||||
</g>
|
||||
<!-- payment labels (aligned to each layer) -->
|
||||
<g font-size="13">
|
||||
<g><rect x="270" y="186" width="256" height="32" rx="8" fill="#0b1c2c" stroke="#3a3016"/><text x="284" y="207" fill="#f7f9fc" font-weight="700">1st upgrade → Ascensus <tspan fill="#f3be43">+621</tspan></text></g>
|
||||
<g><rect x="270" y="288" width="256" height="32" rx="8" fill="#0b1c2c" stroke="#3a3016"/><text x="284" y="309" fill="#f7f9fc" font-weight="700">2nd upgrade → Fabrica <tspan fill="#f3be43">+1,243</tspan></text></g>
|
||||
<g><rect x="270" y="390" width="256" height="32" rx="8" fill="#0b1c2c" stroke="#3a3016"/><text x="284" y="411" fill="#f7f9fc" font-weight="700">3rd upgrade → Culmen <tspan fill="#f3be43">+2,486</tspan></text></g>
|
||||
<g><rect x="270" y="492" width="256" height="32" rx="8" fill="#0b1c2c" stroke="#3a3016"/><text x="284" y="513" fill="#f7f9fc" font-weight="700">4th upgrade → Apex <tspan fill="#f3be43">+4,971</tspan></text></g>
|
||||
</g>
|
||||
<!-- label -> YOU pay-up arrows (gold), fanned on the right -->
|
||||
<g fill="none" stroke="#f3be43" stroke-width="2.5" marker-end="url(#ah)" opacity="0.92">
|
||||
<path d="M526,202 C 610,190 660,140 700,102"/>
|
||||
<path d="M526,304 C 640,285 692,160 710,102"/>
|
||||
<path d="M526,406 C 660,380 706,180 722,104"/>
|
||||
<path d="M526,508 C 680,470 720,200 734,104"/>
|
||||
</g>
|
||||
</svg>
|
||||
</div>
|
||||
<p style="color:var(--muted);line-height:1.65;margin:14px 0 0"><strong style="color:var(--text)">To catch each one, you must be at that level yourself</strong> (and qualified). Layer 3's Culmen payment only stops at you if you're at Culmen — otherwise it passes up to the next eligible position. That's why the rule is: <strong style="color:var(--text)">stay one level ahead of your team's deepest active layer.</strong></p></div>
|
||||
|
||||
<div class="notice" style="margin-top:20px"><strong>The one line to remember:</strong> You keep your directs' entry money. For upgrades, <strong>each person below you pays you at exactly one level — the one that matches their depth beneath you.</strong> Twos are for <em>building</em>; depth-matched levels are for <em>paying</em>.</div>
|
||||
<p class="micro" style="margin-top:14px">Every figure is a contract rule, verifiable on-chain, not a promise of income. Most participants may not profit. <a href="/disclaimer" style="color:var(--teal)">Full disclaimers →</a> · <a href="/contract" style="color:var(--teal)">How the contract works →</a></p>
|
||||
</div></section>
|
||||
</main>
|
||||
<footer class="wrap disclaimer">Independent, unaffiliated team resource. Informational and educational only. No income is guaranteed. Cryptocurrency participation carries risk of total loss.<div class="footer-links"><a href="/">Home</a><a href="/training">Training</a><a href="/contract">Contract Security</a><a href="/disclaimer">Disclaimers</a><a href="/how-pay-works">How You Get Paid</a></div></footer>
|
||||
<script src="/track.js"></script><script src="/chat.js" defer></script></body></html>
|
||||
+1
-1
@@ -18,5 +18,5 @@
|
||||
<section class="section"><div class="wrap"><div class="section-head"><div class="eyebrow">Depth over width</div><h2>2 → 4 → 8 → 16 → 32 → 64 → 128 → 256</h2><p>Each generation doubles. A full eight-generation team is <strong>510 positions</strong> (2+4+8+16+32+64+128+256) — but the first milestone that matters is the <strong>30 positions</strong> in your first four generations: 2 + 4 + 8 + 16.</p></div><div class="matrix" aria-label="Matrix growth illustration — eight generations, each double the last"><div class="matrix-group"><div class="people" data-n="2"></div><b>2</b></div><div class="matrix-group"><div class="people" data-n="4"></div><b>4</b></div><div class="matrix-group"><div class="people" data-n="8"></div><b>8</b></div><div class="matrix-group"><div class="people" data-n="16"></div><b>16</b></div><div class="matrix-group"><div class="people" data-n="32"></div><b>32</b></div><div class="matrix-group"><div class="people" data-n="64"></div><b>64</b></div><div class="matrix-group"><div class="people" data-n="128"></div><b>128</b></div><div class="matrix-group"><div class="people" data-n="256"></div><b>256</b></div></div><div class="notice"><strong>Team principle:</strong> once your two are in place, retire your link and shift to helping them get <em>their</em> two — their own directs are the only thing that qualifies their positions to catch payments. And if an extra signup comes through your link anyway, it's a bonus, not a problem: it still pays your position the entry reward and spills downward to fill an open slot in your leg. Spillover never qualifies the people below, though — so the team effort always moves down.</div></div></section>
|
||||
<section class="section" id="proof"><div class="wrap"><div class="section-head"><div class="eyebrow">Live payment proof</div><h2>Real payouts, straight from the blockchain.</h2><p>Every payment in this program happens on a public smart contract on Polygon — nobody can fake, hide, or edit it. Below are the latest member payouts, read live from the contract. Tap any row to verify the transaction yourself on Polygonscan.</p></div><div id="payoutTotals" class="pp-totals"></div><div id="payoutFeed" class="pp-feed"><div class="empty">Reading the blockchain…</div></div><div class="pp-note">Data is read directly from the RM Circle smart contract (<a href="https://polygonscan.com/address/0x33BdAEEfd6d17D80aE53816c916dFb26c4fB2DAF" target="_blank" rel="noopener noreferrer" style="color:var(--teal)">0x33Bd…2DAF</a>) on Polygon Mainnet. Member numbers are on-chain IDs, not names. Past payouts are not a promise of future results. <a href="/contract" style="color:var(--gold)">How the contract works — and why the rules can't change →</a></div></div></section>
|
||||
<section class="section"><div class="wrap"><div class="card" style="text-align:center;padding:34px"><div class="eyebrow">Ready to start?</div><h2 style="font-size:38px;margin:10px 0">See the current team placement.</h2><p style="max-width:680px;margin:0 auto 20px;color:var(--muted)">The onboarding page automatically shows the sponsor position the team is currently helping. Always use the sponsor shown there instead of an old screenshot or saved link.</p><a class="btn btn-primary" href="/start">Open Getting Started Instructions →</a></div></div></section>
|
||||
</main><footer class="wrap disclaimer">This independent team page is educational and is not an earnings guarantee or investment advice. Cryptocurrency and smart-contract participation involve risk, including possible loss of funds. Never use funds you cannot afford to lose. Results depend on actual participation, qualification, upgrades, smart-contract behavior, and the market value of POL.<div class="footer-links"><a href="/training">Training</a><a href="/start">Getting Started</a><a href="/my">Member Dashboard</a><a href="/contract">Contract Security</a><a href="/admin">Team Admin</a><a href="/disclaimer">Disclaimers</a></div></footer>
|
||||
</main><footer class="wrap disclaimer">This independent team page is educational and is not an earnings guarantee or investment advice. Cryptocurrency and smart-contract participation involve risk, including possible loss of funds. Never use funds you cannot afford to lose. Results depend on actual participation, qualification, upgrades, smart-contract behavior, and the market value of POL.<div class="footer-links"><a href="/training">Training</a><a href="/start">Getting Started</a><a href="/my">Member Dashboard</a><a href="/contract">Contract Security</a><a href="/admin">Team Admin</a><a href="/disclaimer">Disclaimers</a><a href="/how-pay-works">How You Get Paid</a></div></footer>
|
||||
<script src="/track.js"></script><script src="/bridge.js"></script><script src="/payouts.js" defer></script><script src="/chat.js" defer></script></body></html>
|
||||
|
||||
+1
-1
@@ -15,5 +15,5 @@
|
||||
<div class="callout" style="margin-top:16px"><strong>What happens next:</strong> get your 2 directs to qualify, then retire your link and help your 2 get their 2 — their own directs are what qualify them. If an extra referral happens anyway, it's a bonus: it still pays you and spills down your leg. Upgrade with earned POL when practical, and stay ahead of your team's levels so payments never pass you by.</div>
|
||||
<div class="callout warning" style="margin-top:12px"><strong>Risk reminder:</strong> participation involves cryptocurrency and smart-contract risk. No income is guaranteed. Use only funds you can afford to lose.</div><div id="supportBox" class="notice" style="margin-top:12px"></div><div id="supportLinkWrap" class="hidden" style="margin-top:10px"><a id="supportLink" class="btn btn-secondary" target="_blank" rel="noopener noreferrer">Open Team Support ↗</a></div></section></div>
|
||||
<figure class="roadmap-figure"><a href="/roadmap.webp" target="_blank" rel="noopener"><img src="/roadmap.webp" alt="RM Circle Premium Team Build Roadmap — core strategy, step-by-step guide, premium levels, and duplication formula" width="1149" height="1369" loading="lazy"></a><figcaption>The RM Circle is a team build project of the <strong>Crypto Team Build Network</strong>. This roadmap is the plan every member follows — tap to view full size.</figcaption></figure></div></main>
|
||||
<footer class="wrap disclaimer">This is an independent Crypto Team Build onboarding resource, not an owner/principal page. Always confirm transaction details in your wallet before signing. Never disclose your Secret Recovery Phrase.<div class="footer-links"><a href="/my">Already joined? Open your Member Dashboard →</a><a href="/contract">Contract Security</a><a href="/disclaimer">Disclaimers</a></div></footer>
|
||||
<footer class="wrap disclaimer">This is an independent Crypto Team Build onboarding resource, not an owner/principal page. Always confirm transaction details in your wallet before signing. Never disclose your Secret Recovery Phrase.<div class="footer-links"><a href="/my">Already joined? Open your Member Dashboard →</a><a href="/contract">Contract Security</a><a href="/disclaimer">Disclaimers</a><a href="/how-pay-works">How You Get Paid</a></div></footer>
|
||||
<script src="/track.js"></script><script src="/start.js"></script><script src="/payouts.js" defer></script><script src="/chat.js" defer></script></body></html>
|
||||
|
||||
@@ -143,3 +143,13 @@ a.brand{text-decoration:none;color:inherit}
|
||||
.team-stat .num.ok{color:var(--ok)}
|
||||
.team-stat small{display:block;color:var(--muted);margin-top:9px;font-size:13px;line-height:1.45}
|
||||
@media(max-width:720px){.team-stats{grid-template-columns:1fr 1fr}}
|
||||
|
||||
/* How-you-get-paid diagram page */
|
||||
.pay-entry{display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap;padding:8px 0}
|
||||
.pay-node{background:#0d2236;border:1px solid #2a4a66;border-radius:14px;padding:16px 20px;text-align:center;font-weight:800;line-height:1.3}
|
||||
.pay-you{border-color:var(--gold);color:var(--gold)}
|
||||
.pay-join{color:var(--teal);border-color:rgba(78,214,203,.4)}
|
||||
.pay-arrow-up{display:flex;flex-direction:column;align-items:center;color:var(--ok);font-weight:900;font-size:22px;line-height:1}
|
||||
.pay-arrow-up span{font-size:13px;margin-bottom:2px;white-space:nowrap}
|
||||
.pay-diagram-wrap{overflow-x:auto;margin-top:8px}
|
||||
.pay-diagram{width:100%;min-width:640px;height:auto;display:block}
|
||||
|
||||
@@ -22,9 +22,9 @@
|
||||
<p style="color:var(--muted);line-height:1.65;margin:0 0 12px"><strong style="color:var(--text)">Why spillover is still money in your future.</strong> Upgrade payments travel up the <em>matrix</em>, not the referral chain. When a member below you — spillover or not — buys a level, that payment stops at the first upline position that is <strong>qualified (2 directs)</strong> and <strong>already at that level</strong>. If that's you, you get paid by someone you never recruited. If you're missing a direct or a level, the payment passes you by and lands with the next eligible person above you — and you can watch that happen, on the blockchain, in real time.</p>
|
||||
<p style="color:var(--muted);line-height:1.65;margin:0 0 12px"><strong style="color:var(--text)">What if someone joins through my link after I'm qualified?</strong> No harm done — it's a bonus. The team's recommendation is to retire your link at 2/2 and put your effort into helping your two, but the contract never punishes a late signup: it still pays your position the full entry reward, and the new member spills downward into the first open slot in your leg, adding depth. The member whose slot gets filled earns nothing at that moment (the entry reward came to you); their income starts when that spilled member upgrades — and only if they're qualified and at the required level to catch it. So a stray extra referral is genuinely good news — it just can never do your downline's most important job for them: only their own directs qualify their positions.</p>
|
||||
<p style="color:var(--muted);line-height:1.65;margin:0"><strong style="color:var(--text)">The takeaway:</strong> spillover is free potential income sitting under you — and qualification plus staying upgraded is how you claim it. Get your 2, keep your level ahead of your team's wave, help your people get their own 2, and the matrix pays your position as it grows.</p></div>
|
||||
<div class="callout" style="max-width:880px;margin:0 auto"><strong>Ready?</strong> Head to the <a href="/start" style="color:var(--teal)">Getting Started page</a> to see the current team sponsor before you buy — placements rotate as positions qualify.</div>
|
||||
<div class="callout" style="max-width:880px;margin:0 auto 14px"><strong>Visual:</strong> see exactly how the money reaches your position — <a href="/how-pay-works" style="color:var(--teal)">the pay-flow diagram →</a></div><div class="callout" style="max-width:880px;margin:0 auto"><strong>Ready?</strong> Head to the <a href="/start" style="color:var(--teal)">Getting Started page</a> to see the current team sponsor before you buy — placements rotate as positions qualify.</div>
|
||||
<div class="callout warning" style="max-width:880px;margin:14px auto 0"><strong>Risk reminder:</strong> participation involves cryptocurrency and smart-contract risk. No income is guaranteed. Use only funds you can afford to lose.</div>
|
||||
</div></section>
|
||||
</main>
|
||||
<footer class="wrap disclaimer">This is an independent Crypto Team Build training resource. Always confirm transaction details in your wallet before signing. Never disclose your Secret Recovery Phrase.<div class="footer-links"><a href="/">Strategy</a><a href="/start">Getting Started</a><a href="/contract">Contract Security</a><a href="/admin">Team Admin</a><a href="/disclaimer">Disclaimers</a></div></footer>
|
||||
<footer class="wrap disclaimer">This is an independent Crypto Team Build training resource. Always confirm transaction details in your wallet before signing. Never disclose your Secret Recovery Phrase.<div class="footer-links"><a href="/">Strategy</a><a href="/start">Getting Started</a><a href="/contract">Contract Security</a><a href="/admin">Team Admin</a><a href="/disclaimer">Disclaimers</a><a href="/how-pay-works">How You Get Paid</a></div></footer>
|
||||
<script src="/track.js"></script><script src="/training.js"></script><script src="/chat.js" defer></script></body></html>
|
||||
|
||||
@@ -544,7 +544,7 @@ const server=http.createServer(async(req,res)=>{
|
||||
if((mj=pathname.match(/^\/join\/(\d{1,15})$/)))return serveMemberPage(req,res,path.join(PUBLIC_DIR,'join.html'),'join',mj[1]);
|
||||
}
|
||||
let file;
|
||||
if(pathname==='/')file=path.join(PUBLIC_DIR,'index.html');else if(pathname==='/start'||pathname==='/start/')file=path.join(PUBLIC_DIR,'start.html');else if(pathname==='/training'||pathname==='/training/')file=path.join(PUBLIC_DIR,'training.html');else if(pathname==='/admin'||pathname==='/admin/')file=path.join(PUBLIC_DIR,'admin.html');else if(pathname==='/my'||pathname==='/my/'||/^\/my\/\d{1,15}$/.test(pathname))file=path.join(PUBLIC_DIR,'my.html');else if(pathname==='/contract'||pathname==='/contract/')file=path.join(PUBLIC_DIR,'contract.html');else if(pathname==='/disclaimer'||pathname==='/disclaimer/')file=path.join(PUBLIC_DIR,'disclaimer.html');else if(/^\/join\/\d{1,15}$/.test(pathname))file=path.join(PUBLIC_DIR,'join.html');else if(pathname==='/join'||pathname==='/join/'){res.writeHead(302,{Location:'/start'});return res.end();}else{
|
||||
if(pathname==='/')file=path.join(PUBLIC_DIR,'index.html');else if(pathname==='/start'||pathname==='/start/')file=path.join(PUBLIC_DIR,'start.html');else if(pathname==='/training'||pathname==='/training/')file=path.join(PUBLIC_DIR,'training.html');else if(pathname==='/admin'||pathname==='/admin/')file=path.join(PUBLIC_DIR,'admin.html');else if(pathname==='/my'||pathname==='/my/'||/^\/my\/\d{1,15}$/.test(pathname))file=path.join(PUBLIC_DIR,'my.html');else if(pathname==='/contract'||pathname==='/contract/')file=path.join(PUBLIC_DIR,'contract.html');else if(pathname==='/disclaimer'||pathname==='/disclaimer/')file=path.join(PUBLIC_DIR,'disclaimer.html');else if(pathname==='/how-pay-works'||pathname==='/how-pay-works/')file=path.join(PUBLIC_DIR,'how-pay-works.html');else if(/^\/join\/\d{1,15}$/.test(pathname))file=path.join(PUBLIC_DIR,'join.html');else if(pathname==='/join'||pathname==='/join/'){res.writeHead(302,{Location:'/start'});return res.end();}else{
|
||||
const safe=path.normalize(pathname).replace(/^([.][.][/\\])+/, '').replace(/^[/\\]+/,'');file=path.join(PUBLIC_DIR,safe);if(!file.startsWith(PUBLIC_DIR))file='';
|
||||
}
|
||||
if(file&&staticFile(req,res,file))return;return staticFile(req,res,path.join(PUBLIC_DIR,'404.html'),404);
|
||||
|
||||
Reference in New Issue
Block a user