proxy 실행 중에 redirection을 하여 클라이언트에게 인증 페이지를 띄우려고 합니다.

gaeddong2의 이미지

proxy로는 tinyproxy를 설치하여 사용하고 있습니다.
client가 특정 웹 주소에 접속하려 할 때 클라이언트에게 인증페이지를 띄어주고 싶습니다.
인증 페이지는 server에서 php를 이용해서 페이지를 만들어놨습니다.

proxy c코드 안에서 클라이언트에게 어떻게 인증 페이지를 띄어줘야 할지 모르겠어서 올리게됬습니다.

execve()함수나 system()함수는 자기 자신 프로그램 안에서 실행이 되는 거라 안될 것 같아서, 잘 모르겠습니다.

답변 좀 부탁드립니다.

모지리의 이미지

1. 클라이언트가 인증된 코드(HTTP든 SOCKS 계열이든지)를 가지고 요청하는가?
2. 아닐 경우 GET이든 POST든 무조건 200 OK와 함께 특정 페이지로 리다이렉트하게끔
패킷을 전송해주시면 될겁니다.

프락시 서버를 만들어 써본적은 있는데 기존것은 써본적이 없어서 tinyproxy가 어떻게 작동되는지는 잘 모르겠어요.

궁금하신점 있으시면 리플 달아 주세요.

gaeddong2의 이미지

Desktop에서 proxy가 작동해서 노트북이 proxy서버를 거쳐가는데요
노트북에서 web page를 띄어주려면 데스크탑에서 php와 c와 소켓연동을 해보았는데, 소켓 ip설정을 제대로 잘 안해서그런지, connect가 잘 이루어지지 않는 것 같습니다. proxy자체도 local이고, web page자체도 local이여서 local주소로 지정해주고 connection하였는데 connection이 잘돼지않아서. 고민입니다.

connection조차 안되니, 요청 메시지를 보낼수가없습니다.

정리>
client(pc1) <-> proxy server(pc2) <-> 웹 서비스

pc2에 apache서버로 html(php)페이지가 만들어져있습니다.

client가 특정 웹 요청시에 html 웹 페이지를 띄우려 합니다.
proxy와 웹 페이지 간의 socket 통신을 통해서 client에게 어떻게 띄어줄지 입니다.

모지리의 이미지

먼저 사용하시는 프락시 서버가 인증 기능이 있는지 확인해보세요. 만약 없으시다면 프락시 서버 안에 인증 기능을 만들어 넣으셔야 될겁니다. 그게 아니시면 인증 기능이 있는 프락시를 사용하셔야 될겁니다. 두번째의 경우(인증 기능이 없어서 만들어야 될 경우)를 예로 들어 보죠.

1. 프락시가 socks 계열을 사용하는 경우.
2. 프락시가 http를 사용할 경우.
3. 프락시가 투명 프락시만 사용할 경우.

1번의 경우 ID/PW 를 패킷 구조에 포함하고 있으니 별 문제가 되지 않지만 2,3번의 경우 보통은 쿠키값을 가지고 인증 여부를 확인합니다. 즉, 클라이언트가 프락시에 접속했을때 프락시 서버가 인증시 전송해준 쿠키값이 있는지 확인하고 유효한 쿠키인지도 확인합니다. 만약 그렇지 않다면 클라이언트에게 HTTP 서버처럼 응답을 주면 됩니다.

즉, HTTP 헤더+특정 페이지(주소) 리 다이렉션. 이렇게 입니다.

죄송합니다. 제가 글을 다시 읽어보니 제가 이해력이 좀 부족해서인지 정확히 어떤 문의인지 잘... 제가 질문을 드리겠습니다.

1. PC -- 프락시 -- 웹 이 구간에 정상적으로 통신이 되나요?
2. 만약 그러 하다면 프락시에 인증 페이지만 추가 하고 싶으신가요?

gaeddong2의 이미지

PC---프락시---웹

모두 정상적으로 통신이 됩니다.
PC가 프록시를 통해 특정 웹에 접속하였을 때, 인증페이지가 뜨게 하여 인증 절차(예를 들어, 로그인)를 거친 후 인증확인을 proxy에게 알려주려고 합니다.
프락시가 설치되어있는 데스크탑에 Apache를 설치하여 mysql과 연동하여 php로 인증페이지를 만들었습니다.
(정상 동작합니다.)
proxy에서 어떤 작업을 해주어, PC에게 인증 페이지를 띄어주는 게 목적입니다. 그래서 인증 확인을 proxy가 전달받으려합니다.

proxy와 인증 페이지를 어떻게 처리해주어 client에게 띄어주는지가 문제입니다.
proxy에서 소켓을 열고 인증 페이지(php)에서 소켓을 통해 처리해봤는데 connection조차도 잘 되지 않는 것 같습니다.

단순히 다음 작업을 하기 위한 인증절차입니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.