const fs = require('fs'); const tokenData = JSON.parse(fs.readFileSync('D:/cumin/ghaymah_dns_net_sec_tests/token.json', 'utf8')); const PROJECT_ID = '3f55ceef-78ae-40c8-a41b-0505db8c59ee'; const clientId = crypto.randomUUID(); async function genDomainHash(name, id) { const input = `${name}-${id}`; const data = new TextEncoder().encode(input); const hash = await crypto.subtle.digest('SHA-256', data); const hex = Array.from(new Uint8Array(hash)).map(b => b.toString(16).padStart(2, '0')).join(''); return hex.substring(0, 12); } async function main() { const hash = await genDomainHash('client-terminal', clientId); const domain = `client-terminal-${hash}.hosted.ghaymah.systems`; console.log('Deploying client-terminal (tsl0922/ttyd:alpine) on domain:', domain); const res = await fetch('https://graphql.ghaymah.systems/v1/graphql', { method: 'POST', headers: { 'Authorization': 'Bearer ' + tokenData.token, 'Content-Type': 'application/json' }, body: JSON.stringify({ query: `mutation CreateResource($id: uuid!, $userId: uuid!, $chartName: String!, $chartVersion: String!, $values: json!) { insert_ghaymah_cloud_resources_one(object: { id: $id, user_id: $userId, chart_name: $chartName, chart_version: $chartVersion, values: $values }) { id status } }`, variables: { id: clientId, userId: tokenData.userId, chartName: 'ghaymah-app', chartVersion: '0.1', values: { name: 'client-terminal', projectId: PROJECT_ID, resourceTier: 't1', ports: [{ number: 7681, expose: true }], container: { image: 'tsl0922/ttyd:alpine' }, publicAccess: { enabled: true, domain: domain, baseDomain: 'hosted.ghaymah.systems' } } } }) }); console.log('Result:', JSON.stringify(await res.json(), null, 2)); } main().catch(console.error);