def run(self): # Get configurations configFile = sys.path[0] + os.sep + 'POIServer.conf' config = Configuration(configFile) if not os.path.exists(configFile): config.DSN = 'username/password@database_sid' config.TSFormat = '%Y-%m-%d %H:%M:%S' config.Port = 22010 # Prepare host and port of server (host, port) = ('', int(config.Port)) print 'Starting TCP socket server...' # Initialize threaded tcp server server = ThreadedTCPServer((host, port), ThreadedTCPRequestHandler) # Get the established server ip and port (serverIP, serverPort) = server.server_address print 'Binded at %s:%s' % (serverIP, serverPort) # Start threading server print 'Start listening...' try: thread.start_new_thread(server.serve_forever()) except (SystemExit, KeyboardInterrupt): print 'Shutting down server...' server.shutdown()
def __init__(self): '''Constructor''' # Initialize option parser self.optionParser = OptionParser( version = '%prog v1.0 beta 20101105 by Nystearia' ) #self.optionParser.add_option('-H', '--help', action = 'help') #self.optionParser.add_option('-V', '--version', action = 'version') self.optionParser.add_option( '-f', '--file', dest = 'file', metavar = 'FILE', help = 'Datafile to be imported' ) self.optionParser.add_option( '-a', '--filetype', dest = 'filetype', metavar = 'FILETYPE', help = 'File type (csv or dbf), if not specified, program \ will detect it automatically.' ) self.optionParser.add_option( '-t', '--table', dest = 'table', metavar = 'TABLE', help = 'Table name to be imported to' ) self.optionParser.add_option( '-c', '--columns', dest = 'columns', metavar = 'COLUMNS', help = 'Columns in the source datafile, separated by commas' ) self.optionParser.add_option( '-e', '--exclusions', dest = 'exclusions', metavar = 'EXCLUSIONS', help = 'Columns excluded from the target table when COLUMNS \ is null(Import to all columns)' ) self.optionParser.add_option( '-u', '--uniques', dest = 'uniques', metavar = 'UNIQUES', help = 'Columns in the source datafile which needed to check \ unique' ) self.optionParser.add_option( '-s', '--timestamp', dest = 'timestamp', metavar = 'TIMESTAMP', help = 'Column storing import timestamp' ) self.optionParser.add_option( '-d', '--definition', dest = 'definition', metavar = 'DEFINITION', help = 'Definition file defines the TABLE, COLUMNS, and \ UNIQUES' ) self.optionParser.add_option( '-o', '--overwrite', dest = 'overwrite', action = 'store_true', default = False, help = 'If UNIQUES and this option is set, when UNIQUES \ conficts, overwrite the record with the data file provided' ) self.optionParser.add_option( '-x', '--clear', dest = 'cleardata', action = 'store_true', help = 'Clear data first' ) self.optionParser.add_option( '-l', '--log', dest = 'log', action = 'store_true', help = 'Import with logging' ) self.optionParser.add_option( '-i', '--interface', dest = 'interface', action = 'store_true', help = 'Interface mode (No standard output)' ) self.optionParser.add_option( '-v', '--verbose', dest = 'verbose', action = 'store_true', help = 'Verbose' ) (self.options, self.args) = self.optionParser.parse_args() # Initialize messenger self.messenger = Messenger( sys.path[0] + os.sep \ + os.path.basename(sys.argv[0]).split('.', 1)[0] + '.log', self.options.log, self.options.interface ) # Initialize configuration config = Configuration(sys.path[0] + os.sep + 'PyOraImporter.conf') self.dsn = config.DSN self.TSFormat = config.TSFormat if self.dsn is None: self.messenger.Send( 'Error: Database configuration file (PyOraImporter.conf) \ not exists and be created, please modify it to the correct setting', 'Error' ) config.DSN = 'username/password@database_sid' config.TSFormat = '%Y-%m-%d %H:%M:%S' exit()
def parse(self, data): """Parse socket data""" try: self.messenger.Send("Received command from client: %s" % data, "Server") ( file, filetype, table, columns, exclusions, uniques, timestamp, overwrite, cleardata, userid, username, ) = data.split("#") if columns == "": columns = [] else: columns = columns.split(",") if exclusions == "": exclusions = [] else: exclusions = exclusions.split(",") if uniques == "": uniques = [] else: uniques = uniques.split(",") overwrite = overwrite == "1" cleardata = cleardata == "1" except: self.messenger.Send("Error: Invalid data from client", "Error") return False # Initialize database connection config = Configuration(sys.path[0] + os.sep + "POIServer.conf") dsn = config.DSN TSFormat = config.TSFormat if dsn is None: self.messenger.Send( "Error: Database configuration file (POIServer.conf) \ not exists and be created, please modify it to the correct setting", "Error", ) config.DSN = "username/password@database_sid" config.TSFormat = "%Y-%m-%d %H:%M:%S" config.Port = 22010 return False # Initialize importer importer = Importer( self.messenger, dsn, TSFormat, file, filetype, table, columns, exclusions, uniques, timestamp, overwrite, cleardata, ) # Initialize logger logger = Logger(dsn) # Start importing if importer.Begin(): logger.Log(file, importer.importCount, "0", table, userid, username) self.messenger.Send("All done", "Server") else: logger.Log(file, importer.importCount, "1", table, userid, username) self.messenger.Send("Import failed", "Server")
self.messenger.Send("All done", "Server") else: logger.Log(file, importer.importCount, "1", table, userid, username) self.messenger.Send("Import failed", "Server") # ***************************************************************************** # MAIN PROGRAM ENTRY # ***************************************************************************** if __name__ == "__main__": # Get configurations configFile = sys.path[0] + os.sep + "POIServer.conf" config = Configuration(configFile) if not os.path.exists(configFile): config.DSN = "username/password@database_sid" config.TSFormat = "%Y-%m-%d %H:%M:%S" config.Port = 22010 # Prepare host and port of server (host, port) = ("", int(config.Port)) print "Starting TCP socket server..." # Initialize threaded tcp server server = ThreadedTCPServer((host, port), ThreadedTCPRequestHandler) # Get the established server ip and port (serverIP, serverPort) = server.server_address print "Binded at %s:%s" % (serverIP, serverPort) # Start threading server print "Start listening..." try: thread.start_new_thread(server.serve_forever()) except (SystemExit, KeyboardInterrupt):