#!/usr/bin/python2.2 from slides import Slide, Bullet, SubBullet, URL from twslides import Lecture lecture = Lecture( "Twisted.Conch: SSH in Python", Slide("Introduction", ), Slide("Other implementations (servers)", Bullet("OpenSSH", SubBullet(URL("http://www.openssh.org")), ), Bullet("FSecure SSH", SubBullet(URL("http://www.f-secure.com/products/ssh/")), ), Bullet("LSH", SubBullet(URL("http://www.lysator.liu.se/~nisse/lsh/")), ), ), Slide("Other implementations (clients)", Bullet("PuTTY", SubBullet(URL("http://www.chiark.greenend.org.uk/~sgtatham/putty/")), ), Bullet("TeraTerm", SubBullet(URL("http://www.ayera.com/teraterm/")), ), Bullet("MindTerm", SubBullet(URL("http://www.appgate.com/mindterm/")), ), ), Slide("Why Twisted?", Bullet("Asynchronous"), Bullet("Python"), Bullet("High-Level"), ), Slide("No Forking or Threads", Bullet("Forking is expensive"), Bullet("Threads are complicated/expensive, esp. in Python"), Bullet("Asynch means no worrying about any of that"), Bullet("Makes running a session 2x as fast in Conch as in OpenSSH"), ), Slide("Security - No Pointers", SubBullet("No buffer overflows"), SubBullet("No off-by-1 errors"), SubBullet("No malloc/free bugs"), SubBullet("No arbitrary code execution"), ), Slide("Security - High Level", Bullet("Strong built-in library"), Bullet("Exceptions"), ), Slide("Security - Not Root", Bullet("Limits vulnerablity in a compromise"), Bullet("Allows use of process limits/etc."), ), Slide("Interfacing with other software", Bullet("OpenSSH interacts only through separate processes", SubBullet("Expensive"), SubBullet("Complicated"), ), Bullet("Conch can interact in-process", SubBullet("Faster"), SubBullet("Easy integration to other Twisted and Python libraries"), ), ), Slide("Speed", Bullet("C is faster than Python"), Bullet("Interpreter cost is high for the client"), Bullet("FSH-style connection caching helps a bit"), Bullet("Psyco helps as well"), ), Slide("Age", Bullet("Conch is new", SubBullet("First commit was July 15, 2002"), ), Bullet("Hasn't had a security aduit"), Bullet("Shouldn't be used in security-critical systems"), ), Slide("Applications with Conch", Bullet("Reality: MUD framework"), Bullet("Insults: async. replacement for curses in Conch apps"), ), Slide("Future Directions", Bullet("Generic authentication forwarding"), Bullet("Work on applications"), Bullet("Auditing of the code"), Bullet("Increase speed"), Bullet("SFTP/SCP"), Bullet("Key Agent"), Bullet("DNSSEC"), ), Slide("Conclusion", Bullet("Working implementation in Python"), Bullet("Much room for improvement"), ), ) lecture.renderHTML(".", "conch-%d.html", css="main.css")