Skip to content

Commit edf12ce

Browse files
authored
Add custom proxy selection (#53)
* Add custom proxy selection * Remove request dependency * Remove duplicate font
1 parent 04b8ef2 commit edf12ce

File tree

4 files changed

+27
-64
lines changed

4 files changed

+27
-64
lines changed

assets/Mojangles.ttf

-70.2 KB
Binary file not shown.

index.js

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
/* global THREE, prompt */
2+
const net = require('net')
23

34
// Workaround for process.versions.node not existing in the browser
45
process.versions.node = '14.0.0'
@@ -31,13 +32,35 @@ async function statusRunner () {
3132
async function main () {
3233
statusRunner()
3334
const viewDistance = 6
34-
const host = prompt('Host', '95.111.249.143')
35-
const port = parseInt(prompt('Port', '10000'))
35+
const hostprompt = prompt('Host:port', '95.111.249.143:10000')
36+
const proxyprompt = prompt('Proxy:port (blank for default)', '')
3637
const username = prompt('Username', 'pviewer' + (Math.floor(Math.random() * 1000)))
3738
let password = prompt('Password (blank for offline)', '')
3839
password = password === '' ? undefined : password
40+
41+
let host, port, proxy, proxyport
42+
if (!hostprompt.includes(':')) {
43+
host = hostprompt
44+
port = 25565
45+
} else {
46+
[host, port] = hostprompt.split(':')
47+
port = parseInt(port, 10)
48+
}
49+
50+
if (!proxyprompt.includes(':')) {
51+
proxy = proxyprompt
52+
proxyport = undefined
53+
} else {
54+
[proxy, proxyport] = proxyprompt.split(':')
55+
proxyport = parseInt(proxyport, 10)
56+
}
3957
console.log(`connecting to ${host} ${port} with ${username}`)
4058

59+
if (proxy) {
60+
console.log(`using proxy ${proxy} ${proxyport}`)
61+
net.setProxy({ hostname: proxy, port: proxyport })
62+
}
63+
4164
status = 'Logging in'
4265

4366
document.getElementById('loading-text').requestFullscreen()

package.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,7 @@
4242
"dependencies": {
4343
"compression": "^1.7.4",
4444
"express": "^4.17.1",
45-
"net-browserify": "^0.2.4",
46-
"request": "^2.88.2"
45+
"net-browserify": "PrismarineJS/net-browserify"
4746
},
4847
"devDependencies": {
4948
"assert": "^2.0.0",

server.js

Lines changed: 1 addition & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -2,76 +2,17 @@
22

33
const express = require('express')
44
const netApi = require('net-browserify')
5-
const request = require('request')
65
const compression = require('compression')
76
const path = require('path')
87

98
// Create our app
109
const app = express()
1110

12-
app.use(function (req, res, next) {
13-
res.header('Access-Control-Allow-Origin', req.get('Origin') || '*')
14-
res.header('Access-Control-Allow-Credentials', 'true')
15-
res.header('Access-Control-Allow-Methods', 'GET,HEAD,PUT,PATCH,POST,DELETE')
16-
res.header('Access-Control-Expose-Headers', 'Content-Length')
17-
res.header(
18-
'Access-Control-Allow-Headers',
19-
'Accept, Authorization, Content-Type, X-Requested-With, Range'
20-
)
21-
if (req.method === 'OPTIONS') {
22-
return res.send(200)
23-
} else {
24-
return next()
25-
}
26-
})
27-
2811
app.use(compression())
29-
app.use(netApi())
12+
app.use(netApi({ allowOrigin: '*' }))
3013
app.use(express.static(path.join(__dirname, './public')))
31-
3214
app.use(express.json({ limit: '100kb' }))
3315

34-
app.all('*', function (req, res, next) {
35-
// Set CORS headers: allow all origins, methods, and headers: you may want to lock this down in a production environment
36-
res.header('Access-Control-Allow-Origin', '*')
37-
res.header('Access-Control-Allow-Methods', 'GET, PUT, PATCH, POST, DELETE')
38-
res.header(
39-
'Access-Control-Allow-Headers',
40-
req.header('access-control-request-headers')
41-
)
42-
43-
if (req.method === 'OPTIONS') {
44-
// CORS Preflight
45-
res.send()
46-
} else {
47-
const targetURL = req.header('Target-URL')
48-
if (!targetURL) {
49-
res.status(404).send({ error: '404 Not Found' })
50-
return
51-
}
52-
const newHeaders = req.headers
53-
newHeaders.host = targetURL
54-
.replace('https://', '')
55-
.replace('http://', '')
56-
.split('/')[0]
57-
request(
58-
{
59-
url: targetURL + req.url,
60-
method: req.method,
61-
json: req.body,
62-
headers: req.headers
63-
},
64-
function (error, response, body) {
65-
if (error) {
66-
console.error(error)
67-
console.error('error: ' + response.statusCode)
68-
}
69-
// console.log(body);
70-
}
71-
).pipe(res)
72-
}
73-
})
74-
7516
// Start the server
7617
const server = app.listen(process.argv[2] === undefined ? 8080 : process.argv[2], function () {
7718
console.log('Server listening on port ' + server.address().port)

0 commit comments

Comments
 (0)