OSDN Git Service

Ver.1.3.13: Change to use FILE/LINE macro. Remove EXIT. Fix Bugs.
authorwatanaby <>
Thu, 8 Jun 2006 07:17:18 +0000 (07:17 +0000)
committerwatanaby <>
Thu, 8 Jun 2006 07:17:18 +0000 (07:17 +0000)
38 files changed:
opengate/README
opengate/conf/opengatesrv.conf.sample
opengate/doc/Changes.html
opengate/doc/en/errcheck.html
opengate/doc/en/qa.html
opengate/doc/ja/errcheck.html
opengate/doc/ja/qa.html
opengate/javahtml/en/deny-ssl.html [new file with mode: 0644]
opengate/javahtml/en/deny.html
opengate/javahtml/ja/deny-ssl.html [new file with mode: 0644]
opengate/javahtml/ja/deny.html
opengate/opengatesrv/auth-ftps.c
opengate/opengatesrv/auth-pam.c
opengate/opengatesrv/auth-pop3s.c
opengate/opengatesrv/auth-rad.c
opengate/opengatesrv/comm-arp.c
opengate/opengatesrv/comm-auth.c
opengate/opengatesrv/comm-cgi.c
opengate/opengatesrv/comm-ip6fw.c
opengate/opengatesrv/comm-ipfw.c
opengate/opengatesrv/comm-java.c
opengate/opengatesrv/comm-ndp.c
opengate/opengatesrv/ctrl-firewall.c
opengate/opengatesrv/get-mac.c
opengate/opengatesrv/get-param.c
opengate/opengatesrv/htmltemplate.c
opengate/opengatesrv/main.c
opengate/opengatesrv/opengateauth.c
opengate/opengatesrv/opengatefwd.c
opengate/opengatesrv/opengatesrv.h
opengate/opengatesrv/signal.c
opengate/opengatesrv/sock_ntop_host.c
opengate/opengatesrv/tcp_connect.c
opengate/opengatesrv/test-comm-auth.c
opengate/opengatesrv/test-comm-ipfw.c
opengate/opengatesrv/test-comm-java.c
opengate/opengatesrv/utilities.c
opengate/opengatesrv/wrapper.c

index de10433..abe2c7d 100644 (file)
@@ -57,6 +57,7 @@ javahtml/     Client Java Applet and HTML files
     accept.html                First accept message page(for Applet)
     accept2.html       Second accept message page(for start browsing)
     deny.html          Deny message page
+    deny-ssl.html      Deny message page(in SSL)
     retry.html          Retry message page
     index-ssl.html     Authentication request page(in SSL)
     index.html         Authentication request page
index 85ff2e6..52a88aa 100644 (file)
@@ -44,6 +44,7 @@
 \r
        <!-- HTML Documents -->\r
        <DenyDoc>deny.html</DenyDoc>\r
+       <DenyDocSsl>deny-ssl.html</DenyDocSsl>\r
        <AcceptDoc>accept.html</AcceptDoc>\r
        <AcceptDoc2>accept2.html</AcceptDoc2>\r
        <AuthDoc>index.html</AuthDoc>\r
index 6a86431..3309f0f 100644 (file)
@@ -458,6 +458,16 @@ Ver.1.3.11 at 2006.5.3</DT>
 <DD>\r
 Add code to match the duration max value in conf file with auth page.\r
 </DD>\r
+<DT>\r
+Ver.1.3.12 at 2006.5.12</DT>\r
+<DD>\r
+Change link in deny page from external site to auth page.\r
+</DD>\r
+<DT>\r
+Ver.1.3.13 at 2006.5.17</DT>\r
+<DD>\r
+Use FILE and LINE macro in error message. Fix abnormal termination bugs.\r
+</DD>\r
 </DL>\r
 <b>Please see CVS in SourceForge.net to check the file difference between versions.</b>\r
 </BODY>\r
index d6b3e04..204c9c1 100644 (file)
@@ -22,7 +22,7 @@ Opengate uses following files, where the directorys are default. Is these files
  /usr/local/www/data/index.html.var<br>\r
  /usr/local/www/cgi-bin/opengate/(opengatesrv.cgi, opengatefwd.cgi, opengateauth.cgi)<br>\r
  /usr/local/www/data/opengate/(Opengate.jar, Opengate.class, OpengateOlient.class)<br>\r
- /usr/local/www/data/opengate/(ja, en)/(topindex.html, index.html, index-ssl.html, accept.html, accept2.hmtl, deny.html, retry.html)<br>\r
+ /usr/local/www/data/opengate/(ja, en)/(topindex.html, index.html, index-ssl.html, accept.html, accept2.hmtl, deny.html, deny-ssl.html, retry.html)<br>\r
  /etc/opengate/(opengatesrv.conf, rc.firewall, rc.irewall6, ipfwctrl.pl): Copy from *.sample<br>\r
  /var/log/opengate.log<br>\r
 And Opengate creates a lock file [/tmp/opengate.lock] at execution. \r
index a8b2dca..67905ba 100644 (file)
-<html>
-<head>
-<title>Opengate Q & A</title>
-</head>
-
-
-<body bgcolor=#fafff0>
-
-<H3>Opengate Q &amp; A</H3>
-
-Concept
-<UL>
-<LI>
-Why is the authentication needed?
-
-<BLOCKQUOTE>
-There are many incidents such as computer cracking or copyright infringement in the network. The organization might be caughted by many troubles caused by such incidents. In these cases, it is needed to identify the related person. The other reason is the restriction required by payment or aim of the network
-</BLOCKQUOTE>
-
-<LI>Why don't you use the authentication function inherent in the terminal?
-
-<BLOCKQUOTE>
-Unified system can depend on such function. But it cannot be applied to the open network envoronment where various hardwares and users are connected with various formats, such as wireless connection of his/her own portable PC.
-</BLOCKQUOTE>
-
-<LI>
-Why do you try to authenticate at client site? Is the authentication at server site essential? 
-
-<BLOCKQUOTE>
-Yes it is essential. But to prevent trouble occured by unknown user of your site, authentication and usage log systems are required.
-</BLOCKQUOTE>
-
-<LI>
-Why does the target include open-use terminal that is settled by the organization for open usage?  It can be protected by the system software.
-
-<BLOCKQUOTE>
-It is difficult for network control section to maintain many terminals distributed in wide campus.  Moreover there are already various terminals settled by various sections. Some do not have such function and some are leaved with no control.
-</BLOCKQUOTE>
-
-<LI>
-Why don't you use the log obtained at gateway or firewall?
-
-<BLOCKQUOTE>
-The log does not include user identification.
-</BLOCKQUOTE>
-
-<LI>
-What is the merit compared with the identification by MAC address.
-
-<BLOCKQUOTE>
-The cost might be large to maitain the matching between user and MAC address.
-</BLOCKQUOTE>
-
-<LI>
-What is the merit compared with various authentication systems for network usage proposed recently.
-<BLOCKQUOTE>
-The merits of Opengate are as follows. Wide applicability about terminals, such as its hardware, software, management and connection.  Minimum cost for user guidance and management.  Easy implementation to existing network.  Quick open at start usage and quick close at stop usage. IPv4/IPv6 dual stack support.
-</BLOCKQUOTE>
-
-<LI>
-Is there any other application of the system?
-<BLOCKQUOTE>
-For example, it might be used as the gateway from intra-net to extra-net or the contrary.
-</BLOCKQUOTE>
-
-<LI>
-What to do for No Java terminals?
-<BLOCKQUOTE>
-The no Java user can enters the usage duraion in auth page. To cope with hijacking and notting, the connection state is checked periodically by ARP command and packet count passing the firewall.  The user can also close the network by clicking the TERMINATE link in accept page.
-
-</BLOCKQUOTE></LI>
-
-
-</UL>
-
-
-Usage
-<UL>
-<LI>
-Is the system compatible with wireless LAN?
-
-<BLOCKQUOTE>
-Yes.  But do not use the host station having NAT.
-</BLOCKQUOTE>
-
-<LI>
-Can the system coexists with NAT or DHCP.
-
-<BLOCKQUOTE>
-Yes. But do not insert NAT between the server and client.
-</BLOCKQUOTE>
-
-<LI>
-Can the MAC address be obtained? 
-<BLOCKQUOTE>
-Yes. But the address is restricted to the one aquired from server on ethernet.
-</BLOCKQUOTE>
-
-<LI>
-I want to supply some services without authentication, or I do not want to supply some services even after authentication.
-
-<BLOCKQUOTE>
-The both can be realized by firewall rule set.
-</BLOCKQUOTE>
-
-<LI>
-I want to separate the commission range by the user rank.
-
-<BLOCKQUOTE>
-Firewall can be controled by Perl script. If the user rank is discriminated with userID pattern, authentication server, or IP address, it might be done. The function is added in Ver.0.80.
-</BLOCKQUOTE>
-
-<LI>
-I want manage temporal users.
-
-<BLOCKQUOTE>
-It is needed to register to an authentication server.  As the system comminucates with plural servers, you can make specific server for temporal users and maintain it.
-</BLOCKQUOTE>
-
-<LI>
-Can the password secret be maintained?
-
-<BLOCKQUOTE>
-Yes. Communication between client and opengate server can be protected by SSL. Communication between opengate server and authentication server can be protected by secure auth protocol.We implement pop3s, ftps, radius, and pam(which supports many secure protocols). 
-</BLOCKQUOTE>
-
-<LI>
-How are the scalability and performance?
-
-<BLOCKQUOTE>
-We are using the system in environments including active 50 or above terminals. 
-</BLOCKQUOTE></LI>
-
-</UL>
-Installation and Development
-<UL>
-<LI>
-I meet bugs on installation.
-
-<BLOCKQUOTE>
-See other document.
-</BLOCKQUOTE>
-
-<LI>
-Am I permited to use, modify or distribute the program? 
-
-<BLOCKQUOTE>
-Yes it is permitted under GPL.
-</BLOCKQUOTE>
-
-<LI>
-Can I modify the web page design.
-
-<BLOCKQUOTE>
-As the web pages are described in html files, it is easy to modify the design.
-</BLOCKQUOTE>
-
-<LI>
-Can I display web pages with other language.
-
-<BLOCKQUOTE>
-Directorys named en and ja are the html documentations in english and japanese. Same as the directory, make the new language documentations. And modify the language setting in configuration file and index.html.var. To change the Java Applet message, modify the source of Java.
-</BLOCKQUOTE>
-
-<LI>
-Can I avoid atacks such as IP spoofing or DoS(Denial of Service)?
-
-<BLOCKQUOTE>
-IP spoofing has no merit, because the system permits the address from which user information sended. DoS can be avoided, because each client uses different port in the system. 
-</BLOCKQUOTE>
-
-<LI>
-Why the archive file is disorder?
-
-<BLOCKQUOTE>
-Sorry. I am trying to order.
-</BLOCKQUOTE>
-
-<LI>
-Can the server run on other OSs than FreeBSD.
-
-<BLOCKQUOTE>
-No. The system uses ipfw command which is specific to FreeBSD. The ipchains command in Linux can be used instead of ipwf.
-</BLOCKQUOTE>
-
-<LI>
-It is not smart that many processes resident.  Can these be integrated to one process?
-
-<BLOCKQUOTE>
-Yes. But in the present version, we take priority on simplicity of program.  
-</BLOCKQUOTE>
-
-
-<LI>
-Is the system compatible with IPv6?
-
-<BLOCKQUOTE>
-                                   
-
-                                          Yes. IPv6 support is added in Version 1.2.0.
-</BLOCKQUOTE></LI>
-
-</UL>
-</body>
-</HTML>
+<html>\r
+<head>\r
+<title>Opengate Q & A</title>\r
+</head>\r
+\r
+\r
+<body bgcolor=#fafff0>\r
+\r
+<H3>Opengate Q &amp; A</H3>\r
+\r
+Concept\r
+<UL>\r
+<LI>\r
+Why is the authentication needed?\r
+\r
+<BLOCKQUOTE>\r
+There are many incidents such as computer cracking or copyright infringement in the network. The organization might be caughted by many troubles caused by such incidents. In these cases, it is needed to identify the related person. The other reason is the restriction required by payment or aim of the network\r
+</BLOCKQUOTE>\r
+\r
+<LI>Why don't you use the authentication function inherent in the terminal?\r
+\r
+<BLOCKQUOTE>\r
+Unified system can depend on such function. But it cannot be applied to the open network envoronment where various hardwares and users are connected with various formats, such as wireless connection of his/her own portable PC.\r
+</BLOCKQUOTE>\r
+\r
+<LI>\r
+Why do you try to authenticate at client site? Is the authentication at server site essential? \r
+\r
+<BLOCKQUOTE>\r
+Yes it is essential. But to prevent trouble occured by unknown user of your site, authentication and usage log systems are required.\r
+</BLOCKQUOTE>\r
+\r
+<LI>\r
+Why does the target include open-use terminal that is settled by the organization for open usage?  It can be protected by the system software.\r
+\r
+<BLOCKQUOTE>\r
+It is difficult for network control section to maintain many terminals distributed in wide campus.  Moreover there are already various terminals settled by various sections. Some do not have such function and some are leaved with no control.\r
+</BLOCKQUOTE>\r
+\r
+<LI>\r
+Why don't you use the log obtained at gateway or firewall?\r
+\r
+<BLOCKQUOTE>\r
+The log does not include user identification.\r
+</BLOCKQUOTE>\r
+\r
+<LI>\r
+What is the merit compared with the identification by MAC address.\r
+\r
+<BLOCKQUOTE>\r
+The cost might be large to maitain the matching between user and MAC address.\r
+</BLOCKQUOTE>\r
+\r
+<LI>\r
+What is the merit compared with various authentication systems for network usage proposed recently.\r
+<BLOCKQUOTE>\r
+The merits of Opengate are as follows. Wide applicability about terminals, such as its hardware, software, management and connection.  Minimum cost for user guidance and management.  Easy implementation to existing network.  Quick open at start usage and quick close at stop usage. IPv4/IPv6 dual stack support.\r
+</BLOCKQUOTE>\r
+\r
+<LI>\r
+Is there any other application of the system?\r
+<BLOCKQUOTE>\r
+For example, it might be used as the gateway from intra-net to extra-net or the contrary.\r
+</BLOCKQUOTE>\r
+\r
+<LI>\r
+What to do for No Java terminals?\r
+<BLOCKQUOTE>\r
+The no Java user can enters the usage duraion in auth page. To cope with hijacking and notting, the connection state is checked periodically by ARP command and packet count passing the firewall.  The user can also close the network by clicking the TERMINATE link in accept page.\r
+\r
+</BLOCKQUOTE></LI>\r
+\r
+\r
+</UL>\r
+\r
+\r
+Usage\r
+<UL>\r
+<LI>\r
+Is the system compatible with wireless LAN?\r
+\r
+<BLOCKQUOTE>\r
+Yes.  But do not use the host station having NAT.\r
+</BLOCKQUOTE>\r
+\r
+<LI>\r
+Can the system coexists with NAT or DHCP.\r
+\r
+<BLOCKQUOTE>\r
+Yes. But do not insert NAT between the server and client.\r
+</BLOCKQUOTE>\r
+\r
+<LI>\r
+Can the MAC address be obtained? \r
+<BLOCKQUOTE>\r
+Yes. But the address is restricted to the one aquired from server on ethernet.\r
+</BLOCKQUOTE>\r
+\r
+<LI>\r
+I want to supply some services without authentication, or I do not want to supply some services even after authentication.\r
+\r
+<BLOCKQUOTE>\r
+The both can be realized by firewall rule set.\r
+</BLOCKQUOTE>\r
+\r
+<LI>\r
+I want to separate the commission range by the user rank.\r
+\r
+<BLOCKQUOTE>\r
+Use ExrtaSet in configuration file. The paremeter in ExtraSet overrides the default setting, if ExtraSet attribute is matched.\r
+Or enable perl script to open firewall and edit the script. \r
+</BLOCKQUOTE>\r
+\r
+<LI>\r
+I want manage temporal users.\r
+\r
+<BLOCKQUOTE>\r
+It is needed to register to an authentication server.  As the system comminucates with plural servers, you can make specific server for temporal users and maintain it.\r
+</BLOCKQUOTE>\r
+\r
+<LI>\r
+Can the password secret be maintained?\r
+\r
+<BLOCKQUOTE>\r
+Yes. Communication between client and opengate server can be protected by SSL. Communication between opengate server and authentication server can be protected by secure auth protocol.We implement pop3s, ftps, radius, and pam(which supports many secure protocols). \r
+</BLOCKQUOTE>\r
+\r
+<LI>\r
+How are the scalability and performance?\r
+\r
+<BLOCKQUOTE>\r
+We are using the system in environments including active 50 or above terminals. \r
+</BLOCKQUOTE></LI>\r
+\r
+<LI>\r
+Can I use protocols other than Web?\r
+<BLOCKQUOTE>\r
+Yes. You should authenticate by Web browser, and stay it on desktop (can iconize). Other protocols than Web can also be used until the browser is closed. If you insert firewall rules previous to opengate rules, any protocols can be fixed to deny or allow mode.  \r
+</BLOCKQUOTE></LI>\r
+<LI>\r
+Can I view the usage of many terminals.\r
+<BLOCKQUOTE>\r
+Log is stored in /var/log/opengate.log via syslog.  A terminal is watched by a process. By entering 'ps -axww | grep opengate', you can view process id, userid, IP address, and firewall rule number corresponding to every process. If you kill a opengate process, corresponding firewall rules are removed.  The firewall rules are shown by 'ipfw list' or 'ip6fw list'.\r
+</BLOCKQUOTE></LI>\r
+</UL>\r
+Installation and Development\r
+<UL>\r
+<LI>\r
+I meet bugs on installation.\r
+\r
+<BLOCKQUOTE>\r
+See other document.\r
+</BLOCKQUOTE>\r
+\r
+<LI>\r
+Am I permited to use, modify or distribute the program? \r
+\r
+<BLOCKQUOTE>\r
+Yes it is permitted under GPL.\r
+</BLOCKQUOTE>\r
+\r
+<LI>\r
+Can I modify the web page design.\r
+\r
+<BLOCKQUOTE>\r
+As the web pages are described in html files, it is easy to modify the design.\r
+</BLOCKQUOTE>\r
+\r
+<LI>\r
+Can I display web pages with other language.\r
+\r
+<BLOCKQUOTE>\r
+Directorys named en and ja are the html documentations in english and japanese. Same as the directory, make the new language documentations. And modify the language setting in configuration file and index.html.var. To change the Java Applet message, modify the source of Java.\r
+</BLOCKQUOTE>\r
+\r
+<LI>\r
+Can I avoid atacks such as IP spoofing or DoS(Denial of Service)?\r
+\r
+<BLOCKQUOTE>\r
+IP spoofing has no merit, because the system permits the address from which user information sended. DoS can be avoided, because each client uses different port in the system. \r
+</BLOCKQUOTE>\r
+\r
+\r
+<LI>\r
+Can the server run on other OSs than FreeBSD.\r
+\r
+<BLOCKQUOTE>\r
+No. The system uses ipfw command which is specific to FreeBSD. The ipchains command in Linux can be used instead of ipwf.\r
+</BLOCKQUOTE>\r
+\r
+<LI>\r
+It is not smart that many processes resident.  Can these be integrated to one process?\r
+\r
+<BLOCKQUOTE>\r
+Yes. But in the present version, we take priority on simplicity of program.  \r
+</BLOCKQUOTE>\r
+\r
+\r
+<LI>\r
+Is the system compatible with IPv6?\r
+\r
+<BLOCKQUOTE>\r
+\r
+Yes. IPv6 support is added in Version 1.2.0.\r
+</BLOCKQUOTE></LI>\r
+\r
+</UL>\r
+</body>\r
+</HTML>\r
index c2016ff..e603b72 100644 (file)
@@ -21,7 +21,7 @@ Opengate
  /usr/local/www/data/index.html.var<br>\r
  /usr/local/www/cgi-bin/opengate/(opengatesrv.cgi, opengatefwd.cgi, opengateauth.cgi)<br>\r
  /usr/local/www/data/opengate/(Opengate.jar, Opengate.class, OpengateOlient.class)<br>\r
- /usr/local/www/data/opengate/(ja, en)/(topindex.html, index.html, index-ssl.html, accept.html, accept2.hmtl, deny.html, retry.html)<br>\r
+ /usr/local/www/data/opengate/(ja, en)/(topindex.html, index.html, index-ssl.html, accept.html, accept2.hmtl, deny.html, deny-ssl.html, retry.html)<br>\r
  /etc/opengate/(opengatesrv.conf, rc.firewall, rc.irewall6, ipfwctrl.pl): *.sample\82©\82ç\83R\83s\81[\81B<br>\r
  /var/log/opengate.log<br>\r
  \82³\82ç\82É\81A\83\8d\83b\83N\83t\83@\83C\83\8b\82Æ\82µ\82Ä/tmp/opengate.lock\82ð\8eg\97p\82µ\82Ü\82·\82ª\81A\8dì\90¬\82Í\95s\97v\82Å\82·\81B\8fÁ\82µ\82Ä\82à\8d\\82¢\82Ü\82¹\82ñ\81B\r
index 172e226..52ad227 100644 (file)
-<html LANG="jp">
-<head>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=Shift_JIS">
-
-<title>Opengate Q & A</title>
-</head>
-
-
-<body bgcolor=#fafff0>
-
-<H3>Opengate Q &amp; A</H3>
-
-\88Ó\8b`
-<UL>
-<LI>
-\82»\82à\82»\82à\89½\8cÌ\94F\8fØ\82È\82Ç\82ª\95K\97v\82È\82Ì\82Å\82·\82©\81B\92N\82Å\82à\83l\83b\83g\83\8f\81[\83N\82ª\8eg\82¦\82Ä\97Ç\82¢\82Å\82Í\82È\82¢\82Å\82·\82©\81B
-
-<BLOCKQUOTE>
-\8ae\83l\83b\83g\83\8f\81[\83N\82Í\81A\82»\82Ì\90Ý\92u\8eï\8e|\82Æ\8co\94ï\95\89\92S\82É\8f]\82Á\82½\97\98\97p\82ª\8b\81\82ß\82ç\82ê\82Ü\82·\81B\8c\88\82µ\82Ä\8e©\97R\97\98\97p\82ª\91O\92ñ\82Å\82Í\82 \82è\82Ü\82¹\82ñ\81B\82³\82ç\82É\81A\83C\83\93\83^\81[\83l\83b\83g\8fã\82Å\82Í\81A\94îæ\8e\92\86\8f\9d\82â\8d¼\8b\\81A\95s\90³\83A\83^\83b\83N\93\99\82Ì\94½\8eÐ\89ï\93I\8ds\93®\82ª\94­\90\82µ\82Ä\82¢\82Ü\82·\81B\91g\90D\82Æ\82µ\82Ä\82Í\82»\82Ì\82æ\82¤\82È\8ds\93®\82ð\8d\\90¬\88õ\82É\8bN\82±\82µ\82Ä\97~\82µ\82­\82 \82è\82Ü\82¹\82ñ\81B\8ae\8e©\82ª\90Ó\94C\82ð\8e\9d\82Á\82Ä\8ds\93®\82µ\82Ä\82¢\82½\82¾\82­\82½\82ß\82Ì\88ê\82Â\82Ì\95û\96@\82Æ\82µ\82Ä\96{\83V\83X\83e\83\80\82ª\82 \82è\82Ü\82·\81B
-</BLOCKQUOTE>
-
-<LI>
-\92[\96\96\82ÌOS\82É\95t\90\8f\82·\82é\94F\8fØ\82ð\97\98\97p\82·\82é\82Ì\82Å\82Í\83_\83\81\82È\82Ì\82Å\82·\82©\81B
-
-<BLOCKQUOTE>
-\93\9d\88ê\82µ\82½PC\8aÂ\8b«\82Ì\8d\\92z\82Æ\88Û\8e\9d\82ª\89Â\94\\82È\83V\83X\83e\83\80\82Ì\8fê\8d\87\82É\82Í\81A\92[\96\96OS\82Ì\94F\8fØ\83V\83X\83e\83\80\82ð\97\98\97p\82µ\82½\95û\82ª\97Ç\82¢\82Æ\8ev\82¢\82Ü\82·\81B\82µ\82©\82µ\95s\93Á\92è\91½\90\94\82ª\95s\93Á\92è\8b@\8aí\82ð\90Ú\91±\82·\82é\82æ\82¤\82È\8aÂ\8b«\82Å\82Í\8b@\94\\82µ\82Ü\82¹\82ñ\81B
-</BLOCKQUOTE>
-
-<LI>
-\83A\83N\83Z\83X\82³\82ê\82é\91¤\82Ì\83T\81[\83o\82ª\8ae\8e©\82Å\94í\8aQ\82ð\8eó\82¯\82È\82¢\82æ\82¤\82É\81A\94F\8fØ\82»\82Ì\91¼\82Ì\83Z\83L\83\85\83\8a\83e\83B\95Û\8e\9d\82ð\8ds\82¤\82±\82Æ\82ª\96{\97\88\82Å\82Í\82È\82¢\82Å\82·\82©\81B
-
-<BLOCKQUOTE>
-\82»\82ê\82à\95K\97v\82Å\82µ\82å\82¤\81B\82µ\82©\82µ\91å\8aw\82Ì\82æ\82¤\82É\91½\90\94\82Ì\91½\97l\82È\90l\8aÔ\82ª\94ä\8ar\93I\8e©\97R\82É\97\98\97p\82Å\82«\82é\83l\83b\83g\83\8f\81[\83N\8aÂ\8b«\82ð\92ñ\8b\9f\82µ\82Ä\82¢\82é\91g\90D\82Å\82Í\81A\8aO\95\94\82É\91Î\82µ\82Ä\97l\81X\82È\83g\83\89\83u\83\8b\82ð\8bN\82±\82µ\8bê\8fî\82ª\8añ\82¹\82ç\82ê\82é\89Â\94\\90«\82ª\8d\82\82­\82È\82è\82Ü\82·\81B\82»\82Ì\90Ó\94C\82Í\83g\83\89\83u\83\8b\8c´\88ö\82ð\8dì\82Á\82½\96{\90l\82É\8eæ\82Á\82Ä\82¢\82½\82¾\82­\95K\97v\82ª\82 \82è\82Ü\82·\81B\82Ü\82½\81A\83l\83b\83g\83\8f\81[\83N\97\98\97p\82É\82Í\81A\82»\82Ì\96Ú\93I\82É\8d\87\82Á\82½\97\98\97p\8eÒ\82Ì\90§\8cÀ\82ª\82 \82é\82±\82Æ\82ª\92Ê\8fí\82¾\82Æ\8ev\82¢\82Ü\82·\81B\82æ\82Á\82Ä\83A\83N\83Z\83X\82·\82é\91¤\82Å\82Ì\94F\8fØ\82à\95K\97v\82Æ\8dl\82¦\82Ü\82·\81B
-</BLOCKQUOTE>
-
-<LI>
-
-\89½\8cÌ\81A\8cö\8aJ\8cÅ\92è\92[\96\96\82Æ\8fî\95ñ\83R\83\93\83Z\83\93\83g\82Ì\97¼\95û\82ð\91Î\8fÛ\82Æ\82·\82é\95K\97v\82ª\82 \82é\82Ì\82Å\82·\82©\81B\8cö\8aJ\8cÅ\92è\92[\96\96\82Í\92[\96\96OS\82Ì\94F\8fØ\82ª\89Â\94\\82Å\82Í\82È\82¢\82Å\82·\82©\81B
-
-<BLOCKQUOTE>
-\91S\82Ä\82Ì\8cö\8aJ\8cÅ\92è\92[\96\96\82ð\83l\83b\83g\83\8f\81[\83N\8aÇ\97\9d\95\94\96å\82ª\93\9d\88ê\93I\82É\94z\92u\82µ\81A\82»\82Ì\83n\81[\83h\83E\83F\83A\82ð\95s\90³\91\80\8dì\82©\82ç\8eç\82ê\82é\8fó\8bµ\82ª\89Â\94\\82Å\82 \82ê\82Î\82»\82ê\82Å\82à\97Ç\82¢\82Æ\8ev\82¢\82Ü\82·\81B\82µ\82©\82µ\8c»\8eÀ\93I\82É\82Í\8ag\8eU\82µ\82½\8cö\8aJ\8fê\8f\8a\82Ö\91½\90\94\94z\92u\82·\82é\82±\82Æ\82ª\91½\82­\81A\97l\81X\82È\8d¢\93ï\82ª\94º\82¢\82Ü\82·\81B\82Ü\82½\8aù\82É\94z\92u\82³\82ê\82½\94F\8fØ\8b@\94\\82Ì\96³\82¢\92[\96\96\82â\95s\8f\\95ª\82È\8aÇ\97\9d\89º\82Ì\92[\96\96\82ª\90\94\91½\82­\82 \82è\82Ü\82·\81B\82±\82ê\82ç\82É\82à\91Î\89\9e\82·\82é\95K\97v\82ª\82 \82è\82Ü\82·\81B
-</BLOCKQUOTE>
-
-<LI>
-\83\8b\81[\83^\82â\83t\83@\83C\83A\83E\83I\81[\83\8b\93\99\81A\92Ê\89ß\93_\82Å\82Ì\8bL\98^\8eæ\93¾\82Å\82Í\82¢\82¯\82È\82¢\82Ì\82Å\82·\82©\81B
-<BLOCKQUOTE>
-\82±\82Ì\8bL\98^\82Å\82ÍIP\83A\83h\83\8c\83X\82Í\95ª\82©\82è\82Ü\82·\81B\82µ\82©\82µ\95s\93Á\92è\91½\90\94\82ª\8fo\93ü\82è\82·\82é\8fê\8f\8a\82Ì\8fê\8d\87\82Í\92N\82ª\97\98\97p\82µ\82½\82Ì\82©\95ª\82©\82è\82Ü\82¹\82ñ\81B\97\98\97p\8eÒ\82ª\93Á\92è\82Å\82«\82é\95\94\89®\82Ì\8fê\8d\87\82Í\82±\82Ì\82æ\82¤\82È\8bL\98^\82Å\82à\97Ç\82¢\82Å\82µ\82å\82¤\81B
-</BLOCKQUOTE>
-
-<LI>
-MAC\83A\83h\83\8c\83X\82Å\8cÂ\90l\8e¯\95Ê\82ð\82·\82é\95û\8e®\82à\82 \82é\82æ\82¤\82Å\82·\82ª\81B
-<BLOCKQUOTE>
-Opengate\82Í\8cÂ\90l\8e¯\95Ê\82ð\83\86\81[\83UID\82Æ\83p\83X\83\8f\81[\83h\82Å\8ds\82Á\82Ä\82¢\82Ü\82·\81B\82±\82Ì\94F\8fØ\93ü\97Í\82Ì\91ã\82í\82è\82ÉMAC\83A\83h\83\8c\83X\82ð\8eg\82¤\82±\82Æ\82Í\89Â\94\\82Å\82µ\82å\82¤\81B<BR>
-\82µ\82©\82µMAC\83A\83h\83\8c\83X\82ð\97\98\97p\82·\82é\95û\8e®\82Í\81AMAC\83A\83h\83\8c\83X\82Æ\82»\82Ì\8f\8a\97L\8eÒ\82Æ\82Ì\8aÖ\8cW\82ð\91O\82à\82Á\82Ä\93o\98^\82·\82é\95K\97v\82ª\82 \82è\82Ü\82·\81B\82Ü\82½\8b@\8aí\8f÷\93n\81E\94p\8aü\82Ì\8dÛ\82É\93o\98^\8fÁ\8b\8e\81A\8b@\8aí\8dX\90V\82Ì\8dÛ\82É\93o\98^\8dX\90V\82ð\8ds\82¤\95K\97v\82ª\82 \82è\82Ü\82·\82ª\81A\97\98\97p\8eÒ\82É\93o\98^\8fÁ\8b\8e\82ð\97ã\8ds\82³\82¹\82é\82Ì\82Í\93ï\82µ\82¢\82Æ\8ev\82í\82ê\82Ü\82·\81B\82±\82ê\82ç\82Ì\89^\97p\8fã\82Ì\96â\91è\93_\82ð\89ð\8c\88\82µ\82È\82¯\82ê\82Î\82È\82è\82Ü\82¹\82ñ\81B\82Ü\82½MAC\83A\83h\83\8c\83X\82Í\83C\81[\83T\83l\83b\83g\90Ú\91±\92[\96\96\82Ì\82Ý\82É\91\8dÝ\82·\82é\93_\81A\83\8b\81[\83^\82ð\92´\82¦\82Ä\93`\82í\82ç\82È\82¢\93_\81A\8bU\91\95\82ª\89Â\94\\82Å\82 \82é\93_\82È\82Ç\82à\93ï\93_\82Æ\8c¾\82¦\82Ü\82·\81B
-</BLOCKQUOTE>
-
-<LI>
-\8dÅ\8bß\81A\82³\82Ü\82´\82Ü\82È\83l\83b\83g\83\8f\81[\83N\94F\8fØ\83V\83X\83e\83\80\82ª\94­\95\\82³\82ê\82Ä\82¢\82é\82æ\82¤\82Å\82·\82ª\81B
-<BLOCKQUOTE>
-Opengate\82Í\88È\89º\82Ì\93_\82ð\96\9e\82½\82µ\82Ä\82¢\82é\93_\82ª\93Á\92¥\82Æ\8dl\82¦\82Ü\82·\81B\92[\96\96\82É\91Î\82·\82é\83\\83t\83g\81A\83n\81[\83h\81A\90Ý\92u\8c`\91Ô\81A\90Ú\91±\95û\96@\82È\82Ç\82Ì\90§\8cÀ\82ª\8f­\82È\82¢\8e\96\81B\97\98\97p\8eÒ\82Ì\8ew\93±\82â\8aÇ\97\9d\82ª\8dÅ\8f¬\8cÀ\82Å\8dÏ\82Þ\8e\96\81B\88ê\94Ê\93I\82È\83\\83t\83g/\83n\81[\83h\82Å\8d\\90¬\82³\82ê\82Ä\82¨\82è\81A\8aù\91\83l\83b\83g\83\8f\81[\83N\82Ö\82Ì\93±\93ü\82ª\97e\88Õ\82Å\82 \82é\8e\96\81B\97\98\97p\8aJ\8en/\8fI\97¹\82É\8dÛ\82µ\82Ä\91¦\8dÀ\82É\83l\83b\83g\83\8f\81[\83N\82Ì\8aJ\95ú/\95Â\8d½\82ª\8ds\82í\82ê\82é\8e\96\81BIPv4\82ÆIPv6\82Ì\97¼\95û\82Ì\92Ê\90M\82ð\93¯\8e\9e\82É\8aJ\95ú\95Â\8d½\82Å\82«\82é\82±\82Æ\81B
-</BLOCKQUOTE>
-
-<LI>
-\91¼\82Ì\97p\93r\82É\82Í\97\98\97p\82Å\82«\82Ü\82·\82©\81B
-<BLOCKQUOTE>
-\96{\83V\83X\83e\83\80\82Í\81A\83\86\81[\83UID\82Æ\83p\83X\83\8f\81[\83h\82ðWeb\8co\97R\82Å\8eó\82¯\95t\82¯\81A\82»\82ÌIP\83A\83h\83\8c\83X\82Æ\82Ì\83p\83P\83b\83g\82Ì\92Ê\89ß\82ð\8b\96\89Â\82·\82é\83V\83X\83e\83\80\82Å\82·\81B\82»\82Ì\98g\91g\82Ý\82Ì\8aÂ\8b«\82Å\82 \82ê\82Î\97\98\97p\82Å\82«\82é\82Æ\8ev\82¢\82Ü\82·\81B\97á\82¦\82Î\81A\83G\83N\83X\83g\83\89\83l\83b\83g\82©\82ç\83C\83\93\83g\83\89\83l\83b\83g\82É\91Î\82µ\82Ä\83A\83N\83Z\83X\82·\82é\82½\82ß\82Ì\83o\83C\83p\83X\91\8b\8cû\82ð\90Ý\92u\82·\82é\82±\82Æ\82É\82à\97\98\97p\82Å\82«\82é\82Å\82µ\82å\82¤\81B\93\96\91R\82È\82ª\82ç\8bÉ\82ß\82Ä\8d\82\93x\82È\83Z\83L\83\85\83\8a\83e\83B\83\8c\83x\83\8b\82ð\95K\97v\82Æ\82·\82é\83l\83b\83g\83\8f\81[\83N\82Å\82È\82¢\8fê\8d\87\82Å\82·\82ª\81B
-</BLOCKQUOTE>
-
-<LI>
-Java\82ª\93®\82©\82È\82¢\92[\96\96\82à\82 \82è\82Ü\82·\82ª\81B
-<BLOCKQUOTE>
-Java\82ª\93®\82©\82È\82¢\82à\82µ\82­\82Í\83C\83\93\83X\83g\81[\83\8b\82³\82ê\82Ä\82¢\82È\82¢\92[\96\96\82Å\82à\81A\97\98\97p\8eÒ\82ª\94F\8fØ\83y\81[\83W\82É\82¨\82¢\82Ä\97v\8b\81\82µ\82½\90Ú\91±\8cp\91±\8e\9e\8aÔ\82¾\82¯\83l\83b\83g\83\8f\81[\83N\82ð\8aJ\95ú\82µ\82Ü\82·\81B\82½\82¾\82µ\81A\8fæ\82Á\8eæ\82è\82â\95ú\92u\82É\91Î\89\9e\82·\82é\82½\82ß\81A\88ê\92è\8e\9e\8aÔ\8aÔ\8au\82Å\81AARP\83R\83}\83\93\83h\82Æ\83t\83@\83C\83A\83E\83H\81[\83\8b\92Ê\89ß\83p\83P\83b\83g\90\94\82Å\83`\83F\83b\83N\82µ\82Ü\82·\81B\82Ü\82½\81A\8b\96\89Â\83y\81[\83W\82Ì\97\98\97p\92\86\92f\82Ì\83\8a\83\93\83N\82ð\83N\83\8a\83b\83N\82·\82é\82±\82Æ\82Å\83l\83b\83g\83\8f\81[\83N\82ð\95Â\8d½\82Å\82«\82Ü\82·\81B
-</BLOCKQUOTE></LI>
-
-
-</UL>
-
-
-\97\98\97p
-<UL>
-<LI>
-\96³\90üLAN\82Å\8eg\82¦\82Ü\82·\82©\81B
-
-<BLOCKQUOTE>
-\8eg\82¦\82Ü\82·\81B\82½\82¾\82µ\81A\90e\8bÇ\93à\82ÅNAT\93\99\82É\82æ\82éIP\83A\83h\83\8c\83X\95Ï\8a·\82ª\82È\82³\82ê\82Ä\82¢\82È\82¢\82±\82Æ\82ª\95K\97v\82Å\82·\81B
-</BLOCKQUOTE>
-
-<LI>
-DHCP\82âNAT\82Æ\82Ì\8b¤\97p\82Í\82Å\82«\82Ü\82·\82©\81B
-
-<BLOCKQUOTE>
-\82Å\82«\82Ü\82·\81B\82»\82Ì\82æ\82¤\82È\8eg\82¢\95û\82ª\91½\82¢\82Æ\8ev\82¢\82Ü\82·\81B\82½\82¾\82µNAT\82Í\93¯\88ê\83Q\81[\83g\83E\83F\83C\83}\83V\83\93\8fã\82Å\93®\82©\82·\8fê\8d\87\82Å\82·\81B\96{\83Q\81[\83g\83E\83F\83C\82Æ\92[\96\96\8cQ\82Æ\82Ì\8aÔ\82ÉNAT\91\95\92u\82ð\8b²\82Þ\82±\82Æ\82Í\82Å\82«\82Ü\82¹\82ñ\81B\93¯\82¶IP\83A\83h\83\8c\83X\82ð\91½\90l\90\94\82ª\8eg\97p\82·\82é\8c`\82É\82È\82é\82½\82ß\82Å\82·\81B
-</BLOCKQUOTE>
-
-<LI>
-MAC\83A\83h\83\8c\83X\82Í\8eæ\93¾\82Å\82«\82Ü\82·\82©\81B
-<BLOCKQUOTE>
-Ver0.53\82É\82Ä\91Î\89\9e\82µ\82Ü\82µ\82½\81B\82½\82¾\82µ\81A\83T\81[\83o\91¤\82ÅARP\82©\82ç\8eæ\93¾\82·\82é\82½\82ß\81A\83T\81[\83o\91¤\82©\82ç\8c©\82¦\82é\83A\83h\83\8c\83X\82Ì\82Ý\82Å\82·\81B\91ã\97\9dARP\82ª\82 \82é\82Æ\82»\82Ì\92\86\8cp\83A\83h\83\8c\83X\82Æ\82È\82è\82Ü\82·\81B\82Ü\82½\81A\93\96\91R\82È\82ª\82ç\81A\83C\81[\83T\83l\83b\83g\82Å\82Ì\82Ý\97L\8cø\82Å\82·\81B
-</BLOCKQUOTE>
-
-<LI>
-\88ê\95\94\82Ì\83T\81[\83r\83X\82Í\94F\8fØ\96³\82µ\82É\82µ\82½\82¢\82Ì\82Å\82·\82ª\81B\82à\82µ\82­\82Í\94F\8fØ\8cã\82à\88ê\95\94\82Ì\83T\81[\83r\83X\82ð\90§\8cÀ\82µ\82½\82¢\82Ì\82Å\82·\82ª\81B
-
-<BLOCKQUOTE>
-\8f\89\8aú\8fó\91Ô\82Ì\83t\83@\83C\83A\83E\83I\81[\83\8b\83\8b\81[\83\8b\82É\95K\97v\82È\82à\82Ì\82ð\92Ç\89Á\82·\82ê\82Î\89Â\94\\82Å\82·\81BOpengate\82Í\82±\82Ì\8f\89\8aú\8fó\91Ô\82É\83\8b\81[\83\8b\82ð\91}\93ü\81E\8dí\8f\9c\82µ\82Ü\82·\81B\82æ\82Á\82Ä\81A\92Ç\89Á\88Ê\92u\82ð\8dH\95v\82·\82ê\82Î\97l\81X\82È\90§\8cä\82ª\89Â\94\\82Å\82·\81B\97á\82¦\82Î\81A\93Á\92è\82Ì\83T\83C\83g\82ð\83A\83N\83Z\83X\8b\96\89Â\82à\82µ\82­\82Í\95s\8b\96\89Â\82É\8cÅ\92è\82·\82é\82±\82Æ\82à\82Å\82«\82Ü\82·\81B
-</BLOCKQUOTE>
-
-<LI>
-\97\98\97p\8eÒ\82Ì\83\8c\83x\83\8b\82É\82æ\82Á\82Ä\83T\81[\83r\83X\82ð\90§\8cÀ\82µ\82½\82¢\82Ì\82Å\82·\82ª\81B
-
-<BLOCKQUOTE>
-Firewall\90§\8cä\82ÉPerl\83X\83N\83\8a\83v\83g\82ª\97\98\97p\82Å\82«\82Ü\82·\81B\83\86\81[\83U\96¼\82â\94F\8fØ\83T\81[\83o\81AIP\83A\83h\83\8c\83X\82È\82Ç\82Å\8bæ\95Ê\82Å\82«\82é\82È\82ç\82Î\81A\83X\83N\83\8a\83v\83g\92\86\82É\8bL\8fq\89Â\94\\82Å\82·\81BVer.0.80\82Å\91Î\89\9e\82µ\82Ü\82µ\82½\81B
-</BLOCKQUOTE>
-
-<LI>
-\88ê\8e\9e\93I\97\98\97p\8eÒ\82Ö\82Ì\91Î\89\9e\82Í\82Ç\82¤\82µ\82Ü\82·\82©\81B
-
-<BLOCKQUOTE>
-\94F\8fØ\83T\81[\83o\82Ö\82Ì\88ê\8e\9e\93I\82È\97\98\97p\8eÒ\93o\98^\82ª\95K\97v\82Å\82·\81BOpengate\82Í\81A\95¡\90\94\82Ì\94F\8fØ\83T\81[\83o\82É\83\86\81[\83U\82ð\90U\82è\95ª\82¯\82é\82æ\82¤\82É\8ew\92è\82Å\82«\82Ü\82·\82Ì\82Å\81A\95Ê\93r\82É\88ê\8e\9e\97\98\97p\8eÒ\82Ì\82½\82ß\82Ì\94F\8fØ\83T\81[\83o\82ð\90Ý\92u\82·\82é\82±\82Æ\82à\82Å\82«\82Ü\82·\81Bftp\83T\81[\83o\82ª\93®\82¯\82Î\97Ç\82¢\82Ì\82ÅWindows\82È\82Ç\82Ì\8aÈ\88Õ\83T\81[\83o\82Å\82à\89Â\94\\82Æ\8dl\82¦\82Ü\82·\81B
-<BR>
-\93\96\91å\8aw\82Å\82Í\81A\8c»\8dÝ\82Ì\82Æ\82±\82ë\81A\90}\8f\91\8aÙ\8aO\95\94\97\98\97p\8eÒ\82â\8aw\89ï\8eQ\89Á\8eÒ\82È\82Ç\82Ì\88ê\8e\9e\93I\97\98\97p\8eÒ\82É\91Î\82µ\82Ä\88È\89º\82Ì\89^\97p\82ð\8ds\82Á\82Ä\82¢\82Ü\82·\81B\88ê\8e\9e\97\98\97p\8eÒ\97p\82Ì\94F\8fØ\83T\81[\83o\82ð\97p\88Ó\82·\82é\81B\95K\97v\90\94\82Ì\97\98\97p\8eÒID\82ð\97\98\97p\8aú\8cÀ\95t\82«\82Å\93o\98^\82µ\81A\93¯\8e\9e\82É\97\98\97p\8eÒID\82Æ\83p\83X\83\8f\81[\83h\82¨\82æ\82Ñ\97\98\97p\8fã\82Ì\92\8d\88Ó\82ð\8f\91\82¢\82½\97p\8e\86\82ð\97\98\97p\8eÒID\96\88\82É\88ó\8dü\82·\82é\81B\97\98\97p\8aó\96]\8eÒ\82ª\97\88\96K\82·\82ê\82Î\81A\90g\8c³\82ð\8am\94F\82µ\82Ä\97p\8e\86\82ð1\96\87\93n\82·\81B\93\96\91R\82È\82ª\82ç\96{\97\98\97p\8eÒID\82Í\8aw\93à\82Ì\83T\81[\83o\82Ö\82Ì\83\8d\83O\83C\83\93\93\99\82É\82Í\97\98\97p\82Å\82«\82Ü\82¹\82ñ\81B
-</BLOCKQUOTE>
-
-<LI>
-\83p\83X\83\8f\81[\83h\82Ì\8eç\94é\82Í\95Û\82Ä\82Ü\82·\82©\81B
-
-<BLOCKQUOTE>
-\92[\96\96\82Æ\83Q\81[\83g\83E\83F\83C\8aÔ\82ÍWeb\92Ê\90M\82Å\83p\83X\83\8f\81[\83h\82ð\91\97\82è\82Ü\82·\81B\82æ\82Á\82ÄWeb\83T\81[\83o\82ðSSL\89»\82·\82ê\82Î\8eç\94é\82ª\95Û\82Ä\82Ü\82·\81B\83Q\81[\83g\83E\83F\83C\82Æ\94F\8fØ\83T\81[\83o\82Ì\8aÔ\82Í\81A\8eç\94é\8b@\94\\82Ì\82 \82é\94F\8fØ\83v\83\8d\83g\83R\83\8b\82É\82æ\82ê\82Î\89Â\94\\82Å\82·\81BOpengate\82Í\81Apop3s,ftps,Radius,PAM\82É\91Î\89\9e\82µ\82Ä\82¢\82Ü\82·\81BPAM\82Í\91½\82­\82Ì\94F\8fØ\83v\83\8d\83g\83R\83\8b\82ð\83T\83|\81[\83g\82µ\82Ü\82·\81B
-</BLOCKQUOTE>
-
-<LI>
-\83X\83P\81[\83\89\83r\83\8a\83e\83B\82Í\82Ç\82¤\82Å\82·\82©\81B\83p\83t\83H\81[\83}\83\93\83X\82Í\82Ç\82¤\82Å\82·\82©\81B
-
-<BLOCKQUOTE>
-\90\94\8f\\91ä\82Ì\8eg\97p\82Å\82Í\96â\91è\96³\82­\8eg\82¦\82Ä\82¢\82Ü\82·\81B\83N\83\89\83XC\92ö\93x\82Ì\97\98\97p\82Í\82Å\82«\82é\82Æ\8ev\82¢\82Ü\82·\81B\96{\83V\83X\83e\83\80\82Í\81A\83t\83@\83C\83A\83E\83I\81[\83\8b\83\\83t\83g\82Ì\83p\83P\83b\83g\83t\83B\83\8b\83^\83\8a\83\93\83O\8bK\91¥\82ð\92Ç\89Á\81E\8dí\8f\9c\82·\82é\95û\8e®\82Å\82 \82è\81A\8ae\83N\83\89\83C\83A\83\93\83g\82©\82ç\82Ì\97\98\97p\8aJ\8en\97v\8b\81\8e\9e\82ð\95Ê\82É\82·\82ê\82Î\96w\82Ç\95\89\89×\82Æ\82È\82è\82Ü\82¹\82ñ\81B\97\98\97p\92\86\82Ì\83p\83t\83H\81[\83}\83\93\83X\82Í\81A\83p\83P\83b\83g\83t\83B\83\8b\83^\83\8a\83\93\83O\82â\83p\83P\83b\83g\93]\91\97\82Ì\8f\88\97\9d\94\\97Í\82É\88Ë\91\82·\82é\82Æ\8ev\82¢\82Ü\82·\81B\82È\82¨\97Ê\93I\82È\90§\8cÀ\82Æ\82µ\82Ä\82Í\81A\97\98\97p\83N\83\89\83C\83A\83\93\83g\96\88\82É\82P\83v\83\8d\83Z\83X\82ª\8fí\92\93\82·\82é\82±\82Æ\82ª\82 \82è\82Ü\82·\81B\82µ\82©\82µ\83v\83\8d\83Z\83X\90\94\82Ì\8dÅ\91å\92l\82Í\83J\81[\83l\83\8b\82Å\92²\90®\82Å\82«\82Ü\82·\82µ\81A\83N\83\89\83XC\92ö\93x\96\88\82É\95ª\8a\84\82µ\82Ä\83V\83X\83e\83\80\89^\97p\82·\82é\95û\82ª\83Q\81[\83g\83E\83F\83C\82É\82¨\82¯\82é\83p\83P\83b\83g\83t\83B\83\8b\83^\83\8a\83\93\83O\93\99\82Ì\94\\97Í\82©\82ç\82·\82é\82Æ\8c»\8eÀ\93I\82Å\82µ\82å\82¤\81B
-</BLOCKQUOTE></LI>
-
-</UL>
-\93±\93ü\81E\8aJ\94­
-<UL>
-<LI>
-\83C\83\93\83X\83g\81[\83\8b\82µ\82½\82ª\93®\82«\82Ü\82¹\82ñ\81B
-
-<BLOCKQUOTE>
-\91½\90\94\82Ì\83\\83t\83g\83E\83F\83A\82Ì\92\87\89î\82ð\82·\82é\83V\83X\83e\83\80\82Å\82·\82Ì\82Å\83f\83o\83b\83O\82Í\96Ê\93|\82¾\82Æ\8ev\82¢\82Ü\82·\81B\95Ê\93r\82É\97p\88Ó\82µ\82½\83`\83F\83b\83N\8d\80\96Ú\8bL\8fq\82Ì\83t\83@\83C\83\8b\82ð\8c©\82Ä\82­\82¾\82³\82¢\81B
-</BLOCKQUOTE>
-
-<LI>
-\97\98\97p\81E\89ü\95Ï\81E\94z\95z\82Í\89Â\94\\82Å\82·\82©\81B
-
-<BLOCKQUOTE>
-GPL\89º\82Å\89Â\94\\82Å\82·\81B\8d¡\8cã\82Ì\8aJ\94­\82Ì\82½\82ß\82É\81A\8aJ\94­\8eÒ\82Ü\82Å\98A\97\8d\92¸\82¯\82ê\82Î\8dK\82¢\82Å\82·\81B\83o\83O\81E\97v\96]\81E\89ü\95Ï\95ñ\8d\90\82ð\8a½\8c}\82µ\82Ü\82·\81B
-</BLOCKQUOTE>
-
-<LI>
-\94F\8fØWeb\83y\81[\83W\82Ì\83f\83U\83C\83\93\82ð\95Ï\82¦\82½\82¢\82Ì\82Å\82·\82ª\81B
-
-<BLOCKQUOTE>
-\8aeWeb\83y\81[\83W\82ÍHTML\83t\83@\83C\83\8b\82Æ\82µ\82Ä\93Æ\97§\82µ\82Ä\82¢\82Ü\82·\81B\82±\82ê\82ð\8f\91\82«\82©\82¦\82é\82±\82Æ\82Å\8aÈ\92P\82É\82Å\82«\82Ü\82·\81B
-</BLOCKQUOTE>
-
-<LI>
-\89p\8cê\81A\93ú\96{\8cê\88È\8aO\82Ì\95\\8e¦\82É\82µ\82½\82¢\82Ì\82Å\82·\82ª\81B
-
-<BLOCKQUOTE>
-en,ja\82Ì\83f\83B\83\8c\83N\83g\83\8a\82ª\81A\89p\8cê\82Æ\93ú\96{\8cê\82Ì\8bL\8fq\82Å\82·\81B\82±\82ê\82ð\8eQ\8dl\82É\82µ\82Ä\93¯\82\83f\83B\83\8c\83N\83g\83\8a\8d\\90¬\82ÅHTML\83t\83@\83C\83\8b\82ð\8dì\90¬\82µ\82Ä\82­\82¾\82³\82¢\81B\82³\82ç\82É\81A\90Ý\92è\83t\83@\83C\83\8b\92\86\82Ì\8c¾\8cê\90Ý\92è\82Æindex.html.var\82ð\92Ç\89Á\95Ï\8dX\82µ\82Ä\82­\82¾\82³\82¢\81B\82Ü\82½\81AJavaApplet\82Ì\95\\8e¦\82ð\95Ï\82¦\82é\82½\82ß\82É\83\\81[\83X\92\86\82Ì\83\81\83b\83Z\81[\83W\82ð\92Ç\89Á\95Ï\8dX\82­\82¾\82³\82¢\81B
-</BLOCKQUOTE>
-
-<LI>
-IP\83A\83h\83\8c\83X\82É\82æ\82è\91\8a\8eè\82ð\8am\94F\82µ\82Ä\82¢\82é\82æ\82¤\82Å\82·\82ª\81AIP\83X\83v\81[\83t\83B\83\93\83O\82Í\96â\91è\82Å\82Í\82È\82¢\82Å\82·\82©\81B\82Ü\82½\83T\81[\83r\83X\96W\8aQ\8dU\8c\82\82É\82Í\91Î\89\9e\82Å\82«\82Ü\82·\82©\81B\82»\82Ì\91¼\82Ì\83A\83^\83b\83N\82É\91Î\82µ\82Ä\82Í\82Ç\82¤\82Å\82·\82©\81B
-
-<BLOCKQUOTE>
-IP\83X\83v\81[\83t\83B\83\93\83O\82Í\83t\83@\83C\83A\83E\83I\81[\83\8b\82Ì\95û\82Ì\90Ý\92è\82Å\94ð\82¯\82ç\82ê\82é\82Æ\8ev\82¢\82Ü\82·\81B\82Ü\82½Opengate\82Í\81A\90³\82µ\82¢\83p\83X\83\8f\81[\83h\82ð\91\97\82Á\82Ä\82«\82½\83A\83h\83\8c\83X\82É\91Î\82µ\82Ä\8c\8a\82ð\8aJ\82¯\82é\82Ì\82Å\81AIP\83A\83h\83\8c\83X\82ð\8bU\82Á\82Ä\82à\82 \82Ü\82è\93¾\82É\82Í\82È\82è\82Ü\82¹\82ñ\81B\91¼\82ª\94F\8fØ\82ð\8eó\82¯\82Ä\8eg\82Á\82Ä\82¢\82é\93¯\82¶IP\83A\83h\83\8c\83X\82ð\8d¼\8fÌ\82µ\82Ä\83p\83P\83b\83g\82ð\97¬\82·\82±\82Æ\82Í\89Â\94\\82Å\82µ\82å\82¤\82ª\81A\8c»\8eÀ\93I\82È\97\98\97p\82Í\93ï\82µ\82¢\82Æ\8ev\82Á\82Ä\82¢\82Ü\82·\81B\83T\81[\83r\83X\96W\8aQ\82É\82Â\82¢\82Ä\82Í\81A\8aeIP\83A\83h\83\8c\83X\82É\91Î\82µ\82Ä\93Æ\8e©\82Ì\83|\81[\83g\94Ô\8d\86\82ð\88ê\82Â\91\97\82è\82Â\82¯\8cð\90M\82·\82é\8c`\91Ô\82Å\82·\82Ì\82Å\94ð\82¯\82ç\82ê\82é\82Æ\8ev\82¢\82Ü\82·\81B\96W\8aQ\82ð\8a®\91S\82É\8f\9c\8b\8e\82·\82é\82±\82Æ\82Í\93ï\82µ\82¢\82Å\82·\82ª\81A\83Z\83L\83\85\83\8a\83e\83B\83z\81[\83\8b\82ª\82 \82ê\82Î\82²\8b³\8e¦\89º\82³\82¢\81B\88«\88Ó\82ð\8e\9d\82Á\82½\97\98\97p\82É\91Î\82µ\82Ä\82Í\81A\91Î\8dô\82Æ\82µ\82Ä\8dl\82¦\82ç\82ê\82Ä\82¢\82é\8b@\94\\82È\82Ç\82ð\91g\82Ý\8d\87\82í\82¹\82é\82±\82Æ\82à\89Â\94\\82Å\82 \82ë\82¤\82Æ\8ev\82¢\82Ü\82·\81B
-</BLOCKQUOTE>
-
-<LI>
-\83_\83E\83\93\83\8d\81[\83h\83t\83@\83C\83\8b\82Ì\92\86\90g\82ª\97\90\8eG\82È\82Ü\82Ü\82Å\82·\82ª\81B
-
-<BLOCKQUOTE>
-\93Á\82É\90®\97\9d\82¹\82¸\82É\81A\93®\82­\82æ\82¤\82É\82È\82Á\82½\8fó\91Ô\82ð\95Û\91\82µ\82Ä\82¢\82Ü\82·\81B\96µ\8f\82\82à\82 \82é\82Æ\8ev\82¢\82Ü\82·\81B\82«\82ê\82¢\82É\90®\97\9d\82µ\82Ä\8fo\82µ\82½\82¢\82Ì\82Å\82·\82ª\97]\97T\82ª\96³\82­\82Ä\8dÏ\82Ý\82Ü\82¹\82ñ\81B
-</BLOCKQUOTE>
-
-<LI>
-\83T\81[\83o\82ÍFreeBSD\88È\8aO\82Å\93®\82«\82Ü\82·\82©\81B
-
-<BLOCKQUOTE>
-\8c»\8fó\82Å\82Í\81AFreeBSD\90ê\97p\82Ì\83t\83@\83C\83A\83E\83I\81[\83\8b\83c\81[\83\8bipfw\82ð\97\98\97p\82µ\82Ä\82¢\82é\82Ì\82Å\81A\91¼\82ÌOS\82Å\82Í\93®\82«\82Ü\82¹\82ñ\81B\93¯\93\99\82Ì\8b@\94\\82ð\8e\9d\82Â\83t\83@\83C\83A\83E\83I\81[\83\8b\83c\81[\83\8b\82ª\82 \82ê\82Î\81A\91Î\89\9e\82·\82é\82æ\82¤\82É\8f\91\82«\82©\82¦\82é\82±\82Æ\82Í\89Â\94\\82Å\82·\81B\97á\82¦\82ÎLinux\82Ìipchains\82É\8f\91\82«\8a·\82¦\82é\82±\82Æ\82Í\89Â\94\\82Å\82·\81B
-</BLOCKQUOTE>
-
-<LI>
-\92[\96\96\96\88\82É\83v\83\8d\83Z\83X\82ª\90\90¬\82³\82ê\82Ä\91å\97Ê\82É\8fí\92\93\82µ\8bC\8e\9d\82¿\97Ç\82­\82 \82è\82Ü\82¹\82ñ\81B\88ê\82Â\82É\82Ü\82Æ\82Ü\82è\82Ü\82¹\82ñ\82©\81B
-
-<BLOCKQUOTE>
-\83A\83\8b\83S\83\8a\83Y\83\80\82ð\8aÈ\92P\82É\82·\82é\82½\82ß\82É\8d¡\82Ì\95û\8e®\82ð\8eæ\82è\82Ü\82µ\82½\81B\8aÄ\8e\8b\83v\83\8d\83Z\83X\82ð\88ê\82Â\82É\82Ü\82Æ\82ß\82é\82±\82Æ\82à\89Â\94\\82Å\82µ\82å\82¤\82ª\81A\91½\90\94\82Ì\8e\9e\8aÔ\91Ò\82¿\82Æ\83A\83N\83Z\83X\91Ò\82¿\82ð\90§\8cä\82·\82é\82Ì\82Í\81A\83T\81[\83r\83X\96W\8aQ\82»\82Ì\91¼\82Ì\8dl\97\93_\82à\82 \82è\81A\82©\82È\82è\96Ê\93|\82Å\82·\81B\8aO\95\94\8fð\8c\8f\82ð\8a¨\88Ä\82·\82é\82Æ\88ê\82Â\82É\82Ü\82Æ\82ß\82é\8bÙ\8b}\93x\82ª\92á\82¢\82Æ\8dl\82¦\82Ä\8cã\89ñ\82µ\82É\82µ\82Ä\82¢\82Ü\82·\81B
-</BLOCKQUOTE>
-
-<LI>
-IPv6\82É\91Î\89\9e\82Å\82«\82Ü\82·\82©\81B
-
-<BLOCKQUOTE>
-Version 
-1.2.0\82É\82¨\82¢\82Ä\91Î\89\9e\82µ\82Ü\82µ\82½\81B
-</BLOCKQUOTE></LI>
-
-</UL>
-</body>
-</HTML>
+<html LANG="jp">\r
+<head>\r
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=Shift_JIS">\r
+\r
+<title>Opengate Q & A</title>\r
+</head>\r
+\r
+\r
+<body bgcolor=#fafff0>\r
+\r
+<H3>Opengate Q &amp; A</H3>\r
+\r
+\88Ó\8b`\r
+<UL>\r
+<LI>\r
+\82»\82à\82»\82à\89½\8cÌ\94F\8fØ\82È\82Ç\82ª\95K\97v\82È\82Ì\82Å\82·\82©\81B\92N\82Å\82à\83l\83b\83g\83\8f\81[\83N\82ª\8eg\82¦\82Ä\97Ç\82¢\82Å\82Í\82È\82¢\82Å\82·\82©\81B\r
+\r
+<BLOCKQUOTE>\r
+\8ae\83l\83b\83g\83\8f\81[\83N\82Í\81A\82»\82Ì\90Ý\92u\8eï\8e|\82Æ\8co\94ï\95\89\92S\82É\8f]\82Á\82½\97\98\97p\82ª\8b\81\82ß\82ç\82ê\82Ü\82·\81B\8c\88\82µ\82Ä\8e©\97R\97\98\97p\82ª\91O\92ñ\82Å\82Í\82 \82è\82Ü\82¹\82ñ\81B\82³\82ç\82É\81A\83C\83\93\83^\81[\83l\83b\83g\8fã\82Å\82Í\81A\94îæ\8e\92\86\8f\9d\82â\8d¼\8b\\81A\95s\90³\83A\83^\83b\83N\93\99\82Ì\94½\8eÐ\89ï\93I\8ds\93®\82ª\94­\90\82µ\82Ä\82¢\82Ü\82·\81B\91g\90D\82Æ\82µ\82Ä\82Í\82»\82Ì\82æ\82¤\82È\8ds\93®\82ð\8d\\90¬\88õ\82É\8bN\82±\82µ\82Ä\97~\82µ\82­\82 \82è\82Ü\82¹\82ñ\81B\8ae\8e©\82ª\90Ó\94C\82ð\8e\9d\82Á\82Ä\8ds\93®\82µ\82Ä\82¢\82½\82¾\82­\82½\82ß\82Ì\88ê\82Â\82Ì\95û\96@\82Æ\82µ\82Ä\96{\83V\83X\83e\83\80\82ª\82 \82è\82Ü\82·\81B\r
+</BLOCKQUOTE>\r
+\r
+<LI>\r
+\92[\96\96\82ÌOS\82É\95t\90\8f\82·\82é\94F\8fØ\82ð\97\98\97p\82·\82é\82Ì\82Å\82Í\83_\83\81\82È\82Ì\82Å\82·\82©\81B\r
+\r
+<BLOCKQUOTE>\r
+\93\9d\88ê\82µ\82½PC\8aÂ\8b«\82Ì\8d\\92z\82Æ\88Û\8e\9d\82ª\89Â\94\\82È\83V\83X\83e\83\80\82Ì\8fê\8d\87\82É\82Í\81A\92[\96\96OS\82Ì\94F\8fØ\83V\83X\83e\83\80\82ð\97\98\97p\82µ\82½\95û\82ª\97Ç\82¢\82Æ\8ev\82¢\82Ü\82·\81B\82µ\82©\82µ\95s\93Á\92è\91½\90\94\82ª\95s\93Á\92è\8b@\8aí\82ð\90Ú\91±\82·\82é\82æ\82¤\82È\8aÂ\8b«\82Å\82Í\8b@\94\\82µ\82Ü\82¹\82ñ\81B\r
+</BLOCKQUOTE>\r
+\r
+<LI>\r
+\83A\83N\83Z\83X\82³\82ê\82é\91¤\82Ì\83T\81[\83o\82ª\8ae\8e©\82Å\94í\8aQ\82ð\8eó\82¯\82È\82¢\82æ\82¤\82É\81A\94F\8fØ\82»\82Ì\91¼\82Ì\83Z\83L\83\85\83\8a\83e\83B\95Û\8e\9d\82ð\8ds\82¤\82±\82Æ\82ª\96{\97\88\82Å\82Í\82È\82¢\82Å\82·\82©\81B\r
+\r
+<BLOCKQUOTE>\r
+\82»\82ê\82à\95K\97v\82Å\82µ\82å\82¤\81B\82µ\82©\82µ\91å\8aw\82Ì\82æ\82¤\82É\91½\90\94\82Ì\91½\97l\82È\90l\8aÔ\82ª\94ä\8ar\93I\8e©\97R\82É\97\98\97p\82Å\82«\82é\83l\83b\83g\83\8f\81[\83N\8aÂ\8b«\82ð\92ñ\8b\9f\82µ\82Ä\82¢\82é\91g\90D\82Å\82Í\81A\8aO\95\94\82É\91Î\82µ\82Ä\97l\81X\82È\83g\83\89\83u\83\8b\82ð\8bN\82±\82µ\8bê\8fî\82ª\8añ\82¹\82ç\82ê\82é\89Â\94\\90«\82ª\8d\82\82­\82È\82è\82Ü\82·\81B\82»\82Ì\90Ó\94C\82Í\83g\83\89\83u\83\8b\8c´\88ö\82ð\8dì\82Á\82½\96{\90l\82É\8eæ\82Á\82Ä\82¢\82½\82¾\82­\95K\97v\82ª\82 \82è\82Ü\82·\81B\82Ü\82½\81A\83l\83b\83g\83\8f\81[\83N\97\98\97p\82É\82Í\81A\82»\82Ì\96Ú\93I\82É\8d\87\82Á\82½\97\98\97p\8eÒ\82Ì\90§\8cÀ\82ª\82 \82é\82±\82Æ\82ª\92Ê\8fí\82¾\82Æ\8ev\82¢\82Ü\82·\81B\82æ\82Á\82Ä\83A\83N\83Z\83X\82·\82é\91¤\82Å\82Ì\94F\8fØ\82à\95K\97v\82Æ\8dl\82¦\82Ü\82·\81B\r
+</BLOCKQUOTE>\r
+\r
+<LI>\r
+\r
+\89½\8cÌ\81A\8cö\8aJ\8cÅ\92è\92[\96\96\82Æ\8fî\95ñ\83R\83\93\83Z\83\93\83g\82Ì\97¼\95û\82ð\91Î\8fÛ\82Æ\82·\82é\95K\97v\82ª\82 \82é\82Ì\82Å\82·\82©\81B\8cö\8aJ\8cÅ\92è\92[\96\96\82Í\92[\96\96OS\82Ì\94F\8fØ\82ª\89Â\94\\82Å\82Í\82È\82¢\82Å\82·\82©\81B\r
+\r
+<BLOCKQUOTE>\r
+\91S\82Ä\82Ì\8cö\8aJ\8cÅ\92è\92[\96\96\82ð\83l\83b\83g\83\8f\81[\83N\8aÇ\97\9d\95\94\96å\82ª\93\9d\88ê\93I\82É\94z\92u\82µ\81A\82»\82Ì\83n\81[\83h\83E\83F\83A\82ð\95s\90³\91\80\8dì\82©\82ç\8eç\82ê\82é\8fó\8bµ\82ª\89Â\94\\82Å\82 \82ê\82Î\82»\82ê\82Å\82à\97Ç\82¢\82Æ\8ev\82¢\82Ü\82·\81B\82µ\82©\82µ\8c»\8eÀ\93I\82É\82Í\8ag\8eU\82µ\82½\8cö\8aJ\8fê\8f\8a\82Ö\91½\90\94\94z\92u\82·\82é\82±\82Æ\82ª\91½\82­\81A\97l\81X\82È\8d¢\93ï\82ª\94º\82¢\82Ü\82·\81B\82Ü\82½\8aù\82É\94z\92u\82³\82ê\82½\94F\8fØ\8b@\94\\82Ì\96³\82¢\92[\96\96\82â\95s\8f\\95ª\82È\8aÇ\97\9d\89º\82Ì\92[\96\96\82ª\90\94\91½\82­\82 \82è\82Ü\82·\81B\82±\82ê\82ç\82É\82à\91Î\89\9e\82·\82é\95K\97v\82ª\82 \82è\82Ü\82·\81B\r
+</BLOCKQUOTE>\r
+\r
+<LI>\r
+\83\8b\81[\83^\82â\83t\83@\83C\83A\83E\83I\81[\83\8b\93\99\81A\92Ê\89ß\93_\82Å\82Ì\8bL\98^\8eæ\93¾\82Å\82Í\82¢\82¯\82È\82¢\82Ì\82Å\82·\82©\81B\r
+<BLOCKQUOTE>\r
+\82±\82Ì\8bL\98^\82Å\82ÍIP\83A\83h\83\8c\83X\82Í\95ª\82©\82è\82Ü\82·\81B\82µ\82©\82µ\95s\93Á\92è\91½\90\94\82ª\8fo\93ü\82è\82·\82é\8fê\8f\8a\82Ì\8fê\8d\87\82Í\92N\82ª\97\98\97p\82µ\82½\82Ì\82©\95ª\82©\82è\82Ü\82¹\82ñ\81B\97\98\97p\8eÒ\82ª\93Á\92è\82Å\82«\82é\95\94\89®\82Ì\8fê\8d\87\82Í\82±\82Ì\82æ\82¤\82È\8bL\98^\82Å\82à\97Ç\82¢\82Å\82µ\82å\82¤\81B\r
+</BLOCKQUOTE>\r
+\r
+<LI>\r
+MAC\83A\83h\83\8c\83X\82Å\8cÂ\90l\8e¯\95Ê\82ð\82·\82é\95û\8e®\82à\82 \82é\82æ\82¤\82Å\82·\82ª\81B\r
+<BLOCKQUOTE>\r
+Opengate\82Í\8cÂ\90l\8e¯\95Ê\82ð\83\86\81[\83UID\82Æ\83p\83X\83\8f\81[\83h\82Å\8ds\82Á\82Ä\82¢\82Ü\82·\81B\82±\82Ì\94F\8fØ\93ü\97Í\82Ì\91ã\82í\82è\82ÉMAC\83A\83h\83\8c\83X\82ð\8eg\82¤\82±\82Æ\82Í\89Â\94\\82Å\82µ\82å\82¤\81B<BR>\r
+\82µ\82©\82µMAC\83A\83h\83\8c\83X\82ð\97\98\97p\82·\82é\95û\8e®\82Í\81AMAC\83A\83h\83\8c\83X\82Æ\82»\82Ì\8f\8a\97L\8eÒ\82Æ\82Ì\8aÖ\8cW\82ð\91O\82à\82Á\82Ä\93o\98^\82·\82é\95K\97v\82ª\82 \82è\82Ü\82·\81B\82Ü\82½\8b@\8aí\8f÷\93n\81E\94p\8aü\82Ì\8dÛ\82É\93o\98^\8fÁ\8b\8e\81A\8b@\8aí\8dX\90V\82Ì\8dÛ\82É\93o\98^\8dX\90V\82ð\8ds\82¤\95K\97v\82ª\82 \82è\82Ü\82·\82ª\81A\97\98\97p\8eÒ\82É\93o\98^\8fÁ\8b\8e\82ð\97ã\8ds\82³\82¹\82é\82Ì\82Í\93ï\82µ\82¢\82Æ\8ev\82í\82ê\82Ü\82·\81B\82±\82ê\82ç\82Ì\89^\97p\8fã\82Ì\96â\91è\93_\82ð\89ð\8c\88\82µ\82È\82¯\82ê\82Î\82È\82è\82Ü\82¹\82ñ\81B\82Ü\82½MAC\83A\83h\83\8c\83X\82Í\83C\81[\83T\83l\83b\83g\90Ú\91±\92[\96\96\82Ì\82Ý\82É\91\8dÝ\82·\82é\93_\81A\83\8b\81[\83^\82ð\92´\82¦\82Ä\93`\82í\82ç\82È\82¢\93_\81A\8bU\91\95\82ª\89Â\94\\82Å\82 \82é\93_\82È\82Ç\82à\93ï\93_\82Æ\8c¾\82¦\82Ü\82·\81B\r
+</BLOCKQUOTE>\r
+\r
+<LI>\r
+\8dÅ\8bß\81A\82³\82Ü\82´\82Ü\82È\83l\83b\83g\83\8f\81[\83N\94F\8fØ\83V\83X\83e\83\80\82ª\94­\95\\82³\82ê\82Ä\82¢\82é\82æ\82¤\82Å\82·\82ª\81B\r
+<BLOCKQUOTE>\r
+Opengate\82Í\88È\89º\82Ì\93_\82ð\96\9e\82½\82µ\82Ä\82¢\82é\93_\82ª\93Á\92¥\82Æ\8dl\82¦\82Ü\82·\81B\92[\96\96\82É\91Î\82·\82é\83\\83t\83g\81A\83n\81[\83h\81A\90Ý\92u\8c`\91Ô\81A\90Ú\91±\95û\96@\82È\82Ç\82Ì\90§\8cÀ\82ª\8f­\82È\82¢\8e\96\81B\97\98\97p\8eÒ\82Ì\8ew\93±\82â\8aÇ\97\9d\82ª\8dÅ\8f¬\8cÀ\82Å\8dÏ\82Þ\8e\96\81B\88ê\94Ê\93I\82È\83\\83t\83g/\83n\81[\83h\82Å\8d\\90¬\82³\82ê\82Ä\82¨\82è\81A\8aù\91\83l\83b\83g\83\8f\81[\83N\82Ö\82Ì\93±\93ü\82ª\97e\88Õ\82Å\82 \82é\8e\96\81B\97\98\97p\8aJ\8en/\8fI\97¹\82É\8dÛ\82µ\82Ä\91¦\8dÀ\82É\83l\83b\83g\83\8f\81[\83N\82Ì\8aJ\95ú/\95Â\8d½\82ª\8ds\82í\82ê\82é\8e\96\81BIPv4\82ÆIPv6\82Ì\97¼\95û\82Ì\92Ê\90M\82ð\93¯\8e\9e\82É\8aJ\95ú\95Â\8d½\82Å\82«\82é\82±\82Æ\81B\r
+</BLOCKQUOTE>\r
+\r
+<LI>\r
+\91¼\82Ì\97p\93r\82É\82Í\97\98\97p\82Å\82«\82Ü\82·\82©\81B\r
+<BLOCKQUOTE>\r
+\96{\83V\83X\83e\83\80\82Í\81A\83\86\81[\83UID\82Æ\83p\83X\83\8f\81[\83h\82ðWeb\8co\97R\82Å\8eó\82¯\95t\82¯\81A\82»\82ÌIP\83A\83h\83\8c\83X\82Æ\82Ì\83p\83P\83b\83g\82Ì\92Ê\89ß\82ð\8b\96\89Â\82·\82é\83V\83X\83e\83\80\82Å\82·\81B\82»\82Ì\98g\91g\82Ý\82Ì\8aÂ\8b«\82Å\82 \82ê\82Î\97\98\97p\82Å\82«\82é\82Æ\8ev\82¢\82Ü\82·\81B\97á\82¦\82Î\81A\83G\83N\83X\83g\83\89\83l\83b\83g\82©\82ç\83C\83\93\83g\83\89\83l\83b\83g\82É\91Î\82µ\82Ä\83A\83N\83Z\83X\82·\82é\82½\82ß\82Ì\83o\83C\83p\83X\91\8b\8cû\82ð\90Ý\92u\82·\82é\82±\82Æ\82É\82à\97\98\97p\82Å\82«\82é\82Å\82µ\82å\82¤\81B\93\96\91R\82È\82ª\82ç\8bÉ\82ß\82Ä\8d\82\93x\82È\83Z\83L\83\85\83\8a\83e\83B\83\8c\83x\83\8b\82ð\95K\97v\82Æ\82·\82é\83l\83b\83g\83\8f\81[\83N\82Å\82È\82¢\8fê\8d\87\82Å\82·\82ª\81B\r
+</BLOCKQUOTE>\r
+\r
+<LI>\r
+Java\82ª\93®\82©\82È\82¢\92[\96\96\82à\82 \82è\82Ü\82·\82ª\81B\r
+<BLOCKQUOTE>\r
+Java\82ª\93®\82©\82È\82¢\82à\82µ\82­\82Í\83C\83\93\83X\83g\81[\83\8b\82³\82ê\82Ä\82¢\82È\82¢\92[\96\96\82Å\82à\81A\97\98\97p\8eÒ\82ª\94F\8fØ\83y\81[\83W\82É\82¨\82¢\82Ä\97v\8b\81\82µ\82½\90Ú\91±\8cp\91±\8e\9e\8aÔ\82¾\82¯\83l\83b\83g\83\8f\81[\83N\82ð\8aJ\95ú\82µ\82Ü\82·\81B\82½\82¾\82µ\81A\8fæ\82Á\8eæ\82è\82â\95ú\92u\82É\91Î\89\9e\82·\82é\82½\82ß\81A\88ê\92è\8e\9e\8aÔ\8aÔ\8au\82Å\81AARP\83R\83}\83\93\83h\82Æ\83t\83@\83C\83A\83E\83H\81[\83\8b\92Ê\89ß\83p\83P\83b\83g\90\94\82Å\83`\83F\83b\83N\82µ\82Ü\82·\81B\82Ü\82½\81A\8b\96\89Â\83y\81[\83W\82Ì\97\98\97p\92\86\92f\82Ì\83\8a\83\93\83N\82ð\83N\83\8a\83b\83N\82·\82é\82±\82Æ\82Å\83l\83b\83g\83\8f\81[\83N\82ð\95Â\8d½\82Å\82«\82Ü\82·\81B\r
+</BLOCKQUOTE></LI>\r
+\r
+\r
+</UL>\r
+\r
+\r
+\97\98\97p\r
+<UL>\r
+<LI>\r
+\96³\90üLAN\82Å\8eg\82¦\82Ü\82·\82©\81B\r
+\r
+<BLOCKQUOTE>\r
+\8eg\82¦\82Ü\82·\81B\82½\82¾\82µ\81A\90e\8bÇ\93à\82ÅNAT\93\99\82É\82æ\82éIP\83A\83h\83\8c\83X\95Ï\8a·\82ª\82È\82³\82ê\82Ä\82¢\82È\82¢\82±\82Æ\82ª\95K\97v\82Å\82·\81B\r
+</BLOCKQUOTE>\r
+\r
+<LI>\r
+DHCP\82âNAT\82Æ\82Ì\8b¤\97p\82Í\82Å\82«\82Ü\82·\82©\81B\r
+\r
+<BLOCKQUOTE>\r
+\82Å\82«\82Ü\82·\81B\82»\82Ì\82æ\82¤\82È\8eg\82¢\95û\82ª\91½\82¢\82Æ\8ev\82¢\82Ü\82·\81B\82½\82¾\82µNAT\82Í\93¯\88ê\83Q\81[\83g\83E\83F\83C\83}\83V\83\93\8fã\82Å\93®\82©\82·\8fê\8d\87\82Å\82·\81B\96{\83Q\81[\83g\83E\83F\83C\82Æ\92[\96\96\8cQ\82Æ\82Ì\8aÔ\82ÉNAT\91\95\92u\82ð\8b²\82Þ\82±\82Æ\82Í\82Å\82«\82Ü\82¹\82ñ\81B\93¯\82¶IP\83A\83h\83\8c\83X\82ð\91½\90l\90\94\82ª\8eg\97p\82·\82é\8c`\82É\82È\82é\82½\82ß\82Å\82·\81B\r
+</BLOCKQUOTE>\r
+\r
+<LI>\r
+MAC\83A\83h\83\8c\83X\82Í\8eæ\93¾\82Å\82«\82Ü\82·\82©\81B\r
+<BLOCKQUOTE>\r
+Ver0.53\82É\82Ä\91Î\89\9e\82µ\82Ü\82µ\82½\81B\82½\82¾\82µ\81A\83T\81[\83o\91¤\82ÅARP\82©\82ç\8eæ\93¾\82·\82é\82½\82ß\81A\83T\81[\83o\91¤\82©\82ç\8c©\82¦\82é\83A\83h\83\8c\83X\82Ì\82Ý\82Å\82·\81B\91ã\97\9dARP\82ª\82 \82é\82Æ\82»\82Ì\92\86\8cp\83A\83h\83\8c\83X\82Æ\82È\82è\82Ü\82·\81B\82Ü\82½\81A\93\96\91R\82È\82ª\82ç\81A\83C\81[\83T\83l\83b\83g\82Å\82Ì\82Ý\97L\8cø\82Å\82·\81B\r
+</BLOCKQUOTE>\r
+\r
+<LI>\r
+\88ê\95\94\82Ì\83T\81[\83r\83X\82Í\94F\8fØ\96³\82µ\82É\82µ\82½\82¢\82Ì\82Å\82·\82ª\81B\82à\82µ\82­\82Í\94F\8fØ\8cã\82à\88ê\95\94\82Ì\83T\81[\83r\83X\82ð\90§\8cÀ\82µ\82½\82¢\82Ì\82Å\82·\82ª\81B\r
+\r
+<BLOCKQUOTE>\r
+\8f\89\8aú\8fó\91Ô\82Ì\83t\83@\83C\83A\83E\83I\81[\83\8b\83\8b\81[\83\8b\82É\95K\97v\82È\82à\82Ì\82ð\92Ç\89Á\82·\82ê\82Î\89Â\94\\82Å\82·\81BOpengate\82Í\82±\82Ì\8f\89\8aú\8fó\91Ô\82É\83\8b\81[\83\8b\82ð\91}\93ü\81E\8dí\8f\9c\82µ\82Ü\82·\81B\82æ\82Á\82Ä\81A\92Ç\89Á\88Ê\92u\82ð\8dH\95v\82·\82ê\82Î\97l\81X\82È\90§\8cä\82ª\89Â\94\\82Å\82·\81B\97á\82¦\82Î\81A\93Á\92è\82Ì\83T\83C\83g\82ð\83A\83N\83Z\83X\8b\96\89Â\82à\82µ\82­\82Í\95s\8b\96\89Â\82É\8cÅ\92è\82·\82é\82±\82Æ\82à\82Å\82«\82Ü\82·\81B\r
+</BLOCKQUOTE>\r
+\r
+<LI>\r
+\97\98\97p\8eÒ\82Ì\83\8c\83x\83\8b\82É\82æ\82Á\82Ä\83T\81[\83r\83X\82ð\90§\8cÀ\82µ\82½\82¢\82Ì\82Å\82·\82ª\81B\r
+\r
+<BLOCKQUOTE>\r
+\90Ý\92è\83t\83@\83C\83\8b\82É\82¨\82¢\82ÄExtraSet\82Ì\90Ý\92è\82ð\82µ\82Ä\82­\82¾\82³\82¢\81BExtraSet\82Ì\8fð\8c\8f\82É\8d\87\82¤\83\86\81[\83U\82ÍExtraSet\82Å\8ew\92è\82µ\82½\90Ý\92è\92l\82ð\8fã\8f\91\82«\82µ\82Ü\82·\81B\r
+\82Ü\82½\82ÍPerl\83X\83N\83\8a\83v\83g\82Ì\8eg\97p\82ð\97L\8cø\82É\82µ\82Ä\81A\83X\83N\83\8a\83v\83g\92\86\82Å\90§\8cä\82­\82¾\82³\82¢\81B\r
+</BLOCKQUOTE>\r
+\r
+<LI>\r
+\88ê\8e\9e\93I\97\98\97p\8eÒ\82Ö\82Ì\91Î\89\9e\82Í\82Ç\82¤\82µ\82Ü\82·\82©\81B\r
+\r
+<BLOCKQUOTE>\r
+\94F\8fØ\83T\81[\83o\82Ö\82Ì\88ê\8e\9e\93I\82È\97\98\97p\8eÒ\93o\98^\82ª\95K\97v\82Å\82·\81BOpengate\82Í\81A\95¡\90\94\82Ì\94F\8fØ\83T\81[\83o\82É\83\86\81[\83U\82ð\90U\82è\95ª\82¯\82é\82æ\82¤\82É\8ew\92è\82Å\82«\82Ü\82·\82Ì\82Å\81A\95Ê\93r\82É\88ê\8e\9e\97\98\97p\8eÒ\82Ì\82½\82ß\82Ì\94F\8fØ\83T\81[\83o\82ð\90Ý\92u\82·\82é\82±\82Æ\82à\82Å\82«\82Ü\82·\81Bftp\83T\81[\83o\82ª\93®\82¯\82Î\97Ç\82¢\82Ì\82ÅWindows\82È\82Ç\82Ì\8aÈ\88Õ\83T\81[\83o\82Å\82à\89Â\94\\82Æ\8dl\82¦\82Ü\82·\81B\r
+<BR>\r
+\93\96\91å\8aw\82Å\82Í\81A\8c»\8dÝ\82Ì\82Æ\82±\82ë\81A\90}\8f\91\8aÙ\8aO\95\94\97\98\97p\8eÒ\82â\8aw\89ï\8eQ\89Á\8eÒ\82È\82Ç\82Ì\88ê\8e\9e\93I\97\98\97p\8eÒ\82É\91Î\82µ\82Ä\88È\89º\82Ì\89^\97p\82ð\8ds\82Á\82Ä\82¢\82Ü\82·\81B\88ê\8e\9e\97\98\97p\8eÒ\97p\82Ì\94F\8fØ\83T\81[\83o\82ð\97p\88Ó\82·\82é\81B\95K\97v\90\94\82Ì\97\98\97p\8eÒID\82ð\97\98\97p\8aú\8cÀ\95t\82«\82Å\93o\98^\82µ\81A\93¯\8e\9e\82É\97\98\97p\8eÒID\82Æ\83p\83X\83\8f\81[\83h\82¨\82æ\82Ñ\97\98\97p\8fã\82Ì\92\8d\88Ó\82ð\8f\91\82¢\82½\97p\8e\86\82ð\97\98\97p\8eÒID\96\88\82É\88ó\8dü\82·\82é\81B\97\98\97p\8aó\96]\8eÒ\82ª\97\88\96K\82·\82ê\82Î\81A\90g\8c³\82ð\8am\94F\82µ\82Ä\97p\8e\86\82ð1\96\87\93n\82·\81B\93\96\91R\82È\82ª\82ç\96{\97\98\97p\8eÒID\82Í\8aw\93à\82Ì\83T\81[\83o\82Ö\82Ì\83\8d\83O\83C\83\93\93\99\82É\82Í\97\98\97p\82Å\82«\82Ü\82¹\82ñ\81B\r
+</BLOCKQUOTE>\r
+\r
+<LI>\r
+\83p\83X\83\8f\81[\83h\82Ì\8eç\94é\82Í\95Û\82Ä\82Ü\82·\82©\81B\r
+\r
+<BLOCKQUOTE>\r
+\92[\96\96\82Æ\83Q\81[\83g\83E\83F\83C\8aÔ\82ÍWeb\92Ê\90M\82Å\83p\83X\83\8f\81[\83h\82ð\91\97\82è\82Ü\82·\81B\82æ\82Á\82ÄWeb\83T\81[\83o\82ðSSL\89»\82·\82ê\82Î\8eç\94é\82ª\95Û\82Ä\82Ü\82·\81B\83Q\81[\83g\83E\83F\83C\82Æ\94F\8fØ\83T\81[\83o\82Ì\8aÔ\82Í\81A\8eç\94é\8b@\94\\82Ì\82 \82é\94F\8fØ\83v\83\8d\83g\83R\83\8b\82É\82æ\82ê\82Î\89Â\94\\82Å\82·\81BOpengate\82Í\81Apop3s,ftps,Radius,PAM\82É\91Î\89\9e\82µ\82Ä\82¢\82Ü\82·\81BPAM\82Í\91½\82­\82Ì\94F\8fØ\83v\83\8d\83g\83R\83\8b\82ð\83T\83|\81[\83g\82µ\82Ü\82·\81B\r
+</BLOCKQUOTE>\r
+\r
+<LI>\r
+\83X\83P\81[\83\89\83r\83\8a\83e\83B\82Í\82Ç\82¤\82Å\82·\82©\81B\83p\83t\83H\81[\83}\83\93\83X\82Í\82Ç\82¤\82Å\82·\82©\81B\r
+\r
+<BLOCKQUOTE>\r
+\90\94\8f\\91ä\82Ì\8eg\97p\82Å\82Í\96â\91è\96³\82­\8eg\82¦\82Ä\82¢\82Ü\82·\81B\83N\83\89\83XC\92ö\93x\82Ì\97\98\97p\82Í\82Å\82«\82é\82Æ\8ev\82¢\82Ü\82·\81B\96{\83V\83X\83e\83\80\82Í\81A\83t\83@\83C\83A\83E\83I\81[\83\8b\83\\83t\83g\82Ì\83p\83P\83b\83g\83t\83B\83\8b\83^\83\8a\83\93\83O\8bK\91¥\82ð\92Ç\89Á\81E\8dí\8f\9c\82·\82é\95û\8e®\82Å\82 \82è\81A\8ae\83N\83\89\83C\83A\83\93\83g\82©\82ç\82Ì\97\98\97p\8aJ\8en\97v\8b\81\8e\9e\82ð\95Ê\82É\82·\82ê\82Î\96w\82Ç\95\89\89×\82Æ\82È\82è\82Ü\82¹\82ñ\81B\97\98\97p\92\86\82Ì\83p\83t\83H\81[\83}\83\93\83X\82Í\81A\83p\83P\83b\83g\83t\83B\83\8b\83^\83\8a\83\93\83O\82â\83p\83P\83b\83g\93]\91\97\82Ì\8f\88\97\9d\94\\97Í\82É\88Ë\91\82·\82é\82Æ\8ev\82¢\82Ü\82·\81B\82È\82¨\97Ê\93I\82È\90§\8cÀ\82Æ\82µ\82Ä\82Í\81A\97\98\97p\83N\83\89\83C\83A\83\93\83g\96\88\82É\82P\83v\83\8d\83Z\83X\82ª\8fí\92\93\82·\82é\82±\82Æ\82ª\82 \82è\82Ü\82·\81B\82µ\82©\82µ\83v\83\8d\83Z\83X\90\94\82Ì\8dÅ\91å\92l\82Í\83J\81[\83l\83\8b\82Å\92²\90®\82Å\82«\82Ü\82·\82µ\81A\83N\83\89\83XC\92ö\93x\96\88\82É\95ª\8a\84\82µ\82Ä\83V\83X\83e\83\80\89^\97p\82·\82é\95û\82ª\83Q\81[\83g\83E\83F\83C\82É\82¨\82¯\82é\83p\83P\83b\83g\83t\83B\83\8b\83^\83\8a\83\93\83O\93\99\82Ì\94\\97Í\82©\82ç\82·\82é\82Æ\8c»\8eÀ\93I\82Å\82µ\82å\82¤\81B\r
+</BLOCKQUOTE></LI>\r
+\r
+<LI>\r
+Web\88È\8aO\82Ì\97\98\97p\82É\82Í\91Î\89\9e\82µ\82Ü\82·\82©\81B\r
+<BLOCKQUOTE>\r
+\82Ü\82¸Web\83u\83\89\83E\83U\82Å\94F\8fØ\82ð\8eó\82¯\82Ä\81A\82»\82Ì\83u\83\89\83E\83U\82ð\8dÅ\8f¬\89»\82µ\82Ä\82©\82ç\8eg\82¢\82Ü\82·\81B\82È\82¨\81A\83t\83@\83C\83A\83E\83H\81[\83\8b\83\8b\81[\83\8b\83\8a\83X\83g\82É\82¨\82¢\82Ä\81AOpengate\82ª\91}\93ü\82·\82é\83\8b\81[\83\8b\94Ô\8d\86\82æ\82è\91O\82É\83\8b\81[\83\8b\82ð\90Ý\92è\82·\82ê\82Î\81A\88ê\95\94\83v\83\8d\83g\83R\83\8b\82É\91Î\82·\82é\96³\8fð\8c\8f\8b\91\94Û\82â\96³\8fð\8c\8f\8b\96\89Â\82à\90Ý\92è\89Â\94\\82Å\82·\81B\r
+</BLOCKQUOTE></LI>\r
+\r
+<LI>\r
+\92[\96\96\82Ì\90Ú\91±\8fó\8bµ\82ð\92²\82×\82é\82±\82Æ\82Í\82Å\82«\82Ü\82·\82©\81B\r
+<BLOCKQUOTE>\r
+\8aJ\95ú\82Æ\95Â\8d½\82Ì\97\9a\97ð\82Í\81Asyslog\8co\97R\82Å/var/log/opengate.log\82É\95Û\91\82³\82ê\82Ü\82·\81B\92[\96\96\82²\82Æ\82É\88ê\82Â\82Ì\83v\83\8d\83Z\83X\82Å\8aÄ\8e\8b\82µ\82Ä\82¨\82è\81A\8c»\8dÝ\90Ú\91±\92\86\82Ì\92[\96\96\8fó\8bµ\82Í\81A\81ups -axww | grep opengate\81v\82Å\8c©\82é\82±\82Æ\82ª\8fo\97\88\82Ü\82·\81B\82±\82ÌPS\83R\83}\83\93\83h\82Í\83v\83\8d\83Z\83XID\81A\83\86\81[\83UID\81AIP\83A\83h\83\8c\83X\81A\83t\83@\83C\83A\83E\83H\81[\83\8b\83\8b\81[\83\8b\94Ô\8d\86\82ð\95\\8e¦\82µ\82Ü\82·\81B\82à\82µ\81A\82 \82éOpengate\82Ì\83v\83\8d\83Z\83X\82ðkill\82·\82ê\82Î\81A\91Î\89\9e\83t\83@\83C\83A\83E\83H\81[\83\8b\83\8b\81[\83\8b\82à\8dí\8f\9c\82³\82ê\82Ü\82·\81B\83t\83@\83C\83A\83E\83H\81[\83\8b\82Ì\8aJ\95ú\8fó\8bµ\82Í\81uipfw list\81v\82Æ\81uip6fw list\81v\82Å\8c©\82é\82±\82Æ\82ª\8fo\97\88\82Ü\82·\81B\r
+</BLOCKQUOTE></LI>\r
+\r
+</UL>\r
+\93±\93ü\81E\8aJ\94­\r
+<UL>\r
+<LI>\r
+\83C\83\93\83X\83g\81[\83\8b\82µ\82½\82ª\93®\82«\82Ü\82¹\82ñ\81B\r
+\r
+<BLOCKQUOTE>\r
+\91½\90\94\82Ì\83\\83t\83g\83E\83F\83A\82Ì\92\87\89î\82ð\82·\82é\83V\83X\83e\83\80\82Å\82·\82Ì\82Å\83f\83o\83b\83O\82Í\96Ê\93|\82¾\82Æ\8ev\82¢\82Ü\82·\81B\95Ê\93r\82É\97p\88Ó\82µ\82½\83`\83F\83b\83N\8d\80\96Ú\8bL\8fq\82Ì\83t\83@\83C\83\8b\82ð\8c©\82Ä\82­\82¾\82³\82¢\81B\r
+</BLOCKQUOTE>\r
+\r
+<LI>\r
+\97\98\97p\81E\89ü\95Ï\81E\94z\95z\82Í\89Â\94\\82Å\82·\82©\81B\r
+\r
+<BLOCKQUOTE>\r
+GPL\89º\82Å\89Â\94\\82Å\82·\81B\8d¡\8cã\82Ì\8aJ\94­\82Ì\82½\82ß\82É\81A\8aJ\94­\8eÒ\82Ü\82Å\98A\97\8d\92¸\82¯\82ê\82Î\8dK\82¢\82Å\82·\81B\83o\83O\81E\97v\96]\81E\89ü\95Ï\95ñ\8d\90\82ð\8a½\8c}\82µ\82Ü\82·\81B\r
+</BLOCKQUOTE>\r
+\r
+<LI>\r
+\94F\8fØWeb\83y\81[\83W\82Ì\83f\83U\83C\83\93\82ð\95Ï\82¦\82½\82¢\82Ì\82Å\82·\82ª\81B\r
+\r
+<BLOCKQUOTE>\r
+\8aeWeb\83y\81[\83W\82ÍHTML\83t\83@\83C\83\8b\82Æ\82µ\82Ä\93Æ\97§\82µ\82Ä\82¢\82Ü\82·\81B\82±\82ê\82ð\8f\91\82«\82©\82¦\82é\82±\82Æ\82Å\8aÈ\92P\82É\82Å\82«\82Ü\82·\81B\r
+</BLOCKQUOTE>\r
+\r
+<LI>\r
+\89p\8cê\81A\93ú\96{\8cê\88È\8aO\82Ì\95\\8e¦\82É\82µ\82½\82¢\82Ì\82Å\82·\82ª\81B\r
+\r
+<BLOCKQUOTE>\r
+en,ja\82Ì\83f\83B\83\8c\83N\83g\83\8a\82ª\81A\89p\8cê\82Æ\93ú\96{\8cê\82Ì\8bL\8fq\82Å\82·\81B\82±\82ê\82ð\8eQ\8dl\82É\82µ\82Ä\93¯\82\83f\83B\83\8c\83N\83g\83\8a\8d\\90¬\82ÅHTML\83t\83@\83C\83\8b\82ð\8dì\90¬\82µ\82Ä\82­\82¾\82³\82¢\81B\82³\82ç\82É\81A\90Ý\92è\83t\83@\83C\83\8b\92\86\82Ì\8c¾\8cê\90Ý\92è\82Æindex.html.var\82ð\92Ç\89Á\95Ï\8dX\82µ\82Ä\82­\82¾\82³\82¢\81B\82Ü\82½\81AJavaApplet\82Ì\95\\8e¦\82ð\95Ï\82¦\82é\82½\82ß\82É\83\\81[\83X\92\86\82Ì\83\81\83b\83Z\81[\83W\82ð\92Ç\89Á\95Ï\8dX\82­\82¾\82³\82¢\81B\r
+</BLOCKQUOTE>\r
+\r
+<LI>\r
+IP\83A\83h\83\8c\83X\82É\82æ\82è\91\8a\8eè\82ð\8am\94F\82µ\82Ä\82¢\82é\82æ\82¤\82Å\82·\82ª\81AIP\83X\83v\81[\83t\83B\83\93\83O\82Í\96â\91è\82Å\82Í\82È\82¢\82Å\82·\82©\81B\82Ü\82½\83T\81[\83r\83X\96W\8aQ\8dU\8c\82\82É\82Í\91Î\89\9e\82Å\82«\82Ü\82·\82©\81B\82»\82Ì\91¼\82Ì\83A\83^\83b\83N\82É\91Î\82µ\82Ä\82Í\82Ç\82¤\82Å\82·\82©\81B\r
+\r
+<BLOCKQUOTE>\r
+IP\83X\83v\81[\83t\83B\83\93\83O\82Í\83t\83@\83C\83A\83E\83I\81[\83\8b\82Ì\95û\82Ì\90Ý\92è\82Å\94ð\82¯\82ç\82ê\82é\82Æ\8ev\82¢\82Ü\82·\81B\82Ü\82½Opengate\82Í\81A\90³\82µ\82¢\83p\83X\83\8f\81[\83h\82ð\91\97\82Á\82Ä\82«\82½\83A\83h\83\8c\83X\82É\91Î\82µ\82Ä\8c\8a\82ð\8aJ\82¯\82é\82Ì\82Å\81AIP\83A\83h\83\8c\83X\82ð\8bU\82Á\82Ä\82à\82 \82Ü\82è\93¾\82É\82Í\82È\82è\82Ü\82¹\82ñ\81B\91¼\82ª\94F\8fØ\82ð\8eó\82¯\82Ä\8eg\82Á\82Ä\82¢\82é\93¯\82¶IP\83A\83h\83\8c\83X\82ð\8d¼\8fÌ\82µ\82Ä\83p\83P\83b\83g\82ð\97¬\82·\82±\82Æ\82Í\89Â\94\\82Å\82µ\82å\82¤\82ª\81A\8c»\8eÀ\93I\82È\97\98\97p\82Í\93ï\82µ\82¢\82Æ\8ev\82Á\82Ä\82¢\82Ü\82·\81B\83T\81[\83r\83X\96W\8aQ\82É\82Â\82¢\82Ä\82Í\81A\8aeIP\83A\83h\83\8c\83X\82É\91Î\82µ\82Ä\93Æ\8e©\82Ì\83|\81[\83g\94Ô\8d\86\82ð\88ê\82Â\91\97\82è\82Â\82¯\8cð\90M\82·\82é\8c`\91Ô\82Å\82·\82Ì\82Å\94ð\82¯\82ç\82ê\82é\82Æ\8ev\82¢\82Ü\82·\81B\96W\8aQ\82ð\8a®\91S\82É\8f\9c\8b\8e\82·\82é\82±\82Æ\82Í\93ï\82µ\82¢\82Å\82·\82ª\81A\83Z\83L\83\85\83\8a\83e\83B\83z\81[\83\8b\82ª\82 \82ê\82Î\82²\8b³\8e¦\89º\82³\82¢\81B\88«\88Ó\82ð\8e\9d\82Á\82½\97\98\97p\82É\91Î\82µ\82Ä\82Í\81A\91Î\8dô\82Æ\82µ\82Ä\8dl\82¦\82ç\82ê\82Ä\82¢\82é\8b@\94\\82È\82Ç\82ð\91g\82Ý\8d\87\82í\82¹\82é\82±\82Æ\82à\89Â\94\\82Å\82 \82ë\82¤\82Æ\8ev\82¢\82Ü\82·\81B\r
+</BLOCKQUOTE>\r
+\r
+\r
+<LI>\r
+\83T\81[\83o\82ÍFreeBSD\88È\8aO\82Å\93®\82«\82Ü\82·\82©\81B\r
+\r
+<BLOCKQUOTE>\r
+\8c»\8fó\82Å\82Í\81AFreeBSD\90ê\97p\82Ì\83t\83@\83C\83A\83E\83I\81[\83\8b\83c\81[\83\8bipfw\82ð\97\98\97p\82µ\82Ä\82¢\82é\82Ì\82Å\81A\91¼\82ÌOS\82Å\82Í\93®\82«\82Ü\82¹\82ñ\81B\93¯\93\99\82Ì\8b@\94\\82ð\8e\9d\82Â\83t\83@\83C\83A\83E\83I\81[\83\8b\83c\81[\83\8b\82ª\82 \82ê\82Î\81A\91Î\89\9e\82·\82é\82æ\82¤\82É\8f\91\82«\82©\82¦\82é\82±\82Æ\82Í\89Â\94\\82Å\82·\81B\97á\82¦\82ÎLinux\82Ìipchains\82É\8f\91\82«\8a·\82¦\82é\82±\82Æ\82Í\89Â\94\\82Å\82·\81B\r
+</BLOCKQUOTE>\r
+\r
+<LI>\r
+\92[\96\96\96\88\82É\83v\83\8d\83Z\83X\82ª\90\90¬\82³\82ê\82Ä\91å\97Ê\82É\8fí\92\93\82µ\8bC\8e\9d\82¿\97Ç\82­\82 \82è\82Ü\82¹\82ñ\81B\88ê\82Â\82É\82Ü\82Æ\82Ü\82è\82Ü\82¹\82ñ\82©\81B\r
+\r
+<BLOCKQUOTE>\r
+\83A\83\8b\83S\83\8a\83Y\83\80\82ð\8aÈ\92P\82É\82·\82é\82½\82ß\82É\8d¡\82Ì\95û\8e®\82ð\8eæ\82è\82Ü\82µ\82½\81B\8aÄ\8e\8b\83v\83\8d\83Z\83X\82ð\88ê\82Â\82É\82Ü\82Æ\82ß\82é\82±\82Æ\82à\89Â\94\\82Å\82µ\82å\82¤\82ª\81A\91½\90\94\82Ì\8e\9e\8aÔ\91Ò\82¿\82Æ\83A\83N\83Z\83X\91Ò\82¿\82ð\90§\8cä\82·\82é\82Ì\82Í\81A\83T\81[\83r\83X\96W\8aQ\82»\82Ì\91¼\82Ì\8dl\97\93_\82à\82 \82è\81A\82©\82È\82è\96Ê\93|\82Å\82·\81B\8aO\95\94\8fð\8c\8f\82ð\8a¨\88Ä\82·\82é\82Æ\88ê\82Â\82É\82Ü\82Æ\82ß\82é\8bÙ\8b}\93x\82ª\92á\82¢\82Æ\8dl\82¦\82Ä\8cã\89ñ\82µ\82É\82µ\82Ä\82¢\82Ü\82·\81B\r
+</BLOCKQUOTE>\r
+\r
+<LI>\r
+IPv6\82É\91Î\89\9e\82Å\82«\82Ü\82·\82©\81B\r
+\r
+<BLOCKQUOTE>\r
+Version \r
+1.2.0\82É\82¨\82¢\82Ä\91Î\89\9e\82µ\82Ü\82µ\82½\81B\r
+</BLOCKQUOTE></LI>\r
+\r
+</UL>\r
+</body>\r
+</HTML>\r
diff --git a/opengate/javahtml/en/deny-ssl.html b/opengate/javahtml/en/deny-ssl.html
new file mode 100644 (file)
index 0000000..07b4a07
--- /dev/null
@@ -0,0 +1,12 @@
+<HTML>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=iso-8859-1">
+<HEAD>
+<TITLE>Opengatedeny</TITLE>
+</HEAD>
+<BODY>
+<P>
+Network authentication failed. Please retry again.
+</P>
+<A HREF=https://%%AUTHCGIURL%%?%%ADDR4%%&en><h3>BACK</h3></A>
+</BODY>
+</HTML>
index 62a2eee..b0346cd 100644 (file)
@@ -7,6 +7,6 @@
 <P>
 Network authentication failed. Please retry again.
 </P>
-<A HREF=%%EXTERNALURL%%><h3>Retry from external site</h3></A>
+<A HREF=http://%%AUTHCGIURL%%?%%ADDR4%%&en><h3>BACK</h3></A>
 </BODY>
 </HTML>
diff --git a/opengate/javahtml/ja/deny-ssl.html b/opengate/javahtml/ja/deny-ssl.html
new file mode 100644 (file)
index 0000000..3341df6
--- /dev/null
@@ -0,0 +1,12 @@
+<HTML>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=iso-2022-jp">
+<HEAD>
+<TITLE>Opengatedeny</TITLE>
+</HEAD>
+<BODY>
+<P>
+\e$B%M%C%H%o!<%/MxMQG'>Z$K<:GT$7$^$7$?!#$b$&0lEY$d$jD>$7$F2<$5$$!#\e(B
+</P>
+<A HREF=https://%%AUTHCGIURL%%?%%ADDR4%%&ja><H3>\e$BLa$k\e(B</H3></A>
+</BODY>
+</HTML>
index 5ce1e55..6e90adc 100644 (file)
@@ -7,6 +7,6 @@
 <P>
 \e$B%M%C%H%o!<%/MxMQG'>Z$K<:GT$7$^$7$?!#$b$&0lEY$d$jD>$7$F2<$5$$!#\e(B
 </P>
-<A HREF=%%EXTERNALURL%%><H3>\e$B30It%5%$%H$+$i:F3+\e(B</H3></A>
+<A HREF=http://%%AUTHCGIURL%%?%%ADDR4%%&ja><H3>\e$BLa$k\e(B</H3></A>
 </BODY>
 </HTML>
index a645b72..e2f560d 100644 (file)
@@ -55,12 +55,13 @@ int authFtpse(char *userid, char *passwd)
   serverAddr=GetConfValue("AuthServer/Address");
 
   if(isNull(serverAddr)){
-    err_msg("ERR in auth-ftps: Missing address for FTP server in config");
+    err_msg("ERR at %s#%d: Missing address for FTP server in config",
+           __FILE__,__LINE__);
     return DENY;
   }
 
   /* get auth server port */
-  port=GetConfValue("AuthAerver/Port");
+  port=GetConfValue("AuthServer/Port");
 
   /* FTP server connect */
   if(isNull(port)){
@@ -68,15 +69,19 @@ int authFtpse(char *userid, char *passwd)
   }else{
     sockfd = Tcp_connect(serverAddr, port);
   }
+  if(sockfd<0){
+    err_msg("ERR at %s#%d: Ftpse server is not normal 0",__FILE__,__LINE__);
+    return DENY;
+  }
 
   /* get [220 <host> FTP server ..]*/
   if((n = readln(sockfd, recvline, BUFFMAXLN)) <= 0) {
-    err_msg("ERR in auth-ftps: Ftpse server is not normal 1");
+    err_msg("ERR at %s#%d: Ftpse server is not normal 1",__FILE__,__LINE__);
     Close(sockfd);
     return DENY;
   }
   if(strstr(recvline,"220")!=recvline){
-    err_msg("ERR in auth-ftps: Ftpse server is not normal 2");
+    err_msg("ERR at %s#%d: Ftpse server is not normal 2",__FILE__,__LINE__);
     Close(sockfd);
     return DENY;
   }
@@ -86,12 +91,12 @@ int authFtpse(char *userid, char *passwd)
 
   /* get [234 AUTH TLS successful] */
   if((n = readln(sockfd, recvline, BUFFMAXLN)) <= 0) {
-    err_msg("ERR in auth-ftps: Ftpse server is not normal 3");
+    err_msg("ERR at %s#%d: Ftpse server is not normal 3",__FILE__,__LINE__);
     Close(sockfd);
     return DENY;
   }
   if(strstr(recvline,"234")!=recvline){
-    err_msg("ERR in auth-ftps: Ftpse server is not normal 4");
+    err_msg("ERR at %s#%d: Ftpse server is not normal 4",__FILE__,__LINE__);
     Close(sockfd);
     return DENY;
   }
@@ -103,7 +108,7 @@ int authFtpse(char *userid, char *passwd)
   SSL_load_error_strings();
   ctx = SSL_CTX_new (meth);
   if( ctx == NULL ){
-    err_msg("ERR in auth-ftps: SSL_CTX_new returns NULL");
+    err_msg("ERR at %s#%d: SSL_CTX_new returns NULL",__FILE__,__LINE__);
     return DENY;
   }
   
@@ -112,13 +117,13 @@ int authFtpse(char *userid, char *passwd)
   
   ssl = SSL_new (ctx);
   if( ssl == NULL ){
-    err_msg("ERR in auth-ftps: SSL_new returns NULL");
+    err_msg("ERR at %s#%d: SSL_new returns NULL",__FILE__,__LINE__);
     return DENY;
   }
 
   SSL_set_fd (ssl, sockfd);
   if( SSL_connect (ssl) == -1 ){
-    err_msg("ERR in auth-ftps: SSL_connect returns error");
+    err_msg("ERR at %s#%d: SSL_connect returns error",__FILE__,__LINE__);
     return DENY;
   }
 
@@ -130,7 +135,7 @@ int authFtpse(char *userid, char *passwd)
 
   /* get [331 Password required ..] */
   if((n = readlnSSL(ssl, recvline, BUFFMAXLN)) <= 0) {
-    err_msg("ERR in auth-ftps: Ftpse server is not normal 5");
+    err_msg("ERR at %s#%d: Ftpse server is not normal 5",__FILE__,__LINE__);
     authResult=DENY;
     goto EXITPOINT;
   }
@@ -138,7 +143,7 @@ int authFtpse(char *userid, char *passwd)
   /* if multi-line greeting [220 ...] exist, skip them. */
   while(strstr(recvline,"220")==recvline){
     if((n = readlnSSL(ssl, recvline, BUFFMAXLN)) <= 0) {
-      err_msg("ERR in auth-ftps: Ftpse server is not normal 6");
+      err_msg("ERR at %s#%d: Ftpse server is not normal 6",__FILE__,__LINE__);
       authResult=DENY;
       goto EXITPOINT;
     }
@@ -146,7 +151,7 @@ int authFtpse(char *userid, char *passwd)
 
   /* check [331 Password required ..] */
   if(strstr(recvline,"331")!=recvline){
-    err_msg("ERR in auth-ftps: Ftpse server is not normal 7");
+    err_msg("ERR at %s#%d: Ftpse server is not normal 7",__FILE__,__LINE__);
     authResult=DENY;
     goto EXITPOINT;
   }
@@ -156,7 +161,7 @@ int authFtpse(char *userid, char *passwd)
 
   /* get [230 User <userid> logged in] */
   if((n = readlnSSL(ssl, recvline, BUFFMAXLN)) <= 0) {
-    err_msg("ERR in auth-ftps: Ftpse server is not normal 8");
+    err_msg("ERR at %s#%d: Ftpse server is not normal 8",__FILE__,__LINE__);
     authResult=DENY;
     goto EXITPOINT;
   }
@@ -198,8 +203,9 @@ int authFtpsi(char *userid, char *passwd)
   /* get auth server address */
   serverAddr=GetConfValue("AuthServer/Address");
 
-  if(serverAddr==NULL){
-    err_msg("ERR in auth-ftps: Missing address for FTP server in config");
+  if(isNull(serverAddr)){
+    err_msg("ERR at %s#%d: Missing address for FTP server in config",
+           __FILE__,__LINE__);
     return DENY;
   }
 
@@ -212,6 +218,10 @@ int authFtpsi(char *userid, char *passwd)
   }else{
     sockfd = Tcp_connect(serverAddr, port);
   }
+  if(sockfd<0){
+    err_msg("ERR at %s#%d: Ftpsi server is not normal 0",__FILE__,__LINE__);
+    return DENY;
+  }
 
   /* ----------------------------------------------- */
   /* prepare SSL */
@@ -220,7 +230,7 @@ int authFtpsi(char *userid, char *passwd)
   SSL_load_error_strings();
   ctx = SSL_CTX_new (meth);
   if( ctx == NULL ){
-    err_msg("ERR in auth-ftps: SSL_CTX_new returns NULL");
+    err_msg("ERR at %s#%d: SSL_CTX_new returns NULL",__FILE__,__LINE__);
     return DENY;
   }
   
@@ -229,13 +239,13 @@ int authFtpsi(char *userid, char *passwd)
   
   ssl = SSL_new (ctx);
   if( ssl == NULL ){
-    err_msg("ERR in auth-ftps: SSL_new returns NULL");
+    err_msg("ERR at %s#%d: SSL_new returns NULL",__FILE__,__LINE__);
     return DENY;
   }
 
   SSL_set_fd (ssl, sockfd);
   if( SSL_connect (ssl) == -1 ){
-    err_msg("ERR in auth-ftps: SSL_connect returns error");
+    err_msg("ERR at %s#%d: SSL_connect returns error",__FILE__,__LINE__);
     return DENY;
   }
 
@@ -244,12 +254,12 @@ int authFtpsi(char *userid, char *passwd)
 
   /* get [220 <host> FTP server ..]*/
   if((n = readlnSSL(ssl, recvline, BUFFMAXLN)) <= 0) {
-    err_msg("ERR in auth-ftps: Ftpsi server is not normal 1");
+    err_msg("ERR at %s#%d: Ftpsi server is not normal 1",__FILE__,__LINE__);
     authResult=DENY;
     goto EXITPOINT;
   }
   if(strstr(recvline,"220")!=recvline){
-    err_msg("ERR in auth-ftps: Ftpsi server is not normal 2");
+    err_msg("ERR at %s#%d: Ftpsi server is not normal 2",__FILE__,__LINE__);
     authResult=DENY;
     goto EXITPOINT;
   }
@@ -259,7 +269,7 @@ int authFtpsi(char *userid, char *passwd)
 
   /* get [331 Password required ..] */
   if((n = readlnSSL(ssl, recvline, BUFFMAXLN)) <= 0) {
-    err_msg("ERR in auth-ftps: Ftpi server is not normal 3");
+    err_msg("ERR at %s#%d: Ftpi server is not normal 3",__FILE__,__LINE__);
     authResult=DENY;
     goto EXITPOINT;
   }
@@ -267,7 +277,7 @@ int authFtpsi(char *userid, char *passwd)
   /* if multi-line greeting [220 ...] exist, skip them. */
   while(strstr(recvline,"220")==recvline){
     if((n = readlnSSL(ssl, recvline, BUFFMAXLN)) <= 0) {
-      err_msg("ERR in auth-ftps: Ftpsi server is not normal 4");
+      err_msg("ERR at %s#%d: Ftpsi server is not normal 4",__FILE__,__LINE__);
       authResult=DENY;
       goto EXITPOINT;
     }
@@ -275,7 +285,7 @@ int authFtpsi(char *userid, char *passwd)
 
   /* check [331 Password required ..] */
   if(strstr(recvline,"331")!=recvline){
-    err_msg("ERR in auth-ftps: Ftpsi server is not normal 5");
+    err_msg("ERR at %s#%d: Ftpsi server is not normal 5",__FILE__,__LINE__);
     authResult=DENY;
     goto EXITPOINT;
   }
@@ -285,7 +295,7 @@ int authFtpsi(char *userid, char *passwd)
 
   /* get [230 User <userid> logged in] */
   if((n = readlnSSL(ssl, recvline, BUFFMAXLN)) <= 0) {
-    err_msg("ERR in auth-ftps: Ftpsi server is not normal 6");
+    err_msg("ERR at %s#%d: Ftpsi server is not normal 6",__FILE__,__LINE__);
     authResult=DENY;
     goto EXITPOINT;
   }
index 2e32d72..90cbd6a 100644 (file)
@@ -84,13 +84,13 @@ int authPam(char *userid, char *passwd)
   
   /* error message if not success */
   if (retval != PAM_SUCCESS){
-    err_msg("ERR in auth-pam: %s\n", pam_strerror(pamh, retval));
+    err_msg("ERR at %s#%d: %s\n",__FILE__,__LINE__,pam_strerror(pamh, retval));
   }
   
   /* PAM end */
   if (pam_end(pamh,retval) != PAM_SUCCESS) {
     pamh = NULL;
-    err_msg("ERR in auth-pam: failed to release authenticator\n");
+    err_msg("ERR at %s#%d: failed to release authenticator",__FILE__,__LINE__);
   }
   
   userInfo.password = NULL;
index 563326e..a802678 100644 (file)
@@ -54,7 +54,8 @@ int authPop3s(char *userid, char *passwd)
   serverAddr=GetConfValue("AuthServer/Address");
 
   if(isNull(serverAddr)){
-    err_msg("ERR in auth-pop3s: Missing address for POP3s server in config");
+    err_msg("ERR at %s#%d: Missing address for POP3s server in config",
+           __FILE__,__LINE__);
     return DENY;
   }
 
@@ -67,6 +68,10 @@ int authPop3s(char *userid, char *passwd)
   }else{
     sockfd = Tcp_connect(serverAddr, port);
   }
+  if(sockfd<0){
+    err_msg("ERR at %s#%d: Pop3s server is not normal 0",__FILE__,__LINE__);
+    return DENY;
+  }
 
   /* prepare SSL */
   SSLeay_add_ssl_algorithms();
@@ -74,7 +79,7 @@ int authPop3s(char *userid, char *passwd)
   SSL_load_error_strings();
   ctx = SSL_CTX_new (meth);
   if( ctx == NULL ){
-    err_msg("ERR in auth-pop3s: SSL_CTX_new returns NULL");
+    err_msg("ERR at %s#%d: SSL_CTX_new returns NULL",__FILE__,__LINE__);
     return DENY;
   }
   
@@ -83,13 +88,13 @@ int authPop3s(char *userid, char *passwd)
   
   ssl = SSL_new (ctx);
   if( ssl == NULL ){
-    err_msg("ERR in auth-pop3s: SSL_new returns NULL");
+    err_msg("ERR at %s#%d: SSL_new returns NULL",__FILE__,__LINE__);
     return DENY;
   }
 
   SSL_set_fd (ssl, sockfd);
   if( SSL_connect (ssl) == -1 ){
-    err_msg("ERR in auth-pop3s: SSL_connect returns error");
+    err_msg("ERR at %s#%d: SSL_connect returns error",__FILE__,__LINE__);
     return DENY;
   }
 
@@ -99,13 +104,13 @@ int authPop3s(char *userid, char *passwd)
 
   /* get [+OK POP3 <host> <ver> server ready]*/
   if((n = readlnSSL(ssl, recvline, BUFFMAXLN)) <= 0) {
-    err_msg("ERR in auth-pop3s: Pop3 server is not normal 1");
+    err_msg("ERR at %s#%d: Pop3s server is not normal 1",__FILE__,__LINE__);
     authResult=DENY;
     goto EXITPOINT;
   }
 
   if(strstr(recvline,"+OK")!=recvline){
-    err_msg("ERR in auth-pop3s: Pop3 server is not normal 2");
+    err_msg("ERR at %s#%d: Pop3s server is not normal 2",__FILE__,__LINE__);
     authResult=DENY;
     goto EXITPOINT;
   }
@@ -115,13 +120,13 @@ int authPop3s(char *userid, char *passwd)
 
   /* get [+OK User name accepted, password please] */
   if((n = readlnSSL(ssl, recvline, BUFFMAXLN)) <= 0) {
-    err_msg("ERR in auth-pop3s: Pop3 server is not normal 3");
+    err_msg("ERR at %s#%d: Pop3s server is not normal 3",__FILE__,__LINE__);
     authResult=DENY;
     goto EXITPOINT;
   }
 
   if(strstr(recvline,"+OK")!=recvline){
-    err_msg("ERR in auth-pop3s: Pop3 server is not normal 4");
+    err_msg("ERR at %s#%d: Pop3s server is not normal 4",__FILE__,__LINE__);
     authResult=DENY;
     goto EXITPOINT;
   }
@@ -131,7 +136,7 @@ int authPop3s(char *userid, char *passwd)
 
   /* get [+OK Mailbox open, <count> messages] */
   if((n = readlnSSL(ssl, recvline, BUFFMAXLN)) <= 0) {
-    err_msg("ERR in auth-pop3s: Pop3 server is not normal 5");
+    err_msg("ERR at %s#%d: Pop3s server is not normal 5",__FILE__,__LINE__);
     authResult=DENY;
     goto EXITPOINT;
   }
index 417bb0c..61e9215 100644 (file)
@@ -49,22 +49,22 @@ int authRadius(char *userid, char *passwd)
   }
 
   if( !(radh=rad_auth_open()) ){
-    err_msg("ERR in auth-rad: cannot start radius");
+    err_msg("ERR at %s#%d: cannot start radius",__FILE__,__LINE__);
     return DENY;
   }
 
   if(gethostname(hostname,ADDRMAXLN) < 0){
-    err_msg("ERR in auth-rad: cannot get hostname");
+    err_msg("ERR at %s#%d: cannot get hostname",__FILE__,__LINE__);
     return DENY;
   }
     
   if(rad_config(radh,confFile) < 0){
-    err_msg("ERR in auth-rad: cannot open conffile");
+    err_msg("ERR at %s#%d: cannot open conffile",__FILE__,__LINE__);
     return DENY;
   }
 
   if(rad_create_request(radh, RAD_ACCESS_REQUEST) < 0){
-    err_msg("ERR in auth-rad: cannot create radius request");
+    err_msg("ERR at %s#%d: cannot create radius request",__FILE__,__LINE__);
     return DENY;
   }
 
index 5157f50..0df7e36 100644 (file)
@@ -40,13 +40,13 @@ int getMacAddrFromArp(char *clientAddr4, char* macAddr4)
   /* exec arp */
   if( (fpipe=Popenl("r", GetConfValue("ArpPath"), "-n", 
                    clientAddr4, (char *)0)) == NULL){ 
-    err_msg("ERR in comm-arp: exec arp -n error");
+    err_msg("ERR at %s#%d: exec arp -n error",__FILE__,__LINE__);
     return -1;
   }
   
   /* get arp response */  
   if(fgets(buf, BUFFMAXLN, fpipe)==NULL){
-    err_msg("ERR in comm-arp: readin error");
+    err_msg("ERR at %s#%d: readin error",__FILE__,__LINE__);
     Pclose(fpipe);
     return -1;
   } 
index 74468d4..5fac2e9 100644 (file)
@@ -92,7 +92,7 @@ int authenticateUser(char *userid, char *passwd)
     authResult=ACCEPT;
 
   }else{
-    err_msg("ERR in comm-auth: Unknown protocol:%s",proto);
+    err_msg("ERR at %s#%d: Unknown protocol:%s",__FILE__,__LINE__,proto);
     authResult=DENY;
   }
 
@@ -139,7 +139,8 @@ int authFtp(char *userid, char *passwd)
   serverAddr=GetConfValue("AuthServer/Address");
 
   if(isNull(serverAddr)){
-    err_msg("ERR in comm-auth: Missing address for FTP server in config");
+    err_msg("ERR at %s#%d: Missing address for FTP server in config",
+           __FILE__,__LINE__);
     return DENY;
   }
 
@@ -152,15 +153,19 @@ int authFtp(char *userid, char *passwd)
   }else{
     sockfd = Tcp_connect(serverAddr, port);
   }
+  if(sockfd<0){
+    err_msg("ERR at %s#%d: Ftp server is not normal 0",__FILE__,__LINE__);
+    return DENY;
+  }
 
   /* get [220 <host> FTP server ..]*/
   if((n = readln(sockfd, recvline, BUFFMAXLN)) <= 0) {
-    err_msg("ERR in comm-auth: Ftp server is not normal 1");
+    err_msg("ERR at %s#%d: Ftp server is not normal 1",__FILE__,__LINE__);
     Close(sockfd);
     return DENY;
   }
   if(strstr(recvline,"220")!=recvline){
-    err_msg("ERR in comm-auth: Ftp server is not normal 2");
+    err_msg("ERR at %s#%d: Ftp server is not normal 2",__FILE__,__LINE__);
     Close(sockfd);
     return DENY;
   }
@@ -170,7 +175,7 @@ int authFtp(char *userid, char *passwd)
 
   /* get [331 Password required ..] */
   if((n = readln(sockfd, recvline, BUFFMAXLN)) <= 0) {
-    err_msg("ERR in comm-auth: Ftp server is not normal 3");
+    err_msg("ERR at %s#%d: Ftp server is not normal 3",__FILE__,__LINE__);
     Close(sockfd);
     return DENY;
   }
@@ -178,7 +183,7 @@ int authFtp(char *userid, char *passwd)
   /* if multi-line greeting [220 ...] exist, skip them. */
   while(strstr(recvline,"220")==recvline){
     if((n = readln(sockfd, recvline, BUFFMAXLN)) <= 0) {
-      err_msg("ERR in comm-auth: Ftp server is not normal 3");
+      err_msg("ERR at %s#%d: Ftp server is not normal 3",__FILE__,__LINE__);
       Close(sockfd);
       return DENY;
     }
@@ -186,7 +191,7 @@ int authFtp(char *userid, char *passwd)
 
   /* check [331 Password required ..] */
   if(strstr(recvline,"331")!=recvline){
-    err_msg("ERR in comm-auth: Ftp server is not normal 4");
+    err_msg("ERR at %s#%d: Ftp server is not normal 4",__FILE__,__LINE__);
     Close(sockfd);
     return DENY;
   }
@@ -196,7 +201,7 @@ int authFtp(char *userid, char *passwd)
 
   /* get [230 User <userid> logged in] */
   if((n = readln(sockfd, recvline, BUFFMAXLN)) <= 0) {
-    err_msg("ERR in comm-auth: Ftp server is not normal 5");
+    err_msg("ERR at %s#%d: Ftp server is not normal 5",__FILE__,__LINE__);
     Close(sockfd);
     return DENY;
   }
@@ -228,7 +233,8 @@ int authPop3(char *userid, char *passwd)
   serverAddr=GetConfValue("AuthServer/Address");
 
   if(isNull(serverAddr)){
-    err_msg("ERR in comm-auth: Missing address for POP3 server in config");
+    err_msg("ERR at %s#%d: Missing address for POP3 server in config",
+           __FILE__,__LINE__);
     return DENY;
   }
 
@@ -241,15 +247,19 @@ int authPop3(char *userid, char *passwd)
   }else{
     sockfd = Tcp_connect(serverAddr, port);
   }
+  if(sockfd<0){
+    err_msg("ERR at %s#%d: Pop3 server is not normal 0",__FILE__,__LINE__);
+    return DENY;
+  }
 
   /* get [+OK POP3 <host> <ver> server ready]*/
   if((n = readln(sockfd, recvline, BUFFMAXLN)) <= 0) {
-    err_msg("ERR in comm-auth: Pop3 server is not normal 1");
+    err_msg("ERR at %s#%d: Pop3 server is not normal 1",__FILE__,__LINE__);
     Close(sockfd);
     return DENY;
   }
   if(strstr(recvline,"+OK")!=recvline){
-    err_msg("ERR in comm-auth: Pop3 server is not normal 2");
+    err_msg("ERR at %s#%d: Pop3 server is not normal 2",__FILE__,__LINE__);
     Close(sockfd);
     return DENY;
   }
@@ -259,12 +269,12 @@ int authPop3(char *userid, char *passwd)
 
   /* get [+OK User name accepted, password please] */
   if((n = readln(sockfd, recvline, BUFFMAXLN)) <= 0) {
-    err_msg("ERR in comm-auth: Pop3 server is not normal 3");
+    err_msg("ERR at %s#%d: Pop3 server is not normal 3",__FILE__,__LINE__);
     Close(sockfd);
     return DENY;
   }
   if(strstr(recvline,"+OK")!=recvline){
-    err_msg("ERR in comm-auth: Pop3 server is not normal 4");
+    err_msg("ERR at %s#%d: Pop3 server is not normal 4",__FILE__,__LINE__);
     Close(sockfd);
     return DENY;
   }
@@ -274,7 +284,7 @@ int authPop3(char *userid, char *passwd)
 
   /* get [+OK Mailbox open, <count> messages] */
   if((n = readln(sockfd, recvline, BUFFMAXLN)) <= 0) {
-    err_msg("ERR in comm-auth: Pop3 server is not normal 5");
+    err_msg("ERR at %s#%d: Pop3 server is not normal 5",__FILE__,__LINE__);
     Close(sockfd);
     return DENY;
   }
index 4fbd309..eeafaab 100644 (file)
@@ -143,27 +143,43 @@ int getPostData(char *userid, char *password, char *clientAddr4, int *durationPt
 /*********************************************/
 /* deny message to the client            */
 /*********************************************/
-void putClientDeny(void)
+void putClientDeny(char *clientAddr4)
 {
   FILE *fp;
   char denydoc[BUFFMAXLN];
-  char externalUrl[BUFFMAXLN];
+  char authCgiUrl[BUFFMAXLN];
+  char encodeAddr[ADDRMAXLN];
 
   /* keyword pairs */
   /*  the left key is replaced by the right value */
   struct html_key keys[]=
     {
-      {"%%EXTERNALURL%%", externalUrl},
+      {"%%AUTHCGIURL%%", authCgiUrl},
+      {"%%ADDR4%%", encodeAddr},
       {"",""}  /* DON'T REMOVE THIS LINE */
     };
  
-  /* create URL string */
-  strncpy(externalUrl, GetConfValue("ExternalUrl"), BUFFMAXLN);
+  /* create authcgi URL string */
+  snprintf(authCgiUrl, BUFFMAXLN, "%s%s%s/%s",
+          GetConfValue("OpengateServerName"),
+          GetConfValue("CgiDir"),
+          GetConfValue("OpengateDir"),
+          GetConfValue("AuthCgi"));
 
-  /* make path to the denydoc */
-  sprintf(denydoc,"%s%s/%s/%s",GetConfValue("DocumentRoot"),
+  /* create encoded addr4 */
+  if(AddrEncode(encodeAddr, clientAddr4)==1){
+    encodeAddr[0]='\0';
+  }
+
+  /* make path to the denydoc for ssl or non-ssl */
+  if(strcmp(getenv("SERVER_PORT"),GetServicePortStr("https"))==0){
+    sprintf(denydoc,"%s%s/%s/%s",GetConfValue("DocumentRoot"),
+           GetConfValue("OpengateDir"),language,GetConfValue("DenyDocSsl"));
+  }else{
+    sprintf(denydoc,"%s%s/%s/%s",GetConfValue("DocumentRoot"),
            GetConfValue("OpengateDir"),language,GetConfValue("DenyDoc"));
+  }
+
   /* replace keyword and send out the file */
   printf("Content-type: text/html\r\n\r\n\r\n");
   HtmlTemplate(denydoc, keys);
@@ -220,6 +236,7 @@ void putClientMsg(char *message)
   printf("<BODY>         \r\n");
   printf("%s\r\n",     message);
   printf("</BODY></HTML> \r\n\r\n");
+
 }
 
 /*********************************************/
@@ -252,7 +269,7 @@ void putJavaApplet(char *userid, int port, int pid, char *clientAddr4, char *cli
 
   /* open acceptdoc */
   if((fp=fopen(acceptdoc, "r"))==NULL){
-    err_msg("ERR in comm-cgi: cannot open %s", acceptdoc);
+    err_msg("ERR at %s#%d: cannot open %s",__FILE__,__LINE__,acceptdoc);
     PutClientMsg("Cannot find html document");
     return;
   }
@@ -315,10 +332,11 @@ void putJavaApplet(char *userid, int port, int pid, char *clientAddr4, char *cli
   fclose(fp);
 
   if(markfound==0){
-    err_msg("ERR in comm-cgi: cannot find applet insert mark in %s",
-                   acceptdoc);
+    err_msg("ERR at %s#%d: cannot find applet insert mark in %s",
+                   __FILE__,__LINE__,acceptdoc);
     PutClientMsg("Cannot find applet mark");
   }
+
   return;
 }
 
@@ -425,10 +443,10 @@ void PutJavaApplet(char *userid, int port, int pid, char *clientAddr4, char *cli
   if(debug) err_msg("DEBUG:<=putJavaApplet( )");
 }
 
-void PutClientDeny(void)
+void PutClientDeny(char *clientAddr4)
 {
-  if(debug) err_msg("DEBUG:=>putClientDeny( )");
-  putClientDeny( );
+  if(debug) err_msg("DEBUG:=>putClientDeny(&s)",clientAddr4);
+  putClientDeny(clientAddr4);
   if(debug) err_msg("DEBUG:<=putClientDeny( )");
 }
 
index 8069eb4..9c128dd 100644 (file)
@@ -48,13 +48,22 @@ int openClientGate6(char *clientAddr6, char *userid, char *macAddr6, char *userP
 \r
   /**** prepare ****/\r
   /* open lockfile */\r
-  fd=Open(GetConfValue("LockFile"), O_RDWR|O_CREAT, \r
+  fd=open(GetConfValue("LockFile"), O_RDWR|O_CREAT, \r
          S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);\r
+  if(fd==-1){\r
+    err_msg("ERR at %s#%d: lockfile open error",__FILE__,__LINE__);\r
+    return 1;\r
+  } \r
+\r
   /* set timeout */\r
-  defaultSigFunc=Signal(SIGALRM, sigFunc);\r
+  if((defaultSigFunc=Signal(SIGALRM, sigFunc))==SIG_ERR) return 1;\r
   alarm(LOCKTIMEOUT);\r
   /* lock */\r
-  Lock(fd);\r
+  if(Lock(fd)<0){\r
+    err_msg("ERR at %s#%d: lock error",__FILE__,__LINE__);\r
+    return 1;\r
+  }\r
+\r
   /* reset timeout */\r
   Signal(SIGALRM, defaultSigFunc);\r
   alarm(0);\r
@@ -73,11 +82,12 @@ int openClientGate6(char *clientAddr6, char *userid, char *macAddr6, char *userP
     if(Systeml(GetConfValue("Ip6fwScript/Path"),GetConfValue("Ip6fwPath"),\r
               ruleNumber6,clientAddr6,\r
               userid,macAddr6,userProperty,(char *)0) != 0){\r
-             err_msg("ERR in comm-ip6fw: exec ip6fw script");\r
-             ret=1; /* abmormal */\r
+      err_msg("ERR at %s#%d: exec ip6fw script error",__FILE__,__LINE__);\r
+      ret=1; /* abmormal */\r
     }\r
 \r
-    Unlock(fd);   /* lock is not necessary in following exec */\r
+    /* lock is not necessary in following exec */\r
+    Unlock(fd);\r
     Close(fd);    /* because reserved number is used */\r
 \r
   }else{\r
@@ -85,17 +95,18 @@ int openClientGate6(char *clientAddr6, char *userid, char *macAddr6, char *userP
     /********** add outgoing ip6fw rule for the client *************/\r
     if(Systeml(GetConfValue("Ip6fwPath"),"-q","add",ruleNumber6,"allow","all",\r
               "from",clientAddr6,"to","any",(char *)0) != 0){\r
-             err_msg("ERR in comm-ip6fw: exec ip6fw add from addr error");\r
+             err_msg("ERR at %s#%d: exec ip6fw add error",__FILE__,__LINE__);\r
              ret=1;\r
     }\r
-\r
-    Unlock(fd);   /* lock is not necessary in following exec */\r
+    \r
+    /* lock is not necessary in following exec */\r
+    Unlock(fd);\r
     Close(fd);    /* because reserved number is used */\r
     \r
     /********** add incoming ip6fw rule for the client *************/\r
     if(Systeml(GetConfValue("Ip6fwPath"),"-q","add",ruleNumber6,"allow","all",\r
               "from","any","to",clientAddr6,(char *)0) != 0){\r
-             err_msg("ERR in comm-ip6fw: exec ip6fw add to addr error");\r
+             err_msg("ERR at %s#%d: exec ip6fw add error",__FILE__,__LINE__);\r
              ret=1; /* abnormal */\r
     }\r
   }\r
@@ -142,7 +153,7 @@ void delIp6fwRule(char *ruleNumber)
   /* [ip6fw del num] deletes one rule registered in the rule number */\r
   for(i=0;i<ruleCount;i++){\r
     if(Systeml(GetConfValue("Ip6fwPath"),"del",ruleNumber,(char *)0) != 0){\r
-      err_msg("ERR in comm-ip6fw: exec ip6fw del error");\r
+      err_msg("ERR at %s#%d: exec ip6fw del error",__FILE__,__LINE__);\r
     }\r
   }\r
 }\r
@@ -169,7 +180,7 @@ int getRuleNumber6(char *clientAddr6)
   enum status {NORMAL, ABNORMAL, FOUND, NOTFOUND, DUPLICATED};\r
 \r
   if((fpipe=Popenl("r", GetConfValue("Ip6fwPath"),"list",(char *)0)) == NULL){ \r
-      err_msg("ERR in comm-ip6fw: exec ip6fw list error");\r
+      err_msg("ERR at %s#%d: exec ip6fw list error",__FILE__,__LINE__);\r
   }\r
   \r
   /* search unused rule number in the list read from pipe */\r
@@ -196,7 +207,8 @@ int getRuleNumber6(char *clientAddr6)
        break;\r
       }\r
       if( sscanf(buf, "%d", &readinNum) !=1 ){\r
-       err_msg("ERR in comm-ip6fw: abnormal ip6fw response[ %s ]", buf);\r
+       err_msg("ERR at %s#%d: abnormal ip6fw response[ %s ]",\r
+               __FILE__,__LINE__,buf);\r
        fileStatus=ABNORMAL; /* abnormal responsem exit internal loop */\r
        break;\r
       }\r
@@ -246,11 +258,11 @@ int getRuleNumber6(char *clientAddr6)
   Pclose(fpipe);\r
 \r
   if(fileStatus==ABNORMAL){\r
-    err_msg("ERR in comm-ip6fw: abnormal ip6fw response ");\r
+    err_msg("ERR at %s#%d: abnormal ip6fw response ",__FILE__,__LINE__);\r
     return -2;\r
   }\r
   if(portStatus==NOTFOUND){\r
-    err_msg("ERR in comm-ip6fw: cannot get unused ip6fw number");\r
+    err_msg("ERR at %s#%d: cannot get unused ip6fw number",__FILE__,__LINE__);\r
     return -1;\r
   }\r
   if(portStatus==DUPLICATED){\r
@@ -274,7 +286,7 @@ int getPacketCount6(char *ruleNumber)
 \r
   /* exec proc */\r
   if((fpipe=Popenl("r", GetConfValue("Ip6fwPath"),"-a","list",ruleNumber,(char *)0)) == NULL){ \r
-    err_msg("ERR in comm-ip6fw: exec ip6fw -a list error");\r
+    err_msg("ERR at %s#%d: exec ip6fw -a list error",__FILE__,__LINE__);\r
     return 0; /* abnormal */\r
   }\r
   \r
@@ -303,7 +315,7 @@ int countRuleNumber6(char *ruleNumber)
 \r
   /* exec proc */\r
   if((fpipe=Popenl("r", GetConfValue("Ip6fwPath"),"list",ruleNumber,(char *)0)) == NULL){ \r
-    err_msg("ERR in comm-ip6fw: exec ip6fw list error");\r
+    err_msg("ERR at %s#%d: exec ip6fw list error",__FILE__,__LINE__);\r
   }\r
   \r
   /* count line read from pipe */\r
index 7d541c5..0b1afa1 100644 (file)
@@ -44,16 +44,25 @@ int openClientGate4(char *clientAddr4, char *userid, char *macAddr4, char *userP
   Sigfunc *defaultSigFunc;
 
   /* exclusive exec of ipfw to avoid overlapped rule number */
-
   /**** prepare ****/
   /* open lockfile */
-  fd=Open(GetConfValue("LockFile"), O_RDWR|O_CREAT, 
+  fd=open(GetConfValue("LockFile"), O_RDWR|O_CREAT, 
          S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);
+  if(fd==-1){
+    err_msg("ERR at %s#%d: lockfile open error",__FILE__,__LINE__);
+    return 1;
+  } 
+
   /* set timeout */
-  defaultSigFunc=Signal(SIGALRM, sigFunc);
+  if((defaultSigFunc=Signal(SIGALRM, sigFunc))==SIG_ERR) return 1;
   alarm(LOCKTIMEOUT);
+
   /* lock */
-  Lock(fd);
+  if(Lock(fd)<0){
+    err_msg("ERR at %s#%d: lock error",__FILE__,__LINE__);
+    return 1;
+  }
+
   /* reset timeout */
   Signal(SIGALRM, defaultSigFunc);
   alarm(0);
@@ -71,13 +80,15 @@ int openClientGate4(char *clientAddr4, char *userid, char *macAddr4, char *userP
   if(atoi(GetConfValue("IpfwScript/Enable"))){
     /********** use perl script to control firewall ************/
 
-    if(Systeml(GetConfValue("IpfwScript/Path"),GetConfValue("IpfwPath"),ruleNumber4,clientAddr4,
+    if(Systeml(GetConfValue("IpfwScript/Path"),GetConfValue("IpfwPath"),
+              ruleNumber4,clientAddr4,
               userid,macAddr4,userProperty,(char *)0) != 0){
-      err_msg("ERR in comm-ipfw: exec script error");
+      err_msg("ERR at %s#%d: exec script error",__FILE__,__LINE__);
       ret=1;  /* abnormal */
     }
     
-    Unlock(fd);   /* lock is not necessary in following exec */
+    /* lock is not necessary in following exec */
+    Unlock(fd);
     Close(fd);    /* because reserved number is used */
 
   }else{
@@ -85,16 +96,17 @@ int openClientGate4(char *clientAddr4, char *userid, char *macAddr4, char *userP
     /********** add outgoing ipfw rule for the client *************/
     if(Systeml(GetConfValue("IpfwPath"),"-q","add",ruleNumber4,"allow","ip",
               "from",clientAddr4,"to","any",(char *)0) != 0){
-      err_msg("ERR in comm-ipfw: exec ipfw add from addr error");
+      err_msg("ERR at %s#%d: exec ipfw add error",__FILE__,__LINE__);
       ret=1;  /* abnormal */
     }
 
-    Unlock(fd);   /* lock is not necessary in following exec */
+    /* lock is not necessary in following exec */
+    Unlock(fd);
     Close(fd);    /* because reserved number is used */
     
     if(Systeml(GetConfValue("IpfwPath"),"-q","add",ruleNumber4,"allow","ip",
               "from","any","to",clientAddr4,(char *)0) != 0){
-      err_msg("ERR in comm-ipfw: exec ipfw add to addr error");
+      err_msg("ERR at %s#%d: exec ipfw add error",__FILE__,__LINE__);
       ret=1; /* abnormal */
     }
   }
@@ -138,7 +150,7 @@ void delIpfwRule(char *ruleNumber){
     /* exec ipfw del */
     /* [ipfw del rule] deletes all rule of the rule number at one call */
     if(Systeml(GetConfValue("IpfwPath"),"del",ruleNumber,(char *)0) != 0){
-      err_msg("ERR in comm-ipfw: exec ipfw del error");
+      err_msg("ERR at %s#%d: exec ipfw del error",__FILE__,__LINE__);
     }
   }
 }
@@ -166,7 +178,7 @@ int getRuleNumber4(char *clientAddr4)
 
   /* exec ipfw list and open pipe */
   if((fpipe=Popenl("r", GetConfValue("IpfwPath"),"list",(char *)0)) == NULL){ 
-      err_msg("ERR in comm-ipfw: exec ipfw list error");
+      err_msg("ERR at %s#%d: exec ipfw list error",__FILE__,__LINE__);
   }
   
   /* search unused rule number in the list read from pipe */
@@ -193,7 +205,8 @@ int getRuleNumber4(char *clientAddr4)
        break;
       }
       if( sscanf(buf, "%d", &readinNum) !=1 ){
-       err_msg("ERR in comm-ipfw: abnormal ipfw response[ %s ]", buf);
+       err_msg("ERR at %s#%d: abnormal ipfw response[ %s ]",
+               __FILE__,__LINE__, buf);
        fileStatus=ABNORMAL; /* abnormal responsem exit internal loop */
        break;
       }
@@ -220,7 +233,8 @@ int getRuleNumber4(char *clientAddr4)
       if(((p=(char*)strstr(buf+1,clientAddr4))!=NULL)
        && isspace(*(p-1))
        && !isalnum(*(p+strlen(clientAddr4)))){
-       err_msg("ERR in comm-ipfw: overlapped request from %s", clientAddr4);
+       err_msg("ERR at %s#%d: overlapped request from %s",
+               __FILE__,__LINE__, clientAddr4);
        newNum=num;
        portStatus=DUPLICATED;
        break;
@@ -243,11 +257,11 @@ int getRuleNumber4(char *clientAddr4)
   Pclose(fpipe);
     
   if(fileStatus==ABNORMAL){
-    err_msg("ERR in comm-ipfw: abnormal ipfw response ");
+    err_msg("ERR at %s#%d: abnormal ipfw response ",__FILE__,__LINE__);
     return -2;
   }
   if(portStatus==NOTFOUND){
-    err_msg("ERR in comm-ipfw: cannot get unused ipfw number");
+    err_msg("ERR at %s#%d: cannot get unused ipfw number",__FILE__,__LINE__);
     return -1;
   }
   if(portStatus==DUPLICATED){
@@ -271,7 +285,7 @@ int getPacketCount4(char *ruleNumber)
 
   /* exec proc */
   if((fpipe=Popenl("r", GetConfValue("IpfwPath"),"-a","list",ruleNumber,(char *)0)) == NULL){ 
-    err_msg("ERR in comm-ipfw: exec ipfw -a list error");
+    err_msg("ERR at %s#%d: exec ipfw -a list error",__FILE__,__LINE__);
   }
 
   /* search unused number in the list read from pipe */
@@ -299,7 +313,7 @@ int countRuleNumber4(char *ruleNumber)
 
   /* exec proc */
   if((fpipe=Popenl("r", GetConfValue("IpfwPath"),"list",ruleNumber,(char *)0)) == NULL){ 
-    err_msg("ERR in comm-ipfw: exec ipfw list error");
+    err_msg("ERR at %s#%d: exec ipfw list error",__FILE__,__LINE__);
   }
   
   /* count line read from pipe */
@@ -337,7 +351,7 @@ int OpenClientGate4(char *clientAddr4, char *userid, char *macAddr4, char *userP
 {
   int ret;
 
-  if(debug) err_msg("DEBUG:=>openClientGate(%s,%s,%s,%s)",clientAddr4,userid,macAddr4,userProperty);
+  if(debug) err_msg("DEBUG:=>openClientGate4(%s,%s,%s,%s)",clientAddr4,userid,macAddr4,userProperty);
   ret=openClientGate4(clientAddr4, userid, macAddr4, userProperty);
   if(debug) err_msg("DEBUG:(%d)<=openClientGate4( )",ret);
 
index e564848..f715f3d 100644 (file)
@@ -76,6 +76,10 @@ int getListenPort(void)
     listenfd[0]=Socket(AF_INET, SOCK_STREAM, 0);
     listenfd[1]=Socket(AF_INET6, SOCK_STREAM, 0);
 
+    if(listenfd[0]<0 || listenfd[1]<0){ /* if error, return */
+      return -1;
+    }
+
     if(listenfd[0]>=FD_SETSIZE && listenfd[1]>=FD_SETSIZE){
       return -1;
     }
@@ -85,14 +89,14 @@ int getListenPort(void)
       break;
     }
        
-    close(listenfd[0]);
-    close(listenfd[1]);
+    Close(listenfd[0]);
+    Close(listenfd[1]);
   }
 
   if(portNo>portmax) return -1;  /* cannot get unused port */
   
-  Listen(listenfd[0], LISTENQ);
-  Listen(listenfd[1], LISTENQ);
+  if(Listen(listenfd[0], LISTENQ)<0) return -1; /* if error, return */
+  if(Listen(listenfd[1], LISTENQ)<0) return -1;
   
   return portNo;
 }
@@ -142,7 +146,10 @@ int waitAppletConnect(char *userid, char *clientAddr4, char *clientAddr6, int du
       sigfunc=Signal(SIGALRM, intervalAlarm);
       alarm(checkInterval);
     }
-
+    if(sigfunc==SIG_ERR){
+      connect=0;
+      break;
+    }
     connfd = -1;
 
     /* select socket */
@@ -174,7 +181,7 @@ int waitAppletConnect(char *userid, char *clientAddr4, char *clientAddr6, int du
       /* if usage timeout is reached, end the process */
       if(timeoutAlarmRinged){
         timeoutAlarmRinged=FALSE;
-        err_msg("ERR in comm-java: no connection from applet");
+        err_msg("ERR at %s#%d: no connection from applet",__FILE__,__LINE__);
         connect=0;
         break;
       }
@@ -193,7 +200,8 @@ int waitAppletConnect(char *userid, char *clientAddr4, char *clientAddr6, int du
         }
 
         if(noPacketPeriod*checkInterval >= noPacketInterval){
-          err_msg("ERR in comm-java: no packet passed for the client");
+          err_msg("ERR at %s#%d: no packet passed for the client",
+                 __FILE__,__LINE__);
           connect=0;
           break;
         }
@@ -202,7 +210,7 @@ int waitAppletConnect(char *userid, char *clientAddr4, char *clientAddr6, int du
         if(ipStatus!=IPV6ONLY){
           GetMacAddrFromArp(clientAddr4, macAddrNow);
           if(strcmp(macAddr4, macAddrNow)!=0){
-            err_msg("ERR in comm-java: mac address is changed");
+            err_msg("ERR at %s#%d: mac address is changed",__FILE__,__LINE__);
             connect=0;
             break;
           }
@@ -222,19 +230,24 @@ int waitAppletConnect(char *userid, char *clientAddr4, char *clientAddr6, int du
     /* the check is skipped for IPv6 */
     if(ipType==IPV4 && ipStatus!=IPV6ONLY){
       GetPeerAddr(connfd, connectAddr);
-      if(strcmp(connectAddr, clientAddr4)!=0){
-        close(connfd);
+      if(isNull(connectAddr)||strcmp(connectAddr, clientAddr4)!=0){
+        Close(connfd);
         continue;
       }
     }
 
     /* set short delay alarm for read in */
     sigfunc=Signal(SIGALRM, delayAlarm);
+    if(sigfunc==SIG_ERR){
+      connect=0;
+      break;
+    }
+
     alarm(COMMWAITTIMEOUT);
     /* get strinxg from connection */
     if(readln(connfd, buff, BUFFMAXLN) <=0){
       if(delayAlarmRinged)delayAlarmRinged=FALSE;
-      err_msg("ERR in comm-java: cannot get userid from applet");
+      err_msg("ERR at %s#%d: cannot get userid from applet",__FILE__,__LINE__);
       connect=0;
       break;
     }
@@ -259,10 +272,11 @@ int waitAppletConnect(char *userid, char *clientAddr4, char *clientAddr6, int du
       break;
     }
     
-    err_msg("ERR in comm-java: unknown user or address send from applet");
+    err_msg("ERR at %s#%d: unknown user or address send from applet",
+           __FILE__,__LINE__);
     
     /* wait new connection */
-    close(connfd);
+    Close(connfd);
   }
   
   /* reset timeout signal */
@@ -282,11 +296,18 @@ void getPeerAddr(int sockfd, char *peerAddr)
 {
   struct sockaddr *cliaddr;
   socklen_t len;
-  
-  cliaddr=Malloc(ADDRMAXLN);
+  char *pAddr;
+
+  *peerAddr='\0'; /* set null string */
+
+  if((cliaddr=Malloc(ADDRMAXLN))==NULL) return; /* if error, return */
+
   len=ADDRMAXLN;
-  Getpeername(sockfd, cliaddr, &len);
-  strncpy(peerAddr, Sock_ntop_host(cliaddr, len), ADDRMAXLN);
+  if(Getpeername(sockfd, cliaddr, &len)<0) return; /* if error, return */
+    
+  pAddr=Sock_ntop_host(cliaddr, len);
+  if(pAddr!=NULL) strncpy(peerAddr, pAddr, ADDRMAXLN);
+  
   free(cliaddr);
   
   return;
@@ -310,7 +331,7 @@ void waitClientClose(struct clientAddr *pClientAddr, char *userid, char *userPro
   Writefmt(connfd,"accept\r\n");
   
   /* set interval alarm */
-  defaultSigfunc=Signal(SIGALRM, intervalAlarm);
+  if((defaultSigfunc=Signal(SIGALRM, intervalAlarm))==SIG_ERR) return;
   alarm(checkInterval);
   
   /* TCP read/write loop */
@@ -356,7 +377,8 @@ void waitClientClose(struct clientAddr *pClientAddr, char *userid, char *userPro
           noPacketPeriod++;
 
           if(noPacketPeriod*checkInterval >= noPacketInterval){
-            err_msg("ERR in comm-java: no packet passed for the client");
+            err_msg("ERR at %s#%d: no packet passed for the client",
+                   __FILE__,__LINE__);
             break;
           }
         }else{
@@ -377,7 +399,7 @@ void waitClientClose(struct clientAddr *pClientAddr, char *userid, char *userPro
         noReplyCount++;
         if(noReplyCount>=noReplyMaxCount){
           /* many times, then quit */
-          err_msg("ERR in comm-java: no reply to hello");
+          err_msg("ERR at %s#%d: no reply to hello",__FILE__,__LINE__);
           break;
         }else{
           /* not so many times, then continue */
@@ -416,7 +438,7 @@ void sendTerminateReply(void)
 {
   Writefmt(connfd,"<META HTTP-EQUIV=Pragma CONTENT=no-cache>");
   Writefmt(connfd,"<HTML><BODY> Network is closed. </BODY></HTML> \r\n\r\n");
-  close(connfd);
+  Close(connfd);
 }
 
 /***************************************************/
@@ -425,7 +447,7 @@ void sendTerminateReply(void)
 void sendQuitClient(void)
 {
   Writefmt(connfd,"quit\r\n");
-  close(connfd);
+  Close(connfd);
 }
 
 /***************************************************/
index 271c413..bb18075 100644 (file)
@@ -42,7 +42,7 @@ void scanNdpEntry(struct clientAddr *pClientAddr, char *userid, char *macAddr6,
 
   /* exec ndp */
   if( (fpipe=Popenl("r", GetConfValue("NdpPath"), "-na", (char *)0)) == NULL){ 
-    err_msg("ERR in comm-ndp: exec ndp -na error");
+    err_msg("ERR at %s#%d: exec ndp -na error",__FILE__,__LINE__);
     return;
   }
   
@@ -61,7 +61,7 @@ void scanNdpEntry(struct clientAddr *pClientAddr, char *userid, char *macAddr6,
   
   /* skip first title line in ndp response */
   if(fgets(buf, BUFFMAXLN, fpipe)==NULL){
-    err_msg("ERR in comm-ndp: readin error");
+    err_msg("ERR at %s#%d: readin error",__FILE__,__LINE__);
     Pclose(fpipe);
     return;
   }
@@ -115,7 +115,8 @@ void scanNdpEntry(struct clientAddr *pClientAddr, char *userid, char *macAddr6,
     if(set==FALSE){
       /* open firewall */
       if((ret=OpenClientGate6(tmpAddr, userid, macAddr6, userProperty))<0){
-        err_msg("ERR in comm-ndp: error return form openClientGate6");
+        err_msg("ERR at %s#%d: error return form openClientGate6",
+               __FILE__,__LINE__);
         break;
       }
       err_msg("OPEN: user %s from %s at %s", userid, tmpAddr, macAddr6);
@@ -165,14 +166,14 @@ int getMacAddrFromNdp(char *clientAddr6, char* macAddr6)
 
   /* exec proc */
   if((fpipe=Popenl("r", GetConfValue("NdpPath"),"-na",(char *)0)) == NULL){ 
-    err_msg("ERR in comm-ndp: exec ndp -na error");
+    err_msg("ERR at %s#%d: exec ndp -na error",__FILE__,__LINE__);
     return -1;
   }
 
   /* get ndp response */
   /* skip first title line */
   if(fgets(buf, BUFFMAXLN, fpipe)==NULL){
-    err_msg("ERR in comm-ndp: readin error");
+    err_msg("ERR at %s#%d: readin error",__FILE__,__LINE__);
     Pclose(fpipe);
     return -1;
   }
@@ -199,7 +200,7 @@ void deleteNdpEntry(char *clientAddr6)
 {
   /* exec ndp */
   if(Systeml(GetConfValue("NdpPath"),"-nd",clientAddr6,(char *)0) != 0){
-    err_msg("ERR in comm-ndp: exec ndp -nd error");
+    err_msg("ERR at %s#%d: exec ndp -nd error",__FILE__,__LINE__);
   }
   return;
 }
index ec42f66..b6ae295 100644 (file)
@@ -147,7 +147,7 @@ int openClientGate(char *clientAddr4, char *macAddr4, char *clientAddr6, char *m
     break; /* case IPv6ONLY end */
 
   default:
-    err_msg("ERR in ctrl-firewall: abnormal IP versions %d", ipStatus);
+    err_msg("ERR at %s#%d: abnormal IP versions %d",__FILE__,__LINE__,ipStatus);
 
   } /* switch end */
   
@@ -157,7 +157,8 @@ int openClientGate(char *clientAddr4, char *macAddr4, char *clientAddr6, char *m
 
     /* to cope to modification of IPv4 addr in Dual stack(send as http param)*/ 
     if(ipStatus==IPV46DUAL && IsSameMacAddr(macAddr4, macAddr6)==FALSE){
-      err_msg("ERR in ctrl-firewall: arp and ndp return different mac addr");
+      err_msg("ERR at %s#%d: arp and ndp return different mac addr",
+             __FILE__,__LINE__);
       PutClientMsg("Error. Please End Web and Retry. ");
     
     }else{
@@ -226,7 +227,7 @@ void killOverlapProcess(int overlapRule4, int overlapRule6, char *clientAddr4, c
 
   /* exec "ps -axww" */
   if((fpipe=Popenl("r", GetConfValue("PsPath"), "-axww", (char *)0)) == NULL){ 
-    err_msg("ERR in ctrl-firewall: exec ps ax error");
+    err_msg("ERR at %s#%d: exec ps ax error",__FILE__,__LINE__);
   }
     
   /* read "ps -axww" output as follows */
@@ -243,7 +244,7 @@ void killOverlapProcess(int overlapRule4, int overlapRule6, char *clientAddr4, c
       /* kill the process */
       snprintf(procNumStr, WORDMAXLN, "%d", procNumber);
       if(Systeml("kill", procNumStr, (char *)0) != 0){
-       err_msg("ERR in ctrl-firewall: exec kill error");
+       err_msg("ERR at %s#%d: exec kill error",__FILE__,__LINE__);
       }
     }
   }
@@ -260,7 +261,7 @@ struct clientAddr *createAddrListItem(char* ipAddr, char *ruleNumber, int ipType
   struct clientAddr *pNew;
 
   if((pNew = (struct clientAddr *) malloc(sizeof(struct clientAddr))) == NULL){
-    err_msg("ERR in ctrl-firewall: malloc error at createAddrListItem");
+    err_msg("ERR at %s#%d: malloc error",__FILE__,__LINE__);
     PutClientMsg("Error: Please contact to the administrator");
     exit(1);
   }
@@ -290,8 +291,8 @@ int checkIpVersions(char *clientAddr4, char *clientAddr6){
     if(strstr(clientAddr6,":")!=NULL){
       ipStatus = IPV6ONLY;
     }else{
-      err_msg("ERR in ctrl-firewall: Can not recognize IP versions for v4:%s v6:%s"
-             ,clientAddr4,clientAddr6);
+      err_msg("ERR at %s#%d: Can not recognize IP versions for v4:%s v6:%s"
+             ,__FILE__,__LINE__,clientAddr4,clientAddr6);
       ipStatus=0;
     }
   }
index eec9985..1f9a596 100644 (file)
@@ -45,8 +45,8 @@ void getMacAddr(char *clientAddr4, char *macAddr4, char *clientAddr6, char *macA
     break;
 
   default:
-    err_msg("ERR in get-mac: Cannot recognize IP versions=%d for %s and %s",
-           ipStatus,clientAddr4,clientAddr6);
+    err_msg("ERR at %s#%d: Cannot recognize IP versions=%d for %s and %s",
+           __FILE__,__LINE__,ipStatus,clientAddr4,clientAddr6);
 
   }
   
index b8551fe..d6a56e9 100644 (file)
@@ -84,7 +84,7 @@ int openConfFile(void)
      atoi(GetConfValue("Syslog/Facility"))==0){
 
     /* as the syslog is not prepared, error is send to web*/
-    strncpy(buff, "<H3>Error: SYSLOG setting is not found in Opengate configuration file ",BUFFMAXLN);
+    strncpy(buff, "<H3>Error: correct SYSLOG setting(local0-local7) is not found in Opengate configuration file ",BUFFMAXLN);
     strncat(buff, CONFIGFILE,BUFFMAXLN);
     strncat(buff, ". Call the administrator.</H3><BR>",BUFFMAXLN);
      PutClientMsg(buff);
@@ -109,7 +109,7 @@ void initConf(void)
 /**************************************************/
 void closeConfFile(void)
 {
-  ezxml_free(xmlRoot);
+  if(xmlRoot!=NULL)ezxml_free(xmlRoot);
 }
 
 /**************************************************/
@@ -168,7 +168,7 @@ int regExMatch(const char *inStr, const char *regEx)
   /* compile regex */
   if((errcode=regcomp(&reg, regEx, REG_NOSUB|REG_EXTENDED|REG_ICASE))!=0){
     regerror(errcode, &reg, errbuff, WORDMAXLN);
-    err_msg("ERR in get-param: regex message=%s", errbuff);
+    err_msg("ERR at %s#%d: regex message=%s",__FILE__,__LINE__,errbuff);
     match=FALSE;
   }
   
@@ -223,7 +223,7 @@ char *getConfValue(char *name)
 
     }else{
       /* other parameters must be set */
-      err_msg("ERR in get-param: cannot get %s",name);
+      err_msg("ERR at %s#%d: cannot get %s",__FILE__,__LINE__,name);
     }
   }
 
index 2ffbbaf..3880605 100644 (file)
@@ -34,20 +34,21 @@ int htmlTemplate(char* filename, struct html_key* keys)
   int i;
 
   if((fp=fopen(filename,"r"))==NULL){
-    err_msg("ERR in htmltemplate: cannot find file %s", filename);
+    err_msg("ERR at %s#%d: cannot find file %s",__FILE__,__LINE__,filename);
     return 1;
   }
 
   while(fgets(buff,BUFFMAXLN,fp)!=NULL){
+
     i=0;
     while( strcmp(keys[i].name,"")!=0 ){
       htmlReplace(buff, keys[i].name, keys[i].val);
       i++;
     }
-
     printf("%s",buff);
   }
   fclose(fp);
+  
   return 0;
 }
 
@@ -57,13 +58,11 @@ int htmlTemplate(char* filename, struct html_key* keys)
 int htmlReplace(char* buff,char *beforeStr,char *afterStr)
 {
   char *pBuff , *pNext;
-  char* tempBuff;
+  char tempBuff[BUFFMAXLN];
   
   if(buff==NULL) return 1;
 
-  tempBuff = strMirror(buff);
-  if(tempBuff==NULL) return 1;  
-
+  strncpy(tempBuff, buff, BUFFMAXLN);
   strncpy(buff,"",BUFFMAXLN);
   
   for(pBuff = tempBuff;
@@ -74,8 +73,6 @@ int htmlReplace(char* buff,char *beforeStr,char *afterStr)
   }
   strncat(buff,pBuff,BUFFMAXLN);
   
-  if(tempBuff!=NULL) free(tempBuff);
-
   return 0;
 }
 
@@ -96,18 +93,6 @@ char* strSplit(char* str,const char* delimStr)
     return delimPoint;
 }
 
-/*******************************************************/
-/* copy a string and return. Return val must be free() */
-/*******************************************************/
-char* strMirror(const char* str)
-{
-    char* p = (char*)malloc(strlen(str)+1);
-    if(p == NULL) return NULL;
-
-    strncpy(p,str,strlen(str)+1);
-    return p;
-}
-
 /**********************************************************/
 int HtmlTemplate(char* filename, struct html_key* keys){
 
@@ -134,10 +119,3 @@ char* StrSplit(char* str,const char* delimStr){
   return ret;
 }
 
-char* StrMirror(const char* str){
-  char* ret;
-  if(debug) err_msg("DEBUG:=>strMirror(%s)",str);
-  ret = strMirror(str);
-  if(debug) err_msg("DEBUG:(%s)<=strMirror()",ret);
-  return ret;
-}
index 2f27186..5d311a3 100644 (file)
@@ -57,6 +57,7 @@ int  main(int argc, char **argv)
   int pid;
   int duration;     /* requested usage duration */
   int ipStatus;              /* flag for IPv4 or IPv6 */
+  int authResult;
 
   /* prepare config file */
   if(OpenConfFile()==-1) return 0;
@@ -74,14 +75,12 @@ int  main(int argc, char **argv)
  /* check referer */
   if(CheckReferer()==FALSE){
     PutClientRetry(language);
-    CloseConfFile();
     return 0;
   }
 
   /* get POST data */
   if(GetPostData(userid, password, clientAddr4, &duration)==FALSE){
     PutClientRetry(language);
-    CloseConfFile();
     return 0;
   }
 
@@ -104,9 +103,10 @@ int  main(int argc, char **argv)
   GetMacAddr(clientAddr4, macAddr4, clientAddr6, macAddr6,ipStatus);
 
   /* authenticate the user with authentication server */
-  if(!AuthenticateUser(useridshort, password)){
+  authResult=AuthenticateUser(useridshort, password);
+  if(authResult==DENY){
     /* if not authenticate, send deny */
-    PutClientDeny();
+    PutClientDeny(clientAddr4);
     err_msg("DENY: user %s from %s at %s", userid, clientAddr4, macAddr4);
     return 0;
   }
@@ -131,8 +131,12 @@ int  main(int argc, char **argv)
       duration=durmax;
     }
   }
+
   /* set terminate signal handler */
-  Signal(SIGTERM, closeExit);
+  if(Signal(SIGTERM, closeExit)==SIG_ERR){
+    PutClientMsg("Error: Please contact to the administrator");    
+    return 0;
+  }
 
   /* open firewall for the client */
   if(OpenClientGate(clientAddr4,macAddr4,clientAddr6,macAddr6,
@@ -145,12 +149,19 @@ int  main(int argc, char **argv)
   /* get temporary port for server-listen */
   port=GetListenPort();
   if(port<0){
-    err_msg("ERR in main: cannot get unused listen port");
+    err_msg("ERR at %s#%d: cannot get unused listen port",__FILE__,__LINE__);
+    PutClientMsg("Error: Please contact to the administrator");
+    closeExit(1);
+  }
+
+  /* fork */
+  if((pid=Fork())==-1){
+    err_msg("ERR at %s#%d: fork error",__FILE__,__LINE__);
     PutClientMsg("Error: Please contact to the administrator");
     closeExit(1);
   }
 
-  if((pid=Fork())!=0){
+  if(pid!=0){
     /** parent process **/
     /* send java */
     PutJavaApplet(userid, port, pid, clientAddr4, clientAddr6, ipStatus);
@@ -226,9 +237,6 @@ void closeExit(int signo)
   PutCloseMsg(timeOut,timeIn);
   if(debug) err_msg("DEBUG:terminated");
 
-  /* release the conf file area */
-  CloseConfFile();
-
   exit(1);
 }
 
@@ -252,7 +260,7 @@ void setProcessTitle(char *useridshort, char *clientAddr4, char * ruleNumber4, c
     break;
 
   default:
-    err_msg("ERR in main: abnormal IP versions %d", ipStatus);
+    err_msg("ERR at %s#%d: abnormal IP versions %d",__FILE__,__LINE__,ipStatus);
   }
 }
 /*****************************/
index fe7c27e..7dd9045 100644 (file)
@@ -135,7 +135,6 @@ int  main(int argc, char **argv)
   HtmlTemplate(htmlFile, keys);
 
   if(debug) err_msg("DEBUG: terminated");  
-  CloseConfFile();
 
   return 0;
 }
index 793c415..f45de49 100644 (file)
@@ -109,9 +109,8 @@ int  main(int argc, char **argv)
 
   /* relpace keywords and send out */
   HtmlTemplate(htmlFile, keys);
-  
+
   if(debug) err_msg("DEBUG: terminated");
 
-  CloseConfFile();
   return 0;
 }
index c7d0226..973ffc0 100644 (file)
@@ -73,7 +73,7 @@ typedef       void    Sigfunc(int);   /* for signal handlers */
 
 #define ADDRMAXLN 128      /* maximum address string length */
 #define PASSMAXLN 128      /* maximum password string length */
-#define USERMAXLN 32       /* maximum userid string length */
+#define USERMAXLN 64       /* maximum userid string length */
 #define BUFFMAXLN 1024      /* maximum buffer string length */
 #define WORDMAXLN 64       /* maximum word length */
 #define TRUE 1
@@ -137,7 +137,7 @@ int GetPostData(char *userid, char *password, char *clientAddr4, int *durationPt
 int GetUserProperty(char *userid, char *userProperty);
 void SplitId(char* userid, char* useridshort, char* extraId);
 int CheckReferer(void);
-void PutClientDeny(void);
+void PutClientDeny(char *clientAddr4);
 void PutClientRetry(char *lang);
 void PutClientMsg(char *message);
 
@@ -174,12 +174,12 @@ int Tcp_connect(const char *host, const char *serv);
 char * Sock_ntop_host(const struct sockaddr *sa, socklen_t salen);
 
 int Open(const char *pathname, int oflag, mode_t mode);
-void Close(int fd);
+int Close(int fd);
 pid_t Fork(void);
-void Pipe(int *fds);
-void Getpeername(int fd, struct sockaddr *sa, socklen_t *salenptr);
+int Pipe(int *fds);
+int Getpeername(int fd, struct sockaddr *sa, socklen_t *salenptr);
 int Socket(int family, int type, int protocol);
-void Listen(int fd, int backlog);
+int Listen(int fd, int backlog);
 Sigfunc * Signal(int signo, Sigfunc *func);
 void * Malloc(size_t size);
 
@@ -191,7 +191,6 @@ int AddrDecode(char dotSepAddr[], char encodeAddr[]);
 int HtmlTemplate(char* filename,struct html_key* key);
 int htmlReplace(char* buff,char *before,char *after);
 char* strSplit(char* str,const char* delimStr);
-char* strMirror(const char* str);
 
 int OpenConfFile(void);
 void CloseConfFile(void);
index 9743fea..d1dfaca 100644 (file)
@@ -36,6 +36,6 @@ Signal(int signo, Sigfunc *func)      /* for our signal() function */
        Sigfunc *sigfunc;
 
        if ( (sigfunc = signal(signo, func)) == SIG_ERR)
-               err_sys("signal error");
+               err_msg("signal error");
        return(sigfunc);
 }
index 308ae69..c7ada83 100644 (file)
@@ -74,6 +74,6 @@ Sock_ntop_host(const struct sockaddr *sa, socklen_t salen)
        char    *ptr;
 
        if ( (ptr = sock_ntop_host(sa, salen)) == NULL)
-               err_sys("sock_ntop_host error");        /* inet_ntop() sets errno */
+               err_msg("sock_ntop_host error");        /* inet_ntop() sets errno */
        return(ptr);
 }
index 329b789..b343436 100644 (file)
@@ -16,9 +16,11 @@ tcp_connect(const char *host, const char *serv)
        hints.ai_family = AF_UNSPEC;
        hints.ai_socktype = SOCK_STREAM;
 
-       if ( (n = getaddrinfo(host, serv, &hints, &res)) != 0)
-               err_quit("tcp_connect error for %s, %s: %s",
+       if ( (n = getaddrinfo(host, serv, &hints, &res)) != 0){
+               err_msg("tcp_connect error for %s, %s: %s",
                                 host, serv, gai_strerror(n));
+               return -1;
+       }
        ressave = res;
 
        do {
@@ -32,8 +34,10 @@ tcp_connect(const char *host, const char *serv)
                Close(sockfd);  /* ignore this one */
        } while ( (res = res->ai_next) != NULL);
 
-       if (res == NULL)        /* errno set from final connect() */
-               err_sys("tcp_connect error for %s, %s", host, serv);
+       if (res == NULL){       /* errno set from final connect() */
+               err_msg("tcp_connect error for %s, %s", host, serv);
+               return -1;
+       }
 
        freeaddrinfo(ressave);
 
index 621e6fd..73d6347 100644 (file)
@@ -63,7 +63,5 @@ int  main(int argc, char **argv)
     printf("userID is not passed\n");
   }
 
-  CloseConfFile();
-
   return 0;
 }
index dd9aadc..3b13ba9 100644 (file)
@@ -77,7 +77,5 @@ int  main(int argc, char **argv)
   /* get packet count */
   printf("Packet count for the rule is %d\n",GetPacketCount(pClientAddr));
 
-  CloseConfFile();
-
   return 0;
 }
index 9f6f16e..bd7b455 100644 (file)
@@ -88,7 +88,5 @@ int  main(int argc, char **argv)
 
   printf("Connection closed\n");
 
-  CloseConfFile();
-
   return 0;
 }
index c4fae58..04c1bdf 100644 (file)
@@ -265,6 +265,12 @@ char *getServicePortStr(char *servName)
   /* get service info from service name */
   pServEnt = getservbyname(servName, NULL);
 
+  if(pServEnt==NULL){
+    err_msg("ERR at %s#%d: cannot find /etc/services entry for %s",
+           __FILE__,__LINE__,servName);
+    return "";
+  }
+
   /* convert service port number to string form */
   snprintf(portStr, sizeof(portStr),"%d",ntohs(pServEnt->s_port));
 
@@ -302,7 +308,7 @@ ssize_t Readln(int fd, void *ptr, size_t maxlen)
 
   if(debug) err_msg("DEBUG:=>readln( )");
   if ( (n = readln(fd, ptr, maxlen)) < 0){
-    err_msg("ERR in utilities: readln error");
+    err_msg("ERR at %s#%d: readln error",__FILE__,__LINE__);
   }
   if(debug) err_msg("DEBUG:(%d)<=readln( )",n);
 
@@ -314,9 +320,7 @@ int Lock(int fd)
   int ret;
 
   if(debug) err_msg("DEBUG:=>lock( )");
-  if((ret=lock(fd))<0){
-    err_sys("lock error");
-  }
+  ret=lock(fd);
   if(debug) err_msg("DEBUG:(%d)<=lock( )",ret);
 
   return ret;
@@ -328,9 +332,7 @@ int Unlock(int fd)
   int ret;
 
   if(debug) err_msg("DEBUG:=>unlock( )");
-  if((ret=unlock(fd))<0){
-    err_sys("unlock error");
-  }
+  ret=unlock(fd);
   if(debug) err_msg("DEBUG:(%d)<=unlock( )",ret);
 
   return ret;
index 88fe0c7..d39b4a8 100644 (file)
@@ -12,15 +12,18 @@ Open(const char *pathname, int oflag, mode_t mode)
        int             fd;
 
        if ( (fd = open(pathname, oflag, mode)) == -1)
-               err_sys("open error for %s", pathname);
+               err_msg("open error for %s", pathname);
        return(fd);
 }
 
-void
+int
 Close(int fd)
 {
-       if (close(fd) == -1)
-               err_sys("close error");
+  int ret;
+
+       if ((ret=close(fd)) == -1)
+               err_msg("close error");
+       return ret;
 }
 
 pid_t
@@ -29,22 +32,28 @@ Fork(void)
        pid_t   pid;
 
        if ( (pid = fork()) == -1)
-               err_sys("fork error");
+               err_msg("fork error");
        return(pid);
 }
 
-void
+int
 Pipe(int *fds)
 {
-       if (pipe(fds) < 0)
-               err_sys("pipe error");
+  int ret;
+       if ((ret=pipe(fds)) < 0)
+               err_msg("pipe error");
+
+       return ret;
 }
 
-void
+int
 Getpeername(int fd, struct sockaddr *sa, socklen_t *salenptr)
 {
-       if (getpeername(fd, sa, salenptr) < 0)
-               err_sys("getpeername error");
+  int ret;
+       if ((ret=getpeername(fd, sa, salenptr)) < 0)
+               err_msg("getpeername error");
+
+       return ret;
 }
 
 int
@@ -53,21 +62,24 @@ Socket(int family, int type, int protocol)
        int             n;
 
        if ( (n = socket(family, type, protocol)) < 0)
-               err_sys("socket error");
+               err_msg("socket error");
        return(n);
 }
 
-void
+int
 Listen(int fd, int backlog)
 {
+  int ret;
        char    *ptr;
 
                /*4can override 2nd argument with environment variable */
        if ( (ptr = getenv("LISTENQ")) != NULL)
                backlog = atoi(ptr);
 
-       if (listen(fd, backlog) < 0)
-               err_sys("listen error");
+       if ((ret=listen(fd, backlog)) < 0)
+               err_msg("listen error");
+
+       return ret;
 }
 
 void *
@@ -76,6 +88,6 @@ Malloc(size_t size)
        void    *ptr;
 
        if ( (ptr = malloc(size)) == NULL)
-               err_sys("malloc error");
+               err_msg("malloc error");
        return(ptr);
 }