stunnel/0040755000567100000120000000000007701233261012233 5ustar jcameronwheelstunnel/help/0040775000567100000120000000000007701233260013164 5ustar jcameronwheelstunnel/help/intro.ca.html0100755000567100000120000000603507701233260015571 0ustar jcameronwheel
Introducci als Tnels SSL
SSL s un protocol per xifrar dades en una connexi TCP en el seu viatge per la xarxa. Originalment, es va desenvolupar per protegir el trnsit entre els navegadors web i els servidors, per es pot utilitzar per xifrar qualsevol mena de cadena de dades que es pugui enviar normalment a travs del protocol TCP.

El protocol SSL permet que els clients i els servidors s'autentifiquin els uns als altres, de manera que un client pot estar segur que s'est connectant al host que es pensa que s. Aix es fa emprant certificats emesos per una autoritat certificadora reconeguda pel client (per tal que pugui ser verificat) i associat amb un nom de host particular. Sense certificats, un atacant podria redireccionar una connexi SSL al seu propi servidor i capturar informaci sensible d'un client que es pensa que est parlant amb el servidor real.

Totes les dades que circulen a travs d'Internet sense xifrar poden ser capturades i llegides per un atacant amb accs a una de les xarxes a travs de les quals passen. Fins i tot les dades viatjant entre un client i un sistema servidor en una xarxa local pot ser fcilment piratejada. Quan et connectes a un servidor telnet, FTP o POP3 la teva contrasenya s'envia per la xarxa i pot ser capturada per un atacant.

Es pot utilitzar SSL per protegir les dades en aquesta mena de situacions, per noms si tant el client com el servidor ho suporten. La majoria de navegadors i clients de correu poden fer connexions HTTP, POP3 i IMAP xifrades amb SSL, per no tots els servidors Web i POP3 ho accepten. En particular, POP3 s difcil de protegir, perqu el servidor estndard que ve amb la majoria de sistemes Unix no suporta SSL en absolut. Afortunadament, hi ha una soluci:STunnel.

STunnel s un programa senzill que converteix les connexions sense xifrar en una de xifrada amb SSL. Tpicament, es configura per executar-se des d'un superservidor com inetd o xinetd, i llavors executa alguns altres programes com el servidor POP3, que no suporten SSL. Aquest disseny permet protegir qualsevol servidor que normalment s'executa des d'inetd, com ara els servidors telnet, NNTP i IMAP.

Tot i aix, no tots els servidors es poden protegir de forma til amb xifratge, perqu no tenen cap client per fer servir el mode SSL. Per exemple, no he sentit parlar mai de cap client telnet o FTP que pugui fer servir SSL, perqu el paquet SSH normal ja permet entrades remotes i transferncies de fitxers xifrades.

Aquest mdul Webmin facilita la configuraci de superserveis que executen STunnel per iniciar algun programa servidor. Tot i que aix es pot fer manualment utilitzant el mdul de Serveis d'Internet, aquest est especficament dissenyat per configurar STunnel. Detecta automticament si tens installat inetd o xinetd, en llegeix les configuracions per buscar tnels SSL existents i els hi afegeix quan crees un tnel nou. Si tots dos estan installats, els nous tnels SSL s'afegeixen a la configuraci de xinetd per tal com, en la meva opini, s el millor dels dos.


stunnel/help/intro.html0100664000567100000120000000553107701233260015206 0ustar jcameronwheel
Introduction to SSL Tunnels
SSL is a protocol for encrypting data in a TCP connection as it travels over the network. It was originally developed to protect the traffic between web browsers and servers, but can be used to encrypt any kind of data stream that would normally be sent via the TCP protocol.

The SSL protocol allows clients and servers to authenticate themselves to each other, so that a client can be sure it is really connecting to the host it thinks it is. This is done using certificates which are issued by a certificate authority recognized by the client (so that they can be verified) and associated with a particular hostname. Without certificates, an attacker could re-direct an SSL connection to his own server and capture sensitive information from a client that thinks it is talking to the real server.

Any data that travels across the Internet un-encrypted can be captured and read by an attacker with access to one of the networks that it passes through. Even data traveling between a client and server system on a LAN can be easily listening in on. When you connect to a telnet, FTP or POP3 server your password is sent over the network and thus can be captured by an attacker.

SSL can be used to protect data in these kinds of situations, but only if both the client and server support it. Most web browsers and mail clients can make SSL-encrypted HTTP, POP3 and IMAP connections, but not all web and POP3 servers can accept them. POP3 in particular is hard to protect, because the standard server that comes with most Unix systems does not support SSL at all. Fortunately though there is a solution - STunnel.

STunnel is a simple program that converts an un-encrypted connection into an SSL-encrypted one. It is typically set up to be run from a super-server like inetd or xinetd, and then run some other program like the POP3 server that does not support SSL. This design allows it to protect any server that is normally run from inetd, such as telnet, NNTP and IMAP servers.

Not all servers can be usefully protected with encryption though, because no client exists to use them in SSL mode. For example, I have never heard of a telnet or FTP client that can use SSL, because the common SSH package already allows encrypted remote logins and files transfers.

This Webmin module makes it easy to set up super-server services that run STunnel to start some server program. Even though this can be done manually using the Internet Services module, this one is specifically designed for setting up and configuring STunnel. It automatically detects if you have inetd and/or xinetd installed, reads their configurations to check for existing SSL tunnels and adds to them when you create a new tunnel. If both are installed, new SSL tunnels are added to the xinetd configuration as it is the superior of the two in my opinion.


stunnel/lang/0040775000567100000120000000000007701233261013156 5ustar jcameronwheelstunnel/lang/en0100664000567100000120000000515007701233260013500 0ustar jcameronwheelindex_title=SSL Tunnels index_name=Service name index_port=TCP port index_active=Active? index_command=STunnel command index_add=Add new SSL tunnel. index_none=No SSL tunnels are currently setup to run from inetd or xinetd. index_estunnel=The STunnel command $1 was not found on your system. Maybe STunnel is not installed, or your module configuration is incorrect. index_apply=Apply Changes index_applymsg1=Click this button to make your current SSL tunnel configuration active by sending HUP signals to the running inetd and xinetd processes. index_applymsg2=Click this button to make your current SSL tunnel configuration active by sending HUP signals to the running inetd process. index_applymsg3=Click this button to make your current SSL tunnel configuration active by sending HUP signals to the running xinetd process. index_return=SSL tunnel listing index_action=Tunnel destination index_cmd=Run command $1 index_remote=Connect to host $1 index_rport=Connect to port $1 index_version=STunnel version $1 edit_title=Edit SSL Tunnel create_title=Create SSL Tunnel edit_header1=Tunnel source options edit_name=Service name edit_port=TCP port edit_active=Active? edit_header2=Tunnel destination options edit_mode0=Run inetd style program edit_mode1=Run program in PTY edit_mode2=Connect to remote host edit_cmd=Path to program edit_args=with arguments edit_rhost=Remote hostname edit_rport=Remote port edit_header3=Other options edit_pem=SSL certificate and key file edit_pem0=Compiled-in default edit_pem1=Use Webmin's cert edit_pem2=Use cert in file edit_cmode=Tunnel mode edit_cmode0=Accept SSL and connect normally edit_cmode1=Accept normal and connect with SSL edit_tcpw=TCP-wrappers name edit_auto=Automatic edit_iface=Outgoing source address edit_type=Run from save_err=Failed to save SSL tunnel save_enclash=The service name $2 is already used on port $1. save_einetd=There is already an inetd service called $1. save_ename=Missing or invalid service name save_eport=Missing or invalid port number save_ecmd=Missing or invalid program to run save_erhost=Invalid remote host name save_erport=Invalid remote port save_epclash=The port $1 is already used by the service $2. save_epem=SSL certificate file $1 does not exist save_etcpw=Missing or invalid TCP-wrappers name save_eiface=Missing or invalid outgoing source address save_exinetd=There is already an xinetd service called $1 save_export=The port $1 is already used by xinetd service $2 log_apply=Applied Changes log_create=Created SSL tunnel $1 log_delete=Deleted SSL tunnel $1 log_modify=Modified SSL tunnel $1 stunnel/lang/ca0100644000567100000120000000552007701233260013460 0ustar jcameronwheelindex_title=Tnels SSL index_name=Nom del servei index_port=Port TCP index_active=Actiu index_command=Ordre STunnel index_add=Afegeix un nou tnel SSL index_none=Actualment no hi ha cap tnel SSL configurat per executar des d'inetd o xinetd. index_estunnel=No s'ha trobat al sistema l'ordre $1 de STunnel. Pot ser que STunnel no estigui installat, o b que la configuraci del mdul sigui incorrecta. index_apply=Aplica els Canvis index_applymsg1=Fes clic sobre aquest bot per activar la configuraci actual de tnel SSL enviant senyals HUP als processos inetd i xinetd en execuci. index_applymsg2=Fes clic sobre aquest bot per activar la configuraci actual de tnel SSL enviant senyals HUP al procs inetd en execuci. index_applymsg3=Fes clic sobre aquest bot per activar la configuraci actual de tnel SSL enviant senyals HUP al procs xinetd en execuci. index_return=a la llista de tnels SSL index_action=Destinaci del tnel index_cmd=Executa l'ordre $1 index_remote=Connecta't al host $1 index_rport=Connecta't al port $1 index_version=Versi STunnel $1 edit_title=Edici de Tnel SSL create_title=Creaci de Tnel SSL edit_header1=Opcions del recurs de tnel edit_name=Nom del servei edit_port=Port TCP edit_active=Actiu edit_header2=Opcions de destinaci del tnel edit_mode0=Executa un programa estil inetd edit_mode1=Executa un programa a PTY edit_mode2=Connecta't al host remot edit_cmd=Cam del programa edit_args=amb els arguments edit_rhost=Nom del host remot edit_rport=Port remot edit_header3=Altres opcions edit_pem=Certificat SSL i fitxer de claus edit_pem0=Valor compilat per defecte edit_pem1=Fes servir la certificaci Webmin edit_pem2=Fes servir la certificaci al fitxer edit_cmode=Mode de tnel edit_cmode0=Accepta SSL i connecta normalment edit_cmode1=Accepta normal i connecta amb SSL edit_tcpw=Nom dels embolcalls TCP edit_auto=Automtic edit_iface=Adrea origen de sortida edit_type=Executa des de save_err=No he pogut desar el tnel SSL save_enclash=El nom de servei $2 ja est en s al port $1. save_einetd=Ja hi ha un servei inetd anomenat $1. save_ename=Hi falta el nom del servei o b s invlid save_eport=Hi falta el nmero del port o b s invlid save_ecmd=Hi falta el programa a executar o b s invlid save_erhost=Nom de host remot invlid save_erport=Port remot invlid save_epclash=El port $1 ja est en s pel servei $2. save_epem=El fitxer de certificat SSL $1 no existeix save_etcpw=Hi falta el nom de l'embolcall TCP o b s invlid save_eiface=Hi falta l'adrea origen de sortida o b s invlida save_exinetd=Ja hi ha un servei xinetd anomenat $1 save_export=El port $1 ja est en s pel servei xinetd $2 log_apply=He aplicat els canvis log_create=He creat el tnel SSL $1 log_delete=He suprimit el tnel SSL $1 log_modify=He modificat el tnel SSL $1 stunnel/lang/es0100644000567100000120000000560307701233260013506 0ustar jcameronwheelindex_title=Tneles SSL index_name=Nombre de servicio index_port=Puerto TCP index_active=Activo? index_command=Comando de STunnel index_add=Aadir un nuevo tnel SSL. index_none=No hay configurados en este momento tneles SSL para ser ejecutados desde inetd o xinetd. index_estunnel=El comando de STunnel $1 no fue hallado en tu sistema. Quizs STunnel no est instalado o tu configuracin del mdulo es incorrecta. index_apply=Aplicar Cambios index_applymsg1=Hac click en este botn para poner activa tu configuracin de tnel SSL mediante el envo de seales HUP a los procesos en ejecucin inetd y xinetd. index_applymsg2=Haz click en este botn para poner activa tu configuracin de tnel SSL mediante el envo de seales HUP al proceso inetd en ejecucin. index_applymsg3=Haz click en este botn para poner activa tu configuracin de tnel SSL mediante el envo de seales HUP al proceso xinetd en ejecucin. index_return=Listado de tnel SSL index_action=Destino del tnel index_cmd=Ejecutar comando $1 index_remote=Conectar a mquina $1 index_rport=Conectar a puerto $1 index_version=Versin $1 de STunnel edit_title=Editar Tnel SSL create_title=Crear Tnel SSL edit_header1=Opciones fuente de tnel edit_name=Nombre de servicio edit_port=Puerto TCP edit_active=Activo? edit_header2=Opciones de destino de tnel edit_mode0=Ejecutar programa del estilo de inetd edit_mode1=Ejecutar programa en PTY edit_mode2=Conectar a mquina remota edit_cmd=Trayectoria a programa edit_args=con argumentos edit_rhost=Nombre de mquina remota edit_rport=Puerto remoto edit_header3=Otras opciones edit_pem=Certificado SSL y archivo de clave edit_pem0=El compilado por defecto edit_pem1=Usa certificado de Webmin edit_pem2=Usa certificado en archivo edit_cmode=Modo de tnel edit_cmode0=Acepta SSL y conecta normlmente edit_cmode1=Acepta normal y conecta mediante SSL edit_tcpw=Nombre de envolturas-TCP edit_auto=Automtico edit_iface=Direccin fuente de salida edit_type=Ejecutar desde save_err=No pude salvar tnel SSL save_enclash=El nombre del servicio $2 ya est en uso en el puerto $1. save_einetd=Ya hay un servicio inetd llamado $1. save_ename=El nombre de servicio falta o es invlido save_eport=El nmero de puerto falta o es invlido save_ecmd=El programa a ejecutar falta o es invlido save_erhost=Nombre remoto de mquina invlido save_eport=Puerto remoto invlido save_epclash=El puerto $1 ya est siendo usado por el servicio $2 save_epem=El archivo $1 de certificado SSL no existe save_etcpw=El nombre de envoltorios-TCP falta o es invlido save_eiface=La direccin fuente de salida falta o es invlida save_exinetd=Ya hay un servicio xinetd llamado $1 save_export=El puerto $1 ya est siendo usado por el servicio $2 de xinetd log_apply=Cambios Aplicados log_create=Creado tnel SSL $1 log_delete=Borrado tnel SSL $1 log_modify=Modificado tnel SSL $1 stunnel/lang/de0100644000567100000120000000570407701233261013472 0ustar jcameronwheelindex_title=SSL Tunnels index_name=Service name index_port=TCP Port index_active=Aktiv? index_command=STunnel Kommando index_add=Einen neuen SSL Tunnel hinzufügen. index_none=Zur Zeit sind keine SSL Tunnels konfiguriert, die von inetd oder xinetd ausgeführt werden. index_estunnel=Das STunnel Kommando $1 wurde nicht auf dem System gefunden. Vielleicht ist STunnel nicht installiert, oder die Module Konfiguration ist fehlerhaft. index_apply=Änderungen zuweisen index_applymsg1=Drücken Sie diesen Button, um die aktuellen SSL Tunnel durch Senden des HUP Signals an dir laufenden inetd und xinetd Prozesse zu aktivieren. index_applymsg2=Drücken Sie diesen Button, um die aktuellen SSL Tunnel durch Senden des HUP Signals an den laufenden inetd Prozess zu aktivieren. index_applymsg3=Drücken Sie diesen Button, um die aktuellen SSL Tunnel durch Senden des HUP Signals an den laufenden xinetd Prozess zu aktivieren. index_return=SSL Tunnel Liste index_action=Tunnel Ziel index_cmd=Kommando $1 ausführen index_remote=Verbinde zu Server $1 index_rport=Verbinde zu Port $1 index_version=STunnel Version $1 edit_title= SSL Tunnel bearbeiten create_title= SSL Tunnel erstellen edit_header1=Tunnel Quelle Optionen edit_name=Service Name edit_port=TCP Port edit_active=Aktiv? edit_header2=Tunnel Ziel Optionen edit_mode0=Programm im inetd ausführen edit_mode1=Programm im PTY ausführen edit_mode2=verbinde zu entferntem Server edit_cmd=Pfad zum Programm edit_args=mit Argumenten edit_rhost=entfernter Servername edit_rport=entfernter Port edit_header3=Andere Optionen edit_pem=SSL Zertifikat und Schlüssel Datei edit_pem0=Compiled-in Voreinstellungen edit_pem1=Benutze Webmin's cert edit_pem2=Benutze cert in Datei edit_cmode=Tunnel Modus edit_cmode0=Akzeptiere SSL und verbinde normal edit_cmode1=Akzeptiere normal und verbinde mit SSL edit_tcpw=TCP-wrappers Name edit_auto=Automatisch edit_iface=Ausgehende Quelladresse edit_type=ausführen von save_err=Speichern des SSL Tunnels fehlgeschlagen save_enclash=Der Service Name $2 wird schon auf Port $1 benutzt. save_einetd=Es gibt schon einen inetd Service mit Namen $1. save_ename=Fehlender oder ungültiger Service Name save_eport=Fehlende oder ungültige Port Nummer save_ecmd=Fehledes oder ungültiges Programm save_erhost=ungüter entfernter Server Name save_erport=ungüter entfernter Port save_epclash=Der Port $1 wird bereits vom Service $2 benutzt. save_epem=SSL ZertifiKat Datei $1 existiert nicht save_etcpw=Fehlender oder ungültiger TCP-Wrappers Name sace_eiface=Fehlende oder ungültige ausgehende Quelladdresse save_exinetd=Es existiert bereits ein xinetd Service mit Namen $1 save_export=The Port $1 wir bereits vom xinetd Service $2 benutzt log_apply=Änderungen angewendet log_create=SSL Tunnel $1 erstellt log_delete=SSL Tunnel $1 gelöscht log_modify=SSL Tunnel $1 modifiziert stunnel/lang/ru_SU0100644000567100000120000000544007701233261014134 0ustar jcameronwheelindex_title=SSL- index_name= index_port= TCP index_active=? index_command= STunnel index_add= SSL-. index_none= SSL- inetd xinetd. index_estunnel= $1 . , STunnel . index_apply= index_applymsg1= SSL-. inetd xinetd HUP. index_applymsg2= SSL-. inetd HUP. index_applymsg3= SSL-. xinetd HUP. index_return= SSL- index_action= index_cmd= $1 index_remote= $1 index_rport= $1 index_version= STunnel $1 edit_title= SSL- create_title= SSL- edit_header1= edit_name= edit_port= TCP edit_active=? edit_header2= edit_mode0= inetd edit_mode1= PTY edit_mode2= edit_cmd= edit_args= edit_rhost= edit_rport= edit_header3= edit_pem= SSL edit_pem0= edit_pem1= Webmin edit_pem2= edit_cmode= edit_cmode0= SSL edit_cmode1= SSL edit_tcpw= TCP-wrappers edit_auto= edit_iface= edit_type= save_err= SSL- save_enclash= $2 $1. save_einetd= inetd $1 . save_ename= save_eport= save_ecmd= save_erhost= save_erport= save_epclash= $1 $2. save_epem= SSL $1 save_etcpw= TCP-wrappers save_eiface= save_exinetd= xinetd $1 save_export= $1 xinetd $2 log_apply= log_create= SSL- $1 log_delete=SSL- $1 log_modify=SSL- $1 stunnel/lang/ru_RU0100664000567100000120000000543407701233261014140 0ustar jcameronwheellog_create= SSL- $1 index_name= edit_cmode= save_export= $1 xinetd $2 index_return= SSL- save_einetd= inetd $1 . edit_rport= edit_rhost= edit_title= SSL- save_exinetd= xinetd $1 save_epclash= $1 $2. create_title= SSL- index_active=? log_delete=SSL- $1 edit_tcpw= TCP-wrappers index_none= SSL- inetd xinetd. index_remote= $1 save_eport= edit_pem0= edit_pem1= Webmin edit_pem2= save_eiface= save_err= SSL- edit_args= index_estunnel= $1 . , STunnel . index_command= STunnel edit_active=? edit_cmode0= SSL edit_cmode1= SSL index_rport= $1 edit_header1= index_title=SSL- edit_port= TCP edit_header2= save_erport= edit_header3= edit_mode0= inetd save_erhost= edit_mode1= PTY save_ename= index_apply= index_action= edit_mode2= index_port= TCP log_apply= index_cmd= $1 index_applymsg1= SSL-. inetd xinetd HUP. index_applymsg2= SSL-. inetd HUP. index_applymsg3= SSL-. xinetd HUP. edit_iface= edit_auto= edit_name= log_modify=SSL- $1 edit_cmd= edit_pem= SSL index_add= SSL-. index_version= STunnel $1 edit_type= save_etcpw= TCP-wrappers save_epem= SSL $1 save_ecmd= save_enclash= $2 $1. stunnel/lang/zh_CN0100664000567100000120000000403507701233261014101 0ustar jcameronwheelindex_title=SSLͨ index_name= index_port=TCP˿ index_active= index_command=Stunnel index_add= SSL ͨ index_none=ǰûаװ SSL ͨ inetd xinetd index_estunnel=ϵͳûҵ STunnel $1ûаװ STunnelģ index_apply=Ӧñ index_applymsg1=˰ťͨе inetd xinetd HUP ź㵱ǰ SSL ͨá index_applymsg2=˰ťͨеinetdHUPź㵱ǰ SSL ͨá index_applymsg3=˰ťͨе xinetd HUPź㵱ǰ SSL ͨá index_return=SSL ͨб index_action=ͨĿļ index_cmd= $1 index_remote=ӵ $1 index_rport=ӵ˿ $1 index_version=STunnel 汾 $1 edit_title=༭ SSL ͨ create_title= SSL ͨ edit_header1=ͨԴѡ edit_name= edit_port=TCP ˿ edit_active= edit_header2=ͨĿļѡ edit_mode0= inetd edit_mode1= PTY г edit_mode2=ӵԶ edit_cmd=· edit_args=Ա edit_rhost=Զ edit_rport=Զ̶˿ edit_header3=ѡ edit_pem=SSL ֤Կļ edit_pem0=Ĭֵ edit_pem1=ʹ Webmin ֤ edit_pem2=ʹļе֤ edit_cmode=ͨģʽ edit_cmode0= SSL edit_cmode1= SSL edit_tcpw=TCP-wrappers edit_auto=Զ edit_iface=ͳԴַ edit_type= save_err=޷ SSL ͨ save_enclash= $2 ڶ˿ $1 save_einetd=ѾһΪ $1 inetd ˡ save_ename=δЧķ save_eport=ЧԶ̶˿ save_ecmd=δЧij save_erhost=ЧԶ save_eport=ЧԶ̶˿ save_epclash=˿ $1 ڷ $2 save_epem=SSL ֤ļ $1 save_etcpw=δЧ TCP-wrappers save_eiface=δЧͳԴַ save_exinetd=һΪ $1 xinetd save_export=˿ $1 xinetd $2 log_apply=Ӧñ log_create=Ѵ SSL ͨ $1 log_delete=ɾ SSL ͨ $1 log_modify=޸ SSL ͨ $1 stunnel/images/0040775000567100000120000000000007701233300013474 5ustar jcameronwheelstunnel/images/tunnel.jpg0100644000567100000120000002334207701233261015510 0ustar jcameronwheelJFIF``LEAD Technologies Inc. V1.01 4"@.0&4LCPOKCIHT_yfTYr[HIijr}Qey>"">WIW  }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzw!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz, ?BZN1NM d2RH*N;P" bzr6itx-p8 0+PNޔ\I4Sn  )$q\du0UQ@:!(&U zS3ؚ# `ޘƘa IgbܚYXWqiR:t2(Sځ*+~J,Jހbg$( m>6FE0!nҘ^z2x?w$:@C)ǵCdgJY#U:{S8 8-I&|R")W( b3f&݀Gj*GrVPМAHccْGQ@ޏaC\zp0!ɦ"T:R`X 5 E_ZVKduz7NԆVִʲ$ՠ"$~ؤeڊx5, Ѕe`8c+6 LsEǷ,NaYqL KL`N%PL[zwpZePra @Q&s@ eV<[hEQF G\RlL`֚`d=Z,+H$d{VQ l`:?,84bPǧM' })$cFڀ P'u*qT"6?) &qR㷍e,ǧK``}|{ЀU3{֝cm/;6 { (Wb20OCziW*p9擰 F*UrGzv@EC)#u^q@ЙM# !>g~OSLMr-}DS˄(,=;PRbf| 5Hf{+)*h Q8$1/AڀdH~|qӰd~4b<JUu>Xa^-@pJlF i葅PsբWe @2KW6h 8+!2NAAKQ 2+9wJi1" '1ns@1GHt4i&0Nu 1f8\ip0 @S{'*rOZ a؝ e Ҁ,IJh"6` ژưiJ-'h[g Pwx"I<~^OFbYDn]3'^O;9?S\GvPǽ 7v~C142ѝݲԴW? #nPEH"y *T ܹR$kjJ̧UJ`#4gJ:P@NJ T$#Jn)0,y e.GӰkMC=c?k7cpB? C+fGИY3V 9 5U۠$ PX15'qa|@:E ) D@c;Ku0fxZ(Nٕ5.FP2WP۸⥔WyhHDh|M˚HD;y#ҨCJ PhOP~2HSh\ "NN2`0P 0քe;5`$36CK@e!q.i>PǧM>R<j#+W8% cУ(T;I20%@i0{0it]ޘ 8?:tRAWM9.mɰ YȄjW()pyeXA ҒuJF1)C%ZTHWt+68xRynNX4tsۊR(1Xx[l .:RM ~Hl(|H*;0~P=@]~TP <9c dzR@5c?t~T l#`Fpi(]  t+ʬp6m*ߦi\U>x4A&YHd@0`@8'fH=jErJ! SZ`P0`,(9~Bn Gb m`L&E))98,PA|ivlasVSGsJ ėr$ڥDD%C+c4wf Z (P(Heh2@ͨeYc.l@AdsV1ڐ-6Ixm .WH.LE`bF jlj†`5u#zzP :֋9 E@I˜€T-Bx#T b˜ڀ7t8qU(Ȟحԛn,DyrO=DSԎϔw36L(P@:P3OHoh†4^"ԆA`qm<qv0H4Fe\w)A!" z2IԲɸ= H%Z kcҘfvjc ,p0ϥH;+*;IT_<Aw cF%܏7[hV4/q&NzRCE"LLA@€ (A@zsB(cF0zC"40,cɢmر' *˝GZnc6{%y1\۰Bn1"GGqI {)X *I<%@d?JAN1EK!Tu9gO.,j lsԙ?Ih$N32JhR  ( zo~GzLhҾ|c4h`[_sڙFX.0(`$9^H=d1f kʁB$>e0F ܜ S@T #}J#`Le}<f| :#$1}LFN:R&xGHǥ0f6f}1+#/U#((bP!hsM hv߸nԆ]0]e'jnqޓS2N}N!*Cq?p} F_n[

@t|5`&>"0zPy,y&{E\~\.V\*:6Q#W|(NaeBx7P¿Rֻ"YLEXig+Hz` 3O.VLHP#CK;1Q L{R^V;228)!:i7㩦2BLC zR(_`< +W$+2=08#qBIR@5Lqo@ĠdpҐIc, c;iX,=HqUsCF0B'0EsI tNU 19jdzw%$ڭxcBn)ބ35ػ'$ m UԱ_.cqR+]|ґM.ij(M) qSqu<ɜ}S\Jb!vbI<㎂d$w1 '&2hʅ2{^=:B+lPE):A*`ێSB;x1;ܤе;Pc"I4D`)2c)8⋅[LSc?Uɱcq( F➂N7cZ4 RNwzSCa Ճ` 4`HVYp=2)b"n#H&GqUrc<ڕX ,6:zT,U]뎘8 Lx E 93_a^G*KL[)kd}EJ0 *9LdA  @(C#ҭ\Q9n,c2AH60P0:L.;ѐ/kjS|v*)j= Ă$0W CBisc'>Pޟ݅qjM̛N*!f; UږЙJ; s;{)`&UݖyY?:Ne'1FP"93B:bb ]Z=UX P Bځ =c',Gji_Nc<7)3~\R5դ waQ( .>oJqղ L:Oj,&&6H銦$hA" j ,!pZ8WSC-u~s S`6)"@~ĠS9FDZB X1cP2a#|Fӕ-$n~Q+XFmUO4 nnj(Y9Ǎ~tμ}:!3)䜌Ր_WVYbJ.Hg2uB4NEʁf r\3<c&}O=:g&HcmFfE'*J%e _#1D1ܤ*L):Pb~b>ymUq94G2D'v@lEޘ(? 8*6iſFx%C-ظۜqCV);0ר)\"&#EL*wzvW ʞCH|P7"2?k`c@ @ V[!@#^ u)Ll~IE7]q8!3sHck)-q@*a a`BG %B~P_ߵ11fJ> >c@S*O٠nJź8MޕHLO7LiH%QRi-i]$ !ݎ1jH8JWeE,8 d0ǖ@vbe^Z2#sDð1*qP|@ Bp?.qIErEuL@JY4 e "\psHw$%QiЙ";07b>fuWˎ%S3 @L4l42lRIN܀ ݼ{pjYuRAckBôz0hO+>\,Z=:p+5kzcSUB~{G0F)}Uݘ;WMǡE&QW+I!n\zPYb "AT #$~2JQ@82G<aq@)HSvԆ#?~:|x(4\v {q,.O)‸ ws@./v_\y=@n-#)XwvTX.!cc` (Db@95D]2sښ )|=06 1Rj2 c"tNwtr]x GǥͰ|E{@I,f[vmEn1¹ B)W+q+o_`dUH@|HzR(0I#P;NJ6e#|@좘M4Y1a 8}i _ɻ#!bIo>CbiݏH,((ȦNp'M0W6 $; 0ʲai3Eqܲ }($El@N3>WA.$SMػ=MR%U#Q$ B)mqI(X.;|dcqQa\g`('3#b#ؾߕ#,3"ݜq wІXfdP8CqLDJٕ;3'Iiu!ɷP1?PqBRč#Ҁ)]D^i"810EV;R/12?)&J&i^Ln cÖC@ĢL(J1Pp)Ebs@olg8c7LAistunnel/images/icon.gif0100664000567100000120000000246407701233261015124 0ustar jcameronwheelGIF89a00hhhTTTVVV555999CCCIIIHHHǙ~||sqq~~EEE888rqq^\\gffa__qoo111WO#5=p'H?ńcW:3RI>7rd%aULC82.( 2.---???ussMLLedd\[[***zxxjhh wuucaaljjtrr===aaa|||ߩβ222IHH␏^^^’mkk nmmrppkjjhffkii&&&zyy\ZZYYYbbbpooWVV_^^a``dccwvvsrrqppgeeigg TSSRQQGGGfee```[ZZLKKVUU ڶggg̵fddKJJ,00H*\ȰÇ#JHŋ3jȱG P#C  `H`@ !((@TpCP5lЁ BD  (PE 3 3@ygШa#7p09"phPD2L*UT%-Etŋ/3L3g}qH  BEDhHH"e"dXF#TBS5Z?6:U0G\N O @W'9 X7 -MH =ACE% 9(:L`b ,`c^8DcĂ!&&QRE C 2;stunnel/config.info0100664000567100000120000000017107701233261014353 0ustar jcameronwheelline2=System configuration,11 stunnel_path=Path to stunnel executable,0 pem_path=Path to default stunnel PEM file,3,None stunnel/module.info0100664000567100000120000000042007701233277014377 0ustar jcameronwheelcategory=net desc_ru_SU= SSL longdesc=Setup SSL tunnels to encrypt services like POP3 and IMAP, using stunnel run from inetd. desc=SSL Tunnels desc_de=SSL-Tunnel desc_es=Tneles SSL name=STunnel depends=1.100 version=1.100 desc_ca=Tnels SSL desc_ru_RU= SSL stunnel/index.cgi0100775000567100000120000000564407701233261014041 0ustar jcameronwheel#!/usr/local/bin/perl # index.cgi # Display all existing SSL tunnels require './stunnel-lib.pl'; # Check if stunnel is installed if (!-x $config{'stunnel_path'}) { &header($text{'index_title'}, "", "intro", 1, 1); print "


\n"; print &text('index_estunnel', "$config{'stunnel_path'}", "$gconfig{'webprefix'}/config.cgi?$module_name"),"

\n"; print "


\n"; &footer("/", $text{"index"}); exit; } # Check if inetd or xinetd is installed if (!$has_inetd && !$has_xinetd) { &header($text{'index_title'}, "", "intro", 1, 1); print "
\n"; print "$text{'index_einetd'}

\n"; print "


\n"; &footer("/", $text{"index"}); exit; } # Get the version $out = `$config{'stunnel_path'} -V 2>&1`; if ($?) { $out = `$config{'stunnel_path'} -version 2>&1`; } $out =~ /stunnel\s+(\S+)/; $ver = $1; &header($text{'index_title'}, "", "intro", 1, 1, 0, &help_search_link("stunnel", "man", "doc"), undef, undef, &text('index_version', $ver)); print "
\n"; # List all tunnels currently setup in inetd @tunnels = &list_stunnels(); if (@tunnels) { print "$text{'index_add'}
\n"; print "\n"; print " ", " ", " ", "\n"; foreach $t (@tunnels) { print "\n"; print "\n"; print "\n"; if ($t->{'active'}) { print "\n"; } else { print "\n"; } if ($t->{'args'} =~ /\s*-([lL])\s+(\S+)\s+--\s+(.*)/ || $t->{'args'} =~ /\s*-([lL])\s+(\S+)/) { print "\n"; } elsif ($t->{'args'} =~ /-r\s+(\S+):(\d+)/) { print "\n"; } elsif ($t->{'args'} =~ /-r\s+(\d+)/) { print "\n"; } else { print "\n"; } print "\n"; } print "
$text{'index_name'}$text{'index_port'}$text{'index_active'}$text{'index_action'}
", &html_escape($t->{'name'}),"",&html_escape($t->{'port'}),"$text{'yes'}$text{'no'}", "",&text('index_cmd', $3 ? "".&html_escape($3)."" : "".&html_escape($2).""),"",&text('index_remote', "".&html_escape("$1:$2").""),"",&text('index_rport', "".&html_escape($1).""),"",&html_escape($t->{'args'}), "
\n"; } else { print "$text{'index_none'}

\n"; } print "$text{'index_add'}

\n"; print "


\n"; print "\n"; print "\n"; print "\n"; if ($has_inetd && $has_xinetd) { print "\n"; } elsif ($has_inetd) { print "\n"; } else { print "\n"; } print "
$text{'index_applymsg1'}$text{'index_applymsg2'}$text{'index_applymsg3'}
\n"; print "
\n"; &footer("/", $text{'index'}); stunnel/stunnel-lib.pl0100664000567100000120000002050007701233261015020 0ustar jcameronwheel# stunnel-lib.pl # Common functions for accessing inetd or xinetd # XXX - running from tcpd do '../web-lib.pl'; &init_config(); if ($config{'stunnel_path'} =~ /([^\/]+)$/) { $stunnel_shortname = $1; } $webmin_pem = "$config_directory/miniserv.pem"; if (&foreign_check("inetd")) { &foreign_require("inetd", "inetd-lib.pl"); $has_inetd = 1; } if (&foreign_check("xinetd")) { &foreign_require("xinetd", "xinetd-lib.pl"); $has_xinetd = 1; } # list_stunnels() # Search the inetd and xinetd configurations for stunnel lines sub list_stunnels { local @rv; if ($has_inetd) { # List tunnels from inetd.conf local %portmap; foreach $s (&foreign_call("inetd", "list_services")) { $portmap{$s->[1]} = $s; foreach $a (split(/\s+/, $s->[4])) { $portmap{$a} = $s; } } foreach $i (&foreign_call("inetd", "list_inets")) { if ($i->[8] eq $config{'stunnel_path'} || $i->[8] eq $stunnel_shortname) { push(@rv, { 'type' => 'inetd', 'name' => $i->[3], 'port' => $portmap{$i->[3]}->[2], 'user' => $i->[7], 'active' => $i->[1], 'command' => $i->[8], 'args' => $i->[9], 'index' => scalar(@rv), 'file' => $i->[10], 'line' => $i->[0] }); } } } if ($has_xinetd) { # List tunnels from xinetd.conf foreach $x (&foreign_call("xinetd", "get_xinetd_config")) { next if ($x->{'name'} ne 'service'); local $q = $x->{'quick'}; if ($q->{'server'}->[0] eq $config{'stunnel_path'} || $q->{'server'}->[0] eq $stunnel_shortname) { push(@rv, { 'type' => 'xinetd', 'name' => $x->{'value'}, 'port' => &xinet_port($x), 'active' => $q->{'disable'}->[0] ne 'yes', 'command' => $q->{'server'}->[0], 'args' => join(" ", $q->{'server'}->[0], @{$q->{'server_args'}}), 'index' => scalar(@rv), 'file' => $x->{'file'}, 'xindex' => $x->{'index'} } ); } } } return @rv; } # create_tunnel(&tunnel) sub create_stunnel { local ($pclash, $nclash); if ($has_xinetd) { # Check for xinet clash foreach $x (&foreign_call("xinetd", "get_xinetd_config")) { next if ($x->{'name'} ne 'service'); local $q = $x->{'quick'}; &error(&text('save_exinetd', $_[0]->{'name'})) if ($x->{'value'} eq $_[0]->{'name'}); &error(&text('save_export', $_[0]->{'port'}, $x->{'value'})) if (&xinet_port($x) == $_[0]->{'port'}); } } if ($has_inetd) { # Check if there is already a service for the port or with the name ($pclash, $nclash) = &find_clashes($_[0]->{'name'}, $_[0]->{'port'}); if (!$pclash && $nclash) { # The name is taken, but on a different port &error(&text('save_enclash', $nclash->[2], $nclash->[1])); } local $iname = $pclash ? $pclash->[1] : $_[0]->{'name'}; # Check if there is an inetd entry on the name foreach $i (&foreign_call("inetd", "list_inets")) { &error(&text('save_einetd', $iname)) if ($i->[3] eq $iname); } } local $addto = $_[0]->{'type'} ? $_[0]->{'type'} : $has_xinetd ? "xinetd" : "inetd"; if ($addto eq 'xinetd') { # Just add to xinetd.conf with a custom name and port local $xinet = { 'name' => 'service', 'values' => [ $_[0]->{'name'} ] }; &foreign_call("xinetd", "set_member_value", $xinet, "port", $_[0]->{'port'}); &foreign_call("xinetd", "set_member_value", $xinet, "socket_type", "stream"); &foreign_call("xinetd", "set_member_value", $xinet, "protocol", "tcp"); &foreign_call("xinetd", "set_member_value", $xinet, "user", "root"); &foreign_call("xinetd", "set_member_value", $xinet, "wait", "no"); &foreign_call("xinetd", "set_member_value", $xinet, "disable", $_[0]->{'active'} ? "no" : "yes"); &foreign_call("xinetd", "set_member_value", $xinet, "type", "UNLISTED"); &foreign_call("xinetd", "set_member_value", $xinet, "server", $_[0]->{'command'}); local $args = $_[0]->{'args'}; $args =~ s/^\S+\s+//; &foreign_call("xinetd", "set_member_value", $xinet, "server_args", $args); &foreign_call("xinetd", "create_xinet", $xinet); } elsif ($addto eq 'inetd') { if ($pclash) { # Use existing /etc/services entry $_[0]->{'name'} = $pclash->[1]; } else { # Create /etc/services entry &foreign_call("inetd", "create_service", $_[0]->{'name'}, $_[0]->{'port'}, "tcp", undef); } # Create inetd.conf entry &foreign_call("inetd", "create_inet", $_[0]->{'active'}, $_[0]->{'name'}, "stream", "tcp", "nowait", "root", $_[0]->{'command'}, $_[0]->{'args'}); } } # delete_stunnel(&tunnel) sub delete_stunnel { if ($_[0]->{'type'} eq 'inetd') { # Delete from inetd.conf &foreign_call("inetd", "delete_inet", $_[0]->{'line'}, $_[0]->{'file'}); if ($_[0]->{'port'} >= 1024) { # Delete the /etc/services entry as well local ($oserv) = &find_clashes($_[0]->{'name'}, $_[0]->{'port'}); &foreign_call("inetd", "delete_service", $oserv->[0]); } } elsif ($_[0]->{'type'} eq 'xinetd') { # Delete from xinetd local @xinets = &foreign_call("xinetd", "get_xinetd_config"); local $xinet = $xinets[$_[0]->{'xindex'}]; &foreign_call("xinetd", "delete_xinet", $xinet); } } # modify_stunnel(&oldtunnel, &newtunnel) sub modify_stunnel { if ($_[0]->{'type'} eq 'inetd') { # Check if the name or port has changed local ($pclash, $nclash) = &find_clashes($_[1]->{'name'}, $_[1]->{'port'}); local ($oserv) = &find_clashes($_[0]->{'name'}, $_[0]->{'port'}); if ($_[0]->{'name'} ne $_[1]->{'name'}) { # The name has changed if ($nclash) { &error(&text('save_enclash', $nclash->[2], $_[1]->{'name'})); } } if ($_[0]->{'port'} != $_[1]->{'port'}) { # The port has changed .. if ($pclash) { &error(&text('save_epclash', $_[1]->{'port'}, $pclash->[1])); } } &foreign_call("inetd", "modify_service", $oserv->[0], $_[1]->{'name'}, $_[1]->{'port'}, $oserv->[3], $oserv->[4]); # Update inetd.conf local @inets = &foreign_call("inetd", "list_inets"); local ($oi) = grep { $_->[0] eq $_[0]->{'line'} && $_->[10] eq $_[0]->{'file'} } @inets; &foreign_call("inetd", "modify_inet", $oi->[0], $_[1]->{'active'}, $_[1]->{'name'}, $oi->[4], $oi->[5], $oi->[6], $oi->[7], $oi->[8], $_[1]->{'args'}, $oi->[10]); } elsif ($_[0]->{'type'} eq 'xinetd') { # Get the old xinetd config local @xinets = &foreign_call("xinetd", "get_xinetd_config"); local $xinet = $xinets[$_[0]->{'xindex'}]; # Check for name clash if ($_[0]->{'name'} ne $_[1]->{'name'}) { foreach $x (@xinets) { next if ($x->{'name'} ne 'service'); &error(&text('save_exinetd', $_[1]->{'name'})) if ($x->{'value'} eq $_[1]->{'name'}); } } # Check for port clash if ($_[0]->{'port'} != $_[1]->{'port'}) { foreach $x (@xinets) { next if ($x->{'name'} ne 'service'); &error(&text('save_export', $_[1]->{'port'}, $x->{'value'})) if (&xinet_port($x) == $_[1]->{'port'}); } } # If name or port has changed, convert to an UNLISTED service if ($_[0]->{'name'} ne $_[1]->{'name'} || $_[0]->{'port'} != $_[1]->{'port'}) { $xinet->{'values'} = [ $_[1]->{'name'} ]; &foreign_call("xinetd", "set_member_value", $xinet, "port", $_[1]->{'port'}); &foreign_call("xinetd", "set_member_value", $xinet, "type", "UNLISTED"); } &foreign_call("xinetd", "set_member_value", $xinet, "disable", $_[1]->{'active'} ? "no" : "yes"); &foreign_call("xinetd", "set_member_value", $xinet, "server", $_[1]->{'command'}); local $args = $_[1]->{'args'}; $args =~ s/^\S+\s+//; &foreign_call("xinetd", "set_member_value", $xinet, "server_args", $args); &foreign_call("xinetd", "modify_xinet", $xinet); } } # find_clashes(name, port) sub find_clashes { local ($pclash, $nclash); foreach $s (&foreign_call("inetd", "list_services")) { local @aliases = split(/\s+/, $s->[4]); $pclash = $s if ($s->[2] == $_[1]); $nclash = $s if ($s->[1] eq $_[0] || &indexof($_[0], @aliases) >= 0); } return ($pclash, $nclash); } # xinet_port(&xinet) sub xinet_port { local $q = $_[0]->{'quick'}; local $p = $q->{'port'}; return $p->[0] if ($p); local @s = getservbyname($_[0]->{'value'}, $q->{'protocol'}->[0]); return $s[2]; } # lock_create_file() # Lock the file to which new tunnels will be added sub lock_create_file { if ($has_xinetd) { local %iconfig = &foreign_config("xinetd"); &lock_file($iconfig{'xinetd_conf'}); } elsif ($has_inetd) { local %iconfig = &foreign_config("inetd"); &lock_file($iconfig{'inetd_conf_file'}); } } 1; stunnel/apply.cgi0100775000567100000120000000066207701233261014052 0ustar jcameronwheel#!/usr/local/bin/perl # apply.cgi # Restart inetd and xinetd if used require './stunnel-lib.pl'; if ($has_inetd) { %iconfig = &foreign_config("inetd"); &system_logged("$iconfig{'restart_command'} >/dev/null 2>&1 ); close(PID); kill('USR2', $pid); } } &webmin_log("apply"); &redirect(""); stunnel/save_stunnel.cgi0100775000567100000120000000456007701233261015434 0ustar jcameronwheel#!/usr/local/bin/perl # save_stunnel.cgi # Save, create or delete an SSL tunnel require './stunnel-lib.pl'; &ReadParse(); &error_setup($text{'save_err'}); if ($in{'idx'} ne '') { @stunnels = &list_stunnels(); $st = $stunnels[$in{'idx'}]; %old = %$st; } if ($in{'delete'}) { # Just delete from inetd.conf and xinetd.conf &lock_file($st->{'file'}); &delete_stunnel($st); } else { # Validate and store inputs if ($in{'new'}) { $st = { 'args' => $stunnel_shortname, 'command' => $config{'stunnel_path'}, 'type' => $in{'type'} }; } else { $st->{'args'} = $in{'args'}; } $in{'name'} =~ /^[A-z][A-z0-9\_\-]+$/ || &error($text{'save_ename'}); $st->{'name'} = $in{'name'}; $in{'port'} =~ /^\d+$/ || &error($text{'save_eport'}); $st->{'port'} = $in{'port'}; $st->{'active'} = $in{'active'}; if ($in{'pmode'} == 1) { $st->{'args'} .= " -p $webmin_pem"; } elsif ($in{'pmode'} == 2) { -r $in{'pem'} || &error(&text('save_epem', $in{'pem'})); $st->{'args'} .= " -p $in{'pem'}"; } if ($in{'cmode'}) { $st->{'args'} .= " -c"; } if (!$in{'tcpw_def'}) { $in{'tcpw'} =~ /^\S+$/ || &error($text{'save_etcpw'}); $st->{'args'} .= " -N $in{'tcpw'}"; } if (!$in{'iface_def'}) { gethostbyname($in{'iface'}) || &check_ipaddress($in{'iface'}) || &error($text{'save_eiface'}); $st->{'args'} .= " -I $in{'iface'}"; } if ($in{'mode'} == 0 || $in{'mode'} == 1) { # Running a command local $cmd = $in{'mode'} == 0 ? $in{'cmd0'} : $in{'cmd1'}; local $args = $in{'mode'} == 0 ? $in{'args0'} : $in{'args1'}; &has_command($cmd) || &error($text{'save_ecmd'}); if ($in{'mode'} == 0) { $st->{'args'} .= " -l $cmd"; } else { $st->{'args'} .= " -L $cmd"; } if ($args) { $st->{'args'} .= " -- $args"; } } else { # Connecting to remote host and port gethostbyname($in{'rhost'}) || &check_ipaddress($in{'rhost'}) || &error($text{'save_erhost'}); $in{'rport'} =~ /^\d+$/ || &error($text{'save_erport'}); if ($in{'rhost'} eq 'localhost') { $st->{'args'} .= " -r $in{'rport'}"; } else { $st->{'args'} .= " -r $in{'rhost'}:$in{'rport'}"; } } if ($in{'new'}) { &lock_create_file(); &create_stunnel($st); } else { &lock_file($old{'file'}); &modify_stunnel(\%old, $st); } } &unlock_all_files(); &webmin_log($in{'delete'} ? "delete" : $in{'new'} ? "create" : "modify", "stunnel", $st->{'name'}, $st); &redirect(""); stunnel/edit_stunnel.cgi0100775000567100000120000001355507701233261015427 0ustar jcameronwheel#!/usr/local/bin/perl # edit_stunnel.cgi # Edit or create an SSL tunnel run from inetd require './stunnel-lib.pl'; &ReadParse(); if ($in{'new'}) { &header($text{'create_title'}, ""); $st = { 'active' => 1 }; } else { &header($text{'edit_title'}, ""); @stunnels = &list_stunnels(); $st = $stunnels[$in{'idx'}]; } print "
\n"; print "
\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "
$text{'edit_header1'}
\n"; print "\n"; printf "\n", $st->{'name'}; print "\n"; printf "\n", $st->{'port'}; print "\n"; printf "\n", $st->{'active'} ? "" : "checked", $text{'no'}; if (!$in{'new'}) { print "\n"; print "\n"; } elsif ($has_inetd && $has_xinetd) { print "\n"; print "\n"; } print "\n"; print "
$text{'edit_name'}$text{'edit_port'}
$text{'edit_active'} %s\n", $st->{'active'} ? "checked" : "", $text{'yes'}; printf " %s$text{'edit_type'}$st->{'type'}$text{'edit_type'}

\n"; print "\n"; print "\n"; print "
$text{'edit_header2'}
\n"; if ($in{'new'}) { $ptymode = 'l'; } else { # Parse stunnel parameters if ($st->{'args'} =~ s/\s*-([lL])\s+(\S+)\s+--\s+(.*)// || $st->{'args'} =~ s/\s*-([lL])\s+(\S+)//) { $ptymode = $1; $cmd = $2; $args = $3; } if ($st->{'args'} =~ s/\s*-r\s+((\S+):)?(\d+)//) { $rhost = $2; $rport = $3; } if ($st->{'args'} =~ s/\s*-p\s+(\S+)//) { $pem = $1; } if ($st->{'args'} =~ s/\s*-c//) { $cmode = 1; } if ($st->{'args'} =~ s/\s*-N\s+(\S+)//) { $tcpw = $1; } if ($st->{'args'} =~ s/\s*-I\s+(\S+)//) { $iface = $1; } } printf "\n", $ptymode eq 'l' ? 'checked' : '', $text{'edit_mode0'}; printf "\n", $text{'edit_args'}, $ptymode eq 'l' ? $args : ''; printf "\n", $ptymode eq 'L' ? 'checked' : '', $text{'edit_mode1'}; printf "\n", $text{'edit_args'}, $ptymode eq 'L' ? $args : ''; printf "\n", $rport ? 'checked' : '', $text{'edit_mode2'}; printf "\n", $text{'edit_rport'}, $rport; print "
%s%s \n", $text{'edit_cmd'}, $ptymode eq 'l' ? $cmd : ''; printf "%s
%s%s \n", $text{'edit_cmd'}, $ptymode eq 'L' ? $cmd : ''; printf "%s
%s%s \n", $text{'edit_rhost'}, !$rport ? '' : $rhost ? $rhost : 'localhost'; printf "%s

\n"; print "\n"; print "\n"; print "
$text{'edit_header3'}
\n"; print "\n", $haspem ? $config{'pem_path'} : "", &file_chooser_button("pem"); } else { local $pmode = $pem eq $webmin_pem ? 1 : $pem ? 2 : 0; printf " %s\n", $pmode == 0 ? "checked" : "", $text{'edit_pem0'}; printf " %s\n", $pmode == 1 ? "checked" : "", $text{'edit_pem1'}; printf " %s\n", $pmode == 2 ? "checked" : "", $text{'edit_pem2'}; printf " %s\n", $pmode == 2 ? $pem : "", &file_chooser_button("pem"); } print "\n", $tcpw; print "\n", $cmode ? "checked" : "", $text{'edit_cmode1'}; print "\n", $iface; print "
$text{'edit_pem'} \n"; $haspem = $config{'pem_path'} && -r $config{'pem_path'}; if ($in{'new'}) { printf " %s\n", "", $text{'edit_pem0'}; printf " %s\n", $haspem ? "" : "checked", $text{'edit_pem1'}; printf " %s\n", $haspem ? "checked" : "", $text{'edit_pem2'}; printf " %s
$text{'edit_tcpw'} \n"; printf " %s\n", $tcpw ? "" : "checked", $text{'edit_auto'}; printf "\n", $tcpw ? "checked" : ""; printf "
$text{'edit_cmode'} \n"; printf " %s\n", $cmode ? "" : "checked", $text{'edit_cmode0'}; printf " %s
$text{'edit_iface'} \n"; printf " %s\n", $iface ? "" : "checked", $text{'edit_auto'}; printf "\n", $iface ? "checked" : ""; printf "
\n"; print "\n"; print "\n"; if ($in{'new'}) { print "\n"; } else { print "\n"; print "\n"; } print "
\n"; print "
\n"; &footer("", $text{'index_return'}); stunnel/log_parser.pl0100644000567100000120000000070507701233261014724 0ustar jcameronwheel# log_parser.pl # Functions for parsing this module's logs do 'stunnel-lib.pl'; # parse_webmin_log(user, script, action, type, object, ¶ms) # Converts logged information from this module into human-readable form sub parse_webmin_log { local ($user, $script, $action, $type, $object, $p) = @_; if ($type eq 'stunnel') { return &text("log_$action", "".&html_escape($object).""); } else { return $text{"log_$action"}; } return undef; } stunnel/config-mandrake-linux0100664000567100000120000000003707701233261016337 0ustar jcameronwheelstunnel_path=/usr/sbin/stunnel stunnel/config0100664000567100000120000000004507701233261013421 0ustar jcameronwheelstunnel_path=/usr/local/sbin/stunnel stunnel/config-redhat-linux0100664000567100000120000000003707701233261016024 0ustar jcameronwheelstunnel_path=/usr/sbin/stunnel stunnel/config.info.ca0100644000567100000120000000021007701233261014725 0ustar jcameronwheelline2=Configuraci del sistema,11 stunnel_path=Cam de l'executable stunnel,0 pem_path=Cam del fitxer PEM per defecte de stunnel,3,Cap stunnel/feedback_files.pl0100664000567100000120000000031507701233261015474 0ustar jcameronwheel do 'stunnel-lib.pl'; sub feedback_files { local %iconfig = &foreign_config("inetd"); local %xconfig = &foreign_config("xinetd"); return ( $iconfig{'inetd_conf_file'}, $xconfig{'xinetd_conf'} ); } 1; stunnel/config-gentoo-linux0100664000567100000120000000003707701233261016050 0ustar jcameronwheelstunnel_path=/usr/sbin/stunnel stunnel/config.info.es0100644000567100000120000000016407701233261014761 0ustar jcameronwheelstunnel_path=Trayectoria a ejecutable stunnel,0 pem_path=Trayectoria a archivo PEM por defecto de stunnel,3,Ninguna stunnel/config.info.de0100664000567100000120000000015207701233261014741 0ustar jcameronwheelstunnel_path=Pfad zur ausführbaren Datei STunnel,0 pem_path=Pfad zur STunnel PEM-Standarddatei,3,keinstunnel/config-united-linux0100664000567100000120000000003707701233261016045 0ustar jcameronwheelstunnel_path=/usr/sbin/stunnel stunnel/config.info.ru_SU0100644000567100000120000000020307701233261015401 0ustar jcameronwheelline2= ,11 stunnel_path= stunnel,0 pem_path= stunnel PEM, ,3, stunnel/config.info.ru_RU0100664000567100000120000000020307701233261015402 0ustar jcameronwheelpem_path= stunnel PEM, ,3, stunnel_path= stunnel,0 line2= ,11