MCPcopy
hub / github.com/nirui/sshwifty / dial

Method dial

ui/socket.js:130–225  ·  view source on GitHub ↗

* Connect to the server * * @param {object} callbacks Callbacks * * @returns {object} A pair of ReadWriter which can be used to read and * send data to the underlaying websocket connection *

(callbacks)

Source from the content-addressed store, hash-verified

128 *
129 */
130 async dial(callbacks) {
131 let ws = await this.connect(this.timeout),
132 rd = new reader.Reader(new reader.Multiple(() => {}), data => {
133 return new Promise(resolve => {
134 let bufferReader = new FileReader();
135
136 bufferReader.onload = event => {
137 let d = new Uint8Array(event.target.result);
138
139 resolve(d);
140
141 callbacks.inboundUnpacked(d);
142 };
143
144 bufferReader.readAsArrayBuffer(data);
145 });
146 }),
147 sdDataConvert = rawData => {
148 return rawData;
149 },
150 sd = new sender.Sender(
151 async rawData => {
152 let data = await sdDataConvert(rawData);
153
154 ws.send(data.buffer);
155 callbacks.outbound(data);
156 },
157 15,
158 4096 - 64 // Server has a 4096 bytes receive buffer, can be no greater
159 );
160
161 ws.addEventListener("message", event => {
162 callbacks.inbound(event.data);
163
164 rd.feed(event.data);
165 });
166
167 ws.addEventListener("error", event => {
168 rd.close();
169 });
170
171 ws.addEventListener("close", event => {
172 rd.close();
173 });
174
175 let senderNonce = crypt.generateNonce();
176 sd.send(senderNonce);
177
178 let receiverNonce = await reader.readN(rd, crypt.GCMNonceSize);
179
180 let key = await this.buildKey();
181
182 sdDataConvert = async rawData => {
183 let encoded = await crypt.encryptGCM(key, senderNonce, rawData);
184
185 crypt.increaseNonce(senderNonce);
186
187 let dataToSend = new Uint8Array(encoded.byteLength + 2);

Callers 1

getMethod · 0.80

Calls 13

connectMethod · 0.95
feedMethod · 0.95
closeMethod · 0.95
sendMethod · 0.95
buildKeyMethod · 0.95
inboundUnpackedMethod · 0.80
outboundMethod · 0.80
inboundMethod · 0.80
generateNonceMethod · 0.80
increaseNonceMethod · 0.80
sendMethod · 0.45
setMethod · 0.45

Tested by

no test coverage detected