Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
Cool Fire
pfsense-ident-proxy
Commits
51f1e253
Commit
51f1e253
authored
Aug 11, 2014
by
Cool Fire
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Warpped the whole thing in a try-catch as an extra failsafe
parent
105689f1
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
58 additions
and
52 deletions
+58
-52
identproxy.rb
identproxy.rb
+58
-52
No files found.
identproxy.rb
View file @
51f1e253
...
...
@@ -41,59 +41,65 @@ end
# Main server loop
loop
do
# New client connected
client
=
server
.
accept
# Read request from socket
input
=
client
.
gets
input
.
strip!
sane
=
true
p1
=
0
p2
=
0
# Check if it's something that looks like an ident response
if
(
input
=~
/^(\d+)(|\s),(|\s)(\d+)$/
)
p1
=
$1
.
to_i
p2
=
$3
.
to_i
else
sane
=
false
end
# Sanity check on port number
if
(
p1
<
1
||
p1
>
65535
||
p2
<
1
||
p2
>
65535
)
sane
=
false
end
# Send generic error for stuff that does not look like ident requests
if
(
!
sane
)
client
.
puts
"
#{
input
}
:ERROR:NO-USER"
client
.
close
next
end
# Do NAT table lookup
n
=
natlookup
(
p1
,
p2
)
begin
# New client connected
client
=
server
.
accept
# Read request from socket
input
=
client
.
gets
input
.
strip!
puts
"Request:
#{
input
}
"
sane
=
true
p1
=
0
p2
=
0
# Check if it's something that looks like an ident response
if
(
input
=~
/^(\d+)(|\s),(|\s)(\d+)$/
)
p1
=
$1
.
to_i
p2
=
$4
.
to_i
else
sane
=
false
end
# Sanity check on port number
if
(
p1
<
1
||
p1
>
65535
||
p2
<
1
||
p2
>
65535
)
sane
=
false
end
# Send generic error for stuff that does not look like ident requests
if
(
!
sane
)
client
.
puts
"
#{
input
}
:ERROR:NO-USER"
client
.
close
next
end
# Do NAT table lookup
n
=
natlookup
(
p1
,
p2
)
# Check if there was a NAT table entry
if
(
n
.
nil?
)
client
.
puts
"
#{
input
}
:ERROR:NO-USER"
# Check if there was a NAT table entry
if
(
n
.
nil?
)
client
.
puts
"
#{
input
}
:ERROR:NO-USER"
client
.
close
next
end
# Forward request to NAT'ed server
result
=
forwardrequest
(
n
[
0
],
n
[
1
],
n
[
2
]
)
# Show result to client
if
(
result
.
nil?
)
client
.
puts
"
#{
input
}
:ERROR:NO-USER"
client
.
close
next
end
puts
"Response:
#{
result
}
"
client
.
puts
result
# Close connection and wait for the next request
client
.
close
next
end
# Forward request to NAT'ed server
result
=
forwardrequest
(
n
[
0
],
n
[
1
],
n
[
2
]
)
# Show result to client
if
(
result
.
nil?
)
client
.
puts
"
#{
input
}
:ERROR:NO-USER"
client
.
close
next
rescue
Exception
=>
e
end
client
.
puts
result
# Close connection and wait for the next request
client
.
close
end
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