This file is indexed.

/usr/sbin/pokerconfigupgrade is in python-poker-engine 1.3.6-1.2.

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

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
#! /usr/bin/python
# -*- encoding: iso-8859-1; mode: python -*-
# Copyright (C) 2006 - 2010 Loic Dachary <loic@dachary.org>
# Copyright (C) 2005, 2006 Mekensleep
#
# Mekensleep
# 26 rue des rosiers
# 75004 Paris
#       licensing@mekensleep.com
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA.
#
# Authors:
#  Loic Dachary <loic@dachary.org>
#
import sys, os, getopt, stat, string
sys.path.insert(0, ".")

def usage():
    print """
pokerconfigupgrade [--module=<python_module>] [--help] [--verbose=<level>] [--dry-run]
                   [--upgrades=<directory>] [--reference=<directory>]
                   [directory or file.xml] ...
"""

def my_import(name):
    mod = __import__(name)
    components = name.split('.')
    for comp in components[1:]:
        mod = getattr(mod, comp)
    return mod
    
def main():
    try:
        opts, args = getopt.getopt(sys.argv[1:], "hvdumr", ["help", "verbose=", "dry-run", "upgrades=", "module=", "reference=" ])
    except getopt.GetoptError:
        usage()
        sys.exit(2)
    upgrades = None
    configuration_file = None
    module = "pokerengine.pokerengineconfig"
    reference = None
    verbose = 0
    dry_run = False
    for o, a in opts:
        if o in ("-h", "--help"):
            usage()
            sys.exit(0)
        if o in ("-d", "--dry-run"):
            dry_run = True
        if o in ("-u", "--upgrades"):
            upgrades = a
        if o in ("-m", "--module"):
            module = a
        if o in ("-r", "--reference"):
            reference = a
        if o in ("-v", "--verbose"):
            verbose = int(a)

    if not upgrades and not reference:
        print "must specify either --upgrades or --reference"
        sys.exit(3)
        
    if upgrades:
        config_module = my_import(module)
        config_class = config_module.__dict__['Config']

        files = []
        for path in args:
            if os.path.exists(path):
                if os.path.isfile(path):
                    files.append(path)
                elif os.path.isdir(path):
                    files_tmp = map(lambda file: path + "/" + file, os.listdir(path))
                    files.extend(filter(lambda file: os.path.isfile(file), files_tmp))
                else:
                    raise Exception, "The type of the file " + path + " is unknown"
            else:
                raise Exception, "File not found " + path

        files = filter(lambda file: string.find(file, ".xml") >= 0, files)
        for file in files:
            mode = os.stat(file)[stat.ST_MODE]
            if not mode & stat.S_IWUSR:
                os.chmod(file, mode | 0200)

        config_class.upgrades_repository = upgrades
        config_class.verbose = verbose
        config_class.upgrade_dry_run = dry_run
        config = config_class([''])
        for file in files:
            config.load(file)

    if reference:
        if ( len(args) != 1 or not os.path.isdir(args[0]) ):
            print "--reference requires a single directory argument, target of the upgrade"
            sys.exit(4)
        target = args[0]
        rsync_verbose = verbose and "-v" or ""
        rsync_command = "/usr/bin/rsync --exclude CVS -a " + rsync_verbose + " --ignore-existing " + reference + "/ " + target + "/"
        if verbose:
            print rsync_command
        if not dry_run:
            if os.system(rsync_command):
                sys.exit(5)

    return 0

if __name__ == "__main__":
    sys.exit(main())