;; Copyright (C) 2001 Sami Salkosuo
;; Author: Sami Salkosuo
;; Version: 0.1 Fri Oct 12 16:22:27 2001
;; This file is not part of GNU Emacs.
;; GNU Emacs is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation; either version 2, or (at your option)
;; any later version.
;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs; see the file COPYING. If not, write to the
;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
;; Boston, MA 02111-1307, USA.
;; Commentary:
;;
;; Get HTTP headers from specified URL.
;;
;; Installation:
;;
;; Add http-headers.el to your load path and add
;; (require 'http-headers)
;; to .emacs
;;
;; If using http-headers from behind proxy
;; (setq http-headers-proxy-host )
;; (setq http-headers-proxy-port )
;;
;; Usage:
;;
;; M-x http-headers and type url.
(defvar http-headers-proxy-host nil
"HTTP proxy host")
(defvar http-headers-proxy-port nil
"HTTP proxy port")
(defun http-headers (url)
"Fetches HTTP headers from specified url"
(interactive "sURL: http://")
;;create new buffer
(let
((tcp-connection)
(temp-buf)
(buf)
(host)
(port)
(file)
(content-text)
(header-end)
(request)
(tmp)
)
(setq temp-buf (get-buffer-create "*HTTP headers*"))
(set-buffer temp-buf)
(erase-buffer)
(goto-char 0)
;;get host and port from url
;;(setq port (string-to-number (read-string "Port: " "80" )))
;;(setq file (read-string "Path: " "/"))
;;set proxy if needed
(if http-headers-proxy-host
(progn
;;(setq file (concat "http://" host ":" (number-to-string port) file))
(setq file (concat "http://" url))
(setq host http-headers-proxy-host)
(setq port http-headers-proxy-port)
)
(progn
(setq host (substring url 0 (string-match "/" url)))
(if (string-match ":" host)
(setq port (string-to-number (substring host (string-match ":" host))))
(setq port 80)
)
(setq host (substring url 0 (string-match ":" url)))
(if (string-match "/" url)
(setq file (substring url (string-match "/" url)))
(setq file "/")
)
)
)
(setq tcp-connection
(open-network-stream
"GET process-name"
temp-buf
host
port
))
(set-marker (process-mark tcp-connection) (point-min))
(set-process-sentinel tcp-connection 'http-headers-sentinel)
(setq request (concat "GET " file " HTTP/1.0\n\n"))
(process-send-string tcp-connection request)
(if http-headers-proxy-host
(setq tmp file)
(setq tmp (concat "http://" url ":" (number-to-string port) file))
)
(http-headers-parse tmp tcp-connection)
(kill-buffer temp-buf)
(delete-process tcp-connection)
)
)
(defun http-headers-parse (url process)
"Parse header"
(let (
(buffer)
(headers)
(header-end)
)
(while (eq (process-status process) 'open)
(sit-for 0 200)
)
(setq buffer (get-buffer-create "*HTTP headers*"))
(set-buffer buffer)
(goto-char 0)
(setq header-end (re-search-forward "\n\n" nil t))
(delete-region header-end (point-max))
(setq headers (buffer-string))
(with-electric-help
'(lambda () (insert "Headers from " url "\n\n" headers) (goto-char 0) "*HTTP-headers*")
)
)
)
(defun http-headers-sentinel (process string)
"Process the results from the efine network connection.
process - The process object that is being notified.
string - The string that describes the notification."
)
(provide 'http-headers)
');
document.write('');
// document.write('');
document.write('');
document.write('');
if (document.cookie.indexOf('fcseenpop') == -1) {
pop_domain = document.domain.substring(document.domain.indexOf('.'));
expiry_date = new Date(new Date().getTime() + 86400000).toGMTString(); // 24 hours
document.write('');
document.cookie = 'fcseenpop=1; path=/; domain=' + pop_domain + '; expires=' + expiry_date;
}
}
}
// -->