about summary refs log tree commit diff stats
Commit message (Expand)AuthorAgeFilesLines
...
| * | | | Added door popups that report requirementsStar Rauchenberger2024-05-166-136/+377
| * | | | Added status bar stuff backStar Rauchenberger2024-05-161-4/+12
| * | | | Draw a straight line when the ellipse would be invisibleStar Rauchenberger2024-05-151-32/+39
| * | | | Fixed art gallery paintingStar Rauchenberger2024-05-152-1/+7
| * | | | Logging changesStar Rauchenberger2024-05-156-91/+43
| * | | | Get checked paintings from serverStar Rauchenberger2024-05-154-14/+41
| * | | | Hovering over a connection only shows nearest hopsStar Rauchenberger2024-05-153-55/+13
| * | | | Added rest of world to subway.yamlStar Rauchenberger2024-05-141-1/+427
| * | | | Warn on singleton subway tag dataStar Rauchenberger2024-05-141-0/+14
| * | | | Switch to wx loggingStar Rauchenberger2024-05-145-84/+85
| * | | | Hide vanilla paintings that go nowhereStar Rauchenberger2024-05-141-9/+44
| * | | | Hovered connections on subway map!Star Rauchenberger2024-05-1410-15/+289
| * | | | Double buffered painting looks betterStar Rauchenberger2024-05-143-3/+15
| * | | | White background for subway mapStar Rauchenberger2024-05-121-1/+1
| * | | | Subway map hover detection with a quadtreeStar Rauchenberger2024-05-127-0/+498
| * | | | Higher quality + owl picturesStar Rauchenberger2024-05-122-34/+68
| * | | | Started making subway mapStar Rauchenberger2024-05-1212-4/+859
| * | | | Merge branch 'main' into subwayStar Rauchenberger2024-05-1212-232/+517
| |\ \ \ \
| * | | | | Replaced about boxStar Rauchenberger2024-04-202-14/+22
| | |_|/ / | |/| | |
* | | | | Released v0.9.2Star Rauchenberger2024-06-042-1/+9
* | | | | Bump version v0.9.2Star Rauchenberger2024-06-041-1/+1
* | | | | Updated apclientpp+asio+wswrapStar Rauchenberger2024-06-043-0/+0
| |_|/ / |/| | |
* | | | Handle panel location name config fieldStar Rauchenberger2024-05-172-6/+25
* | | | Released v0.9.1Star Rauchenberger2024-05-152-1/+9
* | | | Bump version v0.9.1Star Rauchenberger2024-05-151-1/+1
| |/ / |/| |
* | | Fix pilgrimage detection when sunwarp shuffle is onStar Rauchenberger2024-04-271-14/+24
* | | Released v0.9.0Star Rauchenberger2024-04-222-1/+9
* | | More backwards compatibility with 0.4.5 v0.9.0Star Rauchenberger2024-04-221-3/+6
* | | Bump versionStar Rauchenberger2024-04-221-1/+1
* | | Merge branch 'future'Star Rauchenberger2024-04-229-232/+496
|\ \ \ | |/ / |/| / | |/
| * Fix crossroads roof accessStar Rauchenberger2024-03-171-1/+1
| * Added connection historyStar Rauchenberger2024-03-175-20/+100
| * Added sunwarp shuffleStar Rauchenberger2024-03-027-12/+88
| * Fix pilgrimage detection for vanilla doorsStar Rauchenberger2024-02-285-19/+139
| * Fix websocketpp on gccStar Rauchenberger2024-02-275-5/+4
| * Added pilgrimage goalStar Rauchenberger2024-02-262-1/+3
| * Merge branch 'main' into futureStar Rauchenberger2024-02-269-10/+72
| |\
| * | Added real pilgrimage detectionStar Rauchenberger2024-02-267-298/+293
| * | Added sunwarp access supportStar Rauchenberger2024-01-316-20/+91
| * | Merge branch 'main' into futureStar Rauchenberger2024-01-3011-216/+213
| |\ \
| * | | Handle Color Hunt changesStar Rauchenberger2024-01-212-1/+3
| * | | Areas changes for Symmetry RoomStar Rauchenberger2024-01-211-2/+6
| * | | Handle renamed bearer entranceStar Rauchenberger2024-01-191-1/+1
| * | | Area info from renamesStar Rauchenberger2024-01-191-2/+14
* | | | Released v0.8.0Star Rauchenberger2024-04-032-2/+10
* | | | Bump version v0.8.0Star Rauchenberger2024-04-031-1/+1
* | | | Added player position trackingStar Rauchenberger2024-04-035-19/+82
* | | | Released v0.7.1Star Rauchenberger2024-04-012-1/+10
* | | | Bump version v0.7.1Star Rauchenberger2024-04-011-1/+1
* | | | Fixed handling of door groupsStar Rauchenberger2024-04-011-2/+2
span class="n">MD5(Functions.padright(s.getPassword(), aThis.headerMap.get("Encryption-ID"), 16).substring(0, 16)); String key = md5.hash().substring(0, 16); String iv = Functions.reverse(key); Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding"); SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(), "AES"); IvParameterSpec ivSpec = new IvParameterSpec(iv.getBytes()); cipher.init(Cipher.DECRYPT_MODE, keySpec, ivSpec); aThis.headerMap.put("Title", new String(cipher.doFinal(Functions.hexToBytes(aThis.headerMap.get("Title")))).trim()); aThis.headerMap.put("Author", new String(cipher.doFinal(Functions.hexToBytes(aThis.headerMap.get("Author")))).trim()); aThis.headerMap.put("URL", new String(cipher.doFinal(Functions.hexToBytes(aThis.headerMap.get("URL")))).trim()); HashMap<String, String> temp = new HashMap<String, String>(aThis.headerMap); temp.remove("ID"); temp.remove("Verification"); temp.remove("Verification-ID"); temp.remove("Subscription"); temp.remove("Title"); temp.remove("Author"); temp.remove("URL"); temp.remove("Encryption-ID"); Collection<Entry<String,String>> vals = temp.entrySet(); Iterator<Entry<String,String>> i = vals.iterator(); while (i.hasNext()) { Entry<String,String> e = (Entry<String,String>) i.next(); aThis.headerMap.put(e.getKey(), new String(cipher.doFinal(Functions.hexToBytes(e.getValue()))).trim()); } return true; } catch (IllegalBlockSizeException ex) { Logger.getLogger(WellFormedItem.class.getName()).log(Level.SEVERE, null, ex); return false; } catch (BadPaddingException ex) { Logger.getLogger(WellFormedItem.class.getName()).log(Level.SEVERE, null, ex); return false; } catch (InvalidKeyException ex) { Logger.getLogger(WellFormedItem.class.getName()).log(Level.SEVERE, null, ex); return false; } catch (InvalidAlgorithmParameterException ex) { Logger.getLogger(WellFormedItem.class.getName()).log(Level.SEVERE, null, ex); return false; } catch (NoSuchAlgorithmException ex) { Logger.getLogger(WellFormedItem.class.getName()).log(Level.SEVERE, null, ex); return false; } catch (NoSuchPaddingException ex) { Logger.getLogger(WellFormedItem.class.getName()).log(Level.SEVERE, null, ex); return false; } } else { return true; } } private boolean checkForEqualFilters() { boolean good = true; Filter[] filters = Wrapper.getAllFilter(); int i = 0; for (i = 0; i < filters.length; i++) { if (filters[i].getSubscription().equals(aThis.headerMap.get("Subscription"))) { if (filters[i].getEqual()) { good = (good ? aThis.headerMap.get(filters[i].getField()).contains(filters[i].getTest()) : false); } } } return good; } private boolean checkForFilterInvalidation() { boolean good = true; good = (good ? checkForEqualFilters() : false); good = (good ? checkForInequalFilters() : false); if (!good) { XmlRpc xmlrpc = new XmlRpc("deleteItem"); xmlrpc.addParam(Integer.decode(aThis.headerMap.get("ID"))); xmlrpc.execute(); } return good; } private boolean checkForInequalFilters() { boolean good = true; boolean start = false; Filter[] filters = Wrapper.getAllFilter(); int i = 0; for (i = 0; i < filters.length; i++) { if (filters[i].getSubscription().equals(aThis.headerMap.get("Subscription"))) { if (!filters[i].getEqual()) { if (!start) { good = false; start = true; } good = (good ? true : !aThis.headerMap.get(filters[i].getField()).contains(filters[i].getTest())); } } } return good; } private boolean checkForProperVerification() { boolean good = false; try { String vid = aThis.headerMap.get("Verification-ID"); int ivid = Integer.decode(vid); Verification ver = new Verification(ivid); good = aThis.headerMap.get("Verification").equals(ver.getHash()); } catch (VerificationIDReusedException ex) { XmlRpc xmlrpc = new XmlRpc("resendItem"); String id = aThis.headerMap.get("ID"); int iid = Integer.decode(id); xmlrpc.addParam(iid); xmlrpc.execute(); } catch (Exception ex) { Logger.getLogger(WellFormedItem.class.getName()).log(Level.SEVERE, null, ex); } return good; } private boolean checkForRequiredHeaders() { boolean good = true; good = (good ? checkForRequiredHeader("ID") : false); good = (good ? checkForRequiredHeader("Verification") : false); good = (good ? checkForRequiredHeader("Verification-ID") : false); good = (good ? checkForRequiredHeader("Subscription") : false); good = (good ? checkForRequiredHeader("Title") : false); good = (good ? checkForRequiredHeader("Author") : false); good = (good ? checkForRequiredHeader("URL") : false); if (!Wrapper.getSubscription(aThis.headerMap.get("Subscription")).getPassword().equals("")) { good = (good ? checkForRequiredHeader("Encryption-ID") : false); } return good; } private boolean checkForRequiredHeader(String string) { return checkForRequiredHeader(aThis.headerMap, string); } public static boolean checkForRequiredHeader(HashMap<String, String> headerMap, String string) { return headerMap.containsKey(string); } private boolean checkForSafeURL() { try { URL url = new URL(aThis.headerMap.get("URL")); URI subUrl = new URI(aThis.headerMap.get("Subscription")); return url.getHost().equals(subUrl.getHost()); } catch (URISyntaxException ex) { Logger.getLogger(WellFormedItem.class.getName()).log(Level.SEVERE, null, ex); return false; } catch (MalformedURLException ex) { Logger.getLogger(WellFormedItem.class.getName()).log(Level.SEVERE, null, ex); return false; } } private boolean checkForSubscription() { boolean good = Wrapper.existsSubscription(aThis.headerMap.get("Subscription")); if (!good) { Subscription s = new Subscription(); s.setURL(aThis.headerMap.get("Subscription")); SubscriptionFile.deleteSubscription(s, false); } return good; } }