def read(deviceFile, mountingPoint, fileToBurn):
    """Lê o MD5 CRC do arquivo local fileToBurn e do arquivo gravado e armazena o resultado da comparação entre eles em __readStatus"""
    executor = ApplicationExecutor()

    result = False

    outputStr, errorStr, returnCode = executor.executeCommandAndWait(
        True, None, "mount %s %s" % (deviceFile, mountingPoint)
    )

    if returnCode == 0:
        outputStr1, errorStr1, returnCode1 = executor.executeCommandAndWait(
            False, None, ["md5sum", "%s" % fileToBurn], ["awk", "{print $1}"]
        )
        outputStr2, errorStr2, returnCode2 = executor.executeCommandAndWait(
            False, None, ["md5sum", "%s/%s" % (mountingPoint, fileToBurn.split("/")[-1])], ["awk", "{print $1}"]
        )
        outputStr3, errorStr3, returnCode3 = executor.executeCommandAndWait(True, None, "umount %s" % deviceFile)

        originalMD5 = outputStr1.rstrip()
        burnedMD5 = outputStr2.rstrip()

        result = (returnCode1 == 0) and (returnCode2 == 0) and (originalMD5 == burnedMD5)

    return result
Exemple #2
0
def isEmpty(deviceFile):
	"""Funcao que verifica se a midia inserida no dispositivo 'deviceFile' esta vazia."""

	cmd0 = ['cdrecord', '-media-info', 'dev=%s' % deviceFile, '2>', '/dev/null']
	cmd1 = ['grep', 'disk status:']
	cmd2 = ['awk', '{print $3}']

	o_str, e_str, ret_code = ApplicationExecutor().executeCommandAndWait(False, None, cmd0, cmd1, cmd2)

	ret = (ret_code == 0) and (o_str.rstrip() == "empty")

	return ret
def isEmpty(deviceFile):
    """Funcao que verifica se a midia inserida no dispositivo 'deviceFile' esta vazia."""

    cmd0 = ["cdrecord", "-media-info", "dev=%s" % deviceFile, "2>", "/dev/null"]
    cmd1 = ["grep", "disk status:"]
    cmd2 = ["awk", "{print $3}"]

    o_str, e_str, ret_code = ApplicationExecutor().executeCommandAndWait(False, None, cmd0, cmd1, cmd2)

    ret = (ret_code == 0) and (o_str.rstrip() == "empty")

    return ret
def getMediaInfo(deviceFile):
    """
	Verifica qual o tipo de mídia inserida no dispositivo deviceFile

	Este método retorna um dicionario com as chaves 'Type', 'Rewritable' e 'Empty',
	onde Type é 'CD', 'DVD' ou None, Rewritable é um booleano, indicando se a mídia é
	regravável e Empty é outro booleano, indicando se a mídia esta vazia.
	"""

    # Current: CD-RW
    # Current: DVD-R sequential recording
    # Current: DVD-RW sequential recording

    mediaType = None
    rewritable = False
    empty = False

    cmd0 = ["cdrecord", "-prcap", "dev=%s" % deviceFile]
    cmd1 = ["grep", "Current:"]
    cmd2 = ["awk", "{print $2}"]

    o_str, e_str, ret_code = ApplicationExecutor().executeCommandAndWait(False, None, cmd0, cmd1, cmd2)

    if ret_code == 0:
        o_str = o_str.rstrip()

        knownMedia = False

        if o_str in ["CD-R", "CD-RW", "DVD-R", "DVD+R", "DVD-RW", "DVD+RW"]:
            knownMedia = True
            rewritable = False

            if o_str.__contains__("RW"):
                rewritable = True

        else:
            print "ERRO : Tipo de midia desconhecido (%s)" % o_str

        if knownMedia:
            split_char = "-"

            if o_str.__contains__("+"):
                split_char = "+"

            mediaType = o_str.split(split_char)[0]

        if mediaType:
            empty = isEmpty(deviceFile)

    return {"Type": mediaType, "Rewritable": rewritable, "Empty": empty}
Exemple #5
0
def formatMedia(deviceFile, media):
	"""Formata a mídia no dispositivo"""

	outputStr = None
	errorStr = None
	returnCode = None

	if (media['Type'] == 'DVD'):
		outputStr, errorStr, returnCode = ApplicationExecutor().executeCommandAndWait(True, None, "dvd+rw-format -force %s" % deviceFile)
	elif (media['Type'] == 'CD'):
		outputStr, errorStr, returnCode = ApplicationExecutor().executeCommandAndWait(True, None, "cdrecord -v gracetime=2 dev=%s blank=fast -force" % deviceFile)
	else:
		print "ERRO : Tipo de midia desconhecido"

	return (returnCode == 0)
def burn(deviceFile, tempDir, fileToBurn, media):
    """Grava o arquivo fileToBurn na mídia inserida"""

    outputStr = None
    errorStr = None
    returnCode = None

    createBurnFileCmd = __file__.split("/")
    del (createBurnFileCmd[-1])
    createBurnFileCmd.append("create_burn_file.sh")
    createBurnFileCmd = "/".join(createBurnFileCmd)
    createBurnFileCmd = "/bin/sh " + createBurnFileCmd

    executor = ApplicationExecutor()

    outputStr, errorStr, returnCode = executor.executeCommandAndWait(True, None, createBurnFileCmd)

    if returnCode == 0:
        if media["Type"] == "DVD":
            outputStr, errorStr, returnCode = executor.executeCommandAndWait(
                True,
                None,
                "growisofs -dvd-compat -input-charset=ISO-8859-1 -Z %s -R -J -pad %s" % (deviceFile, fileToBurn),
            )

        elif media["Type"] == "CD":
            outputStr, errorStr, returnCode = executor.executeCommandAndWait(
                True,
                None,
                "mkisofs -r -R -J -l -L -allow-multidot -o %s/ldc_tmp.iso -graft-points %s=%s"
                % (tempDir, fileToBurn, fileToBurn),
            )
            outputStr, errorStr, returnCode = executor.executeCommandAndWait(
                True, None, "cdrecord dev=%s -v --eject speed=4" % deviceFile
            )

        else:
            print "ERRO : Tipo de midia desconhecido"

    return returnCode == 0
Exemple #7
0
def burn(deviceFile, tempDir, fileToBurn, media):
	"""Grava o arquivo fileToBurn na mídia inserida"""

	outputStr = None
	errorStr = None
	returnCode = None

	createBurnFileCmd = __file__.split("/")
	del(createBurnFileCmd[-1])
	createBurnFileCmd.append("create_burn_file.sh")
	createBurnFileCmd = "/".join(createBurnFileCmd)
	createBurnFileCmd = "/bin/sh " + createBurnFileCmd

	executor = ApplicationExecutor()

	outputStr, errorStr, returnCode = executor.executeCommandAndWait(True, None, createBurnFileCmd)

	if (returnCode == 0):
		if (media['Type'] == 'DVD'):
			outputStr, errorStr, returnCode = executor.executeCommandAndWait(True, None, "growisofs -dvd-compat -input-charset=ISO-8859-1 -Z %s -R -J -pad %s" % (deviceFile, fileToBurn))

		elif (media['Type'] == 'CD'):
			outputStr, errorStr, returnCode = executor.executeCommandAndWait(True, None, "mkisofs -r -R -J -l -L -allow-multidot -o %s/ldc_tmp.iso -graft-points %s=%s" % (tempDir, fileToBurn, fileToBurn))
			outputStr, errorStr, returnCode = executor.executeCommandAndWait(True, None, "cdrecord dev=%s -v --eject speed=4" % deviceFile)

		else:
			print "ERRO : Tipo de midia desconhecido"

	return (returnCode == 0)
Exemple #8
0
def getMediaInfo(deviceFile):
	"""
	Verifica qual o tipo de mídia inserida no dispositivo deviceFile

	Este método retorna um dicionario com as chaves 'Type', 'Rewritable' e 'Empty',
	onde Type é 'CD', 'DVD' ou None, Rewritable é um booleano, indicando se a mídia é
	regravável e Empty é outro booleano, indicando se a mídia esta vazia.
	"""

	# Current: CD-RW
	# Current: DVD-R sequential recording
	# Current: DVD-RW sequential recording

	mediaType = None
	rewritable = False
	empty = False

	cmd0 = ['cdrecord', '-prcap', 'dev=%s' % deviceFile]
	cmd1 = ['grep', 'Current:']
	cmd2 = ['awk', '{print $2}']

	o_str, e_str, ret_code = ApplicationExecutor().executeCommandAndWait(False, None, cmd0, cmd1, cmd2)

	if (ret_code == 0):
		o_str = o_str.rstrip()

		knownMedia = False

		if (o_str in ['CD-R', 'CD-RW', 'DVD-R', 'DVD+R', 'DVD-RW', 'DVD+RW']):
			knownMedia = True
			rewritable = False

			if (o_str.__contains__("RW")):
				rewritable = True

		else:
			print "ERRO : Tipo de midia desconhecido (%s)" % o_str

		if (knownMedia):
			split_char = "-"

			if (o_str.__contains__("+")):
				split_char = "+"

			mediaType = o_str.split(split_char)[0]

		if (mediaType):
			empty = isEmpty(deviceFile)

	return {'Type': mediaType, 'Rewritable': rewritable, 'Empty': empty}
Exemple #9
0
	def __init__(self, parent, info, expectedMedia):
		"""
		parent - Objeto pai.
		deviceFile - Endereço do dispositivo a ser testado. Ex: /dev/hdc
		expectedMedia - Dicionario que representa o tipo de mídia esperado, no dispositivo, para gravação.
		info - Instancia contendo as informacoes do dispositivo.
		"""

		QtGui.QWizard.__init__(self, parent)
		Ui_WizardDiagDVDCD.__init__(self)
		self.setupUi(self)

		self.__executor = ApplicationExecutor()

		self.__info = info
		self.__deviceFile = info.deviceFile
		self.__expectedMedia = expectedMedia

		self.__backButton = self.button(QtGui.QWizard.BackButton);
		self.__nextButton = self.button(QtGui.QWizard.NextButton);
		self.__cancelButton = self.button(QtGui.QWizard.CancelButton);
		self.__finishButton = self.button(QtGui.QWizard.FinishButton);

		self.__adjusts()
Exemple #10
0
def read(deviceFile, mountingPoint, fileToBurn):
	"""Lê o MD5 CRC do arquivo local fileToBurn e do arquivo gravado e armazena o resultado da comparação entre eles em __readStatus"""
	executor = ApplicationExecutor()

	result = False

	outputStr, errorStr, returnCode = executor.executeCommandAndWait(True, None, "mount %s %s" % (deviceFile, mountingPoint))

	if (returnCode == 0):
		outputStr1, errorStr1, returnCode1 = executor.executeCommandAndWait(False, None, ['md5sum', "%s" % fileToBurn], ['awk', '{print $1}'])
		outputStr2, errorStr2, returnCode2 = executor.executeCommandAndWait(False, None, ['md5sum', "%s/%s" % (mountingPoint, fileToBurn.split("/")[-1])], ['awk', '{print $1}'])
		outputStr3, errorStr3, returnCode3 = executor.executeCommandAndWait(True, None, "umount %s" % deviceFile)

		originalMD5 = outputStr1.rstrip()
		burnedMD5 = outputStr2.rstrip()

		result = (returnCode1 == 0) and (returnCode2 == 0) and (originalMD5 == burnedMD5)

	return result
Exemple #11
0
def closeTray(deviceFile):
	"""Utiliza a aplicação eject para fechar a gaveta do DVD/CD especificado por deviceFile"""

	outputStr, errorStr, returnCode = ApplicationExecutor().executeCommandAndWait(True, None, "cdrecord -load dev=%s" % deviceFile)
	return returnCode