Ignore:
Timestamp:
Dec 21, 2009, 1:11:31 AM (14 years ago)
Author:
broder
Message:

ajaxterm!

Location:
package_branches/invirt-web/ajaxterm-rebased/code
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • package_branches/invirt-web/ajaxterm-rebased/code/main.py

    r2751 r2752  
    406406                     hostname=cherrypy.request.local.name)
    407407            return d
     408
     409        @cherrypy.expose
     410        def at(self, machine_id, k=None, c=0):
     411            machine = validation.Validate(cherrypy.request.login, cherrypy.request.state, machine_id=machine_id).machine
     412            if machine_id in self.atsessions:
     413                term = self.atsessions[machine_id]
     414            else:
     415                print >>sys.stderr, "spawning new session for terminal to ",machine_id
     416                term = self.atsessions[machine_id] = self.atmulti.create(
     417                    ["ssh", "-e","none", "-l", machine.name, config.console.hostname]
     418                    )
     419            if k:
     420                self.atmulti.proc_write(term,k)
     421            time.sleep(0.002)
     422            dump=self.atmulti.dump(term,c)
     423            cherrypy.response.headers['Content-Type']='text/xml'
     424            if isinstance(dump,str):
     425                return dump
     426            else:
     427                del self.atsessions[machine_id]
     428                return '<?xml version="1.0"?><idem></idem>'
    408429
    409430    machine = MachineView()
  • package_branches/invirt-web/ajaxterm-rebased/code/static/ajaxterm/ajaxterm.js

    r2747 r2752  
    11ajaxterm={};
    2 ajaxterm.Terminal_ctor=function(id,width,height) {
     2ajaxterm.Terminal_ctor=function(id,machine_id) {
    33        var ie=0;
    44        if(window.ActiveXObject)
    55                ie=1;
    6         var sid=""+Math.round(Math.random()*1000000000);
    7         var query0="s="+sid+"&w="+width+"&h="+height;
     6        var base_path="machine/"+machine_id+"/at";
     7        var query0="";
    88        var query1=query0+"&c=1&k=";
    99        var buf="";
     
    104104                        var query=query1+send;
    105105                        if(opt_get.className=='on') {
    106                                 r.open("GET","u?"+query,true);
     106                                r.open("GET",base_path+"?"+query,true);
    107107                                if(ie) {
    108108                                        r.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
    109109                                }
    110110                        } else {
    111                                 r.open("POST","u",true);
     111                                r.open("POST",base_path,true);
    112112                        }
    113113                        r.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
     
    274274        init();
    275275}
    276 ajaxterm.Terminal=function(id,width,height) {
    277         return new this.Terminal_ctor(id,width,height);
     276ajaxterm.Terminal=function(id,machine_id) {
     277        return new this.Terminal_ctor(id,machine_id);
    278278}
    279279
  • package_branches/invirt-web/ajaxterm-rebased/code/templates/terminal.mako

    r2751 r2752  
    2121<script type="text/javascript">
    2222window.onload=function() {
    23         t=ajaxterm.Terminal("term", 80,25);
     23        t=ajaxterm.Terminal("term", ${machine.machine_id});
    2424}
    2525</script>
     
    2727
    2828<div id="term"></div>
     29<div style="clear: both;"></div>
Note: See TracChangeset for help on using the changeset viewer.