aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/samples.ts
blob: 469ddad9d4d34e4b4f9d70748acd42b0b8cbb0af (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
import { PUBLIC_DOMAIN, PUBLIC_COINOS_URL } from "$env/static/public";

const api = PUBLIC_DOMAIN.includes("localhost")
	? `${PUBLIC_COINOS_URL}`
	: `https://${PUBLIC_DOMAIN}/api`;

export default {
	register: `curl "${api}/register" -H "content-type: application/json" -d '{
  "user": {
    "username": "demo",
    "password": "hunter2"
  }
}'`,
	login: `curl "${api}/login" -H "content-type: application/json" -d '{
  "username": "demo",
  "password": "hunter2"
}'`,
	payments: `curl "${api}/payments" 
  -H "content-type: application/json" 
  -H "Authorization: Bearer $token"
`,
	lightning: `curl "${api}/payments" 
  -H "content-type: application/json" 
  -H "Authorization: Bearer $token"
  -d '{
    "payreq": "lnbc1pj94d8fsp5n77k340ps4m9jn7kp8he8yynpddvurv6mcsrrqpnq5l2jxdxzlwqpp5m96pqhc5nrlk8cqsu9ufdxxa43sarp8vwf9egvm2pg9nl0zu9r8qdq2vdhkjmn0wvxqztgcqpjrzjqwhmav82kntsppmkp8jp4vg4h9nns78tsy8mg7ve4lq5txrkp0h56zlarvqqdtcqqsqqqqqqqqqqp6cq9q9qyysgqzxlypywzphyujm3ga5j5csfcmqvlnae0fgnvymkaaw94eeg7py5rqzysyjkr3ev2snq63qpsc69vf54adkd0szvmvwt5cuadjnuy95sq4xfa40"
}'`,
	bitcoin: `curl "${api}/bitcoin/send" 
  -H "content-type: application/json" 
  -H "Authorization: Bearer $token"
  -d '{
    "amount": 5000,
    "address": "bc1q3unh97w4rmelflrm2hvdwz37d8kray3vn4d5ca"
}'`,
	internal: `curl "${api}/send" 
  -H "content-type: application/json" 
  -H "Authorization: Bearer $token"
  -d '{
    "amount": 5000,
    "username": "alice"
}'`,
	rates: `curl "${api}/rates" 
  -H "content-type: application/json" 
}'`,
	lightningInvoice: `curl "${api}/invoice" 
  -H "content-type: application/json" 
  -H "Authorization: Bearer $token"
  -d '{
    "invoice": {
      "amount": 1000,
      "type": "lightning"
    }
}'`,
	bitcoinAddress: `curl "${api}/invoice" 
  -H "content-type: application/json" 
  -H "Authorization: Bearer $token"
  -d '{
    "invoice": {
      "amount": 3141,
      "type": "bitcoin"
    }
}'`,
	webhook: `curl "${api}/invoice" 
  -H "content-type: application/json" 
  -H "Authorization: Bearer $token"
  -d '{
    "invoice": {
      "type": "lightning",
      "webhook": "https://example.com/payment/received",
      "secret": "webhooksecret"
    }
}'`,
	fetchInvoice: `curl "${api}/invoice/bc1qmhfk9stzffhd9umzmld92vff7zg3mdlh7rvvaj" 
  -H "content-type: application/json"'`,
	invoiceResponse: `{
  "amount":3141
  "tip":0
  "type":"bitcoin"
  "prompt":false
  "rate":31836.9702667
  "hash":"bc1qmhfk9stzffhd9umzmld92vff7zg3mdlh7rvvaj"
  "text":"bitcoin:bc1qmhfk9stzffhd9umzmld92vff7zg3mdlh7rvvaj?amount=0.00003141"
  "currency":"CAD"
  "uid":"a9770421-3f65-11ed-9f57-0242ac2a0004"
  "received":0
  "created":1677537428134
}`,
	socketAuth: `echo '{"type":"login","data":{"username":"user","password":"password"}}' | websocat -n https://coinos.io/ws`,
};
lass="nb">NULL, NULL); if (client_fd == -1) { perror("accept failed"); continue; } size_t buffer_size = INITIAL_BUFFER_SIZE; char *buffer = malloc(buffer_size); if (!buffer) { perror("malloc failed"); close(client_fd); continue; } size_t total_bytes_read = 0; ssize_t num_bytes; while ((num_bytes = read(client_fd, buffer + total_bytes_read, buffer_size - total_bytes_read - 1)) > 0) { total_bytes_read += num_bytes; // Expand buffer if necessary if (total_bytes_read >= buffer_size - 1) { buffer_size *= 2; char *new_buffer = realloc(buffer, buffer_size); if (!new_buffer) { perror("realloc failed"); free(buffer); close(client_fd); continue; } buffer = new_buffer; } } if (num_bytes == -1) { perror("read failed"); free(buffer); close(client_fd); continue; } buffer[total_bytes_read] = '\0'; // Null-terminate the string printf("Received: %s\n", buffer); // Split message into result_socket, command, and data char *result_socket = strtok(buffer, " "); char *command = strtok(NULL, "\n"); char *data = strtok(NULL, ""); if (result_socket && command) { printf("Result socket: %s\n", result_socket); printf("Command: %s\n", command); if (data) { printf("Data: %s\n", data); } handle_client(result_socket, command, data); } else { fprintf(stderr, "Invalid input format\n"); } free(buffer); close(client_fd); } close(server_fd); unlink(SOCKET_PATH); return 0; } void handle_client(const char *result_socket, const char *command, const char *data) { pid_t pid = fork(); if (pid == 0) { int result_fd = socket(AF_UNIX, SOCK_STREAM, 0); if (result_fd == -1) { perror("result socket failed"); exit(EXIT_FAILURE); } struct sockaddr_un result_addr; memset(&result_addr, 0, sizeof(struct sockaddr_un)); result_addr.sun_family = AF_UNIX; strncpy(result_addr.sun_path, result_socket, sizeof(result_addr.sun_path) - 1); if (connect(result_fd, (struct sockaddr *)&result_addr, sizeof(struct sockaddr_un)) == -1) { perror("connect to result socket failed"); close(result_fd); exit(EXIT_FAILURE); } int pipe_fd[2]; if (pipe(pipe_fd) == -1) { perror("pipe failed"); close(result_fd); exit(EXIT_FAILURE); } pid_t cmd_pid = fork(); if (cmd_pid == 0) { // Child process: run the command dup2(pipe_fd[0], STDIN_FILENO); // Redirect stdin close(pipe_fd[0]); close(pipe_fd[1]); close(result_fd); execlp("/bin/sh", "sh", "-c", command, (char *)NULL); perror("execlp failed"); exit(EXIT_FAILURE); } // Parent process: send data and collect output close(pipe_fd[0]); // Close read end of the pipe if (data) { write(pipe_fd[1], data, strlen(data)); } close(pipe_fd[1]); // Close write end of the pipe FILE *cmd_output = fdopen(result_fd, "w"); if (!cmd_output) { perror("fdopen failed"); close(result_fd); exit(EXIT_FAILURE); } char output_buffer[INITIAL_BUFFER_SIZE]; while (fgets(output_buffer, sizeof(output_buffer), cmd_output) != NULL) { write(result_fd, output_buffer, strlen(output_buffer)); } fclose(cmd_output); shutdown(result_fd, SHUT_WR); close(result_fd); unlink(result_socket); exit(0); } else if (pid < 0) { perror("fork failed"); } }