X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=src%2Fmoonshot-server.vala;h=f5a086ff2b348e561ac72a6e7da345248588552d;hb=0b8fef21d01a5029afd99014fd262ea5356c4b85;hp=b7fcfbb4160e30cd4e469e52d2745aede121479f;hpb=bb3a49a90bbb3b185ed8869aa0e2e67d79b908b2;p=moonshot-ui.git diff --git a/src/moonshot-server.vala b/src/moonshot-server.vala index b7fcfbb..f5a086f 100644 --- a/src/moonshot-server.vala +++ b/src/moonshot-server.vala @@ -3,11 +3,21 @@ [DBus (name = "org.janet.Moonshot")] public class MoonshotServer : Object { - private static IdentityManagerView main_window; + private IdentityManagerApp parent_app; - public MoonshotServer (Gtk.Window window) + public MoonshotServer (IdentityManagerApp app) { - this.main_window = (IdentityManagerView) window; + this.parent_app = app; + } + + public bool show_ui() + { + if (parent_app.view == null) { + return false; + } + parent_app.show(); + parent_app.explicitly_launched = true; + return true; } public async bool get_identity (string nai, @@ -20,7 +30,7 @@ public class MoonshotServer : Object { out string subject_name_constraint, out string subject_alt_name_constraint) { - var request = new IdentityRequest (main_window, + var request = new IdentityRequest (parent_app, nai, password, service); @@ -37,9 +47,12 @@ public class MoonshotServer : Object { var id_card = request.id_card; - if (id_card != null) { + if ((id_card != null) && (id_card.display_name != IdCard.NO_IDENTITY)) { nai_out = id_card.nai; - password_out = id_card.password; + if ((request.password!=null) && (request.password != "")) + password_out = request.password; + else + password_out = id_card.password; server_certificate_hash = id_card.trust_anchor.server_cert; ca_certificate = id_card.trust_anchor.ca_cert; @@ -72,7 +85,7 @@ public class MoonshotServer : Object { out string subject_name_constraint, out string subject_alt_name_constraint) { - var request = new IdentityRequest.default (main_window); + var request = new IdentityRequest.default (parent_app); request.set_callback ((IdentityRequest) => get_default_identity.callback()); request.execute (); yield; @@ -123,13 +136,16 @@ public class MoonshotServer : Object { string ?ca_cert, string ?subject, string ?subject_alt, - string ?server_cert) + string ?server_cert, + int force_flat_file_store) { IdCard idcard = new IdCard (); idcard.display_name = display_name; idcard.username = user_name; idcard.password = password; + if ((password != null) && (password != "")) + idcard.store_password = true; idcard.issuer = realm; idcard.services = services; idcard.trust_anchor.ca_cert = ca_cert; @@ -139,26 +155,28 @@ public class MoonshotServer : Object { if (rules_patterns.length == rules_always_confirm.length) { - idcard.rules = new Rule[rules_patterns.length]; + /* workaround Centos vala array property bug: use temp array */ + Rule[] rules = new Rule[rules_patterns.length]; - for (int i=0; i { mutex.lock (); - success = main_window.add_identity (idcard); + success = parent_app.add_identity (idcard, force_flat_file_store); cond.signal (); mutex.unlock (); return false;