Moderators: Ftod , BitByByte
BitByByte
Набирающий обороты
Posts: 26 Joined: Thu Dec 19, 2024 11:18 am
Has thanked: 24 times
Been thanked: 8 times
Post
by BitByByte » Fri Jan 09, 2026 1:41 pm
Ambreon866 wrote: Fri Jan 09, 2026 1:37 pm
Те, кто хостит сервера с DMConnect - посоветуйте пожалуйста хостинг для него, очень надо
Я держу сервер
saratov.ddns.net на VPS от
https://ruvds.com/ . Паспорт при регистрации не требуют, вроде бы.
Вот только есть минус (или плюс?) - IP сервера будет российским, если захочешь хоститься там.
zhuzhun3000
Набирающий обороты
Posts: 27 Joined: Sun Mar 23, 2025 10:54 am
Location: не скажу
Has thanked: 1 time
Been thanked: 9 times
Post
by zhuzhun3000 » Fri Jan 09, 2026 1:50 pm
JustHost - датацентроффф много, почти вся Европа есть (ну и Россия собсна), раньше VPS были дешёвые, ща из-за всей этой ситуации на рынке подорожали. Летом был там, если брать ДЦ в Европе (Латвия и т.д.) - может чудить с IP, но там их можно сменить, также как и ДЦ
IHC.ru - самый дешёвый VPS (75 рублей в месяц, но дц - Россия, осторожно). Европа от 275 рублей. Сейчас у меня ВПСка там, качество на высоте, не подводили. 600МБ хватает с головой для хостинга сайтов и мелких серверов (и даже дешевле самого слабого тарифа на JH).
Больше не знаю.. наверное.
Вечность пахнет нефтью...
zhuzhun3000
Набирающий обороты
Posts: 27 Joined: Sun Mar 23, 2025 10:54 am
Location: не скажу
Has thanked: 1 time
Been thanked: 9 times
Post
by zhuzhun3000 » Fri Jan 09, 2026 2:54 pm
zhuzhun3000 wrote: Fri Jan 09, 2026 1:50 pm
JustHost - датацентроффф много, почти вся Европа есть (ну и Россия собсна), раньше VPS были дешёвые, ща из-за всей этой ситуации на рынке подорожали. Летом был там, если брать ДЦ в Европе (Латвия и т.д.) - может чудить с IP, но там их можно сменить, также как и ДЦ
IHC.ru - самый дешёвый VPS (75 рублей в месяц, но дц - Россия, осторожно). Европа от 275 рублей. Сейчас у меня ВПСка там, качество на высоте, не подводили. 600МБ хватает с головой для хостинга сайтов и мелких серверов (и даже дешевле самого слабого тарифа на JH).
Больше не знаю.. наверное.
сорян, что сделал не ответом на сообщение (про jh и ihc)
Дополню список ещё VDSina, самый дешёвый сервер за 150 рублей в месяц. Не густо, но и не пусто
подтверждение:
Вечность пахнет нефтью...
dsalin
Писака
Posts: 93 Joined: Mon Dec 30, 2024 5:01 pm
Has thanked: 51 times
Been thanked: 58 times
Post
by dsalin » Fri Jan 09, 2026 7:53 pm
Вот код моего "временного" моста, который работал летом:
Code: Select all
import socket
import threading
import time
import re
# ===== CONFIGURATION =====
DM_HOST = "dsalin17.hoho.ws"
DM_PORT = 42439
DM_USERNAME = "bridge_user" # <<< CHANGE THIS
DM_PASSWORD = "password" # <<< CHANGE THIS
IRC_HOST = "irc.retronode.org"
IRC_PORT = 6667
IRC_CHANNEL = "#downgrade"
IRC_NICK = "brigita"
IRC_USER = "brigita"
# ===== GLOBAL SOCKETS =====
dm_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
irc_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
stop_event = threading.Event()
# ===== DM CONNECTION & BRIDGE =====
def dm_login_and_join():
"""Login and join 'general' subserver on DM Connect"""
print("[DM] Logging in...")
dm_sock.sendall(f"/login {DM_USERNAME} {DM_PASSWORD}\n".encode("utf-8"))
# Wait for login success
while True:
data = dm_sock.recv(1024).decode("utf-8", errors="ignore").strip()
print(f"[DM INIT] {data}")
if "logged in" in data.lower() or "success" in data.lower():
break
elif "fail" in data.lower() or "incorrect" in data.lower():
print("[DM] Login failed.")
stop_event.set()
return
print("[DM] Joining 'general' subserver...")
dm_sock.sendall(b"/join_server general\n")
def dm_keepalive():
"""Send keepalive pings to DM every 5 seconds"""
while not stop_event.is_set():
try:
dm_sock.sendall(b"/")
except:
break
time.sleep(5)
def dm_receiver():
"""Receive messages from DM and forward to IRC"""
while not stop_event.is_set():
try:
data = dm_sock.recv(1024).decode("utf-8", errors="ignore").strip()
if not data:
continue
if "*Ping!*" in data:
continue
if "[IRC:" in data:
continue # prevent echo loop
print(f"[DM] {data}")
irc_sock.sendall(f"PRIVMSG {IRC_CHANNEL} :[DM] {data}\r\n".encode("utf-8"))
except Exception as e:
print(f"[DM ERROR] {e}")
break
# ===== IRC CONNECTION & BRIDGE =====
def irc_login_and_join():
"""Login to IRC and join #downgrade"""
print("[IRC] Logging in...")
irc_sock.sendall(f"NICK {IRC_NICK}\r\n".encode("utf-8"))
irc_sock.sendall(f"USER {IRC_USER} 0 * :DM IRC Bridge\r\n".encode("utf-8"))
while True:
response = irc_sock.recv(1024).decode("utf-8", errors="ignore")
print(f"[IRC INIT] {response.strip()}")
if response.startswith("PING"):
pong_val = response.split()[1]
irc_sock.sendall(f"PONG {pong_val}\r\n".encode("utf-8"))
if " 001 " in response:
print("[IRC] Logged in, joining channel...")
irc_sock.sendall(f"JOIN {IRC_CHANNEL}\r\n".encode("utf-8"))
break
def irc_receiver():
"""Receive messages from IRC and forward to DM"""
while not stop_event.is_set():
try:
response = irc_sock.recv(1024).decode("utf-8", errors="ignore")
lines = response.strip().split("\r\n")
for line in lines:
print(f"[IRC] {line}")
if line.startswith("PING"):
pong_val = line.split()[1]
irc_sock.sendall(f"PONG {pong_val}\r\n".encode("utf-8"))
elif "PRIVMSG" in line:
match = re.match(r":([^!]+)!.* PRIVMSG #[^\s]+ :(.+)", line)
if match:
nick = match.group(1)
message = match.group(2)
formatted = f"[IRC:{nick}] {message}\n"
dm_sock.sendall(formatted.encode("utf-8"))
except Exception as e:
print(f"[IRC ERROR] {e}")
break
# ===== THREAD STARTER =====
def start_threads():
threading.Thread(target=dm_keepalive, daemon=True).start()
threading.Thread(target=dm_receiver, daemon=True).start()
threading.Thread(target=irc_receiver, daemon=True).start()
# ===== MAIN =====
def main():
print("[*] Connecting to DM server...")
dm_sock.connect((DM_HOST, DM_PORT))
print("[+] DM connected.")
print("[*] Connecting to IRC server...")
irc_sock.connect((IRC_HOST, IRC_PORT))
print("[+] IRC connected.")
# Log in both services
dm_login_and_join()
irc_login_and_join()
# Start listener threads
start_threads()
# Run until interrupted
try:
while not stop_event.is_set():
time.sleep(1)
except KeyboardInterrupt:
print("\n[!] Shutting down bridge...")
stop_event.set()
dm_sock.close()
irc_sock.close()
if __name__ == "__main__":
main()
BitByByte
Набирающий обороты
Posts: 26 Joined: Thu Dec 19, 2024 11:18 am
Has thanked: 24 times
Been thanked: 8 times
Post
by BitByByte » Fri Jan 09, 2026 9:24 pm
dsalin wrote: Fri Jan 09, 2026 7:53 pm
Вот код моего "временного" моста, который работал летом:
Code: Select all
import socket
import threading
import time
import re
# ===== CONFIGURATION =====
DM_HOST = "dsalin17.hoho.ws"
DM_PORT = 42439
DM_USERNAME = "bridge_user" # <<< CHANGE THIS
DM_PASSWORD = "password" # <<< CHANGE THIS
IRC_HOST = "irc.retronode.org"
IRC_PORT = 6667
IRC_CHANNEL = "#downgrade"
IRC_NICK = "brigita"
IRC_USER = "brigita"
# ===== GLOBAL SOCKETS =====
dm_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
irc_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
stop_event = threading.Event()
# ===== DM CONNECTION & BRIDGE =====
def dm_login_and_join():
"""Login and join 'general' subserver on DM Connect"""
print("[DM] Logging in...")
dm_sock.sendall(f"/login {DM_USERNAME} {DM_PASSWORD}\n".encode("utf-8"))
# Wait for login success
while True:
data = dm_sock.recv(1024).decode("utf-8", errors="ignore").strip()
print(f"[DM INIT] {data}")
if "logged in" in data.lower() or "success" in data.lower():
break
elif "fail" in data.lower() or "incorrect" in data.lower():
print("[DM] Login failed.")
stop_event.set()
return
print("[DM] Joining 'general' subserver...")
dm_sock.sendall(b"/join_server general\n")
def dm_keepalive():
"""Send keepalive pings to DM every 5 seconds"""
while not stop_event.is_set():
try:
dm_sock.sendall(b"/")
except:
break
time.sleep(5)
def dm_receiver():
"""Receive messages from DM and forward to IRC"""
while not stop_event.is_set():
try:
data = dm_sock.recv(1024).decode("utf-8", errors="ignore").strip()
if not data:
continue
if "*Ping!*" in data:
continue
if "[IRC:" in data:
continue # prevent echo loop
print(f"[DM] {data}")
irc_sock.sendall(f"PRIVMSG {IRC_CHANNEL} :[DM] {data}\r\n".encode("utf-8"))
except Exception as e:
print(f"[DM ERROR] {e}")
break
# ===== IRC CONNECTION & BRIDGE =====
def irc_login_and_join():
"""Login to IRC and join #downgrade"""
print("[IRC] Logging in...")
irc_sock.sendall(f"NICK {IRC_NICK}\r\n".encode("utf-8"))
irc_sock.sendall(f"USER {IRC_USER} 0 * :DM IRC Bridge\r\n".encode("utf-8"))
while True:
response = irc_sock.recv(1024).decode("utf-8", errors="ignore")
print(f"[IRC INIT] {response.strip()}")
if response.startswith("PING"):
pong_val = response.split()[1]
irc_sock.sendall(f"PONG {pong_val}\r\n".encode("utf-8"))
if " 001 " in response:
print("[IRC] Logged in, joining channel...")
irc_sock.sendall(f"JOIN {IRC_CHANNEL}\r\n".encode("utf-8"))
break
def irc_receiver():
"""Receive messages from IRC and forward to DM"""
while not stop_event.is_set():
try:
response = irc_sock.recv(1024).decode("utf-8", errors="ignore")
lines = response.strip().split("\r\n")
for line in lines:
print(f"[IRC] {line}")
if line.startswith("PING"):
pong_val = line.split()[1]
irc_sock.sendall(f"PONG {pong_val}\r\n".encode("utf-8"))
elif "PRIVMSG" in line:
match = re.match(r":([^!]+)!.* PRIVMSG #[^\s]+ :(.+)", line)
if match:
nick = match.group(1)
message = match.group(2)
formatted = f"[IRC:{nick}] {message}\n"
dm_sock.sendall(formatted.encode("utf-8"))
except Exception as e:
print(f"[IRC ERROR] {e}")
break
# ===== THREAD STARTER =====
def start_threads():
threading.Thread(target=dm_keepalive, daemon=True).start()
threading.Thread(target=dm_receiver, daemon=True).start()
threading.Thread(target=irc_receiver, daemon=True).start()
# ===== MAIN =====
def main():
print("[*] Connecting to DM server...")
dm_sock.connect((DM_HOST, DM_PORT))
print("[+] DM connected.")
print("[*] Connecting to IRC server...")
irc_sock.connect((IRC_HOST, IRC_PORT))
print("[+] IRC connected.")
# Log in both services
dm_login_and_join()
irc_login_and_join()
# Start listener threads
start_threads()
# Run until interrupted
try:
while not stop_event.is_set():
time.sleep(1)
except KeyboardInterrupt:
print("\n[!] Shutting down bridge...")
stop_event.set()
dm_sock.close()
irc_sock.close()
if __name__ == "__main__":
main()
Мост отправляет из IRC только сообщения (PRIVMSG)?
dsalin
Писака
Posts: 93 Joined: Mon Dec 30, 2024 5:01 pm
Has thanked: 51 times
Been thanked: 58 times
Post
by dsalin » Sat Jan 10, 2026 5:11 pm
BitByByte wrote: Fri Jan 09, 2026 9:24 pm
dsalin wrote: Fri Jan 09, 2026 7:53 pm
Вот код моего "временного" моста, который работал летом:
Code: Select all
import socket
import threading
import time
import re
# ===== CONFIGURATION =====
DM_HOST = "dsalin17.hoho.ws"
DM_PORT = 42439
DM_USERNAME = "bridge_user" # <<< CHANGE THIS
DM_PASSWORD = "password" # <<< CHANGE THIS
IRC_HOST = "irc.retronode.org"
IRC_PORT = 6667
IRC_CHANNEL = "#downgrade"
IRC_NICK = "brigita"
IRC_USER = "brigita"
# ===== GLOBAL SOCKETS =====
dm_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
irc_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
stop_event = threading.Event()
# ===== DM CONNECTION & BRIDGE =====
def dm_login_and_join():
"""Login and join 'general' subserver on DM Connect"""
print("[DM] Logging in...")
dm_sock.sendall(f"/login {DM_USERNAME} {DM_PASSWORD}\n".encode("utf-8"))
# Wait for login success
while True:
data = dm_sock.recv(1024).decode("utf-8", errors="ignore").strip()
print(f"[DM INIT] {data}")
if "logged in" in data.lower() or "success" in data.lower():
break
elif "fail" in data.lower() or "incorrect" in data.lower():
print("[DM] Login failed.")
stop_event.set()
return
print("[DM] Joining 'general' subserver...")
dm_sock.sendall(b"/join_server general\n")
def dm_keepalive():
"""Send keepalive pings to DM every 5 seconds"""
while not stop_event.is_set():
try:
dm_sock.sendall(b"/")
except:
break
time.sleep(5)
def dm_receiver():
"""Receive messages from DM and forward to IRC"""
while not stop_event.is_set():
try:
data = dm_sock.recv(1024).decode("utf-8", errors="ignore").strip()
if not data:
continue
if "*Ping!*" in data:
continue
if "[IRC:" in data:
continue # prevent echo loop
print(f"[DM] {data}")
irc_sock.sendall(f"PRIVMSG {IRC_CHANNEL} :[DM] {data}\r\n".encode("utf-8"))
except Exception as e:
print(f"[DM ERROR] {e}")
break
# ===== IRC CONNECTION & BRIDGE =====
def irc_login_and_join():
"""Login to IRC and join #downgrade"""
print("[IRC] Logging in...")
irc_sock.sendall(f"NICK {IRC_NICK}\r\n".encode("utf-8"))
irc_sock.sendall(f"USER {IRC_USER} 0 * :DM IRC Bridge\r\n".encode("utf-8"))
while True:
response = irc_sock.recv(1024).decode("utf-8", errors="ignore")
print(f"[IRC INIT] {response.strip()}")
if response.startswith("PING"):
pong_val = response.split()[1]
irc_sock.sendall(f"PONG {pong_val}\r\n".encode("utf-8"))
if " 001 " in response:
print("[IRC] Logged in, joining channel...")
irc_sock.sendall(f"JOIN {IRC_CHANNEL}\r\n".encode("utf-8"))
break
def irc_receiver():
"""Receive messages from IRC and forward to DM"""
while not stop_event.is_set():
try:
response = irc_sock.recv(1024).decode("utf-8", errors="ignore")
lines = response.strip().split("\r\n")
for line in lines:
print(f"[IRC] {line}")
if line.startswith("PING"):
pong_val = line.split()[1]
irc_sock.sendall(f"PONG {pong_val}\r\n".encode("utf-8"))
elif "PRIVMSG" in line:
match = re.match(r":([^!]+)!.* PRIVMSG #[^\s]+ :(.+)", line)
if match:
nick = match.group(1)
message = match.group(2)
formatted = f"[IRC:{nick}] {message}\n"
dm_sock.sendall(formatted.encode("utf-8"))
except Exception as e:
print(f"[IRC ERROR] {e}")
break
# ===== THREAD STARTER =====
def start_threads():
threading.Thread(target=dm_keepalive, daemon=True).start()
threading.Thread(target=dm_receiver, daemon=True).start()
threading.Thread(target=irc_receiver, daemon=True).start()
# ===== MAIN =====
def main():
print("[*] Connecting to DM server...")
dm_sock.connect((DM_HOST, DM_PORT))
print("[+] DM connected.")
print("[*] Connecting to IRC server...")
irc_sock.connect((IRC_HOST, IRC_PORT))
print("[+] IRC connected.")
# Log in both services
dm_login_and_join()
irc_login_and_join()
# Start listener threads
start_threads()
# Run until interrupted
try:
while not stop_event.is_set():
time.sleep(1)
except KeyboardInterrupt:
print("\n[!] Shutting down bridge...")
stop_event.set()
dm_sock.close()
irc_sock.close()
if __name__ == "__main__":
main()
Мост отправляет из IRC только сообщения (PRIVMSG)?
Честно говоря код писала нейронка и не знаю именно как работает. Знаю только что работало.
BitByByte
Набирающий обороты
Posts: 26 Joined: Thu Dec 19, 2024 11:18 am
Has thanked: 24 times
Been thanked: 8 times
Post
by BitByByte » Sun Jan 11, 2026 12:37 pm
dsalin wrote: Sat Jan 10, 2026 5:11 pm
BitByByte wrote: Fri Jan 09, 2026 9:24 pm
dsalin wrote: Fri Jan 09, 2026 7:53 pm
Вот код моего "временного" моста, который работал летом:
Code: Select all
import socket
import threading
import time
import re
# ===== CONFIGURATION =====
DM_HOST = "dsalin17.hoho.ws"
DM_PORT = 42439
DM_USERNAME = "bridge_user" # <<< CHANGE THIS
DM_PASSWORD = "password" # <<< CHANGE THIS
IRC_HOST = "irc.retronode.org"
IRC_PORT = 6667
IRC_CHANNEL = "#downgrade"
IRC_NICK = "brigita"
IRC_USER = "brigita"
# ===== GLOBAL SOCKETS =====
dm_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
irc_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
stop_event = threading.Event()
# ===== DM CONNECTION & BRIDGE =====
def dm_login_and_join():
"""Login and join 'general' subserver on DM Connect"""
print("[DM] Logging in...")
dm_sock.sendall(f"/login {DM_USERNAME} {DM_PASSWORD}\n".encode("utf-8"))
# Wait for login success
while True:
data = dm_sock.recv(1024).decode("utf-8", errors="ignore").strip()
print(f"[DM INIT] {data}")
if "logged in" in data.lower() or "success" in data.lower():
break
elif "fail" in data.lower() or "incorrect" in data.lower():
print("[DM] Login failed.")
stop_event.set()
return
print("[DM] Joining 'general' subserver...")
dm_sock.sendall(b"/join_server general\n")
def dm_keepalive():
"""Send keepalive pings to DM every 5 seconds"""
while not stop_event.is_set():
try:
dm_sock.sendall(b"/")
except:
break
time.sleep(5)
def dm_receiver():
"""Receive messages from DM and forward to IRC"""
while not stop_event.is_set():
try:
data = dm_sock.recv(1024).decode("utf-8", errors="ignore").strip()
if not data:
continue
if "*Ping!*" in data:
continue
if "[IRC:" in data:
continue # prevent echo loop
print(f"[DM] {data}")
irc_sock.sendall(f"PRIVMSG {IRC_CHANNEL} :[DM] {data}\r\n".encode("utf-8"))
except Exception as e:
print(f"[DM ERROR] {e}")
break
# ===== IRC CONNECTION & BRIDGE =====
def irc_login_and_join():
"""Login to IRC and join #downgrade"""
print("[IRC] Logging in...")
irc_sock.sendall(f"NICK {IRC_NICK}\r\n".encode("utf-8"))
irc_sock.sendall(f"USER {IRC_USER} 0 * :DM IRC Bridge\r\n".encode("utf-8"))
while True:
response = irc_sock.recv(1024).decode("utf-8", errors="ignore")
print(f"[IRC INIT] {response.strip()}")
if response.startswith("PING"):
pong_val = response.split()[1]
irc_sock.sendall(f"PONG {pong_val}\r\n".encode("utf-8"))
if " 001 " in response:
print("[IRC] Logged in, joining channel...")
irc_sock.sendall(f"JOIN {IRC_CHANNEL}\r\n".encode("utf-8"))
break
def irc_receiver():
"""Receive messages from IRC and forward to DM"""
while not stop_event.is_set():
try:
response = irc_sock.recv(1024).decode("utf-8", errors="ignore")
lines = response.strip().split("\r\n")
for line in lines:
print(f"[IRC] {line}")
if line.startswith("PING"):
pong_val = line.split()[1]
irc_sock.sendall(f"PONG {pong_val}\r\n".encode("utf-8"))
elif "PRIVMSG" in line:
match = re.match(r":([^!]+)!.* PRIVMSG #[^\s]+ :(.+)", line)
if match:
nick = match.group(1)
message = match.group(2)
formatted = f"[IRC:{nick}] {message}\n"
dm_sock.sendall(formatted.encode("utf-8"))
except Exception as e:
print(f"[IRC ERROR] {e}")
break
# ===== THREAD STARTER =====
def start_threads():
threading.Thread(target=dm_keepalive, daemon=True).start()
threading.Thread(target=dm_receiver, daemon=True).start()
threading.Thread(target=irc_receiver, daemon=True).start()
# ===== MAIN =====
def main():
print("[*] Connecting to DM server...")
dm_sock.connect((DM_HOST, DM_PORT))
print("[+] DM connected.")
print("[*] Connecting to IRC server...")
irc_sock.connect((IRC_HOST, IRC_PORT))
print("[+] IRC connected.")
# Log in both services
dm_login_and_join()
irc_login_and_join()
# Start listener threads
start_threads()
# Run until interrupted
try:
while not stop_event.is_set():
time.sleep(1)
except KeyboardInterrupt:
print("\n[!] Shutting down bridge...")
stop_event.set()
dm_sock.close()
irc_sock.close()
if __name__ == "__main__":
main()
Мост отправляет из IRC только сообщения (PRIVMSG)?
Честно говоря код писала нейронка и не знаю именно как работает. Знаю только что работало.
Если судить по коду, то только PRIVMSG отправляется. Даже не отправляется информации о входе / выходе на канал.
alsk
Злобный писака
Posts: 393 Joined: Sun Jan 12, 2025 11:21 am
Has thanked: 28 times
Been thanked: 33 times
Post
by alsk » Sun Jan 11, 2026 2:10 pm
BitByByte wrote: Sun Jan 11, 2026 12:37 pm
...
как восстановить пароль? Давно не был возле компа. Всё забыл.
BitByByte
Набирающий обороты
Posts: 26 Joined: Thu Dec 19, 2024 11:18 am
Has thanked: 24 times
Been thanked: 8 times
Post
by BitByByte » Sun Jan 11, 2026 4:01 pm
alsk wrote: Sun Jan 11, 2026 2:10 pm
BitByByte wrote: Sun Jan 11, 2026 12:37 pm
...
как восстановить пароль? Давно не был возле компа. Всё забыл.
Можете написать мне в ЛС на форуме - я вышлю вам ваш пароль.