allow custom port for API server (#204)
* allow custom port for API server * add .editorconfig
This commit is contained in:
parent
5db8873807
commit
134eb654d2
6 changed files with 23 additions and 17 deletions
3
.editorconfig
Normal file
3
.editorconfig
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
[*.js]
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 2
|
|
@ -1,5 +1,5 @@
|
||||||
# esmBot Image API
|
# esmBot Image API
|
||||||
The esmBot image API is a combined HTTP and WebSocket API running on port 3762. The API supports very basic authentication, which is defined on the server via the PASS environment variable and is sent from the client via the Authentication header in both HTTP and WS requests.
|
The esmBot image API is a combined HTTP and WebSocket API. 3762 is the default port to access the API. The API supports very basic authentication, which is defined on the server via the PASS environment variable and is sent from the client via the Authentication header in both HTTP and WS requests.
|
||||||
|
|
||||||
## HTTP
|
## HTTP
|
||||||
|
|
||||||
|
@ -45,4 +45,4 @@ The job object is formatted like this:
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
|
@ -230,8 +230,8 @@ httpServer.on("upgrade", (req, sock, head) => {
|
||||||
httpServer.on("error", (e) => {
|
httpServer.on("error", (e) => {
|
||||||
console.error("An HTTP error occurred: ", e);
|
console.error("An HTTP error occurred: ", e);
|
||||||
});
|
});
|
||||||
|
const port = parseInt(process.env.PORT) || 3762;
|
||||||
httpServer.listen(3762, () => {
|
httpServer.listen(port, () => {
|
||||||
log("HTTP and WS listening on port 3762");
|
log("HTTP and WS listening on port 3762");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -269,4 +269,4 @@ const runJob = (job, ws) => {
|
||||||
reject(e);
|
reject(e);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
1
package-lock.json
generated
1
package-lock.json
generated
|
@ -1166,6 +1166,7 @@
|
||||||
"node_modules/erlpack": {
|
"node_modules/erlpack": {
|
||||||
"version": "0.1.3",
|
"version": "0.1.3",
|
||||||
"resolved": "git+ssh://git@github.com/abalabahaha/erlpack.git#f7d730debe32c416d1b55b4217f8aef2ade05874",
|
"resolved": "git+ssh://git@github.com/abalabahaha/erlpack.git#f7d730debe32c416d1b55b4217f8aef2ade05874",
|
||||||
|
"hasInstallScript": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
|
|
@ -25,8 +25,10 @@ const Rinit = 0x08;
|
||||||
class ImageConnection {
|
class ImageConnection {
|
||||||
constructor(host, auth, tls = false) {
|
constructor(host, auth, tls = false) {
|
||||||
this.requests = new Map();
|
this.requests = new Map();
|
||||||
|
if(!host.includes(":")){
|
||||||
|
host += ":3762";
|
||||||
|
}
|
||||||
this.host = host;
|
this.host = host;
|
||||||
this.port = 3762;
|
|
||||||
this.auth = auth;
|
this.auth = auth;
|
||||||
this.tag = null;
|
this.tag = null;
|
||||||
this.disconnected = false;
|
this.disconnected = false;
|
||||||
|
@ -39,19 +41,19 @@ class ImageConnection {
|
||||||
} else {
|
} else {
|
||||||
this.wsproto = "ws";
|
this.wsproto = "ws";
|
||||||
}
|
}
|
||||||
this.sockurl = `${this.wsproto}://${host}:${this.port}/sock`;
|
this.sockurl = `${this.wsproto}://${host}/sock`;
|
||||||
this.conn = new WebSocket(this.sockurl, {
|
let headers = {};
|
||||||
headers: {
|
if(auth){
|
||||||
"Authentication": auth && auth !== "" ? auth : undefined
|
headers.Authentication = auth;
|
||||||
}
|
}
|
||||||
});
|
this.conn = new WebSocket(this.sockurl, {headers});
|
||||||
let httpproto;
|
let httpproto;
|
||||||
if (tls) {
|
if (tls) {
|
||||||
httpproto = "https";
|
httpproto = "https";
|
||||||
} else {
|
} else {
|
||||||
httpproto = "http";
|
httpproto = "http";
|
||||||
}
|
}
|
||||||
this.httpurl = `${httpproto}://${host}:${this.port}/image`;
|
this.httpurl = `${httpproto}://${host}/image`;
|
||||||
this.conn.on("message", (msg) => this.onMessage(msg));
|
this.conn.on("message", (msg) => this.onMessage(msg));
|
||||||
this.conn.once("error", (err) => this.onError(err));
|
this.conn.once("error", (err) => this.onError(err));
|
||||||
this.conn.once("close", () => this.onClose());
|
this.conn.once("close", () => this.onClose());
|
||||||
|
@ -87,7 +89,7 @@ class ImageConnection {
|
||||||
}
|
}
|
||||||
this.requests.clear();
|
this.requests.clear();
|
||||||
if (!this.disconnected) {
|
if (!this.disconnected) {
|
||||||
logger.warn(`Lost connection to ${this.host}:${this.port}, attempting to reconnect in 5 seconds...`);
|
logger.warn(`Lost connection to ${this.host}, attempting to reconnect in 5 seconds...`);
|
||||||
await setTimeout(5000);
|
await setTimeout(5000);
|
||||||
this.conn = new WebSocket(this.sockurl, {
|
this.conn = new WebSocket(this.sockurl, {
|
||||||
headers: {
|
headers: {
|
||||||
|
@ -164,4 +166,4 @@ class ImageConnection {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export default ImageConnection;
|
export default ImageConnection;
|
||||||
|
|
|
@ -27,8 +27,8 @@ export async function clean(text) {
|
||||||
const imageServers = JSON.parse(fs.readFileSync("./servers.json", { encoding: "utf8" })).image;
|
const imageServers = JSON.parse(fs.readFileSync("./servers.json", { encoding: "utf8" })).image;
|
||||||
|
|
||||||
for (const { server, auth } of imageServers) {
|
for (const { server, auth } of imageServers) {
|
||||||
text = text.replaceAll(server, "<redacted>");
|
text = optionalReplace(server);
|
||||||
text = text.replaceAll(auth, "<redacted>");
|
text = optionalReplace(auth);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const env of Object.keys(parsed)) {
|
for (const env of Object.keys(parsed)) {
|
||||||
|
|
Loading…
Reference in a new issue