This file is indexed.

/usr/lib/python2.7/dist-packages/libpius/util.py is in pius 2.2.4-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
'''A set of util functions and variables for the PIUS suite.'''

# vim:shiftwidth=2:tabstop=2:expandtab:textwidth=80:softtabstop=2:ai:

from copy import copy
from libpius.constants import *
from optparse import Option, OptionValueError
import os
import re

DEBUG_ON = False
VALID_OPTIONS = [
    '--mail',
    '--signer',
    '--force-signer',
    '--use-agent',
    '--import',
    '--mail-host',
    '--mail-user',
    '--mail-port',
    '--mail-text',
    '--no-mail-tls',
    '--interactive',
    '--all-keys',
    '--gpg-agent',
    '--encrypt-outfiles',
    '--debug',
    '--no-sort-keyring',
    '--override-email',
    '--out-dir',
    '--no-pgp-mime',
    '--cache-passphrase',
    '--keyring',
    '--tmp-dir',
    '--policy-url',
    '--verbose',
]

def debug(line):
  '''Print a line, if debug is on, preceded with "DEBUG: ".'''
  if DEBUG_ON:
    print 'DEBUG:', line

def logcmd(cmd):
  debug("Running: %s" % ' '.join(cmd))

def clean_files(flist):
  '''Delete a list of files.'''
  for cfile in flist:
    if os.path.exists(cfile):
      os.unlink(cfile)

def parse_dotfile(parser):
  tmp_file = PIUS_HOME + 'rc'
  sep = re.compile(r'(?:\s*=\s*|\s*:\s*\s+)')

  # Handle conversion of old rc file
  if os.path.isfile(PIUS_HOME):
    print 'Converting ~/.pius to ~/.pius/piusrc'
    # temporarily rename ~/.pius to ~/.piusrc
    os.rename(PIUS_HOME, tmp_file)
    os.mkdir(PIUS_HOME, 0755)
    os.rename(tmp_file, PIUS_RC)
  # Handle partial conversion
  elif os.path.isfile(tmp_file) and not os.path.islink(tmp_file):
    if not os.path.isdir(PIUS_HOME):
      os.mkdir(PIUS_HOME, 0755)
    if not os.path.isfile(PIUS_RC):
      os.rename(tmp_file, PIUS_RC)
    else:
      print('WARNING: Both %s and %s exist... ignoring %s' %
            (PIUS_RC, tmp_file, tmp_file))

  # if we have a config file, parse it
  opts = []
  if os.path.isfile(PIUS_RC):
    fp = open(PIUS_RC, 'r')
    for line in fp:
      if line.startswith('#'):
        continue
      parts = sep.split(line.strip())
      if not parts[0].startswith('--'):
        parts[0] = '--%s' % parts[0]
      if parser.has_option(parts[0]):
        opts.extend(parts)
      elif not parts[0] in VALID_OPTIONS:
        print('WARNING: Invalid line "%s" in %s, ignoring.' %
              (line.strip(), PIUS_RC))
    fp.close()

  return opts

#
# Stupid fucking optparse will assume "-m -e" means "-e is the email address
# being passed to -m"... instead of "oh, -e is an option, -m is missing its
# required argument. This is an ugly hack around that.
#

def check_not_another_opt(_, opt, value):
  '''Ensure argument to an option isn't another option.'''
  match = re.search(r'^\-', value)
  if match:
    raise OptionValueError('Option %s: Value %s looks like another option'
                           ' instead of the required argument' % (opt, value))
  return value

def check_email(_, opt, value):
  '''Ensure argument seems like an email address.'''
  match = re.match(r'.+@.+\..+', value)
  if not match:
    raise OptionValueError('Option %s: Value %s does not appear like a well'
                           ' formed email address' % (opt, value))
  return value

def check_keyid(_, opt, value):
  '''Ensure argument seems like a keyid.'''
  match = re.match(r'[0-9a-fA-Fx]', value)
  if not match:
    raise OptionValueError('Option %s: Value %s does not appear to be a KeyID'
                           % (opt, value))
  return value

class MyOption(Option):
  '''Our own option class.'''
  TYPES = Option.TYPES + ('not_another_opt', 'email', 'keyid')
  TYPE_CHECKER = copy(Option.TYPE_CHECKER)
  TYPE_CHECKER.update({
      'not_another_opt': check_not_another_opt,
      'email': check_email,
      'keyid': check_keyid,
  })

# END Stupid python optparse hack.