コード例 #1
0
ファイル: spyceXbmc.py プロジェクト: Avoidnf8/xbmc-fork
def ParseFile(file, env):
	output = StringIO()
	input = StringIO(env['QUERY_STRING'])
	env['REQUEST_URI'] = "/" + string.replace(string.lstrip(file, "Q:\\web"), "\\", "/")
	SPYCE_HOME = os.path.abspath(os.path.dirname(sys.modules['spyceXbmc'].__file__))
	request = spyceCmd.spyceCmdlineRequest(input, env, file)
	response = spyceCmd.spyceCmdlineResponse(output, sys.stderr, 1)
	result = spyce.spyceFileHandler(request, response, file)
	response.flush()
	result = output.getvalue()
	response.close()
	return result
コード例 #2
0
ファイル: spyceModpy.py プロジェクト: Avoidnf8/xbmc-fork
def spyceMain(apacheRequest):
  "Apache entry point."
  os.environ[spyce.SPYCE_ENTRY] = 'modpy'
  apacheRequest.add_common_vars()
  request = spyceModpyRequest(apacheRequest)
  response = spyceModpyResponse(apacheRequest)
  filename = apacheRequest.filename
  try:
    result = spyce.spyceFileHandler(request, response, filename,
      config_file = getApacheConfig(apacheRequest, 'SPYCE_CONFIG', None))
  except (spyceException.spyceForbidden, spyceException.spyceNotFound), e:
    response.clear()
    response.setContentType('text/plain')
    response.write(str(e)+'\n')
コード例 #3
0
ファイル: spyceXbmc.py プロジェクト: arunsh-git/xbmc-fork
def ParseFile(file, env):
    output = StringIO()
    input = StringIO(env['QUERY_STRING'])
    env['REQUEST_URI'] = "/" + string.replace(string.lstrip(file, "Q:\\web"),
                                              "\\", "/")
    SPYCE_HOME = os.path.abspath(
        os.path.dirname(sys.modules['spyceXbmc'].__file__))
    request = spyceCmd.spyceCmdlineRequest(input, env, file)
    response = spyceCmd.spyceCmdlineResponse(output, sys.stderr, 1)
    result = spyce.spyceFileHandler(request, response, file)
    response.flush()
    result = output.getvalue()
    response.close()
    return result
コード例 #4
0
def spyceMain(apacheRequest):
    "Apache entry point."
    os.environ[spyce.SPYCE_ENTRY] = "modpy"
    apacheRequest.add_common_vars()
    request = spyceModpyRequest(apacheRequest)
    response = spyceModpyResponse(apacheRequest)
    filename = apacheRequest.filename
    global CONFIG_FILE
    if CONFIG_FILE == None:
        CONFIG_FILE = getApacheConfig(apacheRequest, "SPYCE_CONFIG", None)
    try:
        result = spyce.spyceFileHandler(request, response, filename, config_file=CONFIG_FILE)
    except (spyceException.spyceForbidden, spyceException.spyceNotFound), e:
        response.clear()
        response.setContentType("text/plain")
        response.write(str(e) + "\n")
コード例 #5
0
ファイル: spyceModpy.py プロジェクト: arunsh-git/xbmc-fork
def spyceMain(apacheRequest):
    "Apache entry point."
    os.environ[spyce.SPYCE_ENTRY] = 'modpy'
    apacheRequest.add_common_vars()
    request = spyceModpyRequest(apacheRequest)
    response = spyceModpyResponse(apacheRequest)
    filename = apacheRequest.filename
    try:
        result = spyce.spyceFileHandler(request,
                                        response,
                                        filename,
                                        config_file=getApacheConfig(
                                            apacheRequest, 'SPYCE_CONFIG',
                                            None))
    except (spyceException.spyceForbidden, spyceException.spyceNotFound), e:
        response.clear()
        response.setContentType('text/plain')
        response.write(str(e) + '\n')
コード例 #6
0
def spyceMain(cgimode=0,
              cgiscript=None,
              stdout=sys.stdout,
              stdin=sys.stdin,
              stderr=sys.stderr,
              environ=os.environ):
    "Command-line and CGI entry point."
    # defaults
    compileonlyMode = 0
    outputFilename = None
    defaultOutputFilename = 0
    httpmode = 0
    httpport = None
    httproot = None
    daemon = None
    configFile = None
    # parse options
    if cgimode and cgiscript:
        args = [cgiscript]
    else:
        try:
            opts, args = getopt.getopt(sys.argv[1:], 'h?vco:Owq:ld:p:', [
                'help',
                'version',
                'compile',
                'output=',
                'web',
                'query=',
                'listen',
                'daemon=',
                'port=',
                'conf=',
            ])
        except getopt.error:
            if cgimode:
                stdout.write('Content-Type: text/plain\n\n')
            stdout.write('syntax: unknown switch used\n')
            stdout.write('Use -h option for help.\n')
            return -1
        for o, a in opts:
            if o in ("-v", "--version"):
                showVersion()
                return
            if o in ("-h", "--help", "-?"):
                showUsage()
                return
            if o in ("-c", "--compileonly"):
                compileonlyMode = 1
            if o in ("-o", "--output"):
                outputFilename = a
            if o in ("-O", ):
                defaultOutputFilename = 1
            if o in ("-w", "--web"):
                cgimode = 1
            if o in ("-q", "--query"):
                environ['QUERY_STRING'] = a
            if o in ("-l", "--listen"):
                httpmode = 1
            if o in ("-d", "--daemon"):
                daemon = a
            if o in ("-p", "--port"):
                try:
                    httpport = int(a)
                except:
                    stdout.write('syntax: port must be integer\n')
                    stdout.write('Use -h option for help.\n')
                    return -1
            if o in ("--conf", ):
                configFile = a

    # web server mode
    if httpmode:
        if len(args):
            httproot = args[0]
        import spyceWWW
        return spyceWWW.spyceHTTPserver(httpport,
                                        httproot,
                                        config_file=configFile,
                                        daemon=daemon)
    # some checks
    if not cgimode and not defaultOutputFilename and len(args) > 1:
        stdout.write('syntax: too many files to process\n')
        stdout.write('Use -h option for help.\n')
        return -1
    # file globbing
    if defaultOutputFilename:
        globbed = map(glob.glob, args)
        args = []
        for g in globbed:
            for f in g:
                args.append(f)
    if not len(args):
        if cgimode:
            stdout.write('Content-Type: text/plain\n\n')
        stdout.write('syntax: please specify a spyce file to process\n')
        stdout.write('Use -h option for help.\n')
        return -1
    # run spyce
    result = 0
    try:
        while len(args):
            result = 0
            script = args[0]
            del args[0]
            if cgimode:
                dir = os.path.dirname(script)
                if dir:
                    script = os.path.basename(script)
                    os.chdir(dir)
            try:
                output = stdout
                if defaultOutputFilename:
                    outputFilename = os.path.splitext(script)[0] + '.html'
                    stdout.write('Processing: %s\n' % script)
                    stdout.flush()
                if outputFilename:
                    output = None
                    output = open(outputFilename, 'w')
                if compileonlyMode:
                    s = spyce.getServer().spyce_cache['file', script]
                    output.write(s.getCode())
                    output.write('\n')
                else:
                    request = spyceCmdlineRequest(stdin, environ, script)
                    response = spyceCmdlineResponse(output, stderr, cgimode)
                    result = spyce.spyceFileHandler(request, response, script)
                    response.close()
            except KeyboardInterrupt:
                raise
            except SystemExit:
                pass
            except (spyceException.spyceForbidden,
                    spyceException.spyceNotFound), e:
                if cgimode:
                    stdout.write('Content-Type: text/plain\n\n')
                stdout.write(str(e) + '\n')
            except:
                if cgimode:
                    stdout.write('Content-Type: text/plain\n\n')
                stdout.write(spyceUtil.exceptionString() + '\n')
            if output:
                output.close()
コード例 #7
0
ファイル: spyceCmd.py プロジェクト: derobert/debianlink-xbmc
def spyceMain(cgimode=0, cgiscript=None, 
    stdout=sys.stdout, stdin=sys.stdin, stderr=sys.stderr, environ=os.environ):
  "Command-line and CGI entry point."
  # defaults
  compileonlyMode = 0
  outputFilename = None
  defaultOutputFilename = 0
  httpmode = 0
  httpport = None
  httproot = None
  daemon = None
  configFile = None
  # parse options
  if cgimode and cgiscript:
    args = [cgiscript]
  else:
    try:
      opts, args = getopt.getopt(sys.argv[1:], 'h?vco:Owq:ld:p:',
        ['help', 'version', 'compile', 'output=', 'web', 
         'query=', 'listen', 'daemon=', 'port=', 'conf=',])
    except getopt.error: 
      if cgimode:
        stdout.write('Content-Type: text/plain\n\n')
      stdout.write('syntax: unknown switch used\n')
      stdout.write('Use -h option for help.\n')
      return -1
    for o, a in opts:
      if o in ("-v", "--version"):
        showVersion(); return
      if o in ("-h", "--help", "-?"):
        showUsage(); return
      if o in ("-c", "--compileonly"):
        compileonlyMode = 1
      if o in ("-o", "--output"):
        outputFilename = a
      if o in ("-O", ):
        defaultOutputFilename = 1
      if o in ("-w", "--web"):
        cgimode = 1
      if o in ("-q", "--query"):
        environ['QUERY_STRING'] = a
      if o in ("-l", "--listen"):
        httpmode = 1
      if o in ("-d", "--daemon"):
        daemon = a
      if o in ("-p", "--port"):
        try: httpport = int(a)
        except:
          stdout.write('syntax: port must be integer\n')
          stdout.write('Use -h option for help.\n')
          return -1
      if o in ("--conf", ):
        configFile = a

  # web server mode
  if httpmode:
    if len(args):
      httproot = args[0]
    import spyceWWW
    return spyceWWW.spyceHTTPserver(httpport, httproot, config_file=configFile, daemon=daemon)
  # some checks
  if not cgimode and not defaultOutputFilename and len(args)>1:
    stdout.write('syntax: too many files to process\n')
    stdout.write('Use -h option for help.\n')
    return -1
  # file globbing
  if defaultOutputFilename:
    globbed = map(glob.glob, args)
    args = []
    for g in globbed:
      for f in g:
        args.append(f)
  if not len(args):
    if cgimode:
      stdout.write('Content-Type: text/plain\n\n')
    stdout.write('syntax: please specify a spyce file to process\n')
    stdout.write('Use -h option for help.\n')
    return -1
  # run spyce
  result=0
  try:
    while len(args):
      result=0
      script = args[0]
      del args[0]
      if cgimode:
        dir = os.path.dirname(script)
        if dir: 
          script = os.path.basename(script)
          os.chdir(dir)
      try:
        output = stdout
        if defaultOutputFilename:
          outputFilename = os.path.splitext(script)[0]+'.html'
          stdout.write('Processing: %s\n'%script)
          stdout.flush()
        if outputFilename:
          output = None
          output = open(outputFilename, 'w')
        if compileonlyMode:
          s = spyce.getServer().spyce_cache['file', script]
          output.write(s.getCode())
          output.write('\n')
        else:
          request = spyceCmdlineRequest(stdin, environ, script)
          response = spyceCmdlineResponse(output, stderr, cgimode)
          result = spyce.spyceFileHandler(request, response, script)
          response.close()
      except KeyboardInterrupt: raise
      except SystemExit: pass
      except (spyceException.spyceForbidden, spyceException.spyceNotFound), e:
        if cgimode:
          stdout.write('Content-Type: text/plain\n\n')
        stdout.write(str(e)+'\n')
      except:
        if cgimode:
          stdout.write('Content-Type: text/plain\n\n')
        stdout.write(spyceUtil.exceptionString()+'\n')
      if output:
        output.close()
コード例 #8
0
ファイル: spyceWWW.py プロジェクト: arunsh-git/xbmc-fork
 def handler_spyce(self, path):
     # process spyce
     request = spyceHTTPRequest(self, self.server.documentRoot)
     response = spyceHTTPResponse(self)
     result = spyce.spyceFileHandler(request, response, path)
     response.close()
コード例 #9
0
ファイル: spyceWWW.py プロジェクト: derobert/debianlink-xbmc
 def handler_spyce(self, path):
   # process spyce
   request = spyceHTTPRequest(self, self.server.documentRoot)
   response = spyceHTTPResponse(self)
   result = spyce.spyceFileHandler(request, response, path)
   response.close()