View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0000202 | bareos-core | General | public | 2013-07-05 16:49 | 2014-05-16 17:42 |
Reporter | maik | Assigned To | |||
Priority | normal | Severity | feature | Reproducibility | have not tried |
Status | closed | Resolution | fixed | ||
Platform | Linux | OS | any | OS Version | 3 |
Fixed in Version | 12.4.1 | ||||
Summary | 0000202: Config engine redesign | ||||
Description | Collective patch for several config redesign issues. | ||||
Additional Information | Instead of using function pointers for storing the config parser function to call use integer types which are translated at runtime to the correct function to call. This fixes the hardening problems. Cleanup namespace, e.g. limit number of global variables, and by using the integer config types we don't need to expose all storage functions anymore which means our namespace also gets a lot cleaner. Fix long standing TODO to remove the MAXSTRING definition. Use POOLMEM and POOL_MEM to replace the fixed sized buffers. Implemented print of configuration from internal state which is written in multiple formats (JSON, Bareos ...) When we can generate a dump of the internal state we can also allow the admin to interactively change the config from the bconsole. | ||||
Tags | No tags attached. | ||||
parent of | 0000180 | closed | Be able to create a new client interactively in bconsole | |
parent of | 0000190 | closed | Bareos director should be able to provide information about possible configuration options | |
parent of | 0000164 | closed | Remove MAXSTRING variable | |
parent of | 0000059 | closed | bareos failed to start when linked with hardening linker flags LDFLAGS |
bareos: master 12a0fdd0 2013-09-27 18:00 Committer: mvwieringen Ported: N/A Details Diff |
Config engine redesign Phase 1 This whole wad is the first phase of a bigger full overhaul of the config engine. The following is in here: 1) Instead of using function pointers for storing the config parser function to call use integer types which are translated at runtime to the correct function to call. This should work around hardening being performed on shared libraries on some Linux platforms. On those platforms the actual comparing of the function pointers fail, using integers for the different data types makes it also possible to use an elegant switch to jump to the correct parsing function instead of using an endless set of ifs needed when comparing memory addresses of functions. An extra side effect of not using function pointers is that the store functions don't need to be global so the parse_conf.c in the shared library only exports 10 instead of 32 symbols and also the daemon specific store function can be local only functions. The only thing needed is a callback to a dispatch function in the daemon when it uses non standard config items which are not of a generic type (e.g. not bool, integer etc but things like protocol etc.) which leads to a very small extra payload which is probably not even measurable. 2) Bring config engine to 2013 and don't polute namespace. Implement a TODO from June 2008 and get ride of a slack of global variables used by the config engine. The code seems to be have been refactored in 2008 to access most configfile parsing via the CONFIG class and it already has most of the needed structures which also were kept as global variables. From now on the config engine is accessed via the CONFIG class and only res_all is left as global variable. As a side effect the config CLASS is now available as my_config and is a global variable. Global variable introduced: - CLASS CONFIG *my_config (Global configuration) Global variables removed: - res_all_size - r_first - r_last - resources - res_head It should be possible also to get ride of res_all but that needs some more testing. And is currently not very high on our urgency map. 3) Fix long standing TODO to remove the MAXSTRING definition. Use POOLMEM and POOL_MEM to replace the fixed sized buffers. 4) First basic part of printing config information out from the internal tables. We will enhance this in the second phase to be more generic and to allow it to write out the config maybe in different formats. (JSON/XML comes to mind). Fixes 0000059: bareos failed to start when linked with hardening linker flags LDFLAGS Fixes 0000164: Remove MAXSTRING variable Fixes 0000202: Config engine redesign |
Affected Issues 0000059, 0000164, 0000202 |
|
mod - autoconf/configure.in | Diff File | ||
mod - src/console/console.c | Diff File | ||
mod - src/console/console_conf.c | Diff File | ||
mod - src/console/console_conf.h | Diff File | ||
mod - src/dird/authenticate.c | Diff File | ||
mod - src/dird/bsr.c | Diff File | ||
mod - src/dird/dbcheck.c | Diff File | ||
mod - src/dird/dird.c | Diff File | ||
mod - src/dird/dird.h | Diff File | ||
mod - src/dird/dird_conf.c | Diff File | ||
mod - src/dird/dird_conf.h | Diff File | ||
mod - src/dird/expand.c | Diff File | ||
mod - src/dird/fd_cmds.c | Diff File | ||
mod - src/dird/inc_conf.c | Diff File | ||
add - src/dird/inc_conf.h | Diff File | ||
mod - src/dird/job.c | Diff File | ||
mod - src/dird/migrate.c | Diff File | ||
mod - src/dird/ndmp_dma.c | Diff File | ||
mod - src/dird/newvol.c | Diff File | ||
mod - src/dird/run_conf.c | Diff File | ||
mod - src/dird/scheduler.c | Diff File | ||
mod - src/dird/testfind.c | Diff File | ||
mod - src/dird/ua_cmds.c | Diff File | ||
mod - src/dird/ua_dotcmds.c | Diff File | ||
mod - src/dird/ua_label.c | Diff File | ||
mod - src/dird/ua_output.c | Diff File | ||
mod - src/dird/ua_prune.c | Diff File | ||
mod - src/dird/ua_restore.c | Diff File | ||
mod - src/dird/ua_run.c | Diff File | ||
mod - src/dird/ua_select.c | Diff File | ||
mod - src/dird/ua_server.c | Diff File | ||
mod - src/dird/ua_status.c | Diff File | ||
mod - src/dird/verify.c | Diff File | ||
mod - src/filed/authenticate.c | Diff File | ||
mod - src/filed/backup.c | Diff File | ||
mod - src/filed/filed.c | Diff File | ||
mod - src/filed/filed.h | Diff File | ||
mod - src/filed/filed_conf.c | Diff File | ||
mod - src/filed/filed_conf.h | Diff File | ||
mod - src/filed/restore.c | Diff File | ||
mod - src/filed/verify.c | Diff File | ||
mod - src/filed/verify_vol.c | Diff File | ||
mod - src/findlib/xattr.c | Diff File | ||
mod - src/include/baconfig.h | Diff File | ||
mod - src/lib/address_conf.c | Diff File | ||
mod - src/lib/address_conf.h | Diff File | ||
mod - src/lib/cram-md5.c | Diff File | ||
mod - src/lib/edit.c | Diff File | ||
add - src/lib/generic_res.h | Diff File | ||
mod - src/lib/ini.c | Diff File | ||
mod - src/lib/ini.h | Diff File | ||
mod - src/lib/lex.c | Diff File | ||
mod - src/lib/lex.h | Diff File | ||
mod - src/lib/message.c | Diff File | ||
mod - src/lib/parse_bsr.c | Diff File | ||
mod - src/lib/parse_conf.c | Diff File | ||
mod - src/lib/parse_conf.h | Diff File | ||
mod - src/lib/protos.h | Diff File | ||
mod - src/lib/res.c | Diff File | ||
mod - src/lib/runscript.c | Diff File | ||
mod - src/lib/util.c | Diff File | ||
mod - src/plugins/filed/test-plugin-fd.c | Diff File | ||
mod - src/qt-console/bat.h | Diff File | ||
mod - src/qt-console/bat_conf.cpp | Diff File | ||
mod - src/qt-console/bat_conf.h | Diff File | ||
mod - src/qt-console/bcomm/dircomm.cpp | Diff File | ||
mod - src/qt-console/main.cpp | Diff File | ||
mod - src/qt-console/mainwin.cpp | Diff File | ||
mod - src/qt-tray-monitor/authenticate.cpp | Diff File | ||
mod - src/qt-tray-monitor/monitoritemthread.cpp | Diff File | ||
mod - src/qt-tray-monitor/tray-monitor.cpp | Diff File | ||
mod - src/qt-tray-monitor/tray_conf.cpp | Diff File | ||
mod - src/qt-tray-monitor/tray_conf.h | Diff File | ||
mod - src/stored/acquire.c | Diff File | ||
mod - src/stored/authenticate.c | Diff File | ||
mod - src/stored/autochanger.c | Diff File | ||
mod - src/stored/bcopy.c | Diff File | ||
mod - src/stored/bextract.c | Diff File | ||
mod - src/stored/bls.c | Diff File | ||
mod - src/stored/bscan.c | Diff File | ||
mod - src/stored/btape.c | Diff File | ||
mod - src/stored/butil.c | Diff File | ||
mod - src/stored/dir_cmd.c | Diff File | ||
mod - src/stored/ndmp_tape.c | Diff File | ||
mod - src/stored/reserve.c | Diff File | ||
mod - src/stored/status.c | Diff File | ||
mod - src/stored/stored.c | Diff File | ||
mod - src/stored/stored.h | Diff File | ||
mod - src/stored/stored_conf.c | Diff File | ||
mod - src/stored/stored_conf.h | Diff File |
Date Modified | Username | Field | Change |
---|---|---|---|
2013-07-05 16:49 | maik | New Issue | |
2013-07-05 16:49 | maik | Status | new => assigned |
2013-07-05 16:49 | maik | Assigned To | => mvwieringen |
2013-07-05 16:51 | maik | Relationship added | parent of 0000180 |
2013-07-05 16:51 | maik | Relationship added | related to 0000059 |
2013-07-05 16:51 | maik | Relationship added | parent of 0000190 |
2013-07-05 16:51 | maik | Relationship added | parent of 0000164 |
2013-07-05 16:52 | maik | Relationship deleted | related to 0000059 |
2013-07-05 16:52 | maik | Relationship added | parent of 0000059 |
2013-07-05 17:20 | mvwieringen | Description Updated | |
2013-07-05 17:20 | mvwieringen | Additional Information Updated | |
2013-09-30 19:36 | mvwieringen | Changeset attached | => bareos master 12a0fdd0 |
2013-09-30 19:36 | mvwieringen | Note Added: 0000681 | |
2013-09-30 19:36 | mvwieringen | Status | assigned => resolved |
2013-09-30 19:36 | mvwieringen | Resolution | open => fixed |
2014-05-16 17:42 |
|
Assigned To | mvwieringen => |
2014-05-16 17:42 |
|
Status | resolved => closed |
2014-05-16 17:42 |
|
Fixed in Version | => 12.4.1 |