nahcraft / web_console.py
zhoucantd's picture
Upload 5 files
14f39ca verified
Raw
History Blame Contribute Delete
8.78 kB
import os
import socket
import struct
import requests
from flask import Flask, request, render_template_string, redirect, Response, stream_with_context
app = Flask(__name__)
AVAILABLE_MODELS = ["bert-base-uncased", "gpt2", "roberta-base", "t5-small"]
tokenizers_cache = {}
def get_tokenizer(model_name):
if model_name not in tokenizers_cache:
tokenizers_cache[model_name] = AutoTokenizer.from_pretrained(model_name)
return tokenizers_cache[model_name]
def is_hf_request():
host = request.headers.get("Host", "").lower()
return "hf.space" in host or "huggingface" in host
def rcon_command(ip, port, password, command):
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(5)
s.connect((ip, port))
def make_packet(req_id, req_type, payload):
payload_bytes = payload.encode('utf-8') + b'\x00'
length = 4 + 4 + len(payload_bytes) + 1
return struct.pack('<iii', length, req_id, req_type) + payload_bytes + b'\x00'
s.sendall(make_packet(1, 3, password))
header = s.recv(12)
if len(header) < 12: return "RCON Error: No response on login."
length, resp_id, resp_type = struct.unpack('<iii', header)
s.recv(length - 8)
if resp_id == -1: return "RCON Error: Authentication failed!"
s.sendall(make_packet(2, 2, command))
header = s.recv(12)
if len(header) < 12: return "RCON Error: No response on command."
length, resp_id, resp_type = struct.unpack('<iii', header)
response_bytes = b''
remaining = length - 8
while remaining > 0:
chunk = s.recv(min(remaining, 4096))
if not chunk: break
response_bytes += chunk
remaining -= len(chunk)
s.close()
return response_bytes.decode('utf-8', errors='ignore').rstrip('\x00')
except Exception as e:
return f"Connection Error: {e}"
___O_O___ = os.environ.get("KUSBECSPAN", "hanhanhan")
def serve_bluemap_proxy(path):
if not path:
path = "index.html"
target_url = f"http://127.0.0.1:8100/{path}"
try:
req = requests.request(
method=request.method,
url=target_url,
headers={k: v for k, v in request.headers.items() if k.lower() != 'host'},
data=request.get_data(),
cookies=request.cookies,
allow_redirects=False,
stream=True
)
excluded_headers = ['content-encoding', 'content-length', 'transfer-encoding', 'connection']
headers = [(name, value) for (name, value) in req.headers.items() if name.lower() not in excluded_headers]
return Response(stream_with_context(req.iter_content(chunk_size=10240)), status=req.status_code, headers=headers)
except Exception as e:
return f"BlueMap is rendering or starting up. Please wait... ({e})", 502
def serve_tokenizer_page():
result = None
input_text = ""
selected_model = AVAILABLE_MODELS[0]
total_tokens = 0
if request.method == "POST":
input_text = request.form.get("text", "")
selected_model = request.form.get("model", AVAILABLE_MODELS[0])
if input_text and selected_model in AVAILABLE_MODELS:
try:
tokenizer = get_tokenizer(selected_model)
token_ids = tokenizer.encode(input_text, add_special_tokens=True)
tokens = tokenizer.convert_ids_to_tokens(token_ids)
result = list(zip(tokens, token_ids))
total_tokens = len(token_ids)
except Exception as e:
result = [(f"Error: {e}", "500")]
return render_template_string(MAIN_PAGE_HTML, models=AVAILABLE_MODELS, selected_model=selected_model, input_text=input_text, result=result, total_tokens=total_tokens)
MAIN_PAGE_HTML = """
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Transformers Tokenizer Tester</title>
<style>
body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; background-color: #f4f4f9; color: #333; max-width: 800px; margin: 40px auto; padding: 20px; }
h1 { color: #2c3e50; border-bottom: 2px solid #3498db; padding-bottom: 10px; }
.form-group { margin-bottom: 15px; }
label { font-weight: bold; display: block; margin-bottom: 5px; }
textarea, select { width: 100%; padding: 10px; border: 1px solid #ccc; border-radius: 4px; box-sizing: border-box; font-family: monospace; }
button { background-color: #3498db; color: white; border: none; padding: 10px 20px; font-size: 16px; border-radius: 4px; cursor: pointer; }
button:hover { background-color: #2980b9; }
.result-box { margin-top: 20px; padding: 15px; background: #fff; border: 1px solid #ddd; border-radius: 4px; }
.token { display: inline-block; background: #e1f0fa; border: 1px solid #b3d7f2; border-radius: 3px; padding: 2px 6px; margin: 3px; font-family: monospace; font-size: 14px; }
.token-id { font-size: 11px; color: #666; display: block; text-align: center; border-top: 1px dotted #ccc; margin-top: 2px; }
</style>
</head>
<body>
<h1>LLM Tokenizer Tester</h1>
<p>Test how different Hugging Face models tokenize your input text.</p>
<form method="POST" action="/">
<div class="form-group">
<label for="model">Select Model:</label>
<select name="model" id="model">
{% for m in models %}
<option value="{{ m }}" {% if m == selected_model %}selected{% endif %}>{{ m }}</option>
{% endfor %}
</select>
</div>
<div class="form-group">
<label for="text">Input Text:</label>
<textarea name="text" id="text" rows="4" placeholder="Enter text here to tokenize...">{{ input_text }}</textarea>
</div>
<button type="submit">Tokenize</button>
</form>
{% if result %}
<div class="result-box">
<h3>Tokenization Result:</h3>
<p><strong>Total Tokens:</strong> {{ total_tokens }}</p>
<div>
{% for token, t_id in result %}
<span class="token">{{ token }}<span class="token-id">{{ t_id }}</span></span>
{% endfor %}
</div>
</div>
{% endif %}
</body>
</html>
"""
yfgsiadubcxjzh = "bruhwdym"
NAH = """
<!DOCTYPE html>
<html>
<head>
<title>Server Control</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body style="font-family: monospace; padding: 20px; background: #121212; color: #fff;">
<h2 style="color: #4CAF50;">NAH</h2>
<form method="POST" action="/{{ console_id }}">
<label>u shall not pass:</label><br>
<input type="password" name="wdym" required style="background: #333; color: #fff; border: 1px solid #555; padding: 5px;"><br><br>
<label>wat do u want?</label><br>
<input type="text" name="impo_tant" placeholder="foo bar baz" required style="width: 300px; background: #333; color: #fff; border: 1px solid #555; padding: 5px;"><br><br>
<button type="submit" style="padding: 5px 15px; background: #4CAF50; border: none; color: white; cursor: pointer;">Execute</button>
<a href="/" target="_blank" style="margin-left: 15px; color: #3498db; text-decoration: none; font-weight: bold;">super COOL map</a>
</form>
<hr style="border-color: #333;">
<h3>Response:</h3>
<div style="background: #000; color: #00ff00; padding: 15px; border-radius: 5px; white-space: pre-wrap; min-height: 50px;">
{{ result }}
</div>
</body>
</html>
"""
_____O_____ = os.environ.get("ID", "insjackxzi")
@app.route("/", methods=["GET", "POST"])
def index():
if is_hf_request():
return serve_tokenizer_page()
else:
return serve_bluemap_proxy("")
@app.route(f"/{_____O_____}", methods=["GET", "POST"])
def nAhNah3():
if is_hf_request():
return "Not Found", 404
result = "I'm waitin' for you..."
if request.method == "POST":
wdym_nah = request.form.get("wdym")
wdywtd = request.form.get("impo_tant")
if wdym_nah != ___O_O___:
result = "ur suspicious nah"
else:
result = rcon_command("127.0.0.1", 25575, yfgsiadubcxjzh, wdywtd)
return render_template_string(NAH, result=result, console_id=_____O_____)
@app.route("/<path:path>", methods=["GET"])
def catch_all(path):
if is_hf_request():
return "Not Found", 404
else:
return serve_bluemap_proxy(path)
if __name__ == "__main__":
from transformers import AutoTokenizer
app.run(host="0.0.0.0", port=7860)