This commit is contained in:
lolcat 2024-09-06 21:51:27 -04:00
parent d9408d2c92
commit da8315fa53
1 changed files with 29 additions and 167 deletions

192
client.js
View File

@ -14,8 +14,7 @@ const emitter = require("events");
const deek = new emitter();
const name = "rena_chan";
const password = "tuv2kvavaO6UACfir2Xx0xe3G6MdrRRF";
const mc_password = "cloacalingus69";
const password = "yourmom";
const userid = 12;
var channels = [];
var ws = [];
@ -25,7 +24,7 @@ var ddg_mod = true; // dont show porn in .img
var global_page = 1; // .img page
var raid = false; // raid?
var img_headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:124.0) Gecko/20100101 Firefox/124.0",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:130.0) Gecko/20100101 Firefox/130.0",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8",
"Accept-Language": "en-US,en;q=0.5",
"Accept-Encoding": "gzip, deflate",
@ -39,51 +38,43 @@ var headers = {
};
/*
Minecraft functions
HTTP server bullshit
*/
String.prototype.chunk = function(size){
return [].concat.apply([],
this.split('').map(function(x,i){ return i%size ? [] : this.slice(i,i+size) }, this)
)
}
const http_bullshit_handler = function(req, res){
async function send_mc(username, message){
switch(req.url){
if(mc_logged_in){
case "/":
res.setHeader("Content-Type", "text/html");
res.writeHead(200);
res.end('<body style="color:#fff;background:#000;"><h1>all work and no play makes deek a dull boy</h1>');
break;
// ascii filter
message = message.replace(
/[^-!\"#$%&'()*+,.\/0123456789:;<=>?@[\\\]^_'abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø׃áíóúñѪº¿®¬½¼¡«» ]/gi,
""
);
case "/kys":
res.setHeader("Content-Type", "text/html");
res.writeHead(200);
res.end('<body style="color:red;background:#000;"><h1>bang!</h1>');
username = mc_escape(username);
send(1, "Resharted from web interface");
// for each newline...
message.split("\n").forEach(function(a){
setTimeout(function(){
a = a.trim();
fs.utimesSync(__filename, Date.now(), Date.now());
}, 1000);
break;
if(a.length !== 0){
a.chunk(256 - username.length - 49 - (mc_escape(a).length - a.length)).forEach(function(z){
mc.chat('/tellraw @a ["<",{"text":"' + username + '","color":"gold"},"> ' + mc_escape(z).trim() + '"]');
});
}
});
default:
res.writeHead(404);
res.end("fuck you");
break;
}
}
function mc_escape(str){
const http_bullshit = http.createServer(http_bullshit_handler);
http_bullshit.listen(6969, "0.0.0.0", function(){
return str.replace(
/[^-!\"#$%&'()*+,.\/0123456789:;<=>?@[\\\]^_'abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø׃áíóúñѪº¿®¬½¼¡«» ]/gi,
""
).replace(/[\\"']/g, '\\$&')
.replace(/\u0000/g, '\\0')
.replace("\n", " ");
}
console.log("HTTP bullshit running");
});
/*
Helper functions
@ -182,16 +173,6 @@ async function send(channel, text, file = null, forcemime = null){
channel = channel.channel;
}
if(channel === 1){
send_mc(name, text);
}
if(channel === -1){
channel = 1;
}
if(file === null){
ws.send(JSON.stringify({
@ -402,116 +383,6 @@ async function handshake(name, password){
});
}
/*
Minecraft => Deekchat bridge
*/
const mineflayer = require('mineflayer');
var mc_logged_in = false;
const mc_options = {
host: 'deek.chat',
username: name,
auth: 'offline',
port: 25565
};
function bind_mc_chat_events(){
mc.on("chat", function(username, message){
if(username === mc.username){
return;
}
send(-1, "<" + username + "> " + message);
deek.emit(
"message",
{
text: message,
id: 0,
files: [],
mentions: [],
replies: [],
channel: 1,
is_mc: true
},
{
name: username,
id: -1,
picture: null
}
);
if(username == "4lul"){
if(message.startsWith(".run")){
var cmd = message.split(" ");
cmd.shift();
cmd = cmd.join(" ");
mc.chat(cmd);
}
}
});
mc.on("playerJoined", function(usr){
if(usr.username == name){
return;
}
send(-1, ">" + usr.username + " joined deekcraft");
});
mc.on("playerLeft", function(usr){
if(usr.username == name){
return;
}
send(-1, ">" + usr.username + " left deekcraft");
});
// Log errors and kick reasons:
mc.on("kicked", function(msg){
mc_logged_in = false;
console.log("kicked", msg);
});
mc.on("error", function(msg){
mc_logged_in = false;
console.log("error: ", msg);
});
}
function bind_mc_start_events(){
mc.on("login", function(){
mc_logged_in = true;
mc.chat("/login " + mc_password);
console.log("Logged to minecraft server as " + mc.username);
});
mc.on("death", function(user){
mc.respawn();
});
mc.on("end", function(){
setTimeout(function(){
// reconnect after 10 seconds
mc = mineflayer.createBot(mc_options);
bind_mc_start_events();
bind_mc_chat_events();
}, 10000);
});
}
mc = mineflayer.createBot(mc_options);
bind_mc_start_events();
/*
User defined FUN-ctions!!!
*/
@ -542,7 +413,6 @@ async function fetch_xeno(recording, index, msg){
deek.on("login", function(channel){
console.log("Connected to websocket xoxo");
bind_mc_chat_events();
});
deek.on("message", async function(msg, user){
@ -574,14 +444,6 @@ deek.on("message", async function(msg, user){
msg.text = msg.text.split(">").splice(1).join(">").trim();
}*/
if(
msg.channel === 1 &&
typeof msg.is_mc === "undefined"
){
send_mc(user.name, msg.text);
}
switch(msg.text.toLowerCase()){
case "hello rena":