long update() throws P2PDDSQLException { // System.out.println("=================================>update "+this); if (registered_ID <= 0) return this.storeNew(); D_Directory_Storage.need_saving_remove(globalIDhash, instance); // need_saving = false; String params[] = new String[table.registered.fields_list.length]; params[table.registered.REG_GID] = globalID; params[table.registered.REG_GID_HASH] = globalIDhash; params[table.registered.REG_INSTANCE] = instance; params[table.registered.REG_CERT] = (certificate.length == 0) ? null : Util.stringSignatureFromByte(certificate); params[table.registered.REG_ADDR] = Address.joinAddresses(addresses); params[table.registered.REG_SIGN] = (signature.length == 0) ? null : Util.stringSignatureFromByte(signature); if (timestamp == null) timestamp = Util.CalendargetInstance(); params[table.registered.REG_TIME] = Encoder.getGeneralizedTime( timestamp); // (Util.CalendargetInstance().getTimeInMillis()/1000)+""; params[table.registered.REG_ID] = Util.getStringID(this.registered_ID); Application.db_dir.update( table.registered.TNAME, table.registered.fields_noID_list, new String[] {table.registered.registeredID}, params, DEBUG); // new // String[]{table.registered.global_peer_ID,table.registered.certificate,table.registered.addresses,table.registered.signature,table.registered.timestamp}, return registered_ID; }
private static byte[] _monitor_handleAnnouncement( DirectoryAnnouncement da, String detected_sa, DBInterface db, boolean storeNAT) throws P2PDDSQLException { if (DEBUG) System.out.println("Got announcement: " + da); if (da.getGID() != null) db.deleteNoSyncNULL( table.registered.TNAME, new String[] {table.registered.global_peer_ID, table.registered.instance}, new String[] {da.getGID(), da.instance}, DEBUG); else db.deleteNoSyncNULL( table.registered.TNAME, new String[] {table.registered.global_peer_ID_hash, table.registered.instance}, new String[] {da.getGIDH(), da.instance}, DEBUG); String adr = da.address.addresses(); // da.address.domain+":"+da.address.port+ADDR_SEP+detected_sa, if (storeNAT) adr = Address.joinAddresses(detected_sa, adr); String params[] = new String[table.registered.fields_noID_list.length]; params[table.registered.REG_GID] = da.getGID(); params[table.registered.REG_GID_HASH] = da.getGIDH(); params[table.registered.REG_INSTANCE] = da.instance; params[table.registered.REG_BRANCH] = da.branch; params[table.registered.REG_AGENT_VERSION] = Util.getVersion(da.agent_version); params[table.registered.REG_NAME] = da.name; params[table.registered.REG_CERT] = (da.certificate.length == 0) ? null : Util.stringSignatureFromByte(da.certificate); params[table.registered.REG_ADDR] = adr; params[table.registered.REG_SIGN] = (da.signature.length == 0) ? null : Util.stringSignatureFromByte(da.signature); Calendar timestamp = da.date; if (timestamp == null) timestamp = Util.CalendargetInstance(); params[table.registered.REG_TIME] = Encoder.getGeneralizedTime( timestamp); // (Util.CalendargetInstance().getTimeInMillis()/1000)+""; long id = db.insert( table.registered.TNAME, table.registered.fields_noID_list, // new // String[]{table.registered.global_peer_ID,table.registered.certificate,table.registered.addresses,table.registered.signature,table.registered.timestamp}, params); if (DEBUG) out.println("DirectoryServer: mon_handleAnnoncement:inserted with ID=" + id); byte[] answer = new DirectoryAnnouncement_Answer(detected_sa).encode(); if (DEBUG) out.println("sending answer: " + Util.byteToHexDump(answer)); return answer; }
@Override public Encoder getEncoder() { Encoder enc = new Encoder().initSequence(); enc.addToSequence(new Encoder(instance)); enc.addToSequence(new Encoder(branch)); enc.addToSequence(Encoder.getEncoderArray(agent_version)); if (date_last_contact == null) date_last_contact = Util.CalendargetInstance(); enc.addToSequence(new Encoder(date_last_contact)); enc.addToSequence(Encoder.getEncoder(instance_terms)); enc.addToSequence(Encoder.getEncoder(addresses)); enc.addToSequence(new Encoder(this.signature_peer)); enc.setASN1Type(getASN1Type()); return enc; }
private void init(ArrayList<Object> d, D_DirectoryEntry _parent) { parent = _parent; this.registered_ID = Util.lval(d.get(table.registered.REG_ID)); // this.addresses = // TypedAddress.parseStringAddresses(Util.getString(d.get(table.registered.REG_ADDR))); this.addresses = Address.getAddresses(Util.getString(d.get(table.registered.REG_ADDR))); this.certificate = Util.byteSignatureFromString(Util.getString(d.get(table.registered.REG_CERT))); this.globalID = Util.getString(d.get(table.registered.REG_GID)); this.globalIDhash = Util.getString(d.get(table.registered.REG_GID_HASH)); this.instance = Util.getString(d.get(table.registered.REG_INSTANCE)); this.signature = Util.byteSignatureFromString(Util.getString(d.get(table.registered.REG_SIGN))); this.timestamp = Util.getCalendar(Util.getString(d.get(table.registered.REG_TIME))); if (timestamp == null) timestamp = Util.CalendargetInstance(); }
private static DirectoryAnswer getDA_old(D_DirectoryEntry de, DirectoryRequest dr, int version) { DirectoryAnswer da = new DirectoryAnswer(); if (de.addresses == null) { return da; } da.version = version; da.date = de.timestamp; if (da.date == null) { da.date = Util.CalendargetInstance(); } if (de.addresses != null) for (int k = 0; k < de.addresses.length; k++) { da.addresses.add(de.addresses[k]); } return da; }
private void handleChoiceEvent(Object source) { //boolean DEBUG = true; if(DEBUG) out.println("JustificationEditor:handleFieldEvent: start"); /* String creationTime; if(vote_date_field != null) { creationTime = vote_date_field.getText(); }else{ creationTime = Util.getGeneralizedTime(); } */ if((this.vote_date_field==source)||(this.vote_date_field.getDocument()==source)) { if(DEBUG) out.println("JustificationEditor:handleFieldEvent: date title"); String new_text = this.vote_date_field.getText(); Calendar cal = Util.getCalendar(new_text); if(cal == null) return; this.signature.creation_date = cal; this.signature.setEditable(); try { this.signature.storeVerified(); } catch (P2PDDSQLException e) { e.printStackTrace(); } return; } if(this.vote_dategen_field==source) { this.signature.creation_date = Util.CalendargetInstance(); this.vote_date_field.setText(Encoder.getGeneralizedTime(this.signature.creation_date)); this.signature.setEditable(); try { this.signature.storeVerified(); } catch (P2PDDSQLException e) { e.printStackTrace(); } return; } if(this.vote_newjust_field==source) { if(DEBUG) out.println("VoteEditor:handleFieldEvent: choice newjust_radio"); this.just_old_just_field.setEnabled(false); //setChoiceOldJustification(creationTime); //enable_just(); if(motionEditor!=null){ if(_DEBUG) out.println("VoteEditor:handleFieldEvent: choice newjust_radio, in motioneditor"); motionEditor.enableNewJustification(true); signature.justification_ID = motionEditor.getNewJustificationID(); signature.global_justification_ID = null; }else{ if(_DEBUG) out.println("VoteEditor:handleFieldEvent: choice newjust_radio, in justeditor"); this.justificationEditor.make_new(); this.enable_just(); signature.justification_ID = justification.justification_ID; signature.global_justification_ID = null; } return; } if(this.vote_oldjust_field==source) { if(DEBUG) out.println("VoteEditor:handleFieldEvent: choice oldjust_radio"); this.just_old_just_field.setEnabled(true); setChoiceOldJustification(); if(motionEditor!=null){ motionEditor.enableNewJustification(false); }else{ this.disable_just(); } return; } if(this.vote_nojust_field==source) { if(DEBUG) out.println("VoteEditor:handleFieldEvent: choice nojust_radio"); this.just_old_just_field.setEnabled(false); if(motionEditor!=null){ motionEditor.enableNewJustification(false); }else{ this.disable_just(); } try{ signature.justification_ID = null; signature.global_justification_ID = null; //this.signature.creation_date = Util.getCalendar(creationTime); this.signature.setEditable(); this.signature.storeVerified(); } catch (P2PDDSQLException e) { e.printStackTrace(); } } if(just_old_just_field==source) { if(DEBUG) out.println("VoteEditor:handleFieldEvent: choice old_just_combo"); //if(DEBUG) Util.printCallPath("Linux tracing"); setChoiceOldJustification(); return; } if(this.vote_choice_field == source) { if(DEBUG) out.println("VoteEditor:handleFieldEvent: choice vote_choice_field combo"); setChoice(); return; } if((just_submit_field == source)) { if(DEBUG) out.println("VoteEditor:handleFieldEvent: submit"); try { long j_id=-1; D_Justification justification =null; if(signature.choice==null){ Application.warning(_("No voting choice made.\nPlease return and make a voting choice."), _("No Choice Made")); return; } if(vote_newjust_field.isSelected()) { if(DEBUG) out.println("VoteEditor:handleFieldEvent: new justification"); justification = justificationEditor.just; if(motionEditor!=null){ justification = motionEditor.getNewJustification(); if(DEBUG) out.println("VoteEditor:handleFieldEvent: new justification from motionEditor="+justification); }else{ if(DEBUG) out.println("VoteEditor:handleFieldEvent: new justification from justEditor="+justification); } if(justification.global_constituent_ID==null){ if(DEBUG) out.println("VoteEditor:handleFieldEvent: reget justification"); justification.global_constituent_ID = Application.constituents.tree.getModel().getConstituentGIDMyself(); justification.constituent_ID = Util.getStringID(Application.constituents.tree.getModel().getConstituentIDMyself()); if(justification.global_constituent_ID==null) { Application.warning(_("You should first select a constituent identity for this organization!"), _("No Constituent ID for this org!")); return; } } justification.global_justificationID = justification.make_ID(); justification.sign(); j_id = justification.storeVerified(DEBUG); if(j_id<=0){ if(_DEBUG) out.println("VoteEditor:handleFieldEvent: failed saving no new justif"); return; } }else{ if(DEBUG) out.println("VoteEditor:handleFieldEvent: no new justification selected"); } //signature = signature; //signature.global_motion_ID = null; //signature.motion_ID = justificationEditor.just.motion_ID; if(vote_newjust_field.isSelected()) { signature.global_justification_ID = justification.global_justificationID; signature.justification_ID = Util.getStringID(j_id);//justificationEditor.just.justification_ID; } signature.global_vote_ID = signature.make_ID(); D_Vote old = new D_Vote(signature.global_vote_ID); if(old.vote_ID!=null){ String old_date = Encoder.getGeneralizedTime(old.creation_date); String new_date = Encoder.getGeneralizedTime(signature.creation_date); if(old_date.equals(new_date)){ int attack = Application.ask( _("Are you sure you want to create a new vote \n" + "with the same date as your previous vote? \n" + "This can amount to an attack where you give different people different votes!\n" + "Except if they order such votes by signature (to be implemented)\n" + "On selecting NO, we will update the creation date to now."), _("Votes from you on the same issue and with same date!"), JOptionPane.YES_NO_CANCEL_OPTION); switch(attack) { case 0: //YES break; case 1: // NO signature.creation_date = Util.CalendargetInstance(); this.vote_date_field.setText(Encoder.getGeneralizedTime(this.signature.creation_date)); break; case 2: // CANCEL default: return; } } } signature.sign(); long v_id = this.signature.storeVerified(); if(v_id<=0){ if(_DEBUG) out.println("VoteEditor:handleFieldEvent: submit sign got no local ID"); return; } /* justificationEditor.just.global_justificationID = justificationEditor.just.make_ID(); justificationEditor.just.sign(); long id = justificationEditor.just.storeVerified(); if(id<=0) return; */ disable_it(); justificationEditor.disable_it(); try{ D_Motion m = new D_Motion(Util.lval(signature.motion_ID)); m.broadcasted = true; m.storeVerified(); }catch(Exception e){e.printStackTrace();} } catch (P2PDDSQLException e) { e.printStackTrace(); } } }
/** * Check that date is less than 1 hour apart from now * * @param date * @return */ private static boolean remoteDate(Calendar date) { return Math.abs(date.getTimeInMillis() - Util.CalendargetInstance().getTimeInMillis()) > REMOTE_DATE_THRESHOLD_MILLIS; }
public boolean older(long timeoutThread) { return Util.CalendargetInstance().getTimeInMillis() - this.startTime.getTimeInMillis() > timeoutThread; }
public ServiceThread(String name, boolean daemon, Object ctx) { super(name, daemon, ctx); startTime = Util.CalendargetInstance(); }