]> git.llucax.com Git - software/pymin.git/blobdiff - TODO
Add NatHandler to handle NAT (port forwarding, snating and masquerading).
[software/pymin.git] / TODO
diff --git a/TODO b/TODO
index c87a7866147d0e18e918cbf5c30d20c47e5c47af..3438f7e8d8f80c7820786bfd089278f58369df4d 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,29 +1,45 @@
 
 Ideas / TODO:
 
-* Soportar comillas para argumentos con espacios y otros caracteres, onda:
-  'misc set motd "Hola!\nEste es el servidor de garombia"'
+* Revisar interacción entre firewall y nat que ambos usan iptables. Es probable
+  que al manipular reglas por número de índice se complique todo porque tengo
+  indices separados por tipo de regla, entonces si pongo borrar la 2 tal vez es
+  la 13 en vez de la dos porque hay otras 11 reglas de otros sub-servicios que
+  usan iptables. Tal vez la solución simple es hacer algo como:
+  router firewall add [regla]
+  router nat masq add [masq]
+  router nat forward add [port]
+  router nat snat add [snat]
+  (u organizándolo de otra forma pero que tengan todos un root en común)
+
+* Agregar soporte de opciones de línea de comando/archivo de conf para:
+  * Dry run.
+  * Seleccionar servicios a usar.
+  * Puerto/bind addr.
+  * Logging.
+  * Paths.
+
+* SubHandlers:
+  * ComposeDictSubHandler con soporte de dirty/del/add (para ip y DNS).
+  * Agregar SimpleDictSubHandler? (que no use una clase, que use un dict
+    de strings directamente, para Proxy Users por ej.). Ídem List.
+  * Agregar SetSubHandler? (para Proxy Hosts)
 
-* Soportar keyword arguments, onda que:
-  'dns set pepe=10.10.10.1 juan=10.10.10.2'
-  se mapee a algo como: dns.set(pepe='10.10.10.1', juan='10.10.10.2')
-
-* Hacer el protocolo completamente introspectivo, de manera que el cliente pueda
-  ser muy simple y genérico y en caso de agregar funcionalidad no sea necesario
-  modificarlo.
-
-* Evaluar hacer un RootHandler en vez de un diccionario con los handlers de la
-  raiz para simplificar la introspección y tener un help/commands global.
+* Agregar logging.
 
-* Evaluar que el dispatcher vea si se llama a un HandlerContainer y de ser así
-  que tire una ayuda en vez de un CommandNotFound (por ejemplo si se pone:
-  "dhcp" solo que tire una ayuda). Y si hay un subcomando no encontrado, que
-  tire un Command Not Found in handler (por ej "dhcp lala" -> Command "lala" not
-  found in "dhcp").
+* Agregar validación con formencode.
 
-* Agregar logging.
+* Ver como manejar la información sobre si un servicio está andando o no. Si se
+  agrega una acción 'status' para ver el estado y si ese estado se saca de posta
+  de /proc o si es un estado interno y se asume que los servicios no se caen (no
+  creo que sea una buena idea esto último). Además habría que ver cuando arranca
+  el pymin, si se inician servicios automáticamente o no y si la info de qué
+  servicios iniciar o no es persistente y si puede configurarla el usuario.
 
-* Agregar validación.
+* No usar comandos con templates, porque después si no hay que ejecutarlos con
+  un shell (porque el template devuelve un string todo grande) y hay que andar
+  teniendo cuidado de escapar las cosas (y hay riesgos de seguridad de shell
+  injection).
 
 Estas cosas quedan sujetas a necesitada y a definición del protocolo.
 Para mí lo ideal es que el protocolo de red sea igual que la consola del