Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Cergath en 16 Abril 2015, 19:12 pm



Título: ¿Qué significa este error?
Publicado por: Cergath en 16 Abril 2015, 19:12 pm
Estoy recibiendo un error más largo que este, pero dudo que lo demás sea primordial justo ahora:

unknown mime type unknown/unknown

¿Cómo lo soluciono si no sé qué formato he de solucionar?
Es un fichero .imscc para importar en Canvas (instructure)


Título: Re: ¿Qué significa este error?
Publicado por: engel lex en 16 Abril 2015, 19:29 pm
no se que lenguaje estás usando ni que estás haciendo mal... pero aquí información sobre los mimetypes

http://es.wikipedia.org/wiki/Multipurpose_Internet_Mail_Extensions (http://es.wikipedia.org/wiki/Multipurpose_Internet_Mail_Extensions)


Título: Re: ¿Qué significa este error?
Publicado por: Eleкtro en 16 Abril 2015, 20:16 pm
Deberia(mos) eliminar todas las preguntas que no indiquen el lenguaje de programación que se está usando.

Esto me mosquea aun más cuando son usuarios veteranos.

Saludos


Título: Re: ¿Qué significa este error?
Publicado por: Cergath en 17 Abril 2015, 03:38 am
Esto me mosquea aun más cuando son usuarios veteranos.

No soy usuario veterano, y ciertamente no dije el lenguaje de programación porque no creí que fuese importante dado el error tan genérico y el hecho de que no hay output más que ese... Como mencioné en el post original, trato de importar un paquete de cursos a Canvas (de Instructure), que está hecho en Ruby, desafortunadamente el output no muestra más, sino solo ese error... Muestra algunas líneas relacionadas a ficheros que fallan, pero nada más, como que intentó correr "/var/canvas/lib/canvas/migration/archive.rb ..." etcétera

Será que mirando lo que hacen esos archivos de pronto doy con lo que trata de hacer?


Título: Re: ¿Qué significa este error?
Publicado por: Cergath en 17 Abril 2015, 03:52 am
Fui a otros ficheros de errores y encontré el código que intenta ejecutar:

Código
  1. each_entry(archive_filename) do |entry, index|
  2.      if unsafe_entry?(entry)
  3.        add_warning(warnings, entry, :unsafe)
  4.        next
  5.      end
  6.  
  7.      if block
  8.        block.call(entry, index)
  9.      else
  10.        raise FileLimitExceeded if files_left <= 0
  11.        begin
  12.          f_path = File.join(dest_folder, entry.name)
  13.          entry.extract(f_path, false, bytes_left) do |size|
  14.            bytes_left -= size
  15.            raise SizeLimitExceeded if bytes_left < 0
  16.          end
  17.  
  18.          files_left -= 1
  19.        rescue DestinationFileExists
  20.          add_warning(warnings, entry, :already_exists)
  21.        rescue Zip::CompressionMethodError
  22.          add_warning(warnings, entry, :unknown_compression_method)
  23.        end
  24.      end
  25.    end
  26.    warnings
  27.  end
  28.  
  29.  def self.each_entry(archive_filename)
  30.    raise ArgumentError, "no block given" unless block_given?
  31.  
  32.    file = File.open(archive_filename)
  33.    mime_type = File.mime_type?(file)
  34.  
  35.    if mime_type == 'application/x-gzip'
  36.      file = Zlib::GzipReader.new(file)
  37.      mime_type = 'application/x-tar' # it may not actually be a tar though, so rescue if there's a problem
  38.    end
  39.  
  40.    if mime_type == 'application/zip'
  41.      Zip::File.open(file) do |zipfile|
  42.        zipfile.entries.each_with_index do |zip_entry, index|
  43.          yield(Entry.new(zip_entry), index)
  44.        end
  45.      end
  46.    elsif mime_type == 'application/x-tar'
  47.      index = 0
  48.      begin
  49.        Gem::Package::TarReader.new(file).each do |tar_entry|
  50.          next if tar_entry.header.typeflag == 'x'
  51.          yield(Entry.new(tar_entry), index)
  52.          index += 1
  53.        end
  54.      rescue Gem::Package::TarInvalidError
  55.        raise UnknownArchiveType, "invalid tar"
  56.      end
  57.    else
  58.      raise UnknownArchiveType, "unknown mime type #{mime_type}"
  59.    end
  60.  end
  61.  

Ya intenté cambiar el formato de .imscc a .zip (que es que .imscc por defecto debería funcionar), y aún así no funciona :( ... ¿alguna forma de configurar "manualmente" el mime type?... ¿se puede? :(  :-( :-(

(está funcionando en Ubuntu 12.04)


Título: Re: ¿Qué significa este error?
Publicado por: engel lex en 17 Abril 2015, 04:18 am
el mimetype viene dado por el servidor que normalmente toma en cuenta la extención del fichero para escogerlo... puedes hacerle un bypass al programa y listo, ahí tienes el codigo, ahora tienes que saber que hacer con el... si es necesario que sea así necesitarías explicar el servidor


Título: Re: ¿Qué significa este error?
Publicado por: Cergath en 17 Abril 2015, 08:24 am
Sé que no es la solución más sofisticada porque, bueno, supongo que lo ideal sería que identificara el archivo...

Código
  1. if mime_type == 'unknown/unknown'
  2.      Zip::File.open(file) do |zipfile|
  3.        zipfile.entries.each_with_index do |zip_entry, index|
  4.          yield(Entry.new(zip_entry), index)
  5.        end
  6.      end
  7.  

He puesto eso y me ha funcionado  :o , la verdad me sorprende que haya sido tan... fácil...