Skip to content
This repository has been archived by the owner on Sep 1, 2022. It is now read-only.

Improve app/daemon/client/configuration implementation #96

Closed
4 tasks done
anonimal opened this issue Jan 29, 2016 · 3 comments
Closed
4 tasks done

Improve app/daemon/client/configuration implementation #96

anonimal opened this issue Jan 29, 2016 · 3 comments

Comments

@anonimal
Copy link
Collaborator

anonimal commented Jan 29, 2016

2429f3a in #61 gets some important work started with regard to updating the router context when reloading the tunnels config file.

The following issues still need to be tackled:

  • Enhancement: Reload() currently only reloads tunnels config (and not kovri.conf) but doesn't restart the daemon. With more client/router separation, an auto-update implementation will be easier to implement. Moved to Reload core instance upon SIGHUP #929
  • . Enhancement: SIGHUP is currently the only way to reload config files. Implement alternative way to reload config files. Edit: This will most likely need to be resolved in libclient API #351. I think the best we can do now is clear a path for that to happen. See the item above.
  • Enhancement: our current config handler (with a little work) can easily handle both kovri and tunnels configuration files. We should consider refactoring out ptree and doing the work with program_options. Edit: Not necessary.
  • Bug: after changing a port value in tunnels config for an existing tunnel, and then pkilling with SIGHUP, the previously defined port is never closed.

Edit: much related refactoring will be needed before the above points (and more) can be effectively resolved.

@anonimal
Copy link
Collaborator Author

anonimal commented Jan 29, 2016

Assigning myself point 3 so I can finish that [point 3] along with #42.

@anonimal
Copy link
Collaborator Author

anonimal commented Jul 9, 2016

I've unassigned myself because these various issues can be resolved when refactoring app and client (and each issue can be resolved separately by any number of developers).

@anonimal anonimal added this to the 0.1.0 milestone Sep 9, 2016
@anonimal
Copy link
Collaborator Author

anonimal commented Sep 9, 2016

#340

anonimal added a commit to anonimal/kovri that referenced this issue Nov 27, 2016
- creates Configuration class + tunnel config map + enum keys
- adds documentation
- begins to clear the path for monero-project#96
@anonimal anonimal self-assigned this Nov 27, 2016
anonimal added a commit to anonimal/kovri that referenced this issue Nov 28, 2016
- Design refactoring
  * All config processing now implemented in class Configuration
    - Singleton now points to an instance of Configuration
      (class Configuration is no longer inherited)
    - Parsing is no longer called from main
      * Daemon now configures itself before initialization
    - Move config file fetching code into class Configuration
      * Remove app filesystem files
  * Tunnel insertion and updating are now done in one function
  * Tunnel config constants are now in namespace scope
    (not needed as object)
- Add exception handling
- Misc STL/other refactoring
- Documentation
- Add/resolve TODO's

Clears the path for further work in monero-project#96
anonimal added a commit to anonimal/kovri that referenced this issue Dec 1, 2016
- Not entirely unhooked, but a start in that direction:
  * create new Instance class which handles:
    - configuration/initialization of client/router contexts
    - reloading of client/server tunnels
  * aims to detach from daemon and handle *all* client/router aspects
    - many new TODO's with detailed explanatory remarks

- Configuration refactor:
  * ctor initializes with cli arguments, sets config member
  * now using program_options::command_line_parser
  * throw instead of return bool when parsing
  * move out of util directory

- Misc refactoring to satisfy the above, misc. TODO's related to above

References monero-project#96 monero-project#34
anonimal added a commit to anonimal/kovri that referenced this issue Dec 2, 2016
As noted in the resolved TODO:

"we never needed a map - but first needed to confirm
that there wasn't another use-case before removing"

References monero-project#96
anonimal added a commit to anonimal/kovri that referenced this issue Dec 2, 2016
- Tunnel config attributes (params) are now stored in class TunnelAttributes
  * tunnel ctor's now simply pass const reference TunnelAttributes
  * attributes used for tunnels config + client/server tunnel creation
- Related refactoring + misc. refactoring
- Resolves one TODO, adds a few more

References monero-project#96
anonimal added a commit to anonimal/kovri that referenced this issue Dec 2, 2016
- Removed redundent attribute parsing between client/server tunnels
- Resolves TODO to remove confusing "host" attribute
- Shorten tunnel attribute (param) strings
- Adjusts tunnels config file
  * use new attribute (param) string
  * no longer create client dest persistent key by default
  * clarify default entries / unset the default confusing ones

References monero-project#96
anonimal added a commit to anonimal/kovri that referenced this issue Dec 2, 2016
- Implements blacklist, no-list, improves whitelist impl
- Related refactoring + documentation

References monero-project#96
anonimal added a commit to anonimal/kovri that referenced this issue Dec 2, 2016
anonimal added a commit to anonimal/kovri that referenced this issue Dec 2, 2016
Returns the value of the key, not the tunnel parameter value.

References monero-project#96
anonimal added a commit to anonimal/kovri that referenced this issue Dec 3, 2016
anonimal added a commit to anonimal/kovri that referenced this issue Dec 3, 2016
anonimal added a commit to anonimal/kovri that referenced this issue Dec 3, 2016
- Client destination can now be assigned multiple destinations
  * if multiple destinations are given, a random destination will be chosen
- Custom ports can now be assigned to a destination on a per-destination basis
- Create unit-test for client destination parsing
  * tests for functionality and abuse
  * creates generic client parsing unit-test file
- CSV unit-test refactor:
  * move CSV unit-test into generic client parsing file
  * minor code refactor + minor cleanup now that the CSV test is not alone
- Update tunnels config + add documentation
- Add related notes and TODO's

Fixes monero-project#486. References monero-project#96, monero-project#356 (for CSV-related)
@anonimal anonimal changed the title Improve configuration file handling Improve app/daemon/client/configuration implementation Dec 4, 2016
anonimal added a commit to anonimal/kovri that referenced this issue Dec 7, 2016
- Server tunnel refactor:
  * refactor update implementation
  * code consolidation
    - remove per-attribute function handlers
    - implement in single function
  * add more exception handling
  * set ACL in server tunnel ctor

- Tunnel refactoring:
  * refactor/remove per-attribute members for client/server tunnel +
    initialization
  * create client tunnel handler declaration, define in implementation

- Datatype refactor:
  * signed int -> std::uint16_t refactor for client port numbers

- Misc. refactoring:
  * clarify purpose of getting ident hash when starting client tunnel
    - also refactor getter function
  * minor style to clarify type purpose
  * add typedef for tcp resolver clarity
  * misc. auto -> explicit types

- Tunnels config:
  * add default black/white-list to SSH server tunnel example
  * fix server key type "host" to "address"

- Add code documentation, resolve several TODO's, add more TODO's

References monero-project#487 monero-project#96
@anonimal anonimal modified the milestones: 0.1.1-alpha, 0.1.0-alpha Jan 7, 2017
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

1 participant