#!/usr/bin/env python
# -*- coding: utf-8 -*-
import socket
ohost = "smtp.mail.ru"
oport = 25
o = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
o.connect((ohost, oport))
def send(data):
o.send(data)
return o.recv(1024)
def getline():
t=sock.recv(1024)
out=""
while t!="\r\n":
out=out+t
t=sock.recv(1024)
return out
host = "localhost"
port = 1025
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((host, port))
s.listen(5)
sock, addr = s.accept()
while True:
buf = getline()
print buf
if buf == "exit":
sock.send("bye")
break
elif buf:
sock.send(send(buf))
sock.close()
[python] Работа с сокетами
Все, что мне удалось содрать это:
Код:
Но поскольку я переделывал код, который выполнял совершенно другие задачи, да еще и недоконца понимаю его, то очевидно, что он не работает. Мож даст какой добрый человек ссылку на толковую статью или исправит ошибки в данной проге(есть подозрения, что проще полностью переписать ее)? Заранее спасибо за любую помощь.
А iptables не? В чем секрет таких плясок?
В незнании, что такое iptables и как им пользоваться:)
Ага, нашел еще одну причину -- у мя нет root'а на серваке.
Цитата: an1s1
В незнании, что такое iptables и как им пользоваться:)
man iptables
google iptables
iptables -t nat -A PREROUTING -p tcp --dport 1025 -j REDIRECT --to smtp.mail.ru:25
^^ну както так
Цитата:
man iptables
google iptables
iptables -t nat -A PREROUTING -p tcp --dport 1025 -j REDIRECT --to smtp.mail.ru:25
^^ну както так
Уже нашел. Нашел еще, что нужны права root'а. Это правда?
Цитата: an1s1
Уже нашел. Нашел еще, что нужны права root'а. Это правда?
Да, для разовой настройки.
А то что у тебя нет рута на серваке, значит у тебя есть su или sudo. Какая система то?
FreeBSD 8 и нет пароля root'а
Без админских привилегий ты в любом случае этого не сделаешь. Или получай права админа или забудь про свою задачу.
Но, насколько мне известно, питон может слушать порты и передавать информацию по сокетам и без прав админа.
Слушать да, только вот я не понял, вам просто порт надо слушать или любой траффик на этом компе на определенный порт (не обязательно на этот хост) заворачивать? Если второе - то тут правилами iptables легко решается. Если же надо просто порт слушать на проксировать запросы далее - тогда это решается легко абсолютно на любом языке умеющих работать с сокетами. Даже странно почему выбран именно питон.
Вот и хотелось бы найти небольшую статью по простому проксированию запросов(недесь правильно написал). А питон, потому что простой, везде поддерживается, большая комьюнити.
А насчет простого - ну на мой взгляд работа с сетью даже в простом C была бы проще наверное. =)
И наконец тут обработка только подключения от пользователя, но совсем нет работы с подключением до мэйл.ру.
Немогли бы Вы дать мне приблизительный алгоритм работы, что бы я мог по нему делать свою прогу? Ну и толковая стать о сокетах не помешала бы. Заранее спасибо.