コード例 #1
0
def init_database(argv):
    try:
        url = argv[1]
    except IndexError:
        from pycopia import basicconfig
        cf = basicconfig.get_config("database3.conf")
        url = cf["DATABASE_URL"]
    create_db(url)

    models.connect(url)
    database = models.database
    database.create_tables(
        [getattr(models, name) for name in models.TABLES + models._ASSOC_TABLES], 
        safe=False)
    try:
        do_schedules(database)
        do_functional_areas(database)
        do_attribute_types(database)
        do_env_attribute_types(database)
        do_language(database)
        do_country(database)
        do_interface_types(database)
        do_default_environment(database)
        do_default_group(database)
        do_function(database)
        do_corporations(database)
        do_riskcategory(database)
        do_config(database)
    finally:
        database.close()
コード例 #2
0
ファイル: init_db.py プロジェクト: wildone/pycopia
def init_database(argv):
    try:
        url = argv[1]
    except IndexError:
        from pycopia import basicconfig
        cf = basicconfig.get_config("database.conf")
        url = cf["DATABASE_URL"]
    create_db(url)

    db = create_engine(unicode(url))
    tables.metadata.bind = db
    tables.metadata.create_all()
    db.close()

    SM = models.create_sessionmaker(url)
    dbsession = SM()
    try:
        do_schedules(dbsession)
        do_functional_areas(dbsession)
        do_attribute_types(dbsession)
        do_env_attribute_types(dbsession)
        do_language(dbsession)
        do_country(dbsession)
        do_equipment_category(dbsession)
        do_interface_types(dbsession)
        do_default_environment(dbsession)
        do_default_group(dbsession)
        do_software_category(dbsession)
        do_capability_groups(dbsession)
        do_capability_types(dbsession)
        do_corporations(dbsession)
        do_riskcategory(dbsession)
        do_config(dbsession)
    finally:
        dbsession.close()
コード例 #3
0
ファイル: models.py プロジェクト: kdart/routerapp
def create_session(url=None):
    if url is None:
        cf = basicconfig.get_config("database.conf")
        url = cf["DATABASE_URL"]
    db = create_engine(url)
    tables.metadata.bind = db
    return sessionmaker(bind=db, autoflush=False)
コード例 #4
0
ファイル: pyro.py プロジェクト: bharathi26/pycopia
def set_p4_config():
    from pycopia import basicconfig

    p4conf = basicconfig.get_config("pyro4.conf")
    pcf = Pyro4.config
    for name in pcf.__slots__:
        setattr(pcf, name, p4conf.get(name, getattr(pcf, name)))
コード例 #5
0
ファイル: server.py プロジェクト: llwang/powerdroid
def storaged(argv):
    """The Droid storage server.

  storaged [-h <serverhost>] [-p <serverport>] [-d <databasefile>] 
          [-l <logfile>] [-n] [-?]

  where:

      -h <host> is the server hostname to bind to.
      -p <port> is the TCP port to use (other than the default).
      -d <filename> specifies the Durus file to use for the database.
      -l <logfilename> file name to use for logging.
      -n Do NOT become a daemon, stay in foreground (for debugging).
      -? This help screen.

  Uses the configuration file /etc/droid/storage.conf to obtain the
  default option values.

  """

    import getopt
    from pycopia import daemonize
    from pycopia import basicconfig
    cf = basicconfig.get_config(
        os.path.join("/", "etc", "droid", "storage.conf"))
    host = cf.get("host", DEFAULT_HOST)
    port = cf.get("port", DEFAULT_PORT)
    DBFILE = os.path.expandvars(cf.get("dbfile"))
    LOGFILE = os.path.expandvars(cf.get("dblog"))
    del cf
    do_daemon = True

    try:
        optlist, args = getopt.getopt(argv[1:], "d:l:h:p:n?")
    except getopt.GetoptError:
        print storaged.__doc__
        sys.exit(2)

    for opt, optarg in optlist:
        if opt == "-d":
            DBFILE = optarg
        elif opt == "-l":
            LOGFILE = optarg
        elif opt == "-h":
            host = optarg
        elif opt == "-p":
            port = int(optarg)
        elif opt == "-n":
            do_daemon = False
        elif opt == "-?":
            print storaged.__doc__
            return 2

    if do_daemon:
        daemonize.daemonize(pidfile="/var/run/%s.pid" %
                            (os.path.basename(argv[0]), ))
    try:
        startDurus(host, port, LOGFILE, DBFILE)
    except KeyboardInterrupt:
        return
コード例 #6
0
ファイル: init_db.py プロジェクト: bharathi26/pycopia
def init_database(argv):
    try:
        url = argv[1]
    except IndexError:
        from pycopia import basicconfig
        cf = basicconfig.get_config("database.conf")
        url = cf["DATABASE_URL"]
    create_db(url)

    db = create_engine(unicode(url))
    tables.metadata.bind = db
    tables.metadata.create_all()
    db.close()

    SM = models.create_sessionmaker(url)
    dbsession = SM()
    try:
        do_schedules(dbsession)
        do_functional_areas(dbsession)
        do_attribute_types(dbsession)
        do_env_attribute_types(dbsession)
        do_language(dbsession)
        do_country(dbsession)
        do_equipment_category(dbsession)
        do_interface_types(dbsession)
        do_default_environment(dbsession)
        do_default_group(dbsession)
        do_software_category(dbsession)
        do_capability_groups(dbsession)
        do_capability_types(dbsession)
        do_corporations(dbsession)
        do_riskcategory(dbsession)
        do_config(dbsession)
    finally:
        dbsession.close()
コード例 #7
0
ファイル: models.py プロジェクト: kdart/routerapp
def _get_secret():
    global SECRET_KEY
    try:
        cf = basicconfig.get_config("auth.conf")
    except basicconfig.ConfigReadError:
        raise ModelError("No auth.conf config file found.")
    else:
        SECRET_KEY = cf.SECRET_KEY
コード例 #8
0
def set_p4_config():
    from pycopia import basicconfig
    p4conf = basicconfig.get_config("pyro4.conf")
    pcf = Pyro4.config
    for name in pcf.__slots__:
        setattr(pcf, name, p4conf.get(name, getattr(pcf, name)))
    # name server specific overrides
    pcf.DOTTEDNAMES = False
コード例 #9
0
ファイル: nameserver.py プロジェクト: kdart/pycopia3
def set_p4_config():
    from pycopia import basicconfig
    p4conf = basicconfig.get_config("pyro4.conf")
    pcf = Pyro4.config
    for name in pcf.__slots__:
        setattr(pcf, name, p4conf.get(name, getattr(pcf, name)))
    # name server specific overrides
    pcf.DOTTEDNAMES = False
コード例 #10
0
ファイル: server.py プロジェクト: xiangke/pycopia
def storaged(argv):
    """The Pycopia storage server.
    storaged [-h <serverhost>] [-p <serverport>] [-d <databasefile>] [-l <logfile>]
           [-n] [-?]

    where:

        -h is the server hostname to bind to.
        -p is the TCP port to use (other than the default)
        -d specifies the Durus file to use for the database.
        -l Log file name to use for logging.
        -n Do NOT become a daemon, stay in foreground (for debugging)
        -? This help screen.

    """
    import getopt
    from pycopia import basicconfig

    cf = basicconfig.get_config("storage.conf")
    host = cf.get("host", DEFAULT_HOST)
    port = cf.get("port", DEFAULT_PORT)
    DBFILE = os.path.expandvars(cf.get("dbfile"))
    LOGFILE = os.path.expandvars(cf.get("dblog"))
    del cf
    do_daemon = True

    try:
        optlist, args = getopt.getopt(argv[1:], "d:l:h:p:n?")
    except getopt.GetoptError:
        print storaged.__doc__
        sys.exit(2)

    for opt, optarg in optlist:
        if opt == "-d":
            DBFILE = optarg
        elif opt == "-l":
            LOGFILE = optarg
        elif  opt == "-h":
            host = optarg
        elif opt == "-p":
            port = int(optarg)
        elif opt == "-n":
            do_daemon = False
        elif opt == "-?":
            print storaged.__doc__
            return 2

    if do_daemon:
        from pycopia import daemonize
        daemonize.daemonize()
    try:
        start_durus(host, port, LOGFILE, DBFILE)
    except KeyboardInterrupt:
        return
コード例 #11
0
ファイル: server.py プロジェクト: animeshinvinci/pycopia
def storaged(argv):
    """The Pycopia storage server.
    storaged [-h <serverhost>] [-p <serverport>] [-d <databasefile>] [-l <logfile>]
           [-n] [-?]

    where:

        -h is the server hostname to bind to.
        -p is the TCP port to use (other than the default)
        -d specifies the Durus file to use for the database.
        -l Log file name to use for logging.
        -n Do NOT become a daemon, stay in foreground (for debugging)
        -? This help screen.

    """
    import getopt
    from pycopia import basicconfig

    cf = basicconfig.get_config("storage.conf")
    host = cf.get("host", DEFAULT_HOST)
    port = cf.get("port", DEFAULT_PORT)
    DBFILE = os.path.expandvars(cf.get("dbfile"))
    LOGFILE = os.path.expandvars(cf.get("dblog"))
    del cf
    do_daemon = True

    try:
        optlist, args = getopt.getopt(argv[1:], "d:l:h:p:n?")
    except getopt.GetoptError:
        print storaged.__doc__
        sys.exit(2)

    for opt, optarg in optlist:
        if opt == "-d":
            DBFILE = optarg
        elif opt == "-l":
            LOGFILE = optarg
        elif opt == "-h":
            host = optarg
        elif opt == "-p":
            port = int(optarg)
        elif opt == "-n":
            do_daemon = False
        elif opt == "-?":
            print storaged.__doc__
            return 2

    if do_daemon:
        from pycopia import daemonize
        daemonize.daemonize()
    try:
        start_durus(host, port, LOGFILE, DBFILE)
    except KeyboardInterrupt:
        return
コード例 #12
0
ファイル: serverconfig.py プロジェクト: bharathi26/pycopia
def _get_server_config(servername):
    logfilename = "/var/log/%s.log" % (servername,)
    cffilename = "/etc/pycopia/%s.conf" % (servername,)
    pidfile="/var/run/%s.pid" % (servername,)
    socketpath = "/tmp/%s.sock" % (servername,)
    config = basicconfig.get_config(cffilename,
                CONFIGFILE=cffilename,
                PIDFILE=pidfile,
                SOCKETPATH=socketpath,
                LOGFILENAME=logfilename,
                SERVERNAME=servername)
    return config
コード例 #13
0
def _get_server_config(servername):
    logfilename = "/var/log/%s.log" % (servername,)
    cffilename = "/etc/pycopia/%s.conf" % (servername,)
    pidfile="/var/run/%s.pid" % (servername,)
    socketpath = "/tmp/%s.sock" % (servername,)
    config = basicconfig.get_config(cffilename,
                CONFIGFILE=cffilename,
                PIDFILE=pidfile,
                SOCKETPATH=socketpath,
                LOGFILENAME=logfilename,
                SERVERNAME=servername)
    return config
コード例 #14
0
ファイル: Storage.py プロジェクト: llwang/powerdroid
def GetClient(config=None):
    """Get a Durus ClientStorage.

  This gets parameters from the external configuration file. The "host"
  and "port" values are used from this file. The file is
  /etc/droid/storage.conf.
  """
    if config is None:
        from pycopia import basicconfig
        config = basicconfig.get_config(
            os.path.join("/", "etc", "droid", "storage.conf"))
    host = config.get("host", DEFAULT_HOST)
    port = config.get("port", DEFAULT_PORT)
    return DBClient(host, port)
コード例 #15
0
def main(argv):
    global CF
    CF = basicconfig.get_config("/etc/pycopia/voicemail.conf")
    if CF.get("LOGFILE"):
        lf = logfile.open(CF.LOGFILE)
    else:
        lf = None

    rv = 1
    try:
        rv = answering_machine(lf)
    finally:
        if lf:
            lf.close()
    return rv
コード例 #16
0
ファイル: Storage.py プロジェクト: llwang/powerdroid
def GetStorage(config=None):
    """Get a Durus FileStorage.

  This gets parameters from the external configuration file. The "dbfile"
  value is used from this file. The file is /etc/droid/storage.conf.
  """
    if config is None:
        from pycopia import basicconfig
        config = basicconfig.get_config(
            os.path.join("/", "etc", "droid", "storage.conf"))
    filename = config.get("dbfile")
    if filename:
        return DBFile(os.path.expandvars(os.path.expanduser(filename)))
    else:
        raise ValueError, "no file name supplied or found in configuration."
コード例 #17
0
ファイル: voicemail2.py プロジェクト: bharathi26/pycopia
def main(argv):
    global CF
    CF = basicconfig.get_config("/etc/pycopia/voicemail.conf")
    if CF.get("LOGFILE"):
        lf = logfile.open(CF.LOGFILE)
    else:
        lf = None

    rv = 1
    try:
        rv = answering_machine(lf)
    finally:
        if lf:
            lf.close()
    return rv
コード例 #18
0
ファイル: trapserver.py プロジェクト: joshuamckenty/mibz
def pytrapd(argv):
    """pytrapd [-d]

    Run a SNMP trap handler and email you on reciept of a trap.
    """
    from pycopia import asyncio
    if len(argv) > 1 and argv[1] == "-d":
        import daemonize
        daemonize.daemonize()
    cf = basicconfig.get_config("./trapserver.conf")

    mailer = TrapMailer(cf)

    handlers = [mailer]
    dispatcher = traps.get_dispatcher(handlers)
    asyncio.poller.loop()
コード例 #19
0
ファイル: trapserver.py プロジェクト: wildone/pycopia
def pytrapd(argv):
    """pytrapd [-d]

    Run a SNMP trap handler and email you on reciept of a trap.
    """
    from pycopia import asyncio
    if len(argv) > 1 and argv[1] == "-d":
        import daemonize
        daemonize.daemonize()
    cf = basicconfig.get_config("trapserver")

    mailer = TrapMailer(cf)

    handlers = [mailer]
    dispatcher = traps.get_dispatcher(handlers)
    asyncio.poller.loop()
コード例 #20
0
ファイル: init_db.py プロジェクト: kdart/routerapp
def init_database(argv):
    try:
        url = argv[1]
    except IndexError:
        from pycopia import basicconfig
        cf = basicconfig.get_config("database.conf")
        url = cf["DATABASE_URL"]
    Maker = models.create_session(url)
    dbsession = Maker()
    try:
        do_config(dbsession)
        do_groups(dbsession)
        do_users(dbsession)
        do_assign(dbsession)
    finally:
        dbsession.close()
コード例 #21
0
ファイル: Storage.py プロジェクト: animeshinvinci/pycopia
def get_config(extrafiles=None, initdict=None, **kwargs):
    """get_config([extrafiles=], [initdict=], [**kwargs])
Returns a RootContainer instance containing configuration parameters.
An extra dictionary may be merged in with the 'initdict' parameter.
And finally, extra options may be added with keyword parameters when calling
this.  """
    from pycopia import socket
    from pycopia import basicconfig
    SOURCES = []
    SOURCES.append(os.path.join(os.environ["HOME"], ".pycopiarc"))

    dbcf = basicconfig.get_config("storage.conf")

    if type(extrafiles) is str:
        extrafiles = [extrafiles]
    if extrafiles:
        FILES = SOURCES + extrafiles
    else:
        FILES = SOURCES
    try:  # try getting the server. If not available, try
        # opening the data file directly.
        db = get_client(dbcf)
    except socket.SocketError:
        db = get_database(dbcf)
    cache = AttrDict()
    cf = db.get_root(cache)
    # copy default flags to cache so the don't get altered
    cache.flags = cf["flags"].copy()
    # initialize cache items to default values, so they can be altered at runtime.
    cf.update(cf["default"])
    for f in FILES:
        if os.path.isfile(f):
            cf.mergefile(f)
    if type(initdict) is dict:
        cf.evalupdate(initdict)
    cf.update(kwargs)
    return cf
コード例 #22
0
ファイル: Storage.py プロジェクト: xiangke/pycopia
def get_config(extrafiles=None, initdict=None, **kwargs):
    """get_config([extrafiles=], [initdict=], [**kwargs])
Returns a RootContainer instance containing configuration parameters.
An extra dictionary may be merged in with the 'initdict' parameter.
And finally, extra options may be added with keyword parameters when calling
this.  """
    from pycopia import socket
    from pycopia import basicconfig
    SOURCES = []
    SOURCES.append(os.path.join(os.environ["HOME"], ".pycopiarc"))

    dbcf = basicconfig.get_config("storage.conf")

    if type(extrafiles) is str:
        extrafiles = [extrafiles]
    if extrafiles:
        FILES = SOURCES + extrafiles
    else:
        FILES = SOURCES
    try: # try getting the server. If not available, try
         # opening the data file directly.
        db = get_client(dbcf)
    except socket.SocketError:
        db = get_database(dbcf)
    cache = AttrDict()
    cf = db.get_root(cache)
    # copy default flags to cache so the don't get altered
    cache.flags = cf["flags"].copy()
    # initialize cache items to default values, so they can be altered at runtime.
    cf.update(cf["default"])
    for f in FILES:
        if os.path.isfile(f):
            cf.mergefile(f)
    if type(initdict) is dict:
        cf.evalupdate(initdict)
    cf.update(kwargs)
    return cf
コード例 #23
0
ファイル: website.py プロジェクト: bharathi26/pycopia
def main(argv):
    import getopt
    daemonize = True
    frontend = True
    dname = None
    servername = os.path.basename(argv[0])
    logfilename = "/var/log/%s.log" % (servername,)
    pidfilename = "/var/run/%s.pid" % (servername,)
    cffile = SITE_CONFIG
    try:
        optlist, args = getopt.getopt(argv[1:], "?hdnNl:p:f:D:")
    except getopt.GetoptError:
        print _doc % (servername,)
        return

    for opt, optarg in optlist:
        if opt in ("-?", "-h"):
            print _doc % (servername,)
            return 2
        elif opt == "-l":
            logfilename = optarg
        elif opt == "-n":
            daemonize = False
        elif opt == "-N":
            frontend = False
        elif opt == "-D":
            dname = optarg
        elif opt == "-f":
            cffile = optarg
        elif opt == "-p":
            pidfilename = optarg
        elif opt == "-d":
            from pycopia import autodebug # Sets up auto debugging handler.

    glbl = {"FQDN": dname or socket.get_fqdn()}

    config = basicconfig.get_config(cffile, globalspace=glbl)

    config.SERVERNAME = servername
    config.LOGFILENAME = logfilename
    config.PIDFILE = pidfilename
    config.DAEMON = daemonize
    config.USEFRONTEND = frontend
    config.ARGV = args

    if not args:
        return status(config)
    cmd = args[0]

    if cmd.startswith("stat"):
        return status(config)
    elif cmd.startswith("set"):
        return setup(config)
    elif cmd.startswith("star"):
        return start(config)
    elif cmd.startswith("stop"):
        return stop(config)
    elif cmd.startswith("rob"):
        return robots(config)
    elif cmd.startswith("che"):
        return check(config)
    else:
        print _doc % (servername,)
        return 2
コード例 #24
0
def run_server(argv):
    username = None
    do_daemon = True
    debug = False
    killserver = False
    try:
        optlist, longopts, args = getopt.getopt(argv[1:], "dnh?kl:f:p:s:")
    except getopt.GetoptError:
        print(run_server._doc.format(procname=argv[0]))
        return

    if len(args) > 0:
        servername = args[0]
    else:
        servername = os.path.basename(argv[0])

    logfilename = "/var/log/{}.log".format(servername)
    cffilename = "/etc/pycopia/{}.conf".format(servername)
    pidfile = "/var/run/{}.pid".format(servername)
    socketpath = '/tmp/{}.sock'.format(servername)

    for opt, optarg in optlist:
        if opt == "-n":
            do_daemon = False
        elif opt == "-k":
            killserver = True
        elif opt == "-d":
            from pycopia import autodebug  # noqa
            debug = True
        elif opt == "-u":
            username = optarg
        elif opt == "-l":
            logfilename = optarg
        elif opt == "-f":
            cffilename = optarg
        elif opt == "-p":
            pidfile = optarg
        elif opt == "-s":
            socketpath = optarg
        elif opt in ("-h", "-?"):
            print(run_server._doc.format(procname=argv[0]))
            return 2

    try:
        config = basicconfig.get_config(cffilename,
                                        CONFIGFILE=cffilename,
                                        PIDFILE=pidfile,
                                        SOCKETPATH=socketpath,
                                        LOGFILENAME=logfilename,
                                        DEBUG=debug,
                                        SERVERNAME=servername)
    except:
        ex, val, tb = sys.exc_info()
        logging.warn("Could not get server config: {} ({})".format(
            ex.__name__, val))
        return 1
    config.update(longopts)

    if username:
        config.USERNAME = username

    if killserver:
        kill_server(config)
        return 0

    if check4server(config):
        logging.warn("Server {!r} already running on socket {!r}.".format(
            servername, socketpath))
        return 1

    if do_daemon and not debug:
        from pycopia import daemonize
        from pycopia import logfile
        lf = logfile.ManagedStdio(logfilename)
        daemonize.daemonize(lf, pidfile=pidfile)
    else:  # for controller
        with open(pidfile, "w") as fo:
            fo.write("{}\n".format(os.getpid()))

    server = get_server(config)
    return int(server.run())
コード例 #25
0
def DEBUG(*args, **kwargs):
    """Can use this instead of 'print' when debugging.
    """
    parts = []
    for name, value in kwargs.items():
        parts.append("{}: {!r}".format(name, value))
    print("DEBUG",
          " ".join(str(o) for o in args),
          ", ".join(parts),
          file=sys.stderr)


# config file is optional here
try:
    cf = basicconfig.get_config("logging.conf")
except basicconfig.ConfigReadError as err:
    warn(err, "Using default values.")
    FACILITY = "USER"
    LEVEL = "WARNING"
else:
    FACILITY = cf.FACILITY
    LEVEL = cf.LEVEL
    del cf

del basicconfig

syslog.openlog(sys.argv[0].split("/")[-1], syslog.LOG_PID,
               getattr(syslog, "LOG_" + FACILITY))

_oldloglevel = syslog.setlogmask(
コード例 #26
0
ファイル: pyro.py プロジェクト: tijmengit/pycopia
def set_p4_config():
    from pycopia import basicconfig
    p4conf = basicconfig.get_config("pyro4.conf")
    pcf = Pyro4.config
    for name in pcf.__slots__:
        setattr(pcf, name, p4conf.get(name, getattr(pcf, name)))
コード例 #27
0
ファイル: Client.py プロジェクト: animeshinvinci/pycopia
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
#    Lesser General Public License for more details.
"""
The Client for Remote controllers.

"""
__all__ = ["get_remote", "remote_copy"]

import sys, os

import Pyro.util
import Pyro.core

from pycopia import basicconfig

cf = basicconfig.get_config("remote.conf")
Pyro.config.PYRO_NS_HOSTNAME = cf.nameserver
del cf, basicconfig

# some platform specific stuff. Should be minimal
if sys.platform == "linux2":
    from pycopia.remote.PosixClient import *

elif sys.platform == "cygwin":
    from pycopia.remote.PosixClient import *

elif sys.platform == "win32":
    from pycopia.remote.WindowsClient import *
del sys

コード例 #28
0
def get_site_config(filename=SITE_CONFIG):
    return basicconfig.get_config(filename, FQDN=socket.getfqdn())
コード例 #29
0
ファイル: Client.py プロジェクト: animeshinvinci/pycopia
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
#    Lesser General Public License for more details.

"""
The Client for Remote controllers.

"""
__all__ = ["get_remote", "remote_copy"]

import sys, os

import Pyro.util
import Pyro.core

from pycopia import basicconfig
cf = basicconfig.get_config("remote.conf")
Pyro.config.PYRO_NS_HOSTNAME = cf.nameserver
del cf, basicconfig

# some platform specific stuff. Should be minimal
if sys.platform == "linux2":
    from pycopia.remote.PosixClient import *

elif sys.platform == "cygwin":
    from pycopia.remote.PosixClient import *

elif sys.platform == "win32":
    from pycopia.remote.WindowsClient import *
del sys

コード例 #30
0
def get_config():
    from pycopia import basicconfig
    return basicconfig.get_config("ezmail.conf")
コード例 #31
0
ファイル: serverconfig.py プロジェクト: bharathi26/pycopia
def get_site_config(filename=SITE_CONFIG):
    glbl = {"FQDN": socket.get_fqdn()}
    return basicconfig.get_config(filename, globalspace=glbl)
コード例 #32
0
def get_site_config(filename=SITE_CONFIG):
    glbl = {"FQDN": socket.get_fqdn()}
    return basicconfig.get_config(filename, globalspace=glbl)
コード例 #33
0
ファイル: serverconfig.py プロジェクト: kdart/pycopia3
def get_site_config(filename=SITE_CONFIG):
    return basicconfig.get_config(filename, FQDN=socket.getfqdn())
コード例 #34
0
ファイル: ezmail.py プロジェクト: animeshinvinci/pycopia
def get_config():
    from pycopia import basicconfig
    return basicconfig.get_config("ezmail.conf")
コード例 #35
0
def _GetConfig():
    global _config
    if _config is None:
        from pycopia import basicconfig
        _config = basicconfig.get_config("/etc/droid/powerdroid.conf")
    return _config
コード例 #36
0
def get_site_config(filename=SITE_CONFIG):
    return basicconfig.get_config(filename)
コード例 #37
0
ファイル: fcgiserver.py プロジェクト: animeshinvinci/pycopia
def run_server(argv):
    username = None
    do_daemon = True
    debug = False
    killserver = False
    try:
        optlist, args = getopt.getopt(argv[1:], "dnh?kl:f:p:s:")
    except getopt.GetoptError:
        print run_server._doc % (argv[0],)
        return

    if len(args) > 0:
        servername = args[0]
    else:
        servername = os.path.basename(argv[0])

    logfilename = "/var/log/%s.log" % (servername,)
    cffilename = "/etc/pycopia/%s.conf" % (servername,)
    pidfile="/var/run/%s.pid" % (servername,)
    socketpath = '/tmp/%s.sock' % (servername,)

    for opt, optarg in optlist:
        if opt == "-n":
            do_daemon = False
        elif opt == "-k":
            killserver = True
        elif opt == "-d":
            debug = True
        elif opt == "-u":
            username = optarg
        elif opt == "-l":
            logfilename = optarg
        elif opt == "-f":
            cffilename = optarg
        elif opt == "-p":
            pidfile = optarg
        elif opt == "-s":
            socketpath = optarg
        elif opt in ("-h", "-?"):
            print run_server._doc % (argv[0],)
            return 2

    try:
        config = basicconfig.get_config(cffilename, 
                    CONFIGFILE=cffilename,
                    PIDFILE=pidfile,
                    SOCKETPATH=socketpath,
                    LOGFILENAME=logfilename, 
                    DEBUG=debug, 
                    SERVERNAME=servername)
    except:
        ex, val, tb = sys.exc_info()
        print >>sys.stderr, "Could not get server config: %s (%s)" % (ex, val)
        return 1

    if username:
        config.USERNAME = username

    if killserver:
        kill_server(config)
        return 0

    if check4server(config):
        print >>sys.stderr, "Server %r already running on socket %r." % (servername, socketpath)
        return 1

    if do_daemon and not debug:
        from pycopia import daemonize
        from pycopia import logfile
        lf = logfile.ManagedStdio(logfilename)
        daemonize.daemonize(lf, pidfile=pidfile)
    else: # for controller
        fo = open(pidfile, "w")
        fo.write("%s\n" % (os.getpid(),))
        fo.close()
        del fo

    server = get_server(config)
    return int(server.run())
コード例 #38
0
def get_site_config(filename=SITE_CONFIG):
    return basicconfig.get_config(filename)
コード例 #39
0
def run_server(argv):
    username = None
    do_daemon = True
    debug = False
    killserver = False
    try:
        optlist, args = getopt.getopt(argv[1:], "dnh?kl:f:p:s:")
    except getopt.GetoptError:
        print(run_server._doc % (argv[0], ))
        return

    if len(args) > 0:
        servername = args[0]
    else:
        servername = os.path.basename(argv[0])

    logfilename = "/var/log/%s.log" % (servername, )
    cffilename = "/etc/pycopia/%s.conf" % (servername, )
    pidfile = "/var/run/%s.pid" % (servername, )
    socketpath = '/tmp/%s.sock' % (servername, )

    for opt, optarg in optlist:
        if opt == "-n":
            do_daemon = False
        elif opt == "-k":
            killserver = True
        elif opt == "-d":
            debug = True
        elif opt == "-u":
            username = optarg
        elif opt == "-l":
            logfilename = optarg
        elif opt == "-f":
            cffilename = optarg
        elif opt == "-p":
            pidfile = optarg
        elif opt == "-s":
            socketpath = optarg
        elif opt in ("-h", "-?"):
            print(run_server._doc % (argv[0], ))
            return 2

    try:
        config = basicconfig.get_config(cffilename,
                                        CONFIGFILE=cffilename,
                                        PIDFILE=pidfile,
                                        SOCKETPATH=socketpath,
                                        LOGFILENAME=logfilename,
                                        DEBUG=debug,
                                        SERVERNAME=servername)
    except:
        ex, val, tb = sys.exc_info()
        logging.warn("Could not get server config: %s (%s)" % (ex, val))
        return 1

    if username:
        config.USERNAME = username

    if killserver:
        kill_server(config)
        return 0

    if check4server(config):
        logging.warn("Server %r already running on socket %r." %
                     (servername, socketpath))
        return 1

    if do_daemon and not debug:
        from pycopia import daemonize
        from pycopia import logfile
        lf = logfile.ManagedStdio(logfilename)
        daemonize.daemonize(lf, pidfile=pidfile)
    else:  # for controller
        fo = open(pidfile, "w")
        fo.write("%s\n" % (os.getpid(), ))
        fo.close()
        del fo

    server = get_server(config)
    return int(server.run())
コード例 #40
0
ファイル: logging.py プロジェクト: bharathi26/pycopia
def warn(*args):
    print(*args, file=sys.stderr)


def DEBUG(*args, **kwargs):
    """Can use this instead of 'print' when debugging.
    """
    parts = []
    for name, value in kwargs.items():
        parts.append("{}: {!r}".format(name, value))
    print("DEBUG", " ".join(str(o) for o in args), ", ".join(parts), file=sys.stderr)


# config file is optional here
try:
    cf = basicconfig.get_config("logging.conf")
except basicconfig.ConfigReadError as err:
    warn(err, "Using default values.")
    FACILITY = "USER"
    LEVEL = "WARNING"
else:
    FACILITY = cf.FACILITY
    LEVEL = cf.LEVEL
    del cf

del basicconfig


syslog.openlog(sys.argv[0].split("/")[-1], syslog.LOG_PID, getattr(syslog, "LOG_" + FACILITY))

_oldloglevel = syslog.setlogmask(syslog.LOG_UPTO(getattr(syslog, "LOG_" + LEVEL)))
コード例 #41
0
ファイル: scgiserver.py プロジェクト: kdart/pycopia3
def run_server(argv):
    username = None
    do_daemon = True
    debug = False
    killserver = False
    try:
        optlist, longopts, args = getopt.getopt(argv[1:], "dnh?kl:f:p:s:")
    except getopt.GetoptError:
        print(run_server._doc.format(procname=argv[0]))
        return

    if len(args) > 0:
        servername = args[0]
    else:
        servername = os.path.basename(argv[0])

    logfilename = "/var/log/{}.log".format(servername)
    cffilename = "/etc/pycopia/{}.conf".format(servername)
    pidfile = "/var/run/{}.pid".format(servername)
    socketpath = '/tmp/{}.sock'.format(servername)

    for opt, optarg in optlist:
        if opt == "-n":
            do_daemon = False
        elif opt == "-k":
            killserver = True
        elif opt == "-d":
            from pycopia import autodebug  # noqa
            debug = True
        elif opt == "-u":
            username = optarg
        elif opt == "-l":
            logfilename = optarg
        elif opt == "-f":
            cffilename = optarg
        elif opt == "-p":
            pidfile = optarg
        elif opt == "-s":
            socketpath = optarg
        elif opt in ("-h", "-?"):
            print(run_server._doc.format(procname=argv[0]))
            return 2

    try:
        config = basicconfig.get_config(cffilename,
                                        CONFIGFILE=cffilename,
                                        PIDFILE=pidfile,
                                        SOCKETPATH=socketpath,
                                        LOGFILENAME=logfilename,
                                        DEBUG=debug,
                                        SERVERNAME=servername)
    except:
        ex, val, tb = sys.exc_info()
        logging.warn(
            "Could not get server config: {} ({})".format(ex.__name__, val))
        return 1
    config.update(longopts)

    if username:
        config.USERNAME = username

    if killserver:
        kill_server(config)
        return 0

    if check4server(config):
        logging.warn(
            "Server {!r} already running on socket {!r}.".format(servername,
                                                                 socketpath))
        return 1

    if do_daemon and not debug:
        from pycopia import daemonize
        from pycopia import logfile
        lf = logfile.ManagedStdio(logfilename)
        daemonize.daemonize(lf, pidfile=pidfile)
    else:  # for controller
        with open(pidfile, "w") as fo:
            fo.write("{}\n".format(os.getpid()))

    server = get_server(config)
    return int(server.run())
コード例 #42
0
ファイル: website.py プロジェクト: feitianyiren/pycopia3
def main(argv):
    import getopt
    daemonize = True
    frontend = True
    force = False
    domainname = None
    servername = os.path.basename(argv[0])
    logfilename = "/var/log/{}.log".format(servername)
    pidfilename = "/run/{}.pid".format(servername)
    cffile = SITE_CONFIG
    try:
        optlist, args = getopt.getopt(argv[1:], "?hdnNFl:p:f:D:")
    except getopt.GetoptError:
        print(_doc.format(progname=servername))
        return

    for opt, optarg in optlist:
        if opt in ("-?", "-h"):
            print(_doc.format(progname=servername))
            return 2
        elif opt == "-l":
            logfilename = optarg
        elif opt == "-n":
            daemonize = False
        elif opt == "-N":
            frontend = False
        elif opt == "-D":
            domainname = optarg
        elif opt == "-f":
            cffile = optarg
        elif opt == "-F":
            force = True
        elif opt == "-p":
            pidfilename = optarg
        elif opt == "-d":
            from pycopia import autodebug  # noqa

    FQDN = domainname or socket.getfqdn()

    config = basicconfig.get_config(cffile, FQDN=FQDN)
    config.SERVERNAME = servername
    config.LOGFILENAME = logfilename
    config.PIDFILE = pidfilename
    config.DAEMON = daemonize
    config.FORCE = force
    config.USEFRONTEND = frontend
    config.ARGV = args

    if not args:
        return status(config)
    cmd = args[0]

    if cmd.startswith("stat"):
        return status(config)
    elif cmd.startswith("set"):
        return setup(config)
    elif cmd.startswith("star"):
        return start(config)
    elif cmd.startswith("stop"):
        return stop(config)
    elif cmd.startswith("rob"):
        return robots(config)
    elif cmd.startswith("che"):
        return check(config)
    else:
        print(_doc.format(progname=servername))
        return 2
コード例 #43
0
ファイル: website.py プロジェクト: wildone/pycopia
def main(argv):
    import getopt
    daemonize = True
    frontend = True
    dname = None
    servername = os.path.basename(argv[0])
    logfilename = "/var/log/%s.log" % (servername, )
    pidfilename = "/var/run/%s.pid" % (servername, )
    cffile = SITE_CONFIG
    try:
        optlist, args = getopt.getopt(argv[1:], "?hdnNl:p:f:D:")
    except getopt.GetoptError:
        print _doc % (servername, )
        return

    for opt, optarg in optlist:
        if opt in ("-?", "-h"):
            print _doc % (servername, )
            return 2
        elif opt == "-l":
            logfilename = optarg
        elif opt == "-n":
            daemonize = False
        elif opt == "-N":
            frontend = False
        elif opt == "-D":
            dname = optarg
        elif opt == "-f":
            cffile = optarg
        elif opt == "-p":
            pidfilename = optarg
        elif opt == "-d":
            from pycopia import autodebug  # Sets up auto debugging handler.

    glbl = {"FQDN": dname or socket.get_fqdn()}

    config = basicconfig.get_config(cffile, globalspace=glbl)

    config.SERVERNAME = servername
    config.LOGFILENAME = logfilename
    config.PIDFILE = pidfilename
    config.DAEMON = daemonize
    config.USEFRONTEND = frontend
    config.ARGV = args

    if not args:
        return status(config)
    cmd = args[0]

    if cmd.startswith("stat"):
        return status(config)
    elif cmd.startswith("set"):
        return setup(config)
    elif cmd.startswith("star"):
        return start(config)
    elif cmd.startswith("stop"):
        return stop(config)
    elif cmd.startswith("rob"):
        return robots(config)
    elif cmd.startswith("che"):
        return check(config)
    else:
        print _doc % (servername, )
        return 2