Your comments

The log file is rolled and zipped when it reaches 1MB.


You can customize the logging policy.

Here is a tutorial to change log line format, but you can customize all logging parameters.

Depends on the problem the current size poses.

What's the size of your DB ? (for how many files ?)

I thought a bit more about it and found it hard to add meaningful debugging information as the security mechanism involves database queries and thus might depend on what is inside your database.


Would it possible for you to send me:

  • your database file (ubooquity-4.h2.db in your working directory)
  • your settings file (preferences.xml in your working directory)
  • the password of a user for which you have the problem

Ideally on a small collection, so that the database is small enough to be sent by email.

And with a dummy password.


My address: tom at vaemendis dot net.

(putting everything in a zip file stored somewhere on the web will do too)

I'll post here the answer I sent you by email so that other users can build upon it if they have other ideas.


Installation directory (where you put Ubooquity.jar) and working directory are not necessarily the same. It depends on where you launch Ubooquity from.

Running any application in a system directory is not a good idea, your working directory should be a user directory you have created somewhere in your own files (not the OS files), and for which the user running Ubooquity has writing permission.

To do that you can either "cd" in your working directory before launching Ubooquity, or use the "-workdir" command line option: it allows you to specify where Ubooquity should create its own files (database, logs, preferences, cache, etc).

Ubooquity tries to unzip the file and fails.

As a workaround, it tries to guess the actual format by reading the first few bytes of the file (you'd be surprised by how many people confuse cbr and cbz when naming their files).

Turns out the file is a zip file, so it tries to unzip it (Useless, I agree. Usually in theses situations the actual format is different).

It fails again, of course.


As to why exactly, I don't know. The "magic number" is the only way Ubooquity has to guess the format.

Your files might be corrupted.

Unless you use the "--host" command line parameter ("-host" works too), Ubooquity listens to everything coming to your server on the specified port. There is no need to enable anything for remote connections, they are allowed by default.


I'm afraid your problem is somewhere else on the network.

Before I do that, could you confirm that you are using version 1.9.1 ?

Yes, logs are quite normal.

I'll try to build a special version with extra debugging info to track the problem.


When Ubooquity indexes files, it opens them to extract the cover and the metadata.

To do that, it needs the complete file (even more so when it serves pages for the online reader), doing so on a file hosted in a cloud is unofortunately not possible.



Ubooquity reads metadata stored in the ComicRack format and displays some of them.

Which ones of the missing fields would you want Ubooquity to display ?


Here is the full schema of the ComicRack metadata format:


<?xml version="1.0" encoding="utf-8"?>
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="ComicInfo" nillable="true" type="ComicInfo" />
  <xs:complexType name="ComicInfo">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" default="" name="Title" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" default="" name="Series" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" default="" name="Number" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" default="-1" name="Count" type="xs:int" />
      <xs:element minOccurs="0" maxOccurs="1" default="-1" name="Volume" type="xs:int" />
      <xs:element minOccurs="0" maxOccurs="1" default="" name="AlternateSeries" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" default="" name="AlternateNumber" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" default="-1" name="AlternateCount" type="xs:int" />
      <xs:element minOccurs="0" maxOccurs="1" default="" name="Summary" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" default="" name="Notes" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" default="-1" name="Year" type="xs:int" />
      <xs:element minOccurs="0" maxOccurs="1" default="-1" name="Month" type="xs:int" />
      <xs:element minOccurs="0" maxOccurs="1" default="" name="Writer" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" default="" name="Penciller" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" default="" name="Inker" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" default="" name="Colorist" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" default="" name="Letterer" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" default="" name="CoverArtist" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" default="" name="Editor" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" default="" name="Publisher" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" default="" name="Imprint" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" default="" name="Genre" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" default="" name="Web" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" default="0" name="PageCount" type="xs:int" />
      <xs:element minOccurs="0" maxOccurs="1" default="" name="LanguageISO" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" default="" name="Format" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" default="Unknown" name="BlackAndWhite" type="YesNo" />
      <xs:element minOccurs="0" maxOccurs="1" default="Unknown" name="Manga" type="YesNo" />
      <xs:element minOccurs="0" maxOccurs="1" name="Pages" type="ArrayOfComicPageInfo" />
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="YesNo">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Unknown" />
      <xs:enumeration value="No" />
      <xs:enumeration value="Yes" />
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="ArrayOfComicPageInfo">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="Page" nillable="true" type="ComicPageInfo" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="ComicPageInfo">
    <xs:attribute name="Image" type="xs:int" use="required" />
    <xs:attribute default="Story" name="Type" type="ComicPageType" />
    <xs:attribute default="false" name="DoublePage" type="xs:boolean" />
    <xs:attribute default="0" name="ImageSize" type="xs:long" />
    <xs:attribute default="" name="Key" type="xs:string" />
    <xs:attribute default="-1" name="ImageWidth" type="xs:int" />
    <xs:attribute default="-1" name="ImageHeight" type="xs:int" />
  </xs:complexType>
  <xs:simpleType name="ComicPageType">
    <xs:list>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="FrontCover" />
          <xs:enumeration value="InnerCover" />
          <xs:enumeration value="Roundup" />
          <xs:enumeration value="Story" />
          <xs:enumeration value="Advertisment" />
          <xs:enumeration value="Editorial" />
          <xs:enumeration value="Letters" />
          <xs:enumeration value="Preview" />
          <xs:enumeration value="BackCover" />
          <xs:enumeration value="Other" />
          <xs:enumeration value="Deleted" />
        </xs:restriction>
      </xs:simpleType>
    </xs:list>
  </xs:simpleType>
</xs:schema>