bgpsecurity / rpstir

Relying Party Security Technology for Internet Routing
Other
9 stars 12 forks source link

make initialize/upgrade safer, easier, and more powerful #20

Open dseomn opened 9 years ago

dseomn commented 9 years ago

Merge bin/rpki/initialize.in and bin/rpki/upgrade.in into a single script with the following behavior (described in pseudo-code). The forced variable corresponds to a -f or --force argument passed to the new script. Note that some of the below functionality depends on [#17].

if not able to connect to database as rpstir user:
    if not forced:
        log error and exit
    if not able to connect to database as root user:
        ask for database root password
        if still not able to connect as root:
            log error and exit
    create database user with correct password from rpstir.conf
    if still not able to connect to database as rpstir user:
        log error and exit

if not able to select rpstir database:
    if not forced:
        log error and exit
    if not able to create rpstir database:
        if not able to create rpstir database as root:
            log error and exit

if database is empty and directories are empty:
    initialize database and directories
    exit successfully
else if database and directories are already initialized:
    if db/dirs are from an old (known) version of rpstir:
        if (forced) or (all upgrades are safe):
            perform all upgrades
            exit successfully
        else:
            log error and exit
    else if db/dirs are from an old (unknown) version of rpstir:
        log error and exit
    else:
        exit successfully
else:
    log error and exit

Add a separate script to clear an existing database/directories (note that the above code doesn't do this).

Reported by: dseomn

Original Ticket: rpstir/tickets/20

dseomn commented 9 years ago

Diff:


--- old
+++ new
@@ -23,15 +23,11 @@
         exit successfully
     else if database and directories are already initialized:
         if db/dirs are from an old (known) version of rpstir:
-            if forced:
+            if (forced) or (all upgrades are safe):
                 perform all upgrades
                 exit successfully
             else:
-                perform all safe upgrades possible
-                if there are remaining risky upgrades:
-                    log error and exit
-                else:
-                    exit successfully
+                log error and exit
         else if db/dirs are from an old (unknown) version of rpstir:
             log error and exit
         else:

Original comment by: dseomn