Re: Ciber Cafe

2001-03-31 Por tema Antonio Castro
On Sat, 31 Mar 2001, Christoph Simon wrote:

 On Fri, 30 Mar 2001 22:14:55 +
 E.Guerra [EMAIL PROTECTED] wrote:
 
  R. M. Alarcon wrote:
  
   /sbin/ipchains -A forward -i eth0 -s $IPADDRESS -j MASQ
   at now + $TIME minutes /sbin/ipchains -D forward -i eth0 -s $IPADDRESS -j
   MASQ
   
  me parece cojonudo, es más, yo estaba pensando hacer ésto mismo de una 
  manera más complicada, no me había dado cuenta del at.
  
  sería así: creo un usuario que sería el operador(cobrador)
  sustituyo el bash, por algún programa que yo haga, el nota hace telnet 
  desde cualquier puesto y le sale un menu con un par de opciones, puedo 
  complicarlo más con postgresql, que lleve la contabilidad,,
  
  ¿pero hay algo de ésto hecho?
  pos, si no, no lo hago
 
 Pues antes de lanzar las campanas al vuelo, piénsatelo un poco. Estas
 líneas sólo son ejemplos como lo podrías hacer, no está hecho. Tendrás
 que considerar muchos mas casos, especialmente si implicas una base de
 datos. Por ejemplo, si un usuário dice que quiere una hora, pero
 después de media hora se cansó, ¿qué hará el operador? ¿Y si es al
 revés, que quería navegar durante media hora, está en un chat
 interesantísimo y quiere otra media hora? Si entre el final de una
 sessión y el comienzo de la otra hay un poco mas tiempo, puede ser que
 el host remoto le cancela su sessión por timeout y é nunca volverá a
 encontrar su nuevo amor eterno en esta sála random. ¡Te odiará con
 toda su alma! Y ¿qué hará el operador si quiere testar alguna cosa o
 si simplemente quiere navegar porque a las 8:30am no hay clientes?
 ¿Quedará en la base de datos como una sessión vendida? ¿O le vas a decir
 el secreto como activar el masquerading sin que se entere la base de
 datos? En este caso, no necesitas del postgres, porque le tendrás que
 creer todo lo que te cuenta. Lamentablemente todavía hay muchas
 situaciones `inprevistas', y cada día vas a encontrar alguna nueva...

Pueno para esa parte yo lo que haría en lugar de usar cron directamente
sería usar cron para lanzar cada minuto por ejemplo un proceso
que consulte la hora de finalización de cada puesto. El proceso lanzado
va a ser muy ligerito por lo que apenas se notará carga en el sistema.

Ese proceso solo comprobaría un ficherito de control que posea simplemente
número_de_puesto y Hora_finalización.  Puede ser un fichero de texto.

Si un puesto está fuera de hora el proceso bloqueara ese puesto de la 
forma que sea.

Si un cliente se va antes hay que entrar en el fichero y actualizar
la hora_de_finalizacion para ese puesto, de forma que si alguien se 
sienta en ese puesto que ha quedado libre, solo podrá usar el ordenador 
como máximo un minuto.

Si un cliente dice que quiere continuar se entra al fichero y se añade
tiempo a ese puesto. 

Lo ideal es preparar un programita que facilite la edición de ese 
ficherito de forma cómoda, y rápida. Posiblemente sea bueno usar
funciones de aritmética de fechas para poder añadir o quitar tiempo
comodamente a una hora de finalización.

Creo que ya van unas cuantas ideas no ?

 
 --
 Christoph Simon
 [EMAIL PROTECTED]
 ---
 ^X^C
 q
 quit
 :q
 ^C
 end
 x
 exit
 ZZ
 ^D
 ?
 help
 shit
 .
 
 
 --  
 Unsubscribe?  mail -s unsubscribe [EMAIL PROTECTED]  /dev/null
 


Un saludo

Antonio Castro

+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
/\ /\  Ciberdroide Informática (Tienda de Linux)
  \\W// http://www.ciberdroide.com 
 _|0 0|_
+-oOOO--(___o___)--OOOo+ 
|  . . . . U U . . . . Antonio Castro Snurmacher  [EMAIL PROTECTED]  |  
|  . . . . . . . . . . | 
+()()()--()()()+
| *** 1.700 sitios clasificados por temas sobre Linux en ***Donde_Linux*** |
|  http://www.ciberdroide.com/misc/donde/dondelinux.html |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+




Re: Ciber Cafe

2001-03-31 Por tema R. M. Alarcon
Estimados,

Que bueno, esta conversacion se ha vuelto bien interesante.

Lo primero, y es un buen punto, es satisfacer al cliente cosa que vuelva y
nos deje la platica; ademas de que el software facilite las tareas
administrativas. En cuanto a la parte de la desconeccion, es bien importante
que el usuario sea notificado que la conexion ba a terminar y si quiere
continuar pague mas. Esto me parece que se puede programar facilmente de la
siguiente forma:

-. Suponiendo que los clientes son Windows 9?, podemos utilizar el soporte
de  mensajeria de smb, a travez de smbclient en el servidor, de manera que
el algoritmo basico seria:

/sbin/ipchains -A forward -i eth0 -s $IPADDRESS -j MASQ
at now + ($TIME - 5) minutes smbclient (ENVIAR MENSAJE A LA MAQUINA
INFORMANDOLE QUE LA CONEXION VA A SER CANCELADA EN 5 MINUTOS)
at now + $TIME minutes /sbin/ipchains -D forward -i eth0 -s $IPADDRESS -j

Lo unico que se necesitaria es tener el winpopup corriendo en los clientes
Windows 9?. Si tiene Windows NT/2000 es mas facil ya que no hay programa que
ejecutar para que el cliente reciba la notificacion.

Todavia no veo claro la necesidad de utilizar una base de datos, me parece
que todas estas tareas son simples y se le pueden dejar al sistema que las
ejecute automaticamente.

El otro caso de que el usuario se aburra no me parece tan critico. Es como
cuando va uno a inflarle las llantas al carro y el que las inflo antes
todavia tenia tiempo adicional. Uno usa el tiempo que le sobro al anterior.
Si alcanza a inflar las llantas bien, sino le mete uno mas monedas a la
maquina. Quien pierde?, nadie. La estacion de gasolina recibio la plata que
esperaba por unidad de tiempo.

De todas formas cuando un usuario nuevo llega tiene que pasar a pagar, osea
que probablemente este caso nunca se de. No me parece complicado mirar si la
direccion ip que se va a utilizar esta en espera de ser desconectada. Si lo
esta, desconectela ya y continue con el proceso normal. El algoritmo
quedaria mas o menos:

if ($IPADDRESS en espera de ejecucion)
/sbin/ipchains -D forward -i eth0 -s $IPADDRESS -j MASQ
ELIMINAR ENTRADA DE LA COLA
fi
/sbin/ipchains -A forward -i eth0 -s $IPADDRESS -j MASQ
at now + ($TIME - 5) minutes smbclient (ENVIAR MENSAJE A LA MAQUINA
INFORMANDOLE QUE LA CONEXION VA A SER CANCELADA EN 5 MINUTOS)
at now + $TIME minutes /sbin/ipchains -D forward -i eth0 -s $IPADDRESS -j

Como bien dice Christoph, esto es tan solo un ejemplo y habran algunos
problemas al implementarlo, pero todo este soporte ya existe en el sistema.
No estamos reinventando la rueda, solo la vamos a usar de otra forma!.

Para los del Ciber Cafe, ya que por aca no hay muchos y nunca he estado en
uno, me pregunto, ustedes sirven cafe?

Bye


Mauricio A.


- Original Message -
From: Antonio Castro [EMAIL PROTECTED]
To: Christoph Simon [EMAIL PROTECTED]
Cc: E.Guerra [EMAIL PROTECTED]; [EMAIL PROTECTED];
debian-user-spanish@lists.debian.org
Sent: Saturday, March 31, 2001 2:12 AM
Subject: Re: Ciber Cafe


On Sat, 31 Mar 2001, Christoph Simon wrote:

 On Fri, 30 Mar 2001 22:14:55 +
 E.Guerra [EMAIL PROTECTED] wrote:

  R. M. Alarcon wrote:
 
   /sbin/ipchains -A forward -i eth0 -s $IPADDRESS -j MASQ
   at now + $TIME minutes /sbin/ipchains -D forward -i eth0 -s
$IPADDRESS -j
   MASQ
  
  me parece cojonudo, es más, yo estaba pensando hacer ésto mismo de una
  manera más complicada, no me había dado cuenta del at.
 
  sería así: creo un usuario que sería el operador(cobrador)
  sustituyo el bash, por algún programa que yo haga, el nota hace telnet
  desde cualquier puesto y le sale un menu con un par de opciones, puedo
  complicarlo más con postgresql, que lleve la contabilidad,,
 
  ¿pero hay algo de ésto hecho?
  pos, si no, no lo hago

 Pues antes de lanzar las campanas al vuelo, piénsatelo un poco. Estas
 líneas sólo son ejemplos como lo podrías hacer, no está hecho. Tendrás
 que considerar muchos mas casos, especialmente si implicas una base de
 datos. Por ejemplo, si un usuário dice que quiere una hora, pero
 después de media hora se cansó, ¿qué hará el operador? ¿Y si es al
 revés, que quería navegar durante media hora, está en un chat
 interesantísimo y quiere otra media hora? Si entre el final de una
 sessión y el comienzo de la otra hay un poco mas tiempo, puede ser que
 el host remoto le cancela su sessión por timeout y é nunca volverá a
 encontrar su nuevo amor eterno en esta sála random. ¡Te odiará con
 toda su alma! Y ¿qué hará el operador si quiere testar alguna cosa o
 si simplemente quiere navegar porque a las 8:30am no hay clientes?
 ¿Quedará en la base de datos como una sessión vendida? ¿O le vas a decir
 el secreto como activar el masquerading sin que se entere la base de
 datos? En este caso, no necesitas del postgres, porque le tendrás que
 creer todo lo que te cuenta. Lamentablemente todavía hay muchas
 situaciones `inprevistas', y cada día vas a encontrar alguna nueva...

Pueno para esa parte yo lo que haría en lugar de usar

Re: Ciber Cafe

2001-03-31 Por tema Hue-Bond
 Ya que tengo un ciber, me considero obligado a responder :^).

El viernes 30 de marzo de 2001 a la(s) 17:06:42 -0300, Christoph Simon contaba:

Puedes hacerte un script que añade o quita una regla en ipchains o
iptables, y que lo quita usando at. Para cerrar la sessión, pudes
añadir una línea con ssh y kill para los procesos de este usuário. Si
ssh está correctamente configurado, no necesitarás password.

 Yo lo  tengo implementado  en red, y  en güin  (queríamos abrir
 pronto  y hacerlo  en  visual basic  me llevó  muy  poco). En  cada
 cliente hay  un programa  que cuando recibe  cierta orden  desde el
 mío, pone  la pantalla negra  (una ventana  on top de  tamaño del
 escritorio),  de  forma  que  el ordenador  es  inusable.  Nada  de
 Ctrl-Alt-Del ni Alt-Tab ya que  el programa llama a una funcioncita
 de la  API que desactiva esto.  El programa de mi  ordenata es para
 enviar cosas a los demás de forma que, bien pensado, se puede crear
 todo un protocolo con el que se entenderán el master y el cliente.

 Por tanto,  si se  hace de  esta forma en  Linux (casi  todo mi
 problema es tapar  la pantalla y hacer que no  se pueda recuperar),
 el  masquerading  quedaría  continuo  y no  habría  que  andar  con
 ipchains (otra  cosa sería poner una  tarifa para uso local  y otra
 para salir  a internet,  en ese  caso sí  haría falta  ipchains). A
 partir de ahí, lo de matar procesos, hacer o no hacer contabilidad,
 ampliar el  tiempo o  cortarlo antes  de la  cuenta, etc.  se puede
 implementar en  ambos programas como  un comando más,  un parámetro
 más de cierto comando o lo que sea.

 Por cierto,  el mío es  ciber a secas  pero estoy viendo  lo de
 poner una máquina de café :^).


[EMAIL PROTECTED]

-- 
 David Serrano [EMAIL PROTECTED] - Linux Registered User #87069


pgpyjz396xvrB.pgp
Description: PGP signature


Re: Ciber Cafe

2001-03-31 Por tema E.Guerra



Que bueno, esta conversacion se ha vuelto bien interesante.


y mucho



Para los del Ciber Cafe, ya que por aca no hay muchos y nunca he estado en
uno, me pregunto, ustedes sirven cafe?


creo que hay de todo, he visto tres pc dentro de un bar comun y 
corriente, he visto un salon de pcs con maquinas expendedoras de 
coca-cola, etc.
mi primer caso es el aula informatica de una escuela privada, que fuera 
de clases de informatica, brinda este servicio por un precio simbolico a 
sus alumnos del cual no se espera beneficio, que aqui no es gran 
problema, pero se me ocurrio, para otros casos. ademas sirve a la otra 
red administrativa y totalmente separada de la clase, por supuesto con 
ipchains.

gracias a todos por sus criterios y en especial a Alarcon
E.Guerrra



Re: Ciber Cafe

2001-03-31 Por tema R. M. Alarcon
Suena interesante el programa, la verdad nunca me ha gustado programar en
guindows. Esos los he visto en las convenciones que tienen esas terminales
de accesso a internet y uno con la expocard activa el terminal, de resto es
bloqueado.

De pronto si a los cafeteros les interesa se podria hacer un programita bien
chevere combinando cliente/servidor.


- Original Message -
From: Hue-Bond [EMAIL PROTECTED]
To: debian-user-spanish@lists.debian.org
Sent: Saturday, March 31, 2001 2:36 PM
Subject: Re: Ciber Cafe





Ciber Cafe

2001-03-30 Por tema E.Guerra

¿Sabe alguien de algún software que controle la conexión de los
puestos de una red, a Internet, a travéz de Linux, enmascarando?
saludos
E.guerra



RE: Ciber Cafe

2001-03-30 Por tema R. M. Alarcon
aca esta todo

http://www.linuxdoc.org/HOWTO/IP-Masquerade-HOWTO.html


-Original Message-
From: E.Guerra [mailto:[EMAIL PROTECTED]
Sent: Thursday, March 29, 2001 4:33 PM
To: Lista Debian
Subject: Ciber Cafe


¿Sabe alguien de algún software que controle la conexión de los
puestos de una red, a Internet, a travéz de Linux, enmascarando?
saludos
E.guerra


--
Unsubscribe?  mail -s unsubscribe
[EMAIL PROTECTED]  /dev/null





Re: Ciber Cafe

2001-03-30 Por tema E.Guerra

parece no me expliqué.
ya tengo linux enmascarando a dos redes distintas y saliendo por rdsi.
una de las redes es un ciber.
entra un cliente, paga 120 euros, y se le dice que coga el puesto 5
se le introduce a alguna consola, 120 euros al puesto 5, y a partir de 
éste momento es que se activa la salida a internet del puesto 5.
y a los 23 minutos (digamos que es lo que le corrresponde), deja de 
tener conexión el puesto 5.




R. M. Alarcon wrote:


aca esta todo

http://www.linuxdoc.org/HOWTO/IP-Masquerade-HOWTO.html





¿Sabe alguien de algún software que controle la conexión de los
puestos de una red, a Internet, a travéz de Linux, enmascarando?
saludos
E.guerra






RE: Ciber Cafe

2001-03-30 Por tema R. M. Alarcon
Personalmente no se ni si hay algo ya hecho que haga lo que dice. Sin
embargo no creo que sea muy dificil de implementar a travez de un script que
haga:

/sbin/ipchains -A forward -i eth0 -s 192.168.0.PUESTO/32 -j MASQ

y que programe de alguna manera travez de crontab, at, atq, o batch la
eliminacion de esta entrada de la cadena forward.

Suena bien interesante, me cuenta si le suena o no.



Mauricio A.

-Original Message-
From: E.Guerra [mailto:[EMAIL PROTECTED]
Sent: Friday, March 30, 2001 3:42 PM
To: R. M. Alarcon
Cc: E.Guerra; Lista Debian
Subject: Re: Ciber Cafe


parece no me expliqué.
ya tengo linux enmascarando a dos redes distintas y saliendo por rdsi.
una de las redes es un ciber.
entra un cliente, paga 120 euros, y se le dice que coga el puesto 5
se le introduce a alguna consola, 120 euros al puesto 5, y a partir de
éste momento es que se activa la salida a internet del puesto 5.
y a los 23 minutos (digamos que es lo que le corrresponde), deja de
tener conexión el puesto 5.



R. M. Alarcon wrote:

 aca esta todo

 http://www.linuxdoc.org/HOWTO/IP-Masquerade-HOWTO.html



 ¿Sabe alguien de algún software que controle la conexión de los
 puestos de una red, a Internet, a travéz de Linux, enmascarando?
 saludos
 E.guerra




--
Unsubscribe?  mail -s unsubscribe
[EMAIL PROTECTED]  /dev/null





Re: Ciber Cafe

2001-03-30 Por tema Christoph Simon
On Fri, 30 Mar 2001 20:42:29 +
E.Guerra [EMAIL PROTECTED] wrote:

 parece no me expliqué.
 ya tengo linux enmascarando a dos redes distintas y saliendo por rdsi.
 una de las redes es un ciber.
 entra un cliente, paga 120 euros, y se le dice que coga el puesto 5
 se le introduce a alguna consola, 120 euros al puesto 5, y a partir de 
 éste momento es que se activa la salida a internet del puesto 5.
 y a los 23 minutos (digamos que es lo que le corrresponde), deja de 
 tener conexión el puesto 5.

Puedes hacerte un script que añade o quita una regla en ipchains o
iptables, y que lo quita usando at. Para cerrar la sessión, pudes
añadir una línea con ssh y kill para los procesos de este usuário. Si
ssh está correctamente configurado, no necesitarás password.


--
Christoph Simon
[EMAIL PROTECTED]
---
^X^C
q
quit
:q
^C
end
x
exit
ZZ
^D
?
help
shit
.



RE: Ciber Cafe

2001-03-30 Por tema R. M. Alarcon
Si,

creo que un script que tome 2 parametros, la direccion ip y el numero de
minutos permitidos y que haga:

/sbin/ipchains -A forward -i eth0 -s $IPADDRESS -j MASQ
at now + $TIME minutes /sbin/ipchains -D forward -i eth0 -s $IPADDRESS -j
MASQ

debe ser suficiente.

Si le hace no se le olvide eliminar la entrada en la cadena donde le da
permiso a toda la red.

Me cuenta como le va

-Original Message-
From: R. M. Alarcon [mailto:[EMAIL PROTECTED]
Sent: Friday, March 30, 2001 2:58 PM
To: E.Guerra; debian-user-spanish@lists.debian.org
Subject: RE: Ciber Cafe


Personalmente no se ni si hay algo ya hecho que haga lo que dice. Sin
embargo no creo que sea muy dificil de implementar a travez de un script que
haga:

/sbin/ipchains -A forward -i eth0 -s 192.168.0.PUESTO/32 -j MASQ

y que programe de alguna manera travez de crontab, at, atq, o batch la
eliminacion de esta entrada de la cadena forward.

Suena bien interesante, me cuenta si le suena o no.



Mauricio A.

-Original Message-
From: E.Guerra [mailto:[EMAIL PROTECTED]
Sent: Friday, March 30, 2001 3:42 PM
To: R. M. Alarcon
Cc: E.Guerra; Lista Debian
Subject: Re: Ciber Cafe


parece no me expliqué.
ya tengo linux enmascarando a dos redes distintas y saliendo por rdsi.
una de las redes es un ciber.
entra un cliente, paga 120 euros, y se le dice que coga el puesto 5
se le introduce a alguna consola, 120 euros al puesto 5, y a partir de
éste momento es que se activa la salida a internet del puesto 5.
y a los 23 minutos (digamos que es lo que le corrresponde), deja de
tener conexión el puesto 5.



R. M. Alarcon wrote:

 aca esta todo

 http://www.linuxdoc.org/HOWTO/IP-Masquerade-HOWTO.html



 ¿Sabe alguien de algún software que controle la conexión de los
 puestos de una red, a Internet, a travéz de Linux, enmascarando?
 saludos
 E.guerra




--
Unsubscribe?  mail -s unsubscribe
[EMAIL PROTECTED]  /dev/null




--
Unsubscribe?  mail -s unsubscribe
[EMAIL PROTECTED]  /dev/null





Re: Ciber Cafe

2001-03-30 Por tema E.Guerra

R. M. Alarcon wrote:


/sbin/ipchains -A forward -i eth0 -s $IPADDRESS -j MASQ
at now + $TIME minutes /sbin/ipchains -D forward -i eth0 -s $IPADDRESS -j
MASQ

me parece cojonudo, es más, yo estaba pensando hacer ésto mismo de una 
manera más complicada, no me había dado cuenta del at.


sería así: creo un usuario que sería el operador(cobrador)
sustituyo el bash, por algún programa que yo haga, el nota hace telnet 
desde cualquier puesto y le sale un menu con un par de opciones, puedo 
complicarlo más con postgresql, que lleve la contabilidad,,


¿pero hay algo de ésto hecho?
pos, si no, no lo hago

gracias
e.guerra



RE: Ciber Cafe

2001-03-30 Por tema R. M. Alarcon
si quiere que se vea bonito meta eso en un script de perl y corralo a traves
de apache para que sea mas facil de usar. No creo que haya algo asi hecho,
sobre todo que se puede hacer con 2 lineas de comandos, es mas el maquillaje
que hay que hacer que la tarea en si.

Bye,

-Original Message-
From: E.Guerra [mailto:[EMAIL PROTECTED]
Sent: Friday, March 30, 2001 5:15 PM
To: R. M. Alarcon
Cc: E.Guerra; debian-user-spanish@lists.debian.org
Subject: Re: Ciber Cafe


R. M. Alarcon wrote:

 /sbin/ipchains -A forward -i eth0 -s $IPADDRESS -j MASQ
 at now + $TIME minutes /sbin/ipchains -D forward -i eth0 -s $IPADDRESS -j
 MASQ

me parece cojonudo, es más, yo estaba pensando hacer ésto mismo de una
manera más complicada, no me había dado cuenta del at.

sería así: creo un usuario que sería el operador(cobrador)
sustituyo el bash, por algún programa que yo haga, el nota hace telnet
desde cualquier puesto y le sale un menu con un par de opciones, puedo
complicarlo más con postgresql, que lleve la contabilidad,,

¿pero hay algo de ésto hecho?
pos, si no, no lo hago

gracias
e.guerra






Re: Ciber Cafe

2001-03-30 Por tema Christoph Simon
On Fri, 30 Mar 2001 22:14:55 +
E.Guerra [EMAIL PROTECTED] wrote:

 R. M. Alarcon wrote:
 
  /sbin/ipchains -A forward -i eth0 -s $IPADDRESS -j MASQ
  at now + $TIME minutes /sbin/ipchains -D forward -i eth0 -s $IPADDRESS -j
  MASQ
  
 me parece cojonudo, es más, yo estaba pensando hacer ésto mismo de una 
 manera más complicada, no me había dado cuenta del at.
 
 sería así: creo un usuario que sería el operador(cobrador)
 sustituyo el bash, por algún programa que yo haga, el nota hace telnet 
 desde cualquier puesto y le sale un menu con un par de opciones, puedo 
 complicarlo más con postgresql, que lleve la contabilidad,,
 
 ¿pero hay algo de ésto hecho?
 pos, si no, no lo hago

Pues antes de lanzar las campanas al vuelo, piénsatelo un poco. Estas
líneas sólo son ejemplos como lo podrías hacer, no está hecho. Tendrás
que considerar muchos mas casos, especialmente si implicas una base de
datos. Por ejemplo, si un usuário dice que quiere una hora, pero
después de media hora se cansó, ¿qué hará el operador? ¿Y si es al
revés, que quería navegar durante media hora, está en un chat
interesantísimo y quiere otra media hora? Si entre el final de una
sessión y el comienzo de la otra hay un poco mas tiempo, puede ser que
el host remoto le cancela su sessión por timeout y é nunca volverá a
encontrar su nuevo amor eterno en esta sála random. ¡Te odiará con
toda su alma! Y ¿qué hará el operador si quiere testar alguna cosa o
si simplemente quiere navegar porque a las 8:30am no hay clientes?
¿Quedará en la base de datos como una sessión vendida? ¿O le vas a decir
el secreto como activar el masquerading sin que se entere la base de
datos? En este caso, no necesitas del postgres, porque le tendrás que
creer todo lo que te cuenta. Lamentablemente todavía hay muchas
situaciones `inprevistas', y cada día vas a encontrar alguna nueva...

--
Christoph Simon
[EMAIL PROTECTED]
---
^X^C
q
quit
:q
^C
end
x
exit
ZZ
^D
?
help
shit
.