X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=src%2Fmoonshot-webp-parser.vala;h=efe53b57878d845299f98aff7084af236369020e;hb=c64066e0fd6838caafba7cac51b00ea2980a717e;hp=e7bda5ba35dce09a76dbc76789b1fb4e296707fc;hpb=c049ab849bdd45096de27707276a79e9624a6a82;p=moonshot-ui.git diff --git a/src/moonshot-webp-parser.vala b/src/moonshot-webp-parser.vala index e7bda5b..efe53b5 100644 --- a/src/moonshot-webp-parser.vala +++ b/src/moonshot-webp-parser.vala @@ -1,80 +1,122 @@ +/* + * Copyright (c) 2011-2014, JANET(UK) + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of JANET(UK) nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. +*/ +using Moonshot; + namespace WebProvisioning -{ - class WebProvisionParser - { - public WebProvisionParser (string path) - { - - } - } - - public void start_element_func (MarkupParseContext context, - string element_name, - string[] attribute_names, - string[] attribute_values) throws MarkupError - { - debug ("Start: %s", element_name); - } +{ - public void end_element_func (MarkupParseContext context, - string element_name) throws MarkupError - { - debug ("End: %s", element_name); - } - - public void text_element_func (MarkupParseContext context, - string text, - size_t text_len) throws MarkupError - { - debug ("Text element: %s", text); -/* for (string i in context.get_element_stack ()) - { - stdout.printf("%s\n", i); - }*/ - } - - public static int main (string[] args) - { - string text = ""; - if (args.length < 2) - { - error ("Usage %s [-a] WEB_PROVISIONING_FILE", args[0]); - } - - if (!FileUtils.test (args[1], FileTest.EXISTS | FileTest.IS_REGULAR)) + public static int main(string[] args) { - error ("%s does not exist", args[1]); - } + int arg_index = -1; + int force_flat_file_store = 0; + bool bad_switch = false; + for (arg_index = 1; arg_index < args.length; arg_index++) { + string arg = args[arg_index]; + unichar c = arg.get_char(); + if (c == '-') { + arg = arg.next_char(); + c = arg.get_char(); + switch (c) { + case 'f': + force_flat_file_store = 1; + break; + default: + bad_switch = true; + break; + } + } else { + break; // arg is not a switch; presume it's the file + } + } + if (bad_switch || (arg_index != args.length - 1)) + { + stdout.printf(_("Usage %s [-f] WEB_PROVISIONING_FILE\n -f: add identities to flat file store.\n"), args[0]); + return -1; + } + string webp_file = args[arg_index]; - var file = File.new_for_path (args[1]); - - try - { - var dis = new DataInputStream (file.read ()); - string line; - while ((line = dis.read_line (null)) != null) - text += line; - } - catch (Error e) - { - error ("Could not retreive file size"); - } + if (!FileUtils.test(webp_file, FileTest.EXISTS | FileTest.IS_REGULAR)) + { + stdout.printf(_("%s does not exist\n"), webp_file); + return -1; + } - MarkupParser parser = {start_element_func, end_element_func, text_element_func, null, null}; + var webp = new Parser(webp_file); + webp.parse(); - var ctx = new MarkupParseContext(parser, 0, null, null); + foreach (IdCard card in cards) + { + Moonshot.Error error; + string[] rules_patterns = {}; + string[] rules_always_confirm = {}; + + /* use temp arrays to workaround centos array property bug */ + var rules = card.rules; + var services = card.services; + if (rules.length > 0) + { + int i = 0; + rules_patterns = new string[rules.length]; + rules_always_confirm = new string[rules.length]; + foreach (Rule r in rules) + { + rules_patterns[i] = r.pattern; + rules_always_confirm[i] = r.always_confirm; + i++; + } + } + + Moonshot.install_id_card(card.display_name, + card.username, + card.password, + card.issuer, + rules_patterns, + rules_always_confirm, + services, + card.trust_anchor.ca_cert, + card.trust_anchor.subject, + card.trust_anchor.subject_alt, + card.trust_anchor.server_cert, + force_flat_file_store, + out error); + + if (error != null) + { + stderr.printf("Error: %s", error.message); + continue; + } + } - try - { - ctx.parse (text, text.length); - } - catch (Error e) - { - error ("Could not parse %s, invalid content", args[1]); + return 0; } - - - return 0; - } }