From: Pete Fotheringham Date: Fri, 9 Dec 2011 15:07:24 +0000 (+0000) Subject: add_card woirks :-) X-Git-Tag: 0.7.1~162^2~7 X-Git-Url: http://www.project-moonshot.org/gitweb/?p=moonshot-ui.git;a=commitdiff_plain;h=2fb736bb25e90a1d301e5c7fc29b6a2f6c338f29 add_card woirks :-) --- diff --git a/src/moonshot-identities-manager.vala b/src/moonshot-identities-manager.vala index 4d02493..7c17f48 100644 --- a/src/moonshot-identities-manager.vala +++ b/src/moonshot-identities-manager.vala @@ -1,79 +1,39 @@ class IdentityManagerModel : Object { + private const string FILE_NAME = "identities.txt"; + private IIdentityCardStore store; public SList id_card_list; public SList get_card_list() { return id_card_list.copy(); } public signal void card_list_changed(); + public void add_card(IdCard card) { + store.add_card(card); + card_list_changed(); + } + + public void update_card(IdCard card) { + store.update_card(card); + card_list_changed(); + } + + public void remove_card(IdCard card) { + store.remove_card(card); + card_list_changed(); + } + - private const string FILE_NAME = "identities.txt"; private IdentityManagerApp parent; - public IdentityManagerModel(IdentityManagerApp parent_app) - { + public IdentityManagerModel(IdentityManagerApp parent_app) { print("IdentityManagerModel()\n"); parent = parent_app; - id_card_list = new SList(); - var key_file = new KeyFile (); - var path = get_data_dir (); - var filename = Path.build_filename (path, FILE_NAME); - try - { - key_file.load_from_file (filename, KeyFileFlags.NONE); - } - catch (Error e) - { - stdout.printf("Error: %s\n", e.message); - return; - } - - var identities_uris = key_file.get_groups (); - foreach (string identity in identities_uris) - { - try - { - IdCard id_card = new IdCard (); - - id_card.issuer = key_file.get_string (identity, "Issuer"); - id_card.username = key_file.get_string (identity, "Username"); - id_card.password = key_file.get_string (identity, "Password"); - id_card.services = key_file.get_string_list (identity, "Services"); - id_card.display_name = key_file.get_string (identity, "DisplayName"); - id_card.set_data ("pixbuf", find_icon ("avatar-default", 48)); - - - if (key_file.has_key (identity, "Rules-Patterns") && - key_file.has_key (identity, "Rules-AlwaysConfirm")) - { - string [] rules_patterns = key_file.get_string_list (identity, "Rules-Patterns"); - string [] rules_always_conf = key_file.get_string_list (identity, "Rules-AlwaysConfirm"); - - if (rules_patterns.length == rules_always_conf.length) - { - Rule[] rules = new Rule[rules_patterns.length]; - for (int i = 0; i < rules_patterns.length; i++) - { - rules[i] = {rules_patterns[i], rules_always_conf[i]}; - } - id_card.rules = rules; - } - } - // Trust anchor - id_card.trust_anchor.ca_cert = key_file.get_string (identity, "CA-Cert"); - id_card.trust_anchor.subject = key_file.get_string (identity, "Subject"); - id_card.trust_anchor.subject_alt = key_file.get_string (identity, "SubjectAlt"); - id_card.trust_anchor.server_cert = key_file.get_string (identity, "ServerCert"); - - id_card_list.prepend (id_card); - } - catch (Error e) - { - stdout.printf ("Error: %s\n", e.message); - } - } + store = new LocalFlatFileStore(); + id_card_list = store.get_card_list(); } +/* public void store_id_cards () { var key_file = new KeyFile (); @@ -134,4 +94,5 @@ class IdentityManagerModel : Object { return path; } + */ } diff --git a/src/moonshot-local-flat-file-store.vala b/src/moonshot-local-flat-file-store.vala index df16f95..ea11e90 100644 --- a/src/moonshot-local-flat-file-store.vala +++ b/src/moonshot-local-flat-file-store.vala @@ -1,18 +1,150 @@ public class LocalFlatFileStore : Object, IIdentityCardStore { - private SList id_card_list; + private SList id_card_list; + private const string FILE_NAME = "identities.txt"; - public void add_card(IdCard card) { - } + public void add_card(IdCard card) { + print("add_card\n"); + id_card_list.prepend(card); + store_id_cards (); + } public void update_card(IdCard card) { + print("update_card\n"); } public void remove_card(IdCard card) { - } + print("remove_card\n"); + } public SList get_card_list() { return id_card_list.copy(); } + + private void load_id_cards() { + var key_file = new KeyFile (); + var path = get_data_dir (); + var filename = Path.build_filename (path, FILE_NAME); + try + { + key_file.load_from_file (filename, KeyFileFlags.NONE); + } + catch (Error e) + { + stdout.printf("Error: %s\n", e.message); + return; + } + + var identities_uris = key_file.get_groups (); + foreach (string identity in identities_uris) + { + try + { + IdCard id_card = new IdCard (); + + id_card.issuer = key_file.get_string (identity, "Issuer"); + id_card.username = key_file.get_string (identity, "Username"); + id_card.password = key_file.get_string (identity, "Password"); + id_card.services = key_file.get_string_list (identity, "Services"); + id_card.display_name = key_file.get_string (identity, "DisplayName"); + id_card.set_data ("pixbuf", find_icon ("avatar-default", 48)); + + + if (key_file.has_key (identity, "Rules-Patterns") && + key_file.has_key (identity, "Rules-AlwaysConfirm")) + { + string [] rules_patterns = key_file.get_string_list (identity, "Rules-Patterns"); + string [] rules_always_conf = key_file.get_string_list (identity, "Rules-AlwaysConfirm"); + + if (rules_patterns.length == rules_always_conf.length) + { + Rule[] rules = new Rule[rules_patterns.length]; + for (int i = 0; i < rules_patterns.length; i++) + { + rules[i] = {rules_patterns[i], rules_always_conf[i]}; + } + id_card.rules = rules; + } + } + // Trust anchor + id_card.trust_anchor.ca_cert = key_file.get_string (identity, "CA-Cert"); + id_card.trust_anchor.subject = key_file.get_string (identity, "Subject"); + id_card.trust_anchor.subject_alt = key_file.get_string (identity, "SubjectAlt"); + id_card.trust_anchor.server_cert = key_file.get_string (identity, "ServerCert"); + + id_card_list.prepend (id_card); + } + catch (Error e) + { + stdout.printf ("Error: %s\n", e.message); + } + } + } + + public LocalFlatFileStore () { + id_card_list = new SList(); + load_id_cards(); + } + private string get_data_dir() + { + string path; + + path = Path.build_filename (Environment.get_user_data_dir (), + Config.PACKAGE_TARNAME); + if (!FileUtils.test (path, FileTest.EXISTS)) + { + DirUtils.create (path, 0700); + } + + return path; + } + public void store_id_cards () + { + var key_file = new KeyFile (); + + foreach (IdCard id_card in this.id_card_list) + { + string[] rules_patterns = new string[id_card.rules.length]; + string[] rules_always_conf = new string[id_card.rules.length]; + + for (int i=0; i 0) + { + key_file.set_string_list (id_card.display_name, "Rules-Patterns", rules_patterns); + key_file.set_string_list (id_card.display_name, "Rules-AlwaysConfirm", rules_always_conf); + } + // Trust anchor + key_file.set_string (id_card.display_name, "CA-Cert", id_card.trust_anchor.ca_cert ?? ""); + key_file.set_string (id_card.display_name, "Subject", id_card.trust_anchor.subject ?? ""); + key_file.set_string (id_card.display_name, "SubjectAlt", id_card.trust_anchor.subject_alt ?? ""); + key_file.set_string (id_card.display_name, "ServerCert", id_card.trust_anchor.server_cert ?? ""); + } + + var text = key_file.to_data (null); + + try + { + var path = get_data_dir (); + var filename = Path.build_filename (path, FILE_NAME); + FileUtils.set_contents (filename, text, -1); + } + catch (Error e) + { + stdout.printf ("Error: %s\n", e.message); + } + } + + }