Add websocket server and configs
This commit is contained in:
parent
effe778067
commit
bf442d3554
3 changed files with 135 additions and 0 deletions
75
README.md
75
README.md
|
@ -34,6 +34,81 @@ geoip2 /var/lib/GeoIP/GeoLite2-ASN.mmdb {
|
|||
}
|
||||
```
|
||||
|
||||
Then the following should be used, to pass this data to php:
|
||||
```
|
||||
fastcgi_param QUERY_STRING $query_string;
|
||||
fastcgi_param REQUEST_METHOD $request_method;
|
||||
fastcgi_param CONTENT_TYPE $content_type;
|
||||
fastcgi_param CONTENT_LENGTH $content_length;
|
||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||
fastcgi_param REQUEST_SCHEME $scheme;
|
||||
|
||||
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
|
||||
fastcgi_param REQUEST_URI $request_uri;
|
||||
fastcgi_param DOCUMENT_URI $document_uri;
|
||||
fastcgi_param DOCUMENT_ROOT $document_root;
|
||||
fastcgi_param SERVER_PROTOCOL $server_protocol;
|
||||
fastcgi_param HTTPS $https if_not_empty;
|
||||
|
||||
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
|
||||
fastcgi_param SERVER_SOFTWARE nginx;
|
||||
|
||||
fastcgi_param REMOTE_ADDR $remote_addr;
|
||||
fastcgi_param REMOTE_PORT $remote_port;
|
||||
fastcgi_param REMOTE_USER $remote_user;
|
||||
fastcgi_param SERVER_ADDR $server_addr;
|
||||
fastcgi_param SERVER_PORT $server_port;
|
||||
fastcgi_param SERVER_NAME $server_name;
|
||||
|
||||
# PHP only, required if PHP was built with --enable-force-cgi-redirect
|
||||
fastcgi_param REDIRECT_STATUS 200;
|
||||
|
||||
#for proxy detection
|
||||
fastcgi_param HTTP_X_FORWARDED_FOR $http_x_forwarded_for;
|
||||
|
||||
#pass all geoip data
|
||||
fastcgi_param GEOIP_CONTINENT_CODE $geoip2_data_continent_code;
|
||||
fastcgi_param GEOIP_CONTINENT_NAME $geoip2_data_continent_name;
|
||||
fastcgi_param GEOIP_COUNTRY_CODE $geoip2_data_country_code;
|
||||
fastcgi_param GEOIP_COUNTRY_NAME $geoip2_data_country_name;
|
||||
fastcgi_param GEOIP_SUBDIVISION $geoip2_data_subdivision;
|
||||
fastcgi_param GEOIP_CITY_NAME $geoip2_data_city_name;
|
||||
fastcgi_param GEOIP_POSTAL_CODE $geoip2_data_postal_code;
|
||||
fastcgi_param GEOIP_LATITUDE $geoip2_data_location_lat;
|
||||
fastcgi_param GEOIP_LONGITUDE $geoip2_data_location_long;
|
||||
fastcgi_param GEOIP_ACCURACY $geoip2_data_location_acc;
|
||||
fastcgi_param GEOIP_TIMEZONE $geoip2_data_location_time;
|
||||
fastcgi_param GEOIP_ASN $geoip2_data_asn;
|
||||
```
|
||||
|
||||
|
||||
The following is the nginx config for the server block:
|
||||
```
|
||||
server
|
||||
{
|
||||
listen 80;
|
||||
listen [::]:80;
|
||||
listen 443 ssl http2;
|
||||
listen [::]:443 ssl http2;
|
||||
|
||||
server_name v4.ip.zuim.de v6.ip.zuim.de ip.zuim.de 89.58.44.51 [2a03:4000:67:e03::1];
|
||||
|
||||
root PROJEKTORDNER
|
||||
|
||||
location /speedtest
|
||||
{
|
||||
proxy_pass http://unix:/run/nodejs/speedtest/socket;
|
||||
proxy_http_version 1.1;
|
||||
#include include/proxy_params;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
}
|
||||
|
||||
include include/php;
|
||||
include include/ssl_zuim;
|
||||
}
|
||||
```
|
||||
|
||||
Download these files directly and add them in the main folder:
|
||||
- https://ip.zuim.de/0B.zip
|
||||
- https://ip.zuim.de/1MB.zip
|
||||
|
|
52
node_server/main.js
Normal file
52
node_server/main.js
Normal file
|
@ -0,0 +1,52 @@
|
|||
var path = "/speedtest";
|
||||
|
||||
var app = require('express')();
|
||||
var http = require('http').Server(app);
|
||||
var io = require('socket.io')(http, {path: path
|
||||
//, cors: {
|
||||
// origin: [/zuim\.de$/, /craftandbuild\.de$/],
|
||||
// methods: ["GET", "POST"]
|
||||
// }
|
||||
});
|
||||
var fs = require('fs');
|
||||
|
||||
io.on('connection', function(socket)
|
||||
{
|
||||
socket.on('pingUp', function(msg)
|
||||
{
|
||||
socket.emit('pongDown', msg);
|
||||
});
|
||||
|
||||
socket.on('downReq', function(msg)
|
||||
{
|
||||
if(new RegExp('[0-9]+').test(msg))
|
||||
{
|
||||
fs.readFile(__dirname + '/data/' + msg, function (err, data)
|
||||
{
|
||||
socket.emit('downDataStart', '');
|
||||
socket.emit('downData', data);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
socket.on('upTest', function(msg)
|
||||
{
|
||||
socket.emit('upOk', '');
|
||||
});
|
||||
|
||||
socket.on('pingT', function(msg)
|
||||
{
|
||||
socket.emit('pongT', '');
|
||||
});
|
||||
});
|
||||
|
||||
//http.listen(3000, function(){
|
||||
// console.log('listening on *:3000');
|
||||
//});
|
||||
var socket = '/var/run/nodejs'+path+"/socket";
|
||||
if(fs.existsSync(socket))
|
||||
fs.unlinkSync(socket);
|
||||
http.listen(socket, function()
|
||||
{
|
||||
fs.chmodSync(socket, '666');
|
||||
});
|
8
node_server/package.json
Normal file
8
node_server/package.json
Normal file
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"name": "ipinfo_server",
|
||||
"version": "0.0.1",
|
||||
"dependencies": {
|
||||
"express": "^4.13.4",
|
||||
"socket.io": "^4.2.0"
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue