OpenSecurity/client/cygwin.py
changeset 14 c187aaceca32
parent 12 11dc05750aea
child 15 2e4cb1ebcbed
     1.1 --- a/OpenSecurity/client/cygwin.py	Fri Dec 06 10:47:26 2013 +0100
     1.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.3 @@ -1,105 +0,0 @@
     1.4 -#!/bin/env python
     1.5 -# -*- coding: utf-8 -*-
     1.6 -
     1.7 -# ------------------------------------------------------------
     1.8 -# cygwin command
     1.9 -# 
    1.10 -# executes a cygwin command inside the opensecurity project
    1.11 -#
    1.12 -# Autor: Oliver Maurhart, <oliver.maurhart@ait.ac.at>
    1.13 -#
    1.14 -# Copyright (C) 2013 AIT Austrian Institute of Technology
    1.15 -# AIT Austrian Institute of Technology GmbH
    1.16 -# Donau-City-Strasse 1 | 1220 Vienna | Austria
    1.17 -# http://www.ait.ac.at
    1.18 -#
    1.19 -# This program is free software; you can redistribute it and/or
    1.20 -# modify it under the terms of the GNU General Public License
    1.21 -# as published by the Free Software Foundation version 2.
    1.22 -# 
    1.23 -# This program is distributed in the hope that it will be useful,
    1.24 -# but WITHOUT ANY WARRANTY; without even the implied warranty of
    1.25 -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    1.26 -# GNU General Public License for more details.
    1.27 -# 
    1.28 -# You should have received a copy of the GNU General Public License
    1.29 -# along with this program; if not, write to the Free Software
    1.30 -# Foundation, Inc., 51 Franklin Street, Fifth Floor, 
    1.31 -# Boston, MA  02110-1301, USA.
    1.32 -# ------------------------------------------------------------
    1.33 -
    1.34 -
    1.35 -# ------------------------------------------------------------
    1.36 -# imports
    1.37 -
    1.38 -import os
    1.39 -import subprocess
    1.40 -import sys
    1.41 -
    1.42 -# local
    1.43 -from environment import Environment
    1.44 -
    1.45 -
    1.46 -# ------------------------------------------------------------
    1.47 -# code
    1.48 -
    1.49 -
    1.50 -class Cygwin(object):
    1.51 -
    1.52 -    """Some nifty methods working with Cygwin"""
    1.53 -    
    1.54 -    def __call__(self, command, stdin = subprocess.PIPE, stdout = subprocess.PIPE, stderr = subprocess.PIPE):
    1.55 -        """make an instance of this object act as a function"""
    1.56 -        return self.execute(command, stdin, stdout, stderr)
    1.57 -
    1.58 -        
    1.59 -    @staticmethod
    1.60 -    def root():
    1.61 -        """get the path to our local cygwin installment"""
    1.62 -        return os.path.join(Environment('OpenSecurity').prefix_path, '..', 'cygwin')
    1.63 -
    1.64 -
    1.65 -    def execute(self, command, stdin = subprocess.PIPE, stdout = subprocess.PIPE, stderr = subprocess.PIPE):
    1.66 -        """execute a cygwin shell command
    1.67 -        
    1.68 -        command is list of arguments like ['/bin/ls', '-al', '-h']
    1.69 -        
    1.70 -        a Popen object is returned"""
    1.71 -        command_path = Cygwin.root() + os.sep.join(command[0].split('/'))
    1.72 -        command = [command_path] + command[1:]
    1.73 -        
    1.74 -        return subprocess.Popen(command, shell = False, stdin = stdin, stdout = stdout, stderr = stderr)
    1.75 -        
    1.76 -        
    1.77 -    @staticmethod
    1.78 -    def is_X11_running():
    1.79 -        """check if we can connect to a X11 running instance"""
    1.80 -        p = Cygwin()(['/bin/bash', '-c', 'DISPLAY=:0 /usr/bin/xset -q'])
    1.81 -        stdout, stderr = p.communicate()
    1.82 -        return p.returncode == 0
    1.83 -        
    1.84 -        
    1.85 -    @staticmethod
    1.86 -    def start_X11():
    1.87 -        """start X11 in the background (if not already running) on DISPLAY=:0"""
    1.88 -        
    1.89 -        # do not start if already running
    1.90 -        if Cygwin.is_X11_running():
    1.91 -            return
    1.92 -            
    1.93 -        # launch X11 (forget output and return immediately)
    1.94 -        p = Cygwin()(['/bin/bash', '--login', '-i', '-c', ' X :0 -multiwindow'], stdin = None, stdout = None, stderr = None)
    1.95 -        
    1.96 -    
    1.97 -# start
    1.98 -if __name__ == "__main__":
    1.99 -
   1.100 -    # execute what is given on the command line
   1.101 -    c = Cygwin()
   1.102 -    p = c(sys.argv[1:])
   1.103 -    
   1.104 -    # wait until the process finished and grab the output
   1.105 -    stdout, stderr = p.communicate()
   1.106 -    print('=== call result on stdout: ===\n' + stdout)
   1.107 -    print('=== call result on stderr: ===\n' + stderr)
   1.108 -