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
\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
<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
/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
-<html>
-<head>
-<title>Opengate Q & A</title>
-</head>
-
-
-<body bgcolor=#fafff0>
-
-<H3>Opengate Q & 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 & 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
/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
-<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 & 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 & 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
--- /dev/null
+<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>
<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>
--- /dev/null
+<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>
<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>
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)){
}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;
}
/* 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;
}
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;
}
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;
}
/* 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;
}
/* 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;
}
/* 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;
}
/* 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;
}
/* 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;
}
}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 */
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;
}
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;
}
/* 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;
}
/* 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;
}
/* 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;
}
/* 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;
}
/* 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;
}
/* 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;
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;
}
}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();
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;
}
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;
}
/* 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;
}
/* 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;
}
/* 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;
}
}
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;
}
/* 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;
}
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;
}
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;
}
}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;
}
/* 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;
}
/* 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;
}
/* 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;
}
/* 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;
}
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;
}
}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;
}
/* 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;
}
/* 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;
}
/*********************************************/
/* 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);
printf("<BODY> \r\n");
printf("%s\r\n", message);
printf("</BODY></HTML> \r\n\r\n");
+
}
/*********************************************/
/* 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;
}
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;
}
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( )");
}
\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
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
/********** 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
/* [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
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
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
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
\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
\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
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);
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{
/********** 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 */
}
}
/* 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__);
}
}
}
/* 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 */
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;
}
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;
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){
/* 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 */
/* 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 */
{
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);
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;
}
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;
}
sigfunc=Signal(SIGALRM, intervalAlarm);
alarm(checkInterval);
}
-
+ if(sigfunc==SIG_ERR){
+ connect=0;
+ break;
+ }
connfd = -1;
/* select socket */
/* 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;
}
}
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;
}
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;
}
/* 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;
}
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 */
{
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;
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 */
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{
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 */
{
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);
}
/***************************************************/
void sendQuitClient(void)
{
Writefmt(connfd,"quit\r\n");
- close(connfd);
+ Close(connfd);
}
/***************************************************/
/* 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;
}
/* 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;
}
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);
/* 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;
}
{
/* 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;
}
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 */
/* 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{
/* 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 */
/* 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__);
}
}
}
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);
}
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;
}
}
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);
}
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);
/**************************************************/
void closeConfFile(void)
{
- ezxml_free(xmlRoot);
+ if(xmlRoot!=NULL)ezxml_free(xmlRoot);
}
/**************************************************/
/* compile regex */
if((errcode=regcomp(®, regEx, REG_NOSUB|REG_EXTENDED|REG_ICASE))!=0){
regerror(errcode, ®, 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;
}
}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);
}
}
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;
}
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;
}
strncat(buff,pBuff,BUFFMAXLN);
- if(tempBuff!=NULL) free(tempBuff);
-
return 0;
}
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){
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;
-}
int pid;
int duration; /* requested usage duration */
int ipStatus; /* flag for IPv4 or IPv6 */
+ int authResult;
/* prepare config file */
if(OpenConfFile()==-1) return 0;
/* 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;
}
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;
}
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,
/* 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);
PutCloseMsg(timeOut,timeIn);
if(debug) err_msg("DEBUG:terminated");
- /* release the conf file area */
- CloseConfFile();
-
exit(1);
}
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);
}
}
/*****************************/
HtmlTemplate(htmlFile, keys);
if(debug) err_msg("DEBUG: terminated");
- CloseConfFile();
return 0;
}
/* relpace keywords and send out */
HtmlTemplate(htmlFile, keys);
-
+
if(debug) err_msg("DEBUG: terminated");
- CloseConfFile();
return 0;
}
#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
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);
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);
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);
Sigfunc *sigfunc;
if ( (sigfunc = signal(signo, func)) == SIG_ERR)
- err_sys("signal error");
+ err_msg("signal error");
return(sigfunc);
}
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);
}
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 {
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);
printf("userID is not passed\n");
}
- CloseConfFile();
-
return 0;
}
/* get packet count */
printf("Packet count for the rule is %d\n",GetPacketCount(pClientAddr));
- CloseConfFile();
-
return 0;
}
printf("Connection closed\n");
- CloseConfFile();
-
return 0;
}
/* 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));
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);
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;
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;
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
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
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 *
void *ptr;
if ( (ptr = malloc(size)) == NULL)
- err_sys("malloc error");
+ err_msg("malloc error");
return(ptr);
}