Merge branch 'subtree'
[fanfix.git] / src / be / nikiroo / fanfix / bundles / Config.java
1 package be.nikiroo.fanfix.bundles;
2
3 import be.nikiroo.utils.resources.Meta;
4 import be.nikiroo.utils.resources.Meta.Format;
5
6 /**
7 * The configuration options.
8 *
9 * @author niki
10 */
11 @SuppressWarnings("javadoc")
12 public enum Config {
13
14 // Note: all hidden values are subject to be removed in a later version
15
16 @Meta(description = "The language to use for in the program (example: en-GB, fr-BE...) or nothing for default system language (can be overwritten with the variable $LANG)",//
17 format = Format.LOCALE, list = { "en-GB", "fr-BE" })
18 LANG, //
19 @Meta(description = "File format options",//
20 group = true)
21 FILE_FORMAT, //
22 @Meta(description = "How to save non-images documents in the library",//
23 format = Format.FIXED_LIST, list = { "INFO_TEXT", "EPUB", "HTML", "TEXT" }, def = "INFO_TEXT")
24 FILE_FORMAT_NON_IMAGES_DOCUMENT_TYPE, //
25 @Meta(description = "How to save images documents in the library",//
26 format = Format.FIXED_LIST, list = { "CBZ", "HTML" }, def = "CBZ")
27 FILE_FORMAT_IMAGES_DOCUMENT_TYPE, //
28 @Meta(description = "How to save cover images",//
29 format = Format.FIXED_LIST, list = { "PNG", "JPG", "BMP" }, def = "PNG")
30 FILE_FORMAT_IMAGE_FORMAT_COVER, //
31 @Meta(description = "How to save content images",//
32 format = Format.FIXED_LIST, list = { "PNG", "JPG", "BMP" }, def = "JPG")
33 FILE_FORMAT_IMAGE_FORMAT_CONTENT, //
34
35 @Meta(description = "Cache management",//
36 group = true)
37 CACHE, //
38 @Meta(description = "The directory where to store temporary files; any relative path uses the applciation config directory as base, $HOME notation is supported, / is always accepted as directory separator",//
39 format = Format.DIRECTORY, def = "tmp/")
40 CACHE_DIR, //
41 @Meta(description = "The delay in hours after which a cached resource that is thought to change ~often is considered too old and triggers a refresh delay (or 0 for no cache, or -1 for infinite time)", //
42 format = Format.INT, def = "24")
43 CACHE_MAX_TIME_CHANGING, //
44 @Meta(description = "The delay in hours after which a cached resource that is thought to change rarely is considered too old and triggers a refresh delay (or 0 for no cache, or -1 for infinite time)", //
45 format = Format.INT, def = "720")
46 CACHE_MAX_TIME_STABLE, //
47
48 @Meta(description = "The directory where to get the default story covers; any relative path uses the applciation config directory as base, $HOME notation is supported, / is always accepted as directory separator",//
49 format = Format.DIRECTORY, def = "covers/")
50 DEFAULT_COVERS_DIR, //
51 @Meta(description = "The directory where to store the library (can be overriden by the environment variable \"BOOKS_DIR\"; any relative path uses the applciation config directory as base, $HOME notation is supported, / is always accepted as directory separator",//
52 format = Format.DIRECTORY, def = "$HOME/Books/")
53 LIBRARY_DIR, //
54
55 @Meta(description = "Remote library\nA remote library can be configured to fetch the stories from a remote Fanfix server",//
56 group = true)
57 REMOTE_LIBRARY, //
58 @Meta(description = "Use the remote Fanfix server configured here instead of the local library (if FALSE, the local library will be used instead)",//
59 format = Format.BOOLEAN, def = "false")
60 REMOTE_LIBRARY_ENABLED, //
61 @Meta(description = "The remote Fanfix server to connect to",//
62 format = Format.STRING)
63 REMOTE_LIBRARY_HOST, //
64 @Meta(description = "The port to use for the remote Fanfix server",//
65 format = Format.INT, def = "58365")
66 REMOTE_LIBRARY_PORT, //
67 @Meta(description = "The key is structured: \"KEY|SUBKEY|wl|rw\"\n- \"KEY\" is the actual encryption key (it can actually be empty, which will still encrypt the messages but of course it will be easier to guess the key)\n- \"SUBKEY\" is the (optional) subkey to use to get additional privileges\n- \"wl\" is a special privilege that allows that subkey to ignore white lists\n- \"rw\" is a special privilege that allows that subkey to modify the library, even if it is not in RW (by default) mode\n\nSome examples:\n- \"super-secret\": a normal key, no special privileges\n- \"you-will-not-guess|azOpd8|wl\": a white-list ignoring key\n- \"new-password|subpass|rw\": a key that allows modifications on the library",//
68 format = Format.PASSWORD)
69 REMOTE_LIBRARY_KEY, //
70
71 @Meta(description = "Network configuration",//
72 group = true)
73 NETWORK, //
74 @Meta(description = "The user-agent to use to download files",//
75 def = "Mozilla/5.0 (X11; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0 -- ELinks/0.9.3 (Linux 2.6.11 i686; 80x24) -- Fanfix (https://github.com/nikiroo/fanfix/)")
76 NETWORK_USER_AGENT, //
77 @Meta(description = "The proxy server to use under the format 'user:pass@proxy:port', 'user@proxy:port', 'proxy:port' or ':' alone (system proxy); an empty String means no proxy",//
78 format = Format.STRING, def = "")
79 NETWORK_PROXY, //
80 @Meta(description = "If the last update check was done at least that many days ago, check for updates at startup (-1 for 'no checks')", //
81 format = Format.INT, def = "1")
82 NETWORK_UPDATE_INTERVAL, //
83
84 @Meta(description = "Remote Server configuration\nNote that the key is structured: \"KEY|SUBKEY|wl|rw\"\n- \"KEY\" is the actual encryption key (it can actually be empty, which will still encrypt the messages but of course it will be easier to guess the key)\n- \"SUBKEY\" is the (optional) subkey to use to get additional privileges\n- \"wl\" is a special privilege that allows that subkey to ignore white lists\n- \"rw\" is a special privilege that allows that subkey to modify the library, even if it is not in RW (by default) mode\n\nSome examples:\n- \"super-secret\": a normal key, no special privileges\n- \"you-will-not-guess|azOpd8|wl\": a white-list ignoring key\n- \"new-password|subpass|rw\": a key that allows modifications on the library",//
85 group = true)
86 SERVER, //
87 @Meta(description = "The port on which we can start the server (must be a valid port, from 1 to 65535)", //
88 format = Format.INT, def = "58365")
89 SERVER_PORT, //
90 @Meta(description = "The encryption key for the server (NOT including a subkey), it cannot contain the pipe character \"|\" but can be empty (it is *still* encrypted, but with an empty, easy to guess key)",//
91 format = Format.PASSWORD, def = "")
92 SERVER_KEY, //
93 @Meta(description = "Allow write access to the clients (download story, move story...) without RW subkeys", //
94 format = Format.BOOLEAN, def = "true")
95 SERVER_RW, //
96 @Meta(description = "If not empty, only the EXACT listed sources will be available for clients without BL subkeys",//
97 array = true, format = Format.STRING, def = "")
98 SERVER_WHITELIST, //
99 @Meta(description = "The subkeys that the server will allow, including the modes\nA subkey ", //
100 array = true, format = Format.STRING, def = "")
101 SERVER_ALLOWED_SUBKEYS, //
102
103 @Meta(description = "DEBUG options",//
104 group = true)
105 DEBUG, //
106 @Meta(description = "Show debug information on errors",//
107 format = Format.BOOLEAN, def = "false")
108 DEBUG_ERR, //
109 @Meta(description = "Show debug trace information",//
110 format = Format.BOOLEAN, def = "false")
111 DEBUG_TRACE, //
112
113 @Meta(description = "Internal configuration\nThose options are internal to the program and should probably not be changed",//
114 hidden = true, group = true)
115 CONF, //
116 @Meta(description = "LaTeX configuration",//
117 hidden = true, group = true)
118 CONF_LATEX_LANG, //
119 @Meta(description = "LaTeX output language (full name) for \"English\"",//
120 hidden = true, format = Format.STRING, def = "english")
121 CONF_LATEX_LANG_EN, //
122 @Meta(description = "LaTeX output language (full name) for \"French\"",//
123 hidden = true, format = Format.STRING, def = "french")
124 CONF_LATEX_LANG_FR, //
125 @Meta(description = "other 'by' prefixes before author name, used to identify the author",//
126 hidden = true, array = true, format = Format.STRING, def = "\"by\",\"par\",\"de\",\"©\",\"(c)\"")
127 CONF_BYS, //
128 @Meta(description = "List of languages codes used for chapter identification (should not be changed)", //
129 hidden = true, array = true, format = Format.STRING, def = "\"EN\",\"FR\"")
130 CONF_CHAPTER, //
131 @Meta(description = "Chapter identification string in English, used to identify a starting chapter in text mode",//
132 hidden = true, format = Format.STRING, def = "Chapter")
133 CONF_CHAPTER_EN, //
134 @Meta(description = "Chapter identification string in French, used to identify a starting chapter in text mode",//
135 hidden = true, format = Format.STRING, def = "Chapitre")
136 CONF_CHAPTER_FR, //
137
138 @Meta(description = "YiffStar/SoFurry credentials\nYou can give your YiffStar credentials here to have access to all the stories, though it should not be necessary anymore (some stories used to beblocked for anonymous viewers)",//
139 group = true)
140 LOGIN_YIFFSTAR, //
141 @Meta(description = "Your YiffStar/SoFurry login",//
142 format = Format.STRING)
143 LOGIN_YIFFSTAR_USER, //
144 @Meta(description = "Your YiffStar/SoFurry password",//
145 format = Format.PASSWORD)
146 LOGIN_YIFFSTAR_PASS, //
147
148 @Meta(description = "FimFiction APIKEY credentials\nFimFiction can be queried via an API, but requires an API key to do that. One has been created for this program, but if you have another API key you can set it here. You can also set a login and password instead, in that case, a new API key will be generated (and stored) if you still haven't set one.",//
149 group = true)
150 LOGIN_FIMFICTION_APIKEY, //
151 @Meta(description = "The login of the API key used to create a new token from FimFiction", //
152 format = Format.STRING)
153 LOGIN_FIMFICTION_APIKEY_CLIENT_ID, //
154 @Meta(description = "The password of the API key used to create a new token from FimFiction", //
155 format = Format.PASSWORD)
156 LOGIN_FIMFICTION_APIKEY_CLIENT_SECRET, //
157 @Meta(description = "Do not use the new API, even if we have a token, and force HTML scraping",//
158 format = Format.BOOLEAN, def = "false")
159 LOGIN_FIMFICTION_APIKEY_FORCE_HTML, //
160 @Meta(description = "The token required to use the beta APIv2 from FimFiction (see APIKEY_CLIENT_* if you want to generate a new one from your own API key)", //
161 format = Format.PASSWORD, def = "Bearer WnZ5oHlzQoDocv1GcgHfcoqctHkSwL-D")
162 LOGIN_FIMFICTION_APIKEY_TOKEN, //
163
164 @Meta(description = "e621.net credentials\nYou can give your e621.net credentials here to have access to all the comics and ignore the default blacklist",//
165 group = true)
166 LOGIN_E621, //
167 @Meta(description = "Your e621.net login",//
168 format = Format.STRING)
169 LOGIN_E621_LOGIN, //
170 @Meta(description = "Your e621.net API KEY",//
171 format = Format.PASSWORD)
172 LOGIN_E621_APIKEY, //
173 }