Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
CIRCLE
/
vncproxy
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
1
Merge Requests
0
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
A prog2-höz tartozó friss repo anyagok itt elérhetőek:
https://git.iit.bme.hu/
Commit
44b19dc7
authored
Sep 19, 2013
by
Bach Dániel
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
first commit
parents
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
104 additions
and
0 deletions
+104
-0
README
+0
-0
proxy.py
+104
-0
No files found.
README
0 → 100644
View file @
44b19dc7
proxy.py
0 → 100644
View file @
44b19dc7
#!/usr/bin/env python
# coding: utf-8
# http://musta.sh/2012-03-04/twisted-tcp-proxy.html
import
sys
from
twisted.internet
import
defer
from
twisted.internet
import
protocol
from
twisted.internet.protocol
import
Factory
,
Protocol
from
twisted.internet
import
reactor
from
twisted.python
import
log
from
twisted.web.static
import
File
from
twisted.web.server
import
Site
from
twisted.web.websockets
import
WebSocketsResource
,
lookupProtocolForFactory
from
django.core
import
signing
class
ProxyClientProtocol
(
protocol
.
Protocol
):
def
connectionMade
(
self
):
log
.
msg
(
"Client: connected to peer"
)
self
.
cli_queue
=
self
.
factory
.
cli_queue
self
.
cli_queue
.
get
()
.
addCallback
(
self
.
serverDataReceived
)
def
serverDataReceived
(
self
,
chunk
):
if
chunk
is
False
:
self
.
cli_queue
=
None
log
.
msg
(
"Client: disconnecting from peer"
)
self
.
factory
.
continueTrying
=
False
self
.
transport
.
loseConnection
()
elif
self
.
cli_queue
:
log
.
msg
(
"Client: writing
%
d bytes to peer"
%
len
(
chunk
))
self
.
transport
.
write
(
chunk
)
self
.
cli_queue
.
get
()
.
addCallback
(
self
.
serverDataReceived
)
else
:
self
.
factory
.
cli_queue
.
put
(
chunk
)
def
dataReceived
(
self
,
chunk
):
log
.
msg
(
"Client:
%
d bytes received from peer"
%
len
(
chunk
))
self
.
factory
.
srv_queue
.
put
(
chunk
)
def
connectionLost
(
self
,
why
):
self
.
factory
.
srv_queue
.
put
(
False
)
if
self
.
cli_queue
:
self
.
cli_queue
=
None
log
.
msg
(
"Client: peer disconnected unexpectedly"
)
class
ProxyClientFactory
(
protocol
.
ReconnectingClientFactory
):
maxDelay
=
10
continueTrying
=
False
protocol
=
ProxyClientProtocol
def
__init__
(
self
,
srv_queue
,
cli_queue
):
self
.
srv_queue
=
srv_queue
self
.
cli_queue
=
cli_queue
class
VNCWebSocketHandler
(
Protocol
):
def
makeConnection
(
self
,
transport
):
try
:
value
=
signing
.
loads
(
transport
.
request
.
args
[
'd'
][
0
],
key
=
'asdasd'
,
max_age
=
300
)
port
=
value
[
'port'
]
host
=
value
[
'host'
]
except
:
pass
self
.
transport
=
transport
self
.
srv_queue
=
defer
.
DeferredQueue
()
self
.
cli_queue
=
defer
.
DeferredQueue
()
self
.
srv_queue
.
get
()
.
addCallback
(
self
.
clientDataReceived
)
factory
=
ProxyClientFactory
(
self
.
srv_queue
,
self
.
cli_queue
)
reactor
.
connectTCP
(
host
,
int
(
port
),
factory
)
def
clientDataReceived
(
self
,
chunk
):
if
chunk
is
False
:
self
.
transport
.
loseConnection
()
else
:
log
.
msg
(
"Server: writing
%
d bytes to original client"
%
len
(
chunk
))
self
.
transport
.
write
(
chunk
)
self
.
srv_queue
.
get
()
.
addCallback
(
self
.
clientDataReceived
)
def
dataReceived
(
self
,
frame
):
log
.
msg
(
"Server:
%
d bytes received"
%
len
(
frame
))
self
.
cli_queue
.
put
(
frame
)
def
connectionLost
(
self
,
why
):
self
.
cli_queue
.
put
(
False
)
log
.
msg
(
"HELO"
)
class
VNCWebSocketFactory
(
Factory
):
protocol
=
VNCWebSocketHandler
if
__name__
==
"__main__"
:
log
.
startLogging
(
sys
.
stdout
)
resource
=
File
(
'.'
)
resource
.
putChild
(
'vnc'
,
WebSocketsResource
(
lookupProtocolForFactory
(
VNCWebSocketFactory
())))
reactor
.
listenTCP
(
9999
,
Site
(
resource
))
reactor
.
run
()
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment