1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473
|
<?xml version="1.0" encoding="UTF-8"?>
<!-- For standalone validation, uncomment the following DOCTYPE declaration. -->
<!--
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
-->
<article id="frrelnotes">
<articleinfo>
<title><application>FlameRobin</application> 0.8.6 Manual</title>
<author>
<firstname>Nando</firstname>
<surname>Dessena</surname>
</author>
<author>
<firstname>Milan</firstname>
<surname>Babuskov</surname>
</author>
</articleinfo>
<section>
<title>About this manual</title>
<para>We try to keep all the features in FlameRobin usable in an intuitive
manner. However, there are things that you still need to know if you want
to grasp the full power of the application, and this manual contains
details about them. In this document, you will find an overview of the
features, a description of all configuration parameters and advanced
installation and customization notes.</para>
</section>
<section id="frrelnotes-alphatest">
<title>About the ALPHA test program</title>
<para>Lots of people have been using FlameRobin in day-to-day work for a
long time now. Yet, we still consider the software in ALPHA state until it
reaches feature-completeness, which will come with release 1.0. FlameRobin
is very near to that state. Meanwhile, we thank you for evaluating and
using this software and encourage you to send comments, bug reports and
feature requests back to us so we can make it a better product.</para>
</section>
<section id="frrelnotes-what-fr-is">
<title>What FlameRobin is</title>
<para>FlameRobin is a GUI administration and data manipulation tool for
Firebird databases. It is designed to be small, simple and cross-platform,
yet offer all the basic features needed to administer Firebird servers and
create/maintain databases. FlameRobin is Open Source software and binaries
are currently available for Windows, several GNU/Linux and BSD flavours
and MacOS X. Ports to other platforms are possible, subject to the
availability of maintainers for those platforms.</para>
</section>
<section id="frrelnotes-what-fr-is-not">
<title>What FlameRobin is NOT</title>
<para>FlameRobin is not a full-featured administration tool with lots of
bells and whistles, as there are plenty available for Firebird from
several different parties. Our first goal with FlameRobin is to provide
people not used to the command line with a GUI tool to get started with
Firebird. Our longer-term goal is to develop a richer tool mainly for the
Linux platform; while there are several rich and mature GUI tools under
Windows, some of them available for free or for a modest price, there
isn't any for Linux. Another goal of the project is for a "lite" edition
of FlameRobin to be bundled with the Firebird server to serve as a
starting kit for new users. This bundle may be distributed by the Firebird
Project itself or by some third party.</para>
</section>
<section id="frrelnotes-who-we-are">
<title>Who we are</title>
<para>The home page of the FlameRobin project is located at <ulink
url="http://www.flamerobin.org">http://www.flamerobin.org</ulink>. The
project itself is hosted on <ulink
url="http://sourceforge.net/projects/flamerobin">SourceForge</ulink>.
Please use our mailing list (flamerobin-devel) to contact the developers.
Details and archives available <ulink
url="http://sourceforge.net/mail/?group_id=124340">here</ulink>. You are
also encouraged to use our <ulink
url="http://sourceforge.net/tracker/?group_id=124340&atid=699234">bugs</ulink>
and <ulink
url="http://sourceforge.net/tracker/?group_id=124340&atid=699237">feature
requests</ulink> trackers to report back to us the results of your alpha
testing. If you are a developer interested in joining the FlameRobin
project, let us know. We always welcome contributors.</para>
</section>
<section id="frrelnotes-license">
<title>License</title>
<para>FlameRobin is released under the Expat License. You can find the
complete license text in the file fr_license.html, or <ulink
url="http://www.flamerobin.org/license.html">here</ulink>.</para>
</section>
<section id="frrelnotes-changes">
<title>What's new?</title>
<para>Please refer to fr_whatsnew.html for a detailed history of all the
changes since the previous release.</para>
</section>
<section id="frrelnotes-installation">
<title>Installation</title>
<para>If you want to build FlameRobin from sources, please find
instructions on our web site or Subversion repository. In this section we
talk about installing the pre-built version of FlameRobin under all
currently supported platforms.</para>
<section>
<title>General information</title>
<para>If you have installed a previous ALPHA version of FlameRobin which
is <emphasis>less than 0.4.0</emphasis>, it is recommended that you
remove it before installing this version.</para>
<para>You won't be able to keep a config.ini file from an earlier
version, because the name and file format have changed in version
0.4.0.</para>
<para>You might be able to keep your servers.xml file, provided that you
rename it to fr_databases.conf and move it to your data folder.
FlameRobin will tell you the exact path of this file (which changes with
the platform) upon first startup, when it cannot find the file.</para>
<para>Here are the files used by FlameRobin to store configuration
information:</para>
<itemizedlist>
<listitem>
<para>fr_databases.conf is the list of Firebird servers and
databases you work with; FlameRobin will create it (and
automatically add the "localhost" server) when you run it for the
first time; then you can register new servers and databases.</para>
</listitem>
<listitem>
<para>fr_settings.conf stores FlameRobin's configuration
information, like the position and size of the main program window.
You don't need to edit it by hand.</para>
</listitem>
</itemizedlist>
<note>
<para>The location of these files changes with the platform, and it's
usually a directory owned by the current user. FlameRobin needs write
access to that folder.</para>
</note>
</section>
<section>
<title>Windows (Win32)</title>
<para>To install FlameRobin under Windows you need the Firebird client
(gds32.dll for Firebird 1.0, fbclient.dll for Firebird 1.5 and up)
installed and available, then just run the automatic installer of
FlameRobin which will copy all required files in a directory of your
choice and optionally create desktop and start menu shortcuts.</para>
<para>If you need to uninstall FlameRobin you can do so from the start
menu icon (unless you told the installation program not to create one)
or from the Control Panel.</para>
</section>
<section>
<title>Linux</title>
<para>While some Linux distributions might provide installation packages
suitable for specific versions of that distribuion, FlameRobin project
provides generic compressed archives containing the executable and all
needed files. There are two flavors, depending of your preferences. You
can use Gtk1 version, which runs faster and has less dependencies. It is
suitable for slower computers and should run out-of-the-box on most
distributions. Gtk2 version uses Gtk2 toolkit, so it looks nicer on the
screen and it also has Unicode support.</para>
<para>To install FlameRobin, just unpack the chosen .tar.bz2 archive, cd
into that directory and type "make install" as root. This will install
FlameRobin and all the needed files to appropriate locations. After
that, any user can type "flamerobin" to run the program.</para>
</section>
<section>
<title>MacOS X</title>
<para>Installation on Mac OS X is an absolute no-brainer: just drag the
icon from the installation package to the folder you want the
application to live in. Unpacking is handled via double clicking the
downloaded file.</para>
</section>
</section>
<section id="frrelnotes-getting-started">
<title>Getting started / basic features</title>
<para>Upon first startup, FlameRobin will show a "Home" tree containing
only the local server (localhost), and will invite you to create new
servers and databases as required. You'll also see a menu bar at the top
of the window, and a search bar and status bar at the bottom. Here is a
brief how-to for getting started with FlameRobin.</para>
<section>
<title>Adding a server</title>
<para>You can add a server by right-clicking on "Home" and choosing
"Register server..." (alternatively, use the "Register server..."
command from the "Server" menu). You will have to specify a display name
and optionally the host name and TCP port number on which the Firebird
server listens. Leave the display name empty to have FlameRobin build
one automatically from the host name and port values (if you don't have
a host name, because yours is a local or embedded Firebird server, you
will be required to type in a display name manually). Once you have
added a server, you can register databases under its node.</para>
</section>
<section>
<title>Adding an existing database</title>
<para>To access an existing database from FlameRobin you have to
register it. Registration will make FlameRobin remember the database
connection properties so you don't have to re-enter them every time.
Locate the correct server in the tree, right click it and choose
"Register existing database...". You will have to enter a display name,
type in or locate (or drag and drop) the database path (or alias name),
the user name and password.</para>
<note>
<para>If you don't specify the password, FlameRobin will prompt for it
every time you try to connect to the database, which is the most
secure option. If you want to specify the password, you can have
FlameRobin optionally encrypt it in the configuration file.</para>
</note>
<para>You can also optionally specify a connection charset and
role.</para>
</section>
<section>
<title>Creating a new database</title>
<para>To create a new, empty database, locate the desired server in the
tree, right click it and choose "Create new database...". You will then
need to input the database file or alias name, the user name and
password for the owner of the new database (use SYSDBA as the user name
and masterkey if you don't know what to put in these fields), the
character set, the role, the page size (the default value of 4096 is
just fine) and the SQL dialect (leave it set at 3 if you don't know what
a SQL dialect is). The new database will be created and registered
(which means it is available in FlameRobin).</para>
<para>You can also drop an existing registered database, optionally
keeping the FlameRobin registration information. Use the "Drop" menu
command to do that.</para>
</section>
<section>
<title>Connecting to a registered database</title>
<para>Just double click on the database name in the tree, or right click
it and choose "Connect" or "Connect as...". Choose "Disconnect" to close
the connection to the database. This causes the load of essential
metadata information. FlameRobin tries to play well with slow network
connections by delaying metadata retrieval as much as possible, yet
connecting to a database still needs some data transfer beyond the
connection itself.</para>
</section>
<section>
<title>Browsing metadata</title>
<para>Upon connection, the sub-tree under the database name is populated
with a description of the database structure (metadata). Browse the tree
to explore the metadata. You can also use the quick search feature to
locate a particular object in the tree. Just type the name of the object
you are looking for (use the "*" wildcard character for a partial match)
in the search box at the bottom of FlameRobin's main window and the
first object in the tree whose name matches your search string will be
highlighted. Now you can hit Enter to focus the tree and add the object
name (or search string) to the search box's drop-down list. For your
convenience, FlameRobin will remember your search strings for further
use. Click the arrow buttons next to the search box to move to the next
and previous matches.</para>
<para>There is also an advanced metadata search feature, which is
described later.</para>
</section>
<section>
<title>Editing objects</title>
<para>You can view and/or change the properties of every object you see
in the tree by choosing the "Properties..." option from the object's
context menu or from the "Object" menu. Please note that currently not
all object types are supported in full (domain editing, for example, is
very basic ATM), but you'll find some level of support for all of them.
The property page is a HTML window with a summary of the object's
properties and links which open other pages or specific editors. Some of
the options are not yet available, but you can edit almost all aspects
of the most common objects (tables, views, stored procedures, and so
on). Please have a look at fr_whatsnew.html to see, well, what's
new.<note>
<para>Although we try to test the features as much as we can, this
is ALPHA software and you should only use it to work on backup
copies of your databases, or perform backup copies before using
FlameRobin on them. Having said that, we have to add that many users
(including us) have been using FlameRobin in their everyday Firebird
development for several years now without major problems.</para>
</note></para>
</section>
<section>
<title>Browsing and editing data</title>
<para>After connecting to a database, locate a table, view or selectable
stored procedure of your interest in the tree and right-click it.
Choosing either "Select ... from ..." option will open the SQL editor
with the table/view data shown in the grid at the bottom. In the case of
selectable stored procedures with parameters, just the select statement
appears in the SQL editor, so you should fill the parameter values (if
you have any) and click the Execute button to see the data.</para>
<para>FlameRobin's data grid fetches data from the server in small
chunks, so that you don't have to wait for the fetch to complete if you
only look at the first few pages of rows. You can have the grid fetch
all data (in background) through the Fetch all records command in the
grid's context menu (there is also a configuration option to make
complete fetching the default behaviour, something we usually don't
recommend). Fetching a very large result set might take some time, so if
you change your mind you can use the Stop fetching all records
command.</para>
<para>Once you have some data in the grid, you can re-sort the data by
double clicking on column headers.</para>
<para>You can change the data through direct editing in the grid, add
new records by means of the Insert button (which opens a specialized
dialog box) and delete the currently selected record(s) by clicking the
Delete button. Confirm any changes by clicking the Commit button, or
cancel them through the Rollback button. Deleted records are still
displayed (on a red background color) until you commit, just in case you
change your mind.</para>
<note>
<para>Emptying a cell that displays a string field will set the
field's value to ''; if you want to set it to null, then delete all
contents and then hit the DEL key once more.</para>
</note>
<note>
<para>You can type the strings "NOW", "DATE", "TODAY", "TOMORROW",
"YESTERDAY" in cells of type date or timestamp, and the strings "NOW"
and "TIME" in cells of type time. They will be translated by
FlameRobin to their respective meanings.</para>
</note>
<note>
<para>FlameRobin handles all interactive edit operations by generating
corresponding SQL statements. By default they are all logged in the
history, but you can turn logging off for an instance of the SQL
editor through the History/Enable logging menu command. You can also
to turn logging off globally or for a particular database, through the
preferences.</para>
</note>
</section>
<section id="frmanual-running-sql-statements">
<title>Running SQL statements and scripts</title>
<para>Of course you can use the SQL editor window to create and execute
arbitrary SQL statements. FlameRobin provides a rather advanced and
sophisticated, yet simple to use SQL editor. You can open a SQL editor
window by right clicking on a database node and choosing "Run a query".
The SQL editor tool offers script execution capabilities (including SET
AUTODDL and SET TERM support), load/save buttons, auto-completion and
call-tip features, commit/rollback, detailed execution statistics
(including but not limited to the query PLAN and the number of records
inserted, deleted, updated in each affected table), a data export tool
and more.</para>
<para>To execute a script (meaning a sequence of more than one SQL
statements), just load it (or drag and drop a file, or type it in) and
run it. To execute a single statement when more statements are present
in the editor, select it before clicking the Run button.</para>
<para>You can use the drop-down menus or the context menu in the SQL
editor as well as the buttons.</para>
<para>Auto-completion can be invoked automatically or manually (see the
rich set of configuration options about it), and supports table and
column names, procedure and function parameters, and so on.</para>
<para>To activate the data export tool, right click on the data grid.
The data export tool is currently able to copy the data to the
clipboard, generate SQL INSERT or UPDATE statements or export the data
to a HTML or CSV file. All options work on the whole grid contents or
just the selected parts. You can also multiple-select several different
grid "islands" and have the tool export them. This is particularly handy
to generate customized INSERT or UPDATE statements.</para>
<para>For SELECT statements, you can also drag and drop objects from the
tree view to visually build queries (provided the appropriate
configuration option is enabled). Dragging and dropping tables will
automatically create JOIN conditions (based on existing foreign key
definitions) in the statement you are building.</para>
<para>FlameRobin will try to let you edit whatever result set your
SELECT statement returns, or part of it. Fields that you cannot edit
will be displayed in a special background colour in the grid.</para>
</section>
<section>
<title>Backup and restore</title>
<para>You can perform a database backup by right clicking on a database
and choosing "Backup database...". Choose "Restore database..." to
restore a backup file over the current database (you will have to
disconnect first). Choose "Restore backup into new database..." (this
time on the server node) to create a new database from a backup file.
You can drag and drop files in these windows.</para>
<note>
<para>It is considered bad practice to restore a backup file over an
existing database.</para>
</note>
<para>The Backup and Restore tools work in background, so you are
allowed to continue working with FlameRobin while they proceed. You can
work on a database while it is being backed up, but you can't work on a
database while you are restoring it.</para>
</section>
</section>
<section>
<title>Advanced features</title>
<para>This section illustrates features in FlameRobin that you won't
likely use every day, but often enough to make them useful to know.</para>
<section>
<title>DDL extraction</title>
<para>You can generate DDL (Data Definition Language) creation scripts
for any object you have in the database, or even for the whole database.
Just open the DDL subpage of an object's property page to see the DDL
code that creates the object.</para>
<para>Extracting DDL scripts is useful if you want to replicate an
object's structure in a different database, or create a slightly
different object in the same database.</para>
<para>A shortcut command for extracting the entire database metadata is
available in the Advanced submenu of the database's context menu.</para>
</section>
<section>
<title>Alter View functionality</title>
<para>Firebird doesn't have an ALTER VIEW DDL command, which means that
if you want to modify a view definition you need to DROP and CREATE it
back. But dropping an object in Firebird requires dropping all objects
that depend on it, and so on recursively. Doing this by hand is very
hard, especially if the database structure is complex. A unique feature
in FlameRobin, which you activate by righ-clicking a View object and
selecting the "Alter..." menu command (or selecting the "Alter..."
command from the "Object" menu after selecting a View), will generate a
script that drops all the objects that depend on the view (in the
correct order), drops and recreates the view, then recreates all the
objects (again, in the correct order). The script is pasted into the SQL
editor window so you can modify the view definition and recreate
everything with a single click.</para>
</section>
<section>
<title>Creating a selectable stored procedure for a table</title>
<para>This feature, that you can use through the Create selectable
procedure command in each table's context menu (or the namesake item in
the Object menu), will open the SQL Editor on a CREATE PROCEDURE
statement; the procedure fetches and returns all records in the table,
and has an output parameter for each column. Since this is a pretty
common pattern, it is intended to be modified to suit your needs rather
than used as-is.</para>
</section>
<section>
<title>Connected users</title>
<para>Select "Show connected users" at the database level (or in the
"Database" menu) to see a list of users connected to that database. This
only works reliably with the SuperServer variant of Firebird. If you are
using Firebird Classic you will see at most one user connection there,
which is yours.</para>
</section>
<section>
<title>Event monitoring</title>
<para>FlameRobin allows you to listen for Firebird events interactively.
Just select the "Monitor events" command at the database level (or in
the "Database" menu) to open the Event Monitor window (you will need to
connect to the database first). This window allows you to monitor one or
more events, save the received events to a text file and load them back.
Events are posted from the database when the POST_EVENT statement is
called (and the transaction is committed).</para>
</section>
<section>
<title>User management</title>
<para>Current versions of Firebird use a central server-wide user
repository. FlameRobin allows you to add, modify and delete user
accounts (but it will not allow you to delete the SYSDBA predefined
user) by means of the "Manage users..." option in the Server menu (or
the server's context menu item, or the Object menu item with the same
caption). It is Firebird's security policy that you need to be SYSDBA to
use this feature.</para>
<note>
<para>The proper way to change the SYSDBA password on LInux is to run
the changeDBAPassword.sh script in Firebird's bin directory. Otherwise
Firebird's startup and shutdown scripts won't be updated.</para>
</note>
</section>
<section>
<title>Grant and revoke privileges</title>
<para>Every object in the database has a list of privileges that
identify the users and roles that can work with that object. On an
object's property page (in the "Privileges" subpage) you can view the
privleges associated with that object, and if you hover the mouse over
icons, you can see who granted them in the status bar. Clicking on the
"Grant and revoke privileges" link will open a dialog box that will help
granting and revoke privileges to that object (which you'll find
pre-selected in the dialog box) and/or other objects as well. The dialog
box allows you to build a list of grant/revoke SQL statements by
clicking on appropriate controls and then on the "Add To List" button.
When satisfied, click the "Execute All" button to run all the statements
in the SQL editor (which will also log them for future use, as with any
SQL statement executed in FlameRobin, if logging is enabled).</para>
</section>
<section>
<title>Server and client version</title>
<para>Select "Retrieve server version" from the "Server" menu (or from a
server's context menu) to see a dialog box with the server's version
string. A server's version string reveals the exact build number of your
Firebird server and the platform it is running on. For example, a
version string equal to "WI-V1.5.2.4731 Firebird 1.5" means Firebird
1.5.2, build 4731, on Windows.</para>
<note>
<para>Currently FlameRobin doesn't show the version string of the
Firebird client it is using, for these reasons:</para>
<itemizedlist>
<listitem>
<para>Not all versions of Firebird support this feature, and
FlameRobin needs to stay compatible with all Firebird
versions.</para>
</listitem>
<listitem>
<para>At some point in the future FlameRobin will be able to load
different client libraries for different databases (at least on
platforms that support it). We will probably add the client
version display feature then.</para>
</listitem>
</itemizedlist>
</note>
<para>You can also look at the version string of the Firebird client
FlameRobin is using, in the About box (Help/About).</para>
</section>
<section>
<title>Advanced metadata search</title>
<para>This feature, which you can fire through the lens button in
FleameRobin's main window, allows you to perform more advanced search
operations in your database's metadata (or in more databases at the same
time). You can search with wildcards, search on object names and
descriptions, in the DDL definition (which includes the source code for
triggers and stored procedures), and do other, more specialized, search
operations. Just add all criteria you need through the Add buttons, and
then click the Start search button. The criteria will be concatenated
with an "and" boolean operator, that is all of them must be satisfied
for an object to be included in the SEARCH RESULTS pane.</para>
<para>This feature is provided on an experimental basis, as we're
currently looking for suggestions about how to improve both the user
interface and the capabilities. We already have some ideas that will
radically change the appearance of this dialog box, but we thought users
might want to try it out so they can give us some good tips.</para>
</section>
<section>
<title>Logging</title>
<para>The SQL Editor can log all executed statements to a text file, a
set of text files or a database table. This gives you the ability to
work visually and produce scripts to easily replicate sequences of
operations on other databases. For database logging, in a future
release, FlameRobin will also provide a visual interface to the log
table, so that you can view a list of modifications to an object.</para>
<para>Look <link linkend="frmanual-conf-logging">here</link> for the
options you use to configure this feature globally, and <link
linkend="frmanual-dbconf-logging">here</link> for database-level logging
options.</para>
</section>
<section>
<title>Test data generator</title>
<para>FlameRobin includes a test data generator which you can use to
create test databases with dummy data values. You can launch it through
the Database/Advanced/Test data generator. In the resulting dialog box
you can select the tables for which you want to generate data, how many
records you want to generate for each table, and the data generation
strategy on a per-colum basis. Among the available strategies you'll
find sequential values, random values, values taken from other columns,
values loaded from external files, and a customizable NULL ratio. Your
settings can be saved to an XML file and reloaded later. When you're
ready, hit Generate data and the database will be filled with test
data.</para>
</section>
</section>
<section id="frrelnotes-configuration">
<title>Configuration</title>
<para>This section documents the options you can set to tune FlameRobin's
behaviour to your liking. You can set the options by means of the
Preferences dialog, which is invoked through the "Preferences..." command
in the "View" menu. The Preferences are organized in categories; here is a
description of each category. Please read the tooltip that appears when
you move the mouse cursor over each option to know more about it.</para>
<note>
<para>Since new options are added to FlameRobin daily, this section of
the documentation will likely be out-of-date. Please refer to the
tooltips for fresh descriptions of all the available options.</para>
</note>
<section>
<title>General</title>
<para>Here you can find options to tune the visual appearance and
behaviour of FlameRobin. You can choose whether FlameRobin will remember
the size and position of opened windows between sessions or not, whether
FlameRobin will ask for quit confirmation or not, and other such
things.</para>
<section>
<title>Center dialogs on their parent window</title>
<para>Set this option to always have dialogs displayed at the center
of their parent window. Otherwise dialogs are displayed at a
system-defined position.</para>
</section>
<section>
<title>Remember window positions and sizes</title>
<para>If you enable this option, FlameRobin will remember the position
and size of each window you open and will open the same window at the
same position and with the same time the next time. You can also
choose the granularity of this option for property pages and
backup/restore dialogs:</para>
<para><itemizedlist>
<listitem>
<para>Choose "Same settings for all objects" to store a single
set of values; this means that whenever an Object Properties
dialog is opened it will have the position and size of the last
Object Properties dialog used.</para>
</listitem>
<listitem>
<para>Select "Same settings for all objects of same type" to
store a set of values for each object type. This means that a
Table Properties dialog will have different settings than a
Trigger Properties dialog, but two Table Properties dialog will
share the same set of values.</para>
</listitem>
<listitem>
<para>The third option, "Separate settings for individual
objects", will make it so that every object's property page will
have a set of options of its own. This mode is the most
flexible, but consumes more disk space and memory.</para>
</listitem>
</itemizedlist></para>
</section>
</section>
<section>
<title>Main Tree View</title>
<para>Here you can tune the appearance and behaviour of FlameRobin's
metadata navigation tool, the main tree.</para>
<section>
<title>Order server entries alphabetically</title>
<para>Set this option to have your servers displayed in alphabetical
order, otherwise they are displayed in the order they appear in
servers.xml.</para>
</section>
<section>
<title>Order database entries alphabetically</title>
<para>Set this option to have your databases displayed in alphabetical
order, otherwise they are displayed in the order they appear in
servers.xml.</para>
</section>
<section>
<title>Show columns and parameters in tree</title>
<para>Enable this option to have table/view columns and procedure
parameters displayed as tree nodes; otherwise, the tree stops at the
table/view or procedure level. In case you choose to have columns and
parameters displayed as tree nodes, you can also indicate whether you
wish that a double click on a table/view or procedure node opens the
relevant property page or expands the subtree.</para>
</section>
<section>
<title>When table, view or stored procedure is activated</title>
<para>Here you choose what should happen when you double click on a
table, view or stored procedure node in the tree. Available options
include opening the property page, show columns as sub-nodes of the
selected node or select from the table, view or stored procedure to
see the data.</para>
</section>
<section id="frmanual-show-sys-tables">
<title>Show system tables in tree</title>
<para>The metadata for a Firebird database is stored in the database
itself, in a set of tables whose names start with RDB$, called the
system tables. There is usually no point in working with Firebird's
system tables directly, as FlameRobin already queries them and
translates the information in friendlier form for you: the tree view,
object property pages and various dialogs all display information
coming from the system tables. FlameRobin also allows to change the
database metadata in a safe way (that is, keeping the database
structure's integrity), something which is not guaranteed if you try
to edit the system tables directly.</para>
<para>For the rare cases in which a direct look at the system tables
is required, and you know exactly where and how to look, you can
enable this option, which will add all system tables for a database to
the tree. This will impose a slight performance penalty upon
connection.</para>
<para>You can override this setting at the database level.</para>
</section>
<section>
<title>Allow drag and drop query building</title>
<para>The SQL editor allows you to drag and drop objects from the tree
view to visually build queries (see <link
linkend="frmanual-running-sql-statements">the relevant
section</link>). This feature may occasionally hang FlameRobin on
Linux, so we are proving this option to switch it off until the
problem is corrected in the wxWidgets library. Plus, you might want to
disable the feature, if you don't use it, in order to avoid spurious
start-drag operations when working with the mouse on the tree
view.</para>
</section>
</section>
<section>
<title>SQL Editor</title>
<para>Use these options to customize the behaviour of the SQL Editor,
which is used in FlameRobin to execute any kind of system-generated or
user-supplied query.</para>
<section>
<title>Automatically commit DDL statements</title>
<para>Enable this option to have FlameRobin automatically "click" the
Commit button on your part each time it detects a DDL (Data Definition
Language) statements. DDL statements are those that modify the
database structure (as opposed to DML, or Data Manipulation Language
statements, which modify the data). Firebird does support
transactional DDL, yet it is common practice to auto-commit these
statements to avoid unexpected behaviours (for example, adding a
column to an existing table and populate it through an UPDATE
statement in the same transaction can lead to unexpected results with
current versions of Firebird). This option sets a default state that
you can change with the script commands SET AUTODDL ON and SET AUTODDL
OFF.</para>
<section>
<title>When text is selected in editor</title>
<para>Leave this option to "Execute the entire buffer" if you don't
want to take advantage of FlameRobin's advanced selection handling.
If you set it to "Execute only the selection" you will be able to
type (or load) entire scripts in the SQL editor and only execute
single parts of them by selecting them and clicking the "Execute"
button. If you don't select anything, FlameRobin will execute the
whole text in the editor.</para>
</section>
<section>
<title>Treat selected text as a single statement</title>
<para>If you only ever select a single statement at a time, then you
can save FlameRobin's parser some work by enabling this option. When
you disable it, instead, FlameRobin will parse the selected text
before executing it, break it into several statements if necessary
and send them to Firebird one at a time; this is necessary since
Firebird does not support executing more than one statement (i.e. a
script) at a time. It can also be used if you have CREATE PROCEDURE
or CREATE TRIGGER (or similar) statements with SET TERM. This way,
you can select and execute the CREATE statement, and you don't need
SET TERM at all.</para>
</section>
<section>
<title>Clear the messages when executing new statements</title>
<para>The SQL Editor has a message pane that shows information about
each executed statement. By default this pane is cleared
automatically only when you end transaction. Set this option to have
FlameRobin clear it before executing a statement.</para>
</section>
<section>
<title>Display detailed query statistics</title>
<para>Enable this option to have the SQL Editor show detailed
statistic information for each query, in addition to the query PLAN.
This includes number of fetches, marks, reads, writes; number of
inserts, updates, deletes; number of indexed vs sequential reads;
delta memory; execution time.</para>
</section>
<section>
<title>Enable call-tips for procedures and functions</title>
<para>When this option is enabled, then each time you type an open
round bracket after a stored procedure or UDF name in the SQL
Editor, a floating tooltip (called a call-tip) will appear reminding
you what the input and output parameters of the stored procedure or
UDF are.</para>
</section>
<section>
<title>Show long line marker</title>
<para>Activate this option to have the editor display a vertical
line that visually marks the place where a line break would occur if
lines couldn't be longer than a certain amount of characters. The
marker is only a visual indicator, as FlameRobin will not enforce
any limit to the length of text lines. You can also customize the
column at which the marker will appear.</para>
</section>
<section>
<title>Tab size</title>
<para>Here you can set the number of space characters the SQL Editor
will render for each TAB.</para>
</section>
<section>
<title>Code Completion</title>
<para>This page contains options to customize FlameRobin's code
completion feature.</para>
<section>
<title>Enable automatic invocation of completion list</title>
<para>This is the general switch to turn automatic code completion
in the SQL Editor on or off. Disable it if you don't like code
completion windows that pop up while you write SQL code. If you
keep it enabled, then you can set a certain number of characters
you'll have to type before code completion kicks in, and choose to
disable code completion when a call-tip is displayed (as it would
close the call-tip window) or inside quoted text.</para>
</section>
<section>
<title>Manually invoke completion list on</title>
<para>Code completion may also be invoked manually. Here you
select how (Ctrl+Space or Tab key).</para>
</section>
<section>
<title>Confirm completion with Enter</title>
<para>Set this option to have the currently selected item in the
code completion window copied to the text buffer when you hit
Enter. Otherwise you can use the Tab key for that.</para>
</section>
<section>
<title>Load columns when required for completion</title>
<para>FlameRobin only loads column definition data when requested
to do so (for example, when you double click a table name in the
tree view). Set this option to let FlameRobin load missing column
information automatically when needed to show an auto-complete
list.</para>
</section>
</section>
<section>
<title>Statement History</title>
<para>FlameRobin can remember the statements you execute and allow
you to retrieve and re-execute past statements. This page allows you
to customize the feature.</para>
<section>
<title>Share SQL statement history</title>
<para>You can have a single statement history list for all the
databases you work with ("Between all databases") or a separate
history list for each of them ("Don't share"). Additionally, you
can make it so that all databases with the same display name
(typically copies of the same database, or databases with the same
structures, on different servers) share a history list.</para>
</section>
<section>
<title>Limit history item size</title>
<para>By default, each history list item is allowed to grow
without bounds. If you are concerned about the size of your
statement history lists, you can set an upper limit in Kilobytes
for each statement in the history list. Statements bigger than the
specified amount will not be added to the history list. This is
useful if you execute entire database-creation scripts
often.</para>
</section>
<section>
<title>Remember unsuccessfully executed buffers</title>
<para>By default, only statements that are executed without errors
are added to the history list. Set this option to have FlameRobin
remember also statements that caused errors.</para>
</section>
<section>
<title>Remember statements generated by FlameRobin</title>
<para>FlameRobin translates as much visual operations as possible
to SQL statements. Uncheck this option to prevent this kind of
statements from being added to the history lists.</para>
</section>
</section>
</section>
</section>
<section>
<title>Data Grid</title>
<para>When you issue a SQL SELECT statement in the SQL Editor, then the
Data Grid comes into play to show the results. Here you customize its
appearance and behaviour.</para>
<section>
<title>Date format</title>
<para>Choose the format you'd like for showing date and timestamp
values in the grid.</para>
</section>
<section>
<title>Time format</title>
<para>Choose the format you'd like for showing time and timestamp
values in the grid.</para>
</section>
<section>
<title>Grid header font</title>
<para>Choose a character font for the grid header (the column
names).</para>
</section>
<section>
<title>Grid cell font</title>
<para>Choose a character font for the grid cells (the data).</para>
</section>
<section>
<title>Re-format float and double precision numbers</title>
<para>If unchecked, decimal numbers are displayed as returned from
server; otherwise, they are formatted according to the specified
number of decimal digits.</para>
</section>
<section>
<title>Maximize data grid after execution of SELECT statement</title>
<para>Here you can turn off an useful feature that will enlarge the
data grid to the maximum available size when a SQL SELECT statement
returns more than a specified number of rows.</para>
</section>
<section>
<title>Automatically fetch all records in result set</title>
<para>Makes it so the grid will automatically fetch all records
whenever a SELECT statement is executed, instead of doing it in
batches.</para>
</section>
<section>
<title>Show BLOB data in the grid</title>
<para>Check this option if you want to see data fetched from BLOB
fields in the grid. By default FlameRobin doesn't fetch BLOBs. You can
also set a threshold, thus telling FlameRobin to fetch at most a
specified amount of data for each BLOB. This allows you to see the
first part of every BLOB field automatically without risking to
download huge amounts of data for no gain. Check the "Show data for
binary BLOBs" if you want the above settings applied to binary BLOBs
as well (by default they are applied to text BLOBs only).</para>
</section>
</section>
<section>
<title>Property Pages</title>
<para>This section contains customization options for FlameRobin-s
property pages.</para>
<section>
<title>Show default column values</title>
<para>Set this option to display the "Default" column in a table's
property page.</para>
</section>
<section>
<title>Show column descriptions</title>
<para>Set this option to display the "Description" column in a table's
property page.</para>
</section>
</section>
<section>
<title>Sql Statement generation</title>
<para>This page offers options to customize the way FlameRobin generated
SQL code, deals with object names in general, and quoted identifiers in
particular. If you don't know how quoted identifiers work in Firebird,
you should leave the relevant settings to their default values.</para>
<section>
<title>Use UPPER CASE keywords</title>
<para>Uncheck this option if you prefer FlameRobin to use lowercase
keywords in generated SQL code.</para>
</section>
<section>
<title>Quote names only when needed</title>
<para>Uncheck this option to have FlameRobin always quote object names
with " in dialect 3 databases. Leave it checked to let FlameRobin
detect on its own when it is needed to quote identifiers. The setting
"Quote names in mixed case" is only used for names entered by the user
(for example, when you add a new field to a table, you type in its
name).</para>
<para>If "Quote names only when needed" is checked and "Quote names in
mixed case" is not, FlameRobin will leave the name entered by the user
as it is, even if it is written in mixed case (unless the name is a
reserved word or contains non-ASCII characters, in which case it is
quoted).</para>
<para>Here are two use cases to better explain how these settings
interact with each other:<table>
<title>Case 1: "Quote names only when needed" = on; "Quote names
in mixed case" = off</title>
<tgroup cols="2">
<tbody>
<row>
<entry>User enters</entry>
<entry>Turns into</entry>
</row>
<row>
<entry>FIELD1</entry>
<entry>FIELD1</entry>
</row>
<row>
<entry>Field1</entry>
<entry>Field1</entry>
</row>
<row>
<entry>Date</entry>
<entry>"Date"</entry>
</row>
</tbody>
</tgroup>
</table><table>
<title>Case 2: "Quote names only when needed" = on; "Quote names
in mixed case" = on</title>
<tgroup cols="2">
<tbody>
<row>
<entry>User enters</entry>
<entry>Turns into</entry>
</row>
<row>
<entry>FIELD1</entry>
<entry>FIELD1</entry>
</row>
<row>
<entry>Field1</entry>
<entry>"Field1"</entry>
</row>
<row>
<entry>Date</entry>
<entry>"Date"</entry>
</row>
</tbody>
</tgroup>
</table> The rationale behind all this is that if you write a name
in mixed case, then you probably want it quoted (since you bothered to
mix the case). Some users, however, find this rule awkward and
unpredictable, and need a way to disable it.</para>
</section>
<section>
<title>Treat quote characters like other characters</title>
<para>This setting determines what happens if you type the quote
character (") as a part of some name. Again, it only affects
user-entered names. One option (unchecked) is to ignore it, other is
to treat it like any other character (checked). Quotes are special
cases, since they need to be escaped (by doubling them). When this
setting is off, user can force quoting even when it is not required,
by writing the name quoted in the text box.</para>
</section>
</section>
<section>
<title>Fields</title>
<para>Here you can customize the appearance of field types in the tree
and property windows.</para>
<section>
<title>When a column has a user-defined domain</title>
<para>In this case you can choose to see after the column name the
domain name, the data type, or both.</para>
</section>
<section>
<title>When a table column is computed</title>
<para>For computed columns, you can choose to see after the name the
data type or the computation expression, or both.</para>
</section>
</section>
<section id="frmanual-conf-logging">
<title>Logging</title>
<para>The SQL Editor can log all executed statements to a text file, a
set of text files or a database table. Here you set the relevant options
for file-based logging, while logging to a database table is decided
<link linkend="frmanual-dbconf-logging">on a per-database
basis</link>.</para>
<section>
<title>Log DML statements</title>
<para>When logging is enabled, by default only DDL (CREATE, ALTER,
DROP...) statements are logged. Turn this option on to enable logging
of DML (SELECT, INSERT, UPDATE, DELETE) statements as well.</para>
<section>
<title>Enable logging to file</title>
<para>Here you choose whether you want to log statements or not,
select the log file name(s), and choose if you want to output for
each statement also a comment with the version of FlameRobin,
database and user name, and execution date and time. Each statement
can go into separate file, and it uses incremental numbers for
filenames. You can format your own filenames by using %d as a
placeholder for number. If you want numbers with fixed number of
digits, like 0003 instead of 3, then use %04d as placeholder, where
4 means four digits, and 0 means that it should be padded with
zeros.</para>
<para>There are also options to add a comment header to each logged
statement, and to add SET TERM statements if required.</para>
</section>
</section>
</section>
</section>
<section>
<title>Database configuration</title>
<para>There is a set of options in FlameRobin that you can set on a
per-database basis. You access the database configuration window by right
clicking on a database and selecting the "Database preferences..."
command, or selecting the same command from the "Database" menu. Like
global preferences, database preferences are organized in categories; here
is a description of each category. Please read the tooltip that appears
when you move the mouse cursor over each option to know more about
it.</para>
<section>
<title>Main Tree View</title>
<section>
<title>Show system tables in tree</title>
<para>This is a database-level override of the global option with the
same name described <link
linkend="frmanual-show-sys-tables">here</link>.</para>
</section>
</section>
<section>
<title>Connection</title>
<para>This page holds options that apply to database connection and
database registration info.</para>
<section>
<title>Warn when connection charset is different from database
charset</title>
<para>In Firebird it is quite an usual situation to have a single
character set for an entire database, and use that character set for
connecting to the database, otherwise string transliteration won't
work correctly. For this reason, FlameRobin will warn you on
connection if the two charsets don't match. There are cases, though,
in which you might want to connect to a database with a different
character set (for example when you use different charsets for
different tables or even columns, something Firebird allows), so here
you can turn off the warning for that particular database</para>
</section>
</section>
<section id="frmanual-dbconf-logging">
<title>Logging</title>
<para>Please see the section about <link
linkend="frmanual-conf-logging">global logging configuration</link>. The
options are the same here, but they apply to the current database only.
There is an additional option to turn off logging for a particular
database only, while leaving it active for all the other
databases.</para>
<para>There are also additional options to enable logging to a database
table. The table is called <symbol>FLAMEROBIN$LOG</symbol> and it is
created automatically the first time it's needed. Each record written to
this table gets an ID fetched by executing a SELECT statement that you
can customize. By default, FlameRobin fetches the values from a
generator called <symbol>FLAMEROBIN$LOG_GEN</symbol>, which is created
on demand as well. You might want to set a custom SELECT statement if
you want to use the ID as some kind of metadata version number for your
database, in which case you define the logic to follow when generating
new IDs. For example, you could write a stored procedure and have
FlameRobin call it.</para>
</section>
</section>
<section>
<title>Customizing the FlameRobin environment</title>
<para>FlameRobin needs, or creates, some external files. This section
documents what these files contain, and where they are found. While
FlameRobin is installed with usable default settings, it is possible to
fine-tune the installation for special uses or multiple users. For
example, you can change the icons, the HTML templates used as property
pages for the objects in a database, or where FlameRobin stores and looks
for its configuration files.</para>
<para>FlameRobin uses the following files and folders:</para>
<itemizedlist>
<listitem>
<para>fr_settings.conf; a file containing all settings you see in the
Preferences dialog box and other global settings of FlameRobin, like
position and size of open windows. FlameRobin needs write access
privileges to this file.</para>
</listitem>
<listitem>
<para>fr_databases.conf; a file containing all the servers and
databases defined in FlameRobin's Home tree. FlameRobin needs write
access privileges to this file.</para>
</listitem>
<listitem>
<para>the html-templates and conf-defs folders, which contain metadata
used to render some of FlameRobin's windows, and the docs folder,
containing documentation files that can be opened through FlameRobin's
main menu. FlameRobin only needs read access to the files in these
folders.</para>
</listitem>
</itemizedlist>
<para>Locations:</para>
<para><itemizedlist>
<listitem>
<para>$frhome is FlameRobin's home path. FlameRobin will find
html-templates, conf-defs and docs (which are immutable and integral
part of the FlameRobin distribution) in its home path. The home path
is usually the application folder (on Windows) and an otherwise
fixed folder on POSIX platforms.</para>
<note>
<para>Defining the environment variable FR_HOME will override this
path.</para>
</note>
<note>
<para>Passing -h <path> on FlameRobin's command line will
override this path and the environment variable as well.</para>
</note>
</listitem>
<listitem>
<para>$fruserhome is FlameRobin's user home path. FlameRobin will
find the conf files in its user home path. This path has to be
writable and may be common to all users on the machine or different
for each user. The user home path defaults to the user local data
directory, which varies with the platform.</para>
<note>
<para>Defining the environment variable FR_USER_HOME will override
this path.</para>
</note>
<note>
<para>Passing -uh <path> on FlameRobin's command line will
override this path and the environment variable as well.</para>
</note>
</listitem>
</itemizedlist>Additionally, the <path> specification in the
command line parameters -h and -uh, or the value of the environment
variables FR_HOME and FR_USER_HOME may be "$app", which translates to the
common data folder (the application folder on Windows and an otherwise
fixed folder on POSIX platforms), or "$user", which translates to the user
local data directory. Otherwise, it has to be a path (without the trailing
path delimiter).</para>
<para>FlameRobin will only ever write to files in $fruserhome. If
FlameRobin is configured so that these files are shared by several users
(or concurrent instances of FlameRobin), then no precaution is taken to
avoid overwriting other users' changes.</para>
</section>
<section>
<title>Advanced topics</title>
<para>This section will document some advanced topics about how FlameRobin
works. The topics are not necessarily related, and are grouped here only
for convenience.</para>
<section>
<title>Encrypted password storage</title>
<para>FlameRobin can use strong encryption to safely store your
passwords in the configuration file (fr_databases.conf). Here's how it
works in detail:</para>
<itemizedlist>
<listitem>
<para>all passwords (PW) are encrypted with a master password
(MPW)</para>
</listitem>
<listitem>
<para>the MPW alone is never saved into any file, it is only known
by the user</para>
</listitem>
<listitem>
<para>PW + MPW comprise the Cipher (which is stored in the .conf
file)</para>
</listitem>
<listitem>
<para>whenever a PW needs to be decrypted, the user is prompted for
the MPW</para>
</listitem>
<listitem>
<para>Cipher + MPW yield the PW</para>
</listitem>
</itemizedlist>
<section>
<title>Defense from "known plain-text" attack</title>
<para>If an attacker gets hold of FlameRobin's .conf file, and he
knows one of the PWs, he would be able to compute the MPW (as Cipher +
PW yield the MPW). In order to prevent this, FlameRobin uses the
following scheme:</para>
<itemizedlist>
<listitem>
<para>the string composed by MPW + username + database connection
string is used as a seed for some irreversible random number
generator (RNG) like ISAAC</para>
</listitem>
<listitem>
<para>the PW is encrypted with the numbers produced by the
RNG</para>
</listitem>
<listitem>
<para>since numbers are unique for each username + database
connection string, and RNG is not reversible, the attacker cannot
get MPW, and he also cannot decrypt any other password</para>
</listitem>
</itemizedlist>
<para>For more information on ISAAC see:
http://en.wikipedia.org/wiki/ISAAC
http://www.burtleburtle.net/bob/rand/isaacafa.html</para>
<para></para>
</section>
</section>
</section>
</article>
|