Table Structure

Table: EncryptionTypes
Column Column Type Comment
EncryptionTypeID tinyint(4) Primary Key
EncryptionType varchar(100) Text the user sees.
 
Table: FlaggedReasons
Column Column Type Comment
FlaggedReasonID int(11) Power of 2
FlaggedReason varchar(100) The reason the item was flagged.
 
Table: FTPTypes
Column Column Type Comment
FTPTypeID int(11)
FTPType varchar(100)
 
Table: GroupMemberships
Column Column Type Comment
GroupMembershipID bigint(20) PK auto_increment
GroupID bigint(20)
UserID bigint(20)
KnownAsID bigint(20) What the person is known as.
GroupPasswordEncrypted varchar(100) Group password encrypted with user's key.
Rights varchar(50) What rights this user has for this group.
 
Table: GroupNotebookBranches
Column Column Type Comment
GroupNotebookBranchID bigint(20) PK auto_increment
GroupID bigint(20)
ParentGroupNotebookBranchID bigint(20) parent of this branch or 0 if the root.
NotebookID bigint(20)
NotebookPasswordEncrypted varchar(100) Notebook password encrypted with group password
NotebookRights varchar(50) hex sum of rights this group has for notebook.
 
Table: Groups
Column Column Type Comment
GroupID bigint(20) PK auto_increment
Group varchar(100)
IsPublic bit(1) 0 - private. 1 - public. Private groups have name encrypted by group password.
CreatedDate datetime
Flagged int(11)
GroupPasswordHashed varchar(100) The group password hashed sha256. This is used to prove you know the group password.
PasswordHint varchar(512) A hint to help someone guess the password.
NumberOfPeople int(11) Number of people in this group.
GroupUniqueID bigint(20) Used by outsiders to refer to this group. Prevents hackers from guessing GroupIDs.
 
Table: KnownAs
Column Column Type Comment
KnownAsID bigint(20) PK auto_increment
UserID bigint(20) Foreign key to users.UserID or UserKeys.UserID.
KnownAs varchar(50) What the user is know as.
 
Table: NotebookBranches
Column Column Type Comment
NotebookBranchID bigint(20) PK auto_increment
NotebookID bigint(20) Foreign key to Notebooks.NotebookID. 1 to 1 relationship for a specific UserID. 1 to many if the notebook is shared.
UserID bigint(20) Foreign key to users.UserID or UserKeys.UserID.
NotebookRights varchar(50) hex sum of rights this user has for notebook.
NotebookPasswordEncrypted varchar(100) NotebookPassword encrypted with UserKey. The NotebookPassword is not stored in the database. The UserKey is not stored in the database. Get the UserKey by decrypting UserKeys.UserKeyEncrypted with the user's password. The user's password is not stored in the database and never sent to the server.
ParentNotebookBranchID bigint(20) Parent tree item. 0 if root.
 
Table: Notebooks
Column Column Type Comment
NotebookID bigint(20) PK auto increment.
NotebookNameEncrypted varchar(512) Encrypted with NotebookPassword. The NotebookPassword is not stored in the database. Get the NotebookPassword by decrypting it from NotebookBranches.NotebookPasswordEncrypted.
NumberOfBranches int(11) Number of branches that see this notebook. Number of entries for this NotebookID in table NotebookBranches.
NumberOfGroups int(11) Number of groups that see this notebook. The number of entries of this NotebookID in table GroupNotebookBranches.
NumberOfNotebookShareRequests int(11) Number of notebook share requests for this notebook.
EncryptionTypeID tinyint(4) What encryption algorhythm is used.
NumberOfFiles int(11) The number of files this notebook has. This number could be wrong because of cascade deletes.
ShareChildren tinyint(4) If =1 then if you can see this notebook, you can see its children. If =2 then share grandchildren. Uses NotebookChildren table.
 
Table: NotebookTexts
Column Column Type Comment
NotebookTextID bigint(20) PK auto_increment
NotebookID bigint(20) Foreign key to Notebooks.NotebookID. 1 to many relationship.
NotebookTextEncrypted mediumtext Encrypted with NotebookPassword. The NotebookPassword is not stored in the database. Get the NotebookPassword by decrypting it from NotebookBranches.NotebookPasswordEncrypted.
SortOrder int(11) Sort order within a notebook.
Flagged int(11) Has this text been flagged for inappropriate content?
ParentNotebookTextID bigint(20) This allows the notebook text to be in a tree. 0 if root. 1 to many relationship.
ReadWritePassword varchar(16) The password to read from or write to this block.
 
Table: NotebookWarehouseFTP
Column Column Type Comment
NotebookWarehouseFTPID bigint(20)
NotebookID bigint(20)
WarehouseID bigint(20)
WarehouseFTPID bigint(20)
WarehouseFTPKeyEncrypted varchar(100) WarehouseFTPKey encrypted with the NotebookPassword.
 
Table: NotebookWarehouses
Column Column Type Comment
NotebookWarehouseID bigint(20)
NotebookID bigint(20)
WarehouseID bigint(20)
WarehouseKeyEncrypted varchar(100) WarehouseKey encrypted with the NotebookPassword.
 
Table: Rights
Column Column Type Comment
RightsID varchar(50) Hex rights key. Power of 2.
RightSectionID tinyint(4) which section this right is for.
RightsDetailsID tinyint(4) which RightsDetails this right is for.
 
Table: RightsDetails
Column Column Type Comment
RightsDetailID tinyint(4) PK not auto_increment, but it should be.
RightsDetail varchar(50) description of right such as list, edit, delete.
 
Table: RightsSections
Column Column Type Comment
RightsSectionID tinyint(4) PK not auto_increment, but it should be.
RightsSection varchar(50) name of section such as Warehouse or Notebook.
 
Table: UserKeys
Column Column Type Comment
UserID bigint(20) PK a random number.
UserKeyEncrypted varchar(100) UserKey (a sequence of random letters) encrypted with user's password. The UserKey is not stored in the database. Get the UserKey by decrypting UserKeyEncrypted with the user's password.
Flagged int(11) Bit mask. Can be multiple reasons.
HasEmail bit(1) Does this user have any email? If you sent a user email, set this bit to 1.
RandomNumber varchar(50) A secret random number. Used when changing the user's password or deleting the account.
RandomNumberEncrypted varchar(100) RandomNumber encrypted with the user's password.
 
Table: UserMessages
Column Column Type Comment
UserMessageID bigint(20)
UserID bigint(20)
UserMessageTypeID tinyint(4)
Value bigint(20)
DateAdded datetime The date the record was added.
 
Table: UserMessageTypes
Column Column Type Comment
UserMessageTypeID tinyint(4)
Description varchar(200)
 
Table: UserPublicKeys
Column Column Type Comment
UserID bigint(20)
PublicKeyN varchar(4000)
PublicKeyE int(11)
PrivateKeyDEncrypted varchar(4000) Private key encrypted with user's UserKey
DateSavedEncrypted varchar(100) The date saved encrypted with your UserKey. This is to prove that the info is correct.
DateSaved datetime The date this record was saved. It should match somewhat the DateSavedEncrypted, but not exactly.
 
Table: users
Column Column Type Comment
UserID bigint(20) PK a random number.
UserName varchar(50) The UserName used to log in with.
PasswordHashedTwice varchar(100) The password doesn't go to the server. The sha256 of (UserName+':'+Password) goes to the server. PasswordHashedTwice uses 10 bits of pepper. The pepper is not stored. The server brute forces the pepper when checking the logon.
Websites varchar(50) Hex power of 2 list of which websites this user can log into.
 
Table: WarehouseFTP
Column Column Type Comment
WarehouseFTPID bigint(20)
WarehouseID bigint(20)
FTPUserNameEncrypted varchar(100) User name encrypted with the WarehouseFTPKey
FTPPasswordEncrypted varchar(100) Password encrypted with the WarehouseFTPKey
TotalFileSpace bigint(20) Total file space this user has.
UsedFileSpace bigint(20) Amount of used space this user has used.
ReadOnly tinyint(4) Is this username/password read only?
SpaceIndex int(11) If two users have the same space index, they can see each other's files. Default is 0.
CreatedByUserID bigint(20) The user that created this FTP. They can change or delete it.
FTPTypeID int(10) What type of FTP is it?
 
Table: Warehouses
Column Column Type Comment
WarehouseID bigint(20) PK auto_increment
WarehouseNameEncrypted varchar(100) Warehouse name encrypted with WarehouseKey.
IPEncrypted varchar(100) IP Encrypted with WarehouseKey.
PortEncrypted varchar(100) Port Encrypted with WarehouseKey.
OnionEncrypted varchar(1000) The Onion route encrypted with the WarehouseKey.
MaximumFileSize bigint(20) The maximum size of a file that can be uploaded.
TotalFileSpace bigint(20) The total amount of file space.
UsedFileSpace bigint(20) The amount of used file space.
 
Table: WarehouseUserFTP
Column Column Type Comment
WarehouseUserFTPID bigint(20)
WarehouseUserID bigint(20)
WarehouseFTPID bigint(20)
WarehouseFTPKeyEncrypted varchar(100) WarehouseFTPKey encrypted with the user's key.
 
Table: WarehouseUsers
Column Column Type Comment
WarehouseUserID bigint(20) PK auto_increment.
WarehouseID bigint(20)
UserID bigint(20)
RightsID varchar(50) Hex Rights (Rights table) this user has to this warehouse.
WarehouseKeyEncrypted varchar(100) WarehouseKey encrypted with the user's key.
 
Table: websites
Column Column Type Comment
WebsiteID varchar(50) PK Hex power of 2
Website varchar(100) Description of the website.