Open-Transactions  0.93.0-ge03d287
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
OTFolders.cpp
Go to the documentation of this file.
1 /************************************************************
2 *
3 * OTFolders.cpp
4 *
5 */
6 
7 /************************************************************
8  -----BEGIN PGP SIGNED MESSAGE-----
9  Hash: SHA1
10 
11  * OPEN TRANSACTIONS
12  *
13  * Financial Cryptography and Digital Cash
14  * Library, Protocol, API, Server, CLI, GUI
15  *
16  * -- Anonymous Numbered Accounts.
17  * -- Untraceable Digital Cash.
18  * -- Triple-Signed Receipts.
19  * -- Cheques, Vouchers, Transfers, Inboxes.
20  * -- Basket Currencies, Markets, Payment Plans.
21  * -- Signed, XML, Ricardian-style Contracts.
22  * -- Scripted smart contracts.
23  *
24  * Copyright (C) 2010-2013 by "Fellow Traveler" (A pseudonym)
25  *
26  * EMAIL:
28  *
29  * BITCOIN: 1NtTPVVjDsUfDWybS4BwvHpG2pdS9RnYyQ
30  *
31  * KEY FINGERPRINT (PGP Key in license file):
32  * 9DD5 90EB 9292 4B48 0484 7910 0308 00ED F951 BB8E
33  *
34  * OFFICIAL PROJECT WIKI(s):
35  * https://github.com/FellowTraveler/Moneychanger
36  * https://github.com/FellowTraveler/Open-Transactions/wiki
37  *
38  * WEBSITE:
39  * http://www.OpenTransactions.org/
40  *
41  * Components and licensing:
42  * -- Moneychanger..A Java client GUI.....LICENSE:.....GPLv3
43  * -- otlib.........A class library.......LICENSE:...LAGPLv3
44  * -- otapi.........A client API..........LICENSE:...LAGPLv3
45  * -- opentxs/ot....Command-line client...LICENSE:...LAGPLv3
46  * -- otserver......Server Application....LICENSE:....AGPLv3
47  * Github.com/FellowTraveler/Open-Transactions/wiki/Components
48  *
49  * All of the above OT components were designed and written by
50  * Fellow Traveler, with the exception of Moneychanger, which
51  * was contracted out to Vicky C ([email protected]).
52  * The open-source community has since actively contributed.
53  *
54  * -----------------------------------------------------
55  *
56  * LICENSE:
57  * This program is free software: you can redistribute it
58  * and/or modify it under the terms of the GNU Affero
59  * General Public License as published by the Free Software
60  * Foundation, either version 3 of the License, or (at your
61  * option) any later version.
62  *
63  * ADDITIONAL PERMISSION under the GNU Affero GPL version 3
64  * section 7: (This paragraph applies only to the LAGPLv3
65  * components listed above.) If you modify this Program, or
66  * any covered work, by linking or combining it with other
67  * code, such other code is not for that reason alone subject
68  * to any of the requirements of the GNU Affero GPL version 3.
69  * (==> This means if you are only using the OT API, then you
70  * don't have to open-source your code--only your changes to
71  * Open-Transactions itself must be open source. Similar to
72  * LGPLv3, except it applies to software-as-a-service, not
73  * just to distributing binaries.)
74  *
75  * Extra WAIVER for OpenSSL, Lucre, and all other libraries
76  * used by Open Transactions: This program is released under
77  * the AGPL with the additional exemption that compiling,
78  * linking, and/or using OpenSSL is allowed. The same is true
79  * for any other open source libraries included in this
80  * project: complete waiver from the AGPL is hereby granted to
81  * compile, link, and/or use them with Open-Transactions,
82  * according to their own terms, as long as the rest of the
83  * Open-Transactions terms remain respected, with regard to
84  * the Open-Transactions code itself.
85  *
86  * Lucre License:
87  * This code is also "dual-license", meaning that Ben Lau-
88  * rie's license must also be included and respected, since
89  * the code for Lucre is also included with Open Transactions.
90  * See Open-Transactions/src/otlib/lucre/LUCRE_LICENSE.txt
91  * The Laurie requirements are light, but if there is any
92  * problem with his license, simply remove the Lucre code.
93  * Although there are no other blind token algorithms in Open
94  * Transactions (yet. credlib is coming), the other functions
95  * will continue to operate.
96  * See Lucre on Github: https://github.com/benlaurie/lucre
97  * -----------------------------------------------------
98  * You should have received a copy of the GNU Affero General
99  * Public License along with this program. If not, see:
100  * http://www.gnu.org/licenses/
101  *
102  * If you would like to use this software outside of the free
103  * software license, please contact FellowTraveler.
104  * (Unfortunately many will run anonymously and untraceably,
105  * so who could really stop them?)
106  *
107  * DISCLAIMER:
108  * This program is distributed in the hope that it will be
109  * useful, but WITHOUT ANY WARRANTY; without even the implied
110  * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
111  * PURPOSE. See the GNU Affero General Public License for
112  * more details.
113 
114  -----BEGIN PGP SIGNATURE-----
115  Version: GnuPG v1.4.9 (Darwin)
116 
117  iQIcBAEBAgAGBQJRSsfJAAoJEAMIAO35UbuOQT8P/RJbka8etf7wbxdHQNAY+2cC
118  vDf8J3X8VI+pwMqv6wgTVy17venMZJa4I4ikXD/MRyWV1XbTG0mBXk/7AZk7Rexk
119  KTvL/U1kWiez6+8XXLye+k2JNM6v7eej8xMrqEcO0ZArh/DsLoIn1y8p8qjBI7+m
120  aE7lhstDiD0z8mwRRLKFLN2IH5rAFaZZUvj5ERJaoYUKdn4c+RcQVei2YOl4T0FU
121  LWND3YLoH8naqJXkaOKEN4UfJINCwxhe5Ke9wyfLWLUO7NamRkWD2T7CJ0xocnD1
122  sjAzlVGNgaFDRflfIF4QhBx1Ddl6wwhJfw+d08bjqblSq8aXDkmFA7HeunSFKkdn
123  oIEOEgyj+veuOMRJC5pnBJ9vV+7qRdDKQWaCKotynt4sWJDGQ9kWGWm74SsNaduN
124  TPMyr9kNmGsfR69Q2Zq/FLcLX/j8ESxU+HYUB4vaARw2xEOu2xwDDv6jt0j3Vqsg
125  x7rWv4S/Eh18FDNDkVRChiNoOIilLYLL6c38uMf1pnItBuxP3uhgY6COm59kVaRh
126  nyGTYCDYD2TK+fI9o89F1297uDCwEJ62U0Q7iTDp5QuXCoxkPfv8/kX6lS6T3y9G
127  M9mqIoLbIQ1EDntFv7/t6fUTS2+46uCrdZWbQ5RjYXdrzjij02nDmJAm2BngnZvd
128  kamH0Y/n11lCvo1oQxM+
129  =uSzz
130  -----END PGP SIGNATURE-----
131  **************************************************************/
132 
133 #include "stdafx.hpp"
134 
135 #include "util/OTFolders.hpp"
136 #include "util/OTPaths.hpp"
137 
138 #ifdef _WIN32
139 #include <direct.h>
140 #include <shlobj.h>
141 #endif
142 
143 #ifndef _WIN32
144 #include <libgen.h>
145 #include <unistd.h>
146 #endif
147 
148 #ifdef __APPLE__
149 #include "TargetConditionals.h"
150 #endif
151 
152 #ifdef TARGET_OS_MAC
153 #include <mach-o/dyld.h>
154 #include <limits.h>
155 #endif
156 
157 #define DEFAULT_ACCOUNT "accounts"
158 #define DEFAULT_CERT "certs"
159 #define DEFAULT_CONTRACT "contracts"
160 #define DEFAULT_CREDENTIAL "credentials"
161 #define DEFAULT_CRON "cron"
162 #define DEFAULT_INBOX "inbox"
163 #define DEFAULT_MARKET "markets"
164 #define DEFAULT_MINT "mints"
165 #define DEFAULT_NYM "nyms"
166 #define DEFAULT_NYMBOX "nymbox"
167 #define DEFAULT_OUTBOX "outbox"
168 #define DEFAULT_PAYMENTINBOX "paymentInbox"
169 #define DEFAULT_PUBCRED "pubcred"
170 #define DEFAULT_PUBKEY "pubkeys"
171 #define DEFAULT_PURSE "purse"
172 #define DEFAULT_RECEIPT "receipts"
173 #define DEFAULT_RECORDBOX "recordBox"
174 #define DEFAULT_EXPIREDBOX "expiredBox"
175 #define DEFAULT_SCRIPT "scripts"
176 #define DEFAULT_SMARTCONTRACTS "smartcontracts"
177 #define DEFAULT_SPENT "spent"
178 #define DEFAULT_USERACCT "useraccounts"
179 
180 #define KEY_ACCOUNT "account"
181 #define KEY_CERT "cert"
182 #define KEY_CONTRACT "contract"
183 #define KEY_CREDENTIAL "credential"
184 #define KEY_CRON "cron"
185 #define KEY_INBOX "inbox"
186 #define KEY_MARKET "market"
187 #define KEY_MINT "mint"
188 #define KEY_NYM "nym"
189 #define KEY_NYMBOX "nymbox"
190 #define KEY_OUTBOX "outbox"
191 #define KEY_PAYMENTINBOX "paymentinbox"
192 #define KEY_PUBCRED "pubcred"
193 #define KEY_PUBKEY "pubkey"
194 #define KEY_PURSE "purse"
195 #define KEY_RECEIPT "receipt"
196 #define KEY_RECORDBOX "recordbox"
197 #define KEY_EXPIREDBOX "expiredbox"
198 #define KEY_SCRIPT "script"
199 #define KEY_SMARTCONTRACTS "smartcontracts"
200 #define KEY_SPENT "spent"
201 #define KEY_USERACCT "useracct"
202 
203 namespace opentxs
204 {
205 
206 OTString OTFolders::s_strAccount("");
207 OTString OTFolders::s_strCert("");
208 OTString OTFolders::s_strContract("");
209 OTString OTFolders::s_strCredential("");
210 OTString OTFolders::s_strCron("");
211 OTString OTFolders::s_strInbox("");
212 OTString OTFolders::s_strMarket("");
213 OTString OTFolders::s_strMint("");
214 OTString OTFolders::s_strNym("");
215 OTString OTFolders::s_strNymbox("");
216 OTString OTFolders::s_strOutbox("");
217 OTString OTFolders::s_strPaymentInbox("");
218 OTString OTFolders::s_strPubcred("");
219 OTString OTFolders::s_strPubkey("");
220 OTString OTFolders::s_strPurse("");
221 OTString OTFolders::s_strReceipt("");
222 OTString OTFolders::s_strRecordBox("");
223 OTString OTFolders::s_strExpiredBox("");
224 OTString OTFolders::s_strScript("");
225 OTString OTFolders::s_strSmartContracts("");
226 OTString OTFolders::s_strSpent("");
227 OTString OTFolders::s_strUserAcct("");
228 
229 bool OTFolders::GetSetAll()
230 {
231  OTSettings config(OTPaths::GlobalConfigFile());
232 
233  config.Reset();
234 
235  if (!config.Load()) return false;
236 
237  if (!GetSetFolderName(config, KEY_ACCOUNT, DEFAULT_ACCOUNT, s_strAccount))
238  return false;
239  if (!GetSetFolderName(config, KEY_CERT, DEFAULT_CERT, s_strCert))
240  return false;
241  if (!GetSetFolderName(config, KEY_CONTRACT, DEFAULT_CONTRACT,
242  s_strContract))
243  return false;
244  if (!GetSetFolderName(config, KEY_CREDENTIAL, DEFAULT_CREDENTIAL,
245  s_strCredential))
246  return false;
247  if (!GetSetFolderName(config, KEY_CRON, DEFAULT_CRON, s_strCron))
248  return false;
249  if (!GetSetFolderName(config, KEY_INBOX, DEFAULT_INBOX, s_strInbox))
250  return false;
251  if (!GetSetFolderName(config, KEY_MARKET, DEFAULT_MARKET, s_strMarket))
252  return false;
253  if (!GetSetFolderName(config, KEY_MINT, DEFAULT_MINT, s_strMint))
254  return false;
255  if (!GetSetFolderName(config, KEY_NYM, DEFAULT_NYM, s_strNym)) return false;
256  if (!GetSetFolderName(config, KEY_NYMBOX, DEFAULT_NYMBOX, s_strNymbox))
257  return false;
258  if (!GetSetFolderName(config, KEY_OUTBOX, DEFAULT_OUTBOX, s_strOutbox))
259  return false;
260  if (!GetSetFolderName(config, KEY_PAYMENTINBOX, DEFAULT_PAYMENTINBOX,
261  s_strPaymentInbox))
262  return false;
263  if (!GetSetFolderName(config, KEY_PUBCRED, DEFAULT_PUBCRED, s_strPubcred))
264  return false;
265  if (!GetSetFolderName(config, KEY_PUBKEY, DEFAULT_PUBKEY, s_strPubkey))
266  return false;
267  if (!GetSetFolderName(config, KEY_PURSE, DEFAULT_PURSE, s_strPurse))
268  return false;
269  if (!GetSetFolderName(config, KEY_RECEIPT, DEFAULT_RECEIPT, s_strReceipt))
270  return false;
271  if (!GetSetFolderName(config, KEY_RECORDBOX, DEFAULT_RECORDBOX,
272  s_strRecordBox))
273  return false;
274  if (!GetSetFolderName(config, KEY_EXPIREDBOX, DEFAULT_EXPIREDBOX,
275  s_strExpiredBox))
276  return false;
277  if (!GetSetFolderName(config, KEY_SCRIPT, DEFAULT_SCRIPT, s_strScript))
278  return false;
279  if (!GetSetFolderName(config, KEY_SMARTCONTRACTS, DEFAULT_SMARTCONTRACTS,
280  s_strSmartContracts))
281  return false;
282  if (!GetSetFolderName(config, KEY_SPENT, DEFAULT_SPENT, s_strSpent))
283  return false;
284  if (!GetSetFolderName(config, KEY_USERACCT, DEFAULT_USERACCT,
285  s_strUserAcct))
286  return false;
287 
288  if (!config.Save()) return false;
289 
290  config.Reset();
291 
292  return true;
293 }
294 
296 {
297  return GetFolder(s_strAccount);
298 }
300 {
301  return GetFolder(s_strCert);
302 }
304 {
305  return GetFolder(s_strContract);
306 }
308 {
309  return GetFolder(s_strCredential);
310 }
312 {
313  return GetFolder(s_strCron);
314 }
316 {
317  return GetFolder(s_strInbox);
318 }
320 {
321  return GetFolder(s_strMarket);
322 }
324 {
325  return GetFolder(s_strMint);
326 }
328 {
329  return GetFolder(s_strNym);
330 }
332 {
333  return GetFolder(s_strNymbox);
334 }
336 {
337  return GetFolder(s_strOutbox);
338 }
340 {
341  return GetFolder(s_strPaymentInbox);
342 }
344 {
345  return GetFolder(s_strPubcred);
346 }
348 {
349  return GetFolder(s_strPubkey);
350 }
352 {
353  return GetFolder(s_strPurse);
354 }
356 {
357  return GetFolder(s_strReceipt);
358 }
360 {
361  return GetFolder(s_strRecordBox);
362 }
364 {
365  return GetFolder(s_strExpiredBox);
366 }
368 {
369  return GetFolder(s_strScript);
370 }
372 {
373  return GetFolder(s_strSmartContracts);
374 }
376 {
377  return GetFolder(s_strSpent);
378 }
380 {
381  return GetFolder(s_strUserAcct);
382 }
383 
384 } // namespace opentxs
#define DEFAULT_PUBCRED
Definition: OTFolders.cpp:169
static EXPORT const OTString & Mint()
Definition: OTFolders.cpp:323
#define KEY_ACCOUNT
Definition: OTFolders.cpp:180
#define DEFAULT_MARKET
Definition: OTFolders.cpp:163
#define DEFAULT_RECORDBOX
Definition: OTFolders.cpp:173
#define KEY_EXPIREDBOX
Definition: OTFolders.cpp:197
#define KEY_NYM
Definition: OTFolders.cpp:188
#define DEFAULT_NYM
Definition: OTFolders.cpp:165
#define KEY_MINT
Definition: OTFolders.cpp:187
#define DEFAULT_PUBKEY
Definition: OTFolders.cpp:170
static EXPORT const OTString & Pubcred()
Definition: OTFolders.cpp:343
#define KEY_USERACCT
Definition: OTFolders.cpp:201
#define KEY_SMARTCONTRACTS
Definition: OTFolders.cpp:199
#define DEFAULT_MINT
Definition: OTFolders.cpp:164
static EXPORT const OTString & PaymentInbox()
Definition: OTFolders.cpp:339
#define DEFAULT_PURSE
Definition: OTFolders.cpp:171
static EXPORT const OTString & ExpiredBox()
Definition: OTFolders.cpp:363
static EXPORT const OTString & Pubkey()
Definition: OTFolders.cpp:347
static EXPORT const OTString & Nym()
Definition: OTFolders.cpp:327
#define KEY_CONTRACT
Definition: OTFolders.cpp:182
#define DEFAULT_NYMBOX
Definition: OTFolders.cpp:166
#define KEY_CREDENTIAL
Definition: OTFolders.cpp:183
static EXPORT const OTString & SmartContracts()
Definition: OTFolders.cpp:371
static EXPORT const OTString & Inbox()
Definition: OTFolders.cpp:315
static EXPORT const OTString & Contract()
Definition: OTFolders.cpp:303
static EXPORT const OTString & Nymbox()
Definition: OTFolders.cpp:331
static EXPORT const OTString & UserAcct()
Definition: OTFolders.cpp:379
#define KEY_PAYMENTINBOX
Definition: OTFolders.cpp:191
static EXPORT const OTString & Credential()
Definition: OTFolders.cpp:307
#define KEY_SPENT
Definition: OTFolders.cpp:200
#define KEY_CERT
Definition: OTFolders.cpp:181
#define DEFAULT_SMARTCONTRACTS
Definition: OTFolders.cpp:176
#define DEFAULT_PAYMENTINBOX
Definition: OTFolders.cpp:168
#define DEFAULT_USERACCT
Definition: OTFolders.cpp:178
#define DEFAULT_SPENT
Definition: OTFolders.cpp:177
static EXPORT const OTString & Receipt()
Definition: OTFolders.cpp:355
static EXPORT const OTString & Script()
Definition: OTFolders.cpp:367
#define KEY_RECEIPT
Definition: OTFolders.cpp:195
static EXPORT const OTString & Outbox()
Definition: OTFolders.cpp:335
#define KEY_PURSE
Definition: OTFolders.cpp:194
#define DEFAULT_CREDENTIAL
Definition: OTFolders.cpp:160
static EXPORT const OTString & Market()
Definition: OTFolders.cpp:319
#define DEFAULT_OUTBOX
Definition: OTFolders.cpp:167
static EXPORT const OTString & Purse()
Definition: OTFolders.cpp:351
#define KEY_MARKET
Definition: OTFolders.cpp:186
#define KEY_OUTBOX
Definition: OTFolders.cpp:190
#define DEFAULT_ACCOUNT
Definition: OTFolders.cpp:157
#define KEY_NYMBOX
Definition: OTFolders.cpp:189
#define DEFAULT_CRON
Definition: OTFolders.cpp:161
#define KEY_RECORDBOX
Definition: OTFolders.cpp:196
#define DEFAULT_CONTRACT
Definition: OTFolders.cpp:159
#define KEY_CRON
Definition: OTFolders.cpp:184
#define DEFAULT_EXPIREDBOX
Definition: OTFolders.cpp:174
static EXPORT const OTString & Cron()
Definition: OTFolders.cpp:311
#define KEY_INBOX
Definition: OTFolders.cpp:185
#define DEFAULT_RECEIPT
Definition: OTFolders.cpp:172
static EXPORT const OTString & Cert()
Definition: OTFolders.cpp:299
#define DEFAULT_INBOX
Definition: OTFolders.cpp:162
static EXPORT const OTString & RecordBox()
Definition: OTFolders.cpp:359
static EXPORT const OTString & Spent()
Definition: OTFolders.cpp:375
#define KEY_PUBKEY
Definition: OTFolders.cpp:193
#define DEFAULT_SCRIPT
Definition: OTFolders.cpp:175
static EXPORT const OTString & Account()
Definition: OTFolders.cpp:295
#define DEFAULT_CERT
Definition: OTFolders.cpp:158
static EXPORT const OTString & GlobalConfigFile()
Definition: OTPaths.cpp:286
#define KEY_PUBCRED
Definition: OTFolders.cpp:192
#define KEY_SCRIPT
Definition: OTFolders.cpp:198