Compare commits
126 Commits
0.81
...
code-clean
Author | SHA1 | Date | |
---|---|---|---|
![]() |
d3cf9e8686 | ||
![]() |
7bd7701aeb | ||
![]() |
7b6438dce5 | ||
![]() |
a7902632bc | ||
![]() |
199e6577bb | ||
![]() |
00fd0aed62 | ||
![]() |
daaebe027d | ||
![]() |
3d39e75ffd | ||
![]() |
e013c093d8 | ||
![]() |
5b51fc2c27 | ||
![]() |
65e43abe02 | ||
![]() |
7f810f86d0 | ||
![]() |
899974c339 | ||
![]() |
6f30aeaf06 | ||
![]() |
d285063b4f | ||
![]() |
ffa282671b | ||
![]() |
e9acc1fe35 | ||
![]() |
04ebfedb84 | ||
![]() |
23d451cf92 | ||
![]() |
44628a1358 | ||
![]() |
04782aa099 | ||
![]() |
ff4302eb2b | ||
![]() |
9185a4daf2 | ||
![]() |
6b6a73dbdb | ||
![]() |
1729656189 | ||
![]() |
08b31efbfc | ||
![]() |
e124d61115 | ||
![]() |
e6e914cefe | ||
![]() |
4d2e68f79d | ||
![]() |
b5bb8ec694 | ||
![]() |
f0651edb06 | ||
![]() |
49ce0162d1 | ||
![]() |
153a49e18f | ||
![]() |
88cc54217c | ||
![]() |
83bb92c0cb | ||
![]() |
f337e64b81 | ||
![]() |
42f90273e2 | ||
![]() |
616d8429b7 | ||
![]() |
3261fd1505 | ||
![]() |
4ea8fd4826 | ||
![]() |
c899f7b1e7 | ||
![]() |
02bc927262 | ||
![]() |
5393d7f26f | ||
![]() |
fa66c26b09 | ||
![]() |
eec31ad3db | ||
![]() |
3a770cb518 | ||
![]() |
7de36bc86c | ||
![]() |
c0bf732253 | ||
![]() |
49948a524e | ||
![]() |
ac792dbcd5 | ||
![]() |
db8508e75b | ||
![]() |
95e0642126 | ||
![]() |
54b5be97e2 | ||
![]() |
8bebe2a920 | ||
![]() |
fedb2d3707 | ||
![]() |
b605ea515f | ||
![]() |
a38d18c049 | ||
![]() |
a0be345f86 | ||
![]() |
e08ce1c71e | ||
![]() |
f25a29052f | ||
![]() |
13c5042006 | ||
![]() |
01ce1a2f13 | ||
![]() |
8430e3b952 | ||
![]() |
ac09b72be3 | ||
![]() |
d901711c7b | ||
![]() |
88517a7b52 | ||
![]() |
39eb695522 | ||
![]() |
009bac364c | ||
![]() |
9741b21def | ||
![]() |
df7bc109ed | ||
![]() |
8cd9b53be3 | ||
![]() |
9db61be253 | ||
![]() |
78a1794568 | ||
![]() |
aa9805e107 | ||
![]() |
a992553ffb | ||
![]() |
3a30961cd1 | ||
![]() |
a6aba7b5f7 | ||
![]() |
26c4152bf6 | ||
![]() |
8230fe92a7 | ||
![]() |
6d0cda9e67 | ||
![]() |
12992c461b | ||
![]() |
531963c1c0 | ||
![]() |
8bfb7cdd27 | ||
![]() |
40899889a0 | ||
![]() |
bc88ca80fd | ||
![]() |
3b3744ffff | ||
![]() |
9cd6ce888e | ||
![]() |
7b2216a12f | ||
![]() |
1946669b82 | ||
![]() |
bb14021bc0 | ||
![]() |
51510abaed | ||
![]() |
f837eb18d5 | ||
![]() |
bf4b160dcd | ||
![]() |
7bd08ab6e0 | ||
![]() |
647c0523e8 | ||
![]() |
58b874d17f | ||
![]() |
969d2769fd | ||
![]() |
d88d6b2f61 | ||
![]() |
b420dc0a28 | ||
![]() |
0489a2774f | ||
![]() |
49f394acca | ||
![]() |
dd788b15ca | ||
![]() |
84981fa801 | ||
![]() |
d328dd1ca0 | ||
![]() |
590f2c7cd8 | ||
![]() |
e93ad94c89 | ||
![]() |
203decf121 | ||
![]() |
5ab871b51f | ||
![]() |
858d03fa2b | ||
![]() |
374ce51eff | ||
![]() |
cd3dafe9c8 | ||
![]() |
8c256241cb | ||
![]() |
18cc8eb962 | ||
![]() |
f1fd2f6fb6 | ||
![]() |
691dff77a0 | ||
![]() |
0910986d52 | ||
![]() |
8d4e38ccdf | ||
![]() |
e67c266ce0 | ||
![]() |
9c12df60d2 | ||
![]() |
5fb224fdfa | ||
![]() |
9a0daa480d | ||
![]() |
b041f7f8c7 | ||
![]() |
42cb2aae64 | ||
![]() |
449e3dbee6 | ||
![]() |
422bfa6c18 | ||
![]() |
f1909ec923 |
464
.eslintrc.js
@@ -2,251 +2,251 @@ module.exports = {
|
||||
env: {
|
||||
browser: true,
|
||||
es6: true,
|
||||
webextensions: true
|
||||
webextensions: true,
|
||||
},
|
||||
extends: 'eslint:recommended',
|
||||
extends: "eslint:recommended",
|
||||
globals: {
|
||||
Atomics: 'readonly',
|
||||
SharedArrayBuffer: 'readonly'
|
||||
Atomics: "readonly",
|
||||
SharedArrayBuffer: "readonly",
|
||||
},
|
||||
parserOptions: {
|
||||
ecmaVersion: 2018
|
||||
ecmaVersion: 2018,
|
||||
},
|
||||
rules: {
|
||||
'accessor-pairs': 'error',
|
||||
'array-bracket-newline': 'error',
|
||||
'array-bracket-spacing': ['error', 'never'],
|
||||
'array-callback-return': 'error',
|
||||
'array-element-newline': 'error',
|
||||
'arrow-body-style': 'error',
|
||||
'arrow-parens': ['error', 'as-needed'],
|
||||
'arrow-spacing': [
|
||||
'error',
|
||||
"accessor-pairs": "error",
|
||||
"array-bracket-newline": "error",
|
||||
"array-bracket-spacing": ["error", "never"],
|
||||
"array-callback-return": "error",
|
||||
"array-element-newline": "error",
|
||||
"arrow-body-style": "error",
|
||||
"arrow-parens": ["error", "as-needed"],
|
||||
"arrow-spacing": [
|
||||
"error",
|
||||
{
|
||||
after: true,
|
||||
before: true
|
||||
}
|
||||
before: true,
|
||||
},
|
||||
],
|
||||
'block-scoped-var': 'off',
|
||||
'block-spacing': 'error',
|
||||
'brace-style': ['error', '1tbs'],
|
||||
'callback-return': 'error',
|
||||
camelcase: 'off',
|
||||
'capitalized-comments': 'off',
|
||||
'class-methods-use-this': 'error',
|
||||
'comma-dangle': 'error',
|
||||
'comma-spacing': [
|
||||
'error',
|
||||
"block-scoped-var": "off",
|
||||
"block-spacing": "error",
|
||||
"brace-style": ["error", "1tbs"],
|
||||
"callback-return": "error",
|
||||
camelcase: "off",
|
||||
"capitalized-comments": "off",
|
||||
"class-methods-use-this": "error",
|
||||
"comma-dangle": "error",
|
||||
"comma-spacing": [
|
||||
"error",
|
||||
{
|
||||
after: true,
|
||||
before: false
|
||||
}
|
||||
before: false,
|
||||
},
|
||||
],
|
||||
'comma-style': ['error', 'last'],
|
||||
complexity: 'error',
|
||||
'computed-property-spacing': ['error', 'never'],
|
||||
'consistent-return': 'off',
|
||||
'consistent-this': 'error',
|
||||
curly: 'error',
|
||||
'default-case': 'error',
|
||||
'default-param-last': 'error',
|
||||
'dot-location': 'off',
|
||||
'dot-notation': 'off',
|
||||
'eol-last': 'error',
|
||||
eqeqeq: 'off',
|
||||
'func-call-spacing': 'error',
|
||||
'func-name-matching': 'error',
|
||||
'func-names': 'off',
|
||||
'func-style': 'off',
|
||||
'function-call-argument-newline': ['error', 'consistent'],
|
||||
'function-paren-newline': 'off',
|
||||
'generator-star-spacing': 'error',
|
||||
'global-require': 'error',
|
||||
'guard-for-in': 'error',
|
||||
'handle-callback-err': 'error',
|
||||
'id-blacklist': 'error',
|
||||
'id-length': 'error',
|
||||
'id-match': 'error',
|
||||
'implicit-arrow-linebreak': ['error', 'beside'],
|
||||
indent: 'off',
|
||||
'indent-legacy': 'off',
|
||||
'init-declarations': 'error',
|
||||
'jsx-quotes': 'error',
|
||||
'key-spacing': 'error',
|
||||
'keyword-spacing': [
|
||||
'error',
|
||||
"comma-style": ["error", "last"],
|
||||
complexity: "error",
|
||||
"computed-property-spacing": ["error", "never"],
|
||||
"consistent-return": "off",
|
||||
"consistent-this": "error",
|
||||
curly: "error",
|
||||
"default-case": "error",
|
||||
"default-param-last": "error",
|
||||
"dot-location": "off",
|
||||
"dot-notation": "off",
|
||||
"eol-last": "error",
|
||||
eqeqeq: "off",
|
||||
"func-call-spacing": "error",
|
||||
"func-name-matching": "error",
|
||||
"func-names": "off",
|
||||
"func-style": "off",
|
||||
"function-call-argument-newline": ["error", "consistent"],
|
||||
"function-paren-newline": "off",
|
||||
"generator-star-spacing": "error",
|
||||
"global-require": "error",
|
||||
"guard-for-in": "error",
|
||||
"handle-callback-err": "error",
|
||||
"id-blacklist": "error",
|
||||
"id-length": "error",
|
||||
"id-match": "error",
|
||||
"implicit-arrow-linebreak": ["error", "beside"],
|
||||
indent: "off",
|
||||
"indent-legacy": "off",
|
||||
"init-declarations": "error",
|
||||
"jsx-quotes": "error",
|
||||
"key-spacing": "error",
|
||||
"keyword-spacing": [
|
||||
"error",
|
||||
{
|
||||
after: true,
|
||||
before: true
|
||||
}
|
||||
before: true,
|
||||
},
|
||||
],
|
||||
'line-comment-position': 'error',
|
||||
'linebreak-style': ['error', 'unix'],
|
||||
'lines-around-comment': 'off',
|
||||
'lines-around-directive': 'error',
|
||||
'lines-between-class-members': 'error',
|
||||
'max-classes-per-file': 'error',
|
||||
'max-depth': 'error',
|
||||
'max-len': 'error',
|
||||
'max-lines': 'off',
|
||||
'max-lines-per-function': 'off',
|
||||
'max-nested-callbacks': 'error',
|
||||
'max-params': 'error',
|
||||
'max-statements': 'off',
|
||||
'max-statements-per-line': 'error',
|
||||
'multiline-comment-style': ['error', 'bare-block'],
|
||||
'multiline-ternary': 'error',
|
||||
'new-cap': 'off',
|
||||
'new-parens': 'error',
|
||||
'newline-after-var': 'off',
|
||||
'newline-before-return': 'off',
|
||||
'newline-per-chained-call': 'error',
|
||||
'no-alert': 'error',
|
||||
'no-array-constructor': 'error',
|
||||
'no-await-in-loop': 'error',
|
||||
'no-bitwise': 'error',
|
||||
'no-buffer-constructor': 'error',
|
||||
'no-caller': 'error',
|
||||
'no-catch-shadow': 'error',
|
||||
'no-confusing-arrow': 'error',
|
||||
'no-console': 'off',
|
||||
'no-continue': 'error',
|
||||
'no-div-regex': 'error',
|
||||
'no-duplicate-imports': 'error',
|
||||
'no-else-return': 'off',
|
||||
'no-empty-function': 'error',
|
||||
'no-eq-null': 'error',
|
||||
'no-eval': 'error',
|
||||
'no-extend-native': 'error',
|
||||
'no-extra-bind': 'error',
|
||||
'no-extra-label': 'error',
|
||||
'no-extra-parens': 'error',
|
||||
'no-floating-decimal': 'error',
|
||||
'no-implicit-coercion': 'error',
|
||||
'no-implicit-globals': 'off',
|
||||
'no-implied-eval': 'error',
|
||||
'no-import-assign': 'error',
|
||||
'no-inline-comments': 'error',
|
||||
'no-inner-declarations': 'off',
|
||||
'no-invalid-this': 'error',
|
||||
'no-iterator': 'error',
|
||||
'no-label-var': 'error',
|
||||
'no-labels': 'error',
|
||||
'no-lone-blocks': 'error',
|
||||
'no-lonely-if': 'error',
|
||||
'no-loop-func': 'error',
|
||||
'no-magic-numbers': 'off',
|
||||
'no-mixed-operators': 'error',
|
||||
'no-mixed-requires': 'error',
|
||||
'no-multi-assign': 'error',
|
||||
'no-multi-spaces': 'error',
|
||||
'no-multi-str': 'error',
|
||||
'no-multiple-empty-lines': 'error',
|
||||
'no-native-reassign': 'error',
|
||||
'no-negated-condition': 'error',
|
||||
'no-negated-in-lhs': 'error',
|
||||
'no-nested-ternary': 'error',
|
||||
'no-new': 'error',
|
||||
'no-new-func': 'error',
|
||||
'no-new-object': 'error',
|
||||
'no-new-require': 'error',
|
||||
'no-new-wrappers': 'error',
|
||||
'no-octal-escape': 'error',
|
||||
'no-param-reassign': 'error',
|
||||
'no-path-concat': 'error',
|
||||
'no-plusplus': 'error',
|
||||
'no-process-env': 'error',
|
||||
'no-process-exit': 'error',
|
||||
'no-proto': 'error',
|
||||
'no-restricted-globals': 'error',
|
||||
'no-restricted-imports': 'error',
|
||||
'no-restricted-modules': 'error',
|
||||
'no-restricted-properties': 'error',
|
||||
'no-restricted-syntax': 'error',
|
||||
'no-return-assign': 'error',
|
||||
'no-return-await': 'error',
|
||||
'no-script-url': 'error',
|
||||
'no-self-compare': 'error',
|
||||
'no-sequences': 'error',
|
||||
'no-shadow': 'error',
|
||||
'no-spaced-func': 'error',
|
||||
'no-sync': 'error',
|
||||
'no-tabs': 'error',
|
||||
'no-template-curly-in-string': 'error',
|
||||
'no-ternary': 'error',
|
||||
'no-throw-literal': 'error',
|
||||
'no-trailing-spaces': 'error',
|
||||
'no-undef-init': 'error',
|
||||
'no-undefined': 'off',
|
||||
'no-underscore-dangle': 'error',
|
||||
'no-unmodified-loop-condition': 'error',
|
||||
'no-unneeded-ternary': 'error',
|
||||
'no-unused-expressions': 'error',
|
||||
'no-unused-vars': 'off',
|
||||
'no-use-before-define': 'off',
|
||||
'no-useless-call': 'error',
|
||||
'no-useless-computed-key': 'error',
|
||||
'no-useless-concat': 'error',
|
||||
'no-useless-constructor': 'error',
|
||||
'no-useless-rename': 'error',
|
||||
'no-useless-return': 'error',
|
||||
'no-var': 'off',
|
||||
'no-void': 'error',
|
||||
'no-warning-comments': 'error',
|
||||
'no-whitespace-before-property': 'error',
|
||||
'nonblock-statement-body-position': 'error',
|
||||
'object-curly-newline': 'error',
|
||||
'object-curly-spacing': 'off',
|
||||
'object-property-newline': 'error',
|
||||
'object-shorthand': 'error',
|
||||
'one-var': 'off',
|
||||
'one-var-declaration-per-line': 'error',
|
||||
'operator-assignment': 'error',
|
||||
'operator-linebreak': 'error',
|
||||
'padded-blocks': 'off',
|
||||
'padding-line-between-statements': 'error',
|
||||
'prefer-arrow-callback': 'off',
|
||||
'prefer-const': 'off',
|
||||
'prefer-destructuring': 'off',
|
||||
'prefer-named-capture-group': 'error',
|
||||
'prefer-numeric-literals': 'error',
|
||||
'prefer-object-spread': 'error',
|
||||
'prefer-promise-reject-errors': 'error',
|
||||
'prefer-reflect': 'error',
|
||||
'prefer-regex-literals': 'error',
|
||||
'prefer-rest-params': 'error',
|
||||
'prefer-spread': 'error',
|
||||
'prefer-template': 'off',
|
||||
'quote-props': 'off',
|
||||
quotes: ['error', 'double'],
|
||||
radix: 'error',
|
||||
'require-await': 'error',
|
||||
'require-jsdoc': 'off',
|
||||
'require-unicode-regexp': 'error',
|
||||
'rest-spread-spacing': 'error',
|
||||
semi: 'error',
|
||||
'semi-spacing': 'error',
|
||||
'semi-style': ['error', 'last'],
|
||||
'sort-imports': 'error',
|
||||
'sort-keys': 'off',
|
||||
'sort-vars': 'error',
|
||||
'space-before-blocks': 'error',
|
||||
'space-before-function-paren': 'off',
|
||||
'space-in-parens': ['error', 'never'],
|
||||
'space-infix-ops': 'error',
|
||||
'space-unary-ops': 'error',
|
||||
'spaced-comment': 'off',
|
||||
strict: ['error', 'never'],
|
||||
'switch-colon-spacing': 'error',
|
||||
'symbol-description': 'error',
|
||||
'template-curly-spacing': 'error',
|
||||
'template-tag-spacing': 'error',
|
||||
'unicode-bom': ['error', 'never'],
|
||||
'valid-jsdoc': 'error',
|
||||
'vars-on-top': 'off',
|
||||
'wrap-iife': 'error',
|
||||
'wrap-regex': 'error',
|
||||
'yield-star-spacing': 'error',
|
||||
yoda: ['error', 'never']
|
||||
}
|
||||
"line-comment-position": "error",
|
||||
"linebreak-style": ["error", "unix"],
|
||||
"lines-around-comment": "off",
|
||||
"lines-around-directive": "error",
|
||||
"lines-between-class-members": "error",
|
||||
"max-classes-per-file": "error",
|
||||
"max-depth": "error",
|
||||
"max-len": "error",
|
||||
"max-lines": "off",
|
||||
"max-lines-per-function": "off",
|
||||
"max-nested-callbacks": "error",
|
||||
"max-params": "error",
|
||||
"max-statements": "off",
|
||||
"max-statements-per-line": "error",
|
||||
"multiline-comment-style": ["error", "bare-block"],
|
||||
"multiline-ternary": "error",
|
||||
"new-cap": "off",
|
||||
"new-parens": "error",
|
||||
"newline-after-var": "off",
|
||||
"newline-before-return": "off",
|
||||
"newline-per-chained-call": "error",
|
||||
"no-alert": "error",
|
||||
"no-array-constructor": "error",
|
||||
"no-await-in-loop": "error",
|
||||
"no-bitwise": "error",
|
||||
"no-buffer-constructor": "error",
|
||||
"no-caller": "error",
|
||||
"no-catch-shadow": "error",
|
||||
"no-confusing-arrow": "error",
|
||||
"no-console": "off",
|
||||
"no-continue": "error",
|
||||
"no-div-regex": "error",
|
||||
"no-duplicate-imports": "error",
|
||||
"no-else-return": "off",
|
||||
"no-empty-function": "error",
|
||||
"no-eq-null": "error",
|
||||
"no-eval": "error",
|
||||
"no-extend-native": "error",
|
||||
"no-extra-bind": "error",
|
||||
"no-extra-label": "error",
|
||||
"no-extra-parens": "error",
|
||||
"no-floating-decimal": "error",
|
||||
"no-implicit-coercion": "error",
|
||||
"no-implicit-globals": "off",
|
||||
"no-implied-eval": "error",
|
||||
"no-import-assign": "error",
|
||||
"no-inline-comments": "error",
|
||||
"no-inner-declarations": "off",
|
||||
"no-invalid-this": "error",
|
||||
"no-iterator": "error",
|
||||
"no-label-var": "error",
|
||||
"no-labels": "error",
|
||||
"no-lone-blocks": "error",
|
||||
"no-lonely-if": "error",
|
||||
"no-loop-func": "error",
|
||||
"no-magic-numbers": "off",
|
||||
"no-mixed-operators": "error",
|
||||
"no-mixed-requires": "error",
|
||||
"no-multi-assign": "error",
|
||||
"no-multi-spaces": "error",
|
||||
"no-multi-str": "error",
|
||||
"no-multiple-empty-lines": "error",
|
||||
"no-native-reassign": "error",
|
||||
"no-negated-condition": "error",
|
||||
"no-negated-in-lhs": "error",
|
||||
"no-nested-ternary": "error",
|
||||
"no-new": "error",
|
||||
"no-new-func": "error",
|
||||
"no-new-object": "error",
|
||||
"no-new-require": "error",
|
||||
"no-new-wrappers": "error",
|
||||
"no-octal-escape": "error",
|
||||
"no-param-reassign": "error",
|
||||
"no-path-concat": "error",
|
||||
"no-plusplus": "error",
|
||||
"no-process-env": "error",
|
||||
"no-process-exit": "error",
|
||||
"no-proto": "error",
|
||||
"no-restricted-globals": "error",
|
||||
"no-restricted-imports": "error",
|
||||
"no-restricted-modules": "error",
|
||||
"no-restricted-properties": "error",
|
||||
"no-restricted-syntax": "error",
|
||||
"no-return-assign": "error",
|
||||
"no-return-await": "error",
|
||||
"no-script-url": "error",
|
||||
"no-self-compare": "error",
|
||||
"no-sequences": "error",
|
||||
"no-shadow": "error",
|
||||
"no-spaced-func": "error",
|
||||
"no-sync": "error",
|
||||
"no-tabs": "error",
|
||||
"no-template-curly-in-string": "error",
|
||||
"no-ternary": "error",
|
||||
"no-throw-literal": "error",
|
||||
"no-trailing-spaces": "error",
|
||||
"no-undef-init": "error",
|
||||
"no-undefined": "off",
|
||||
"no-underscore-dangle": "error",
|
||||
"no-unmodified-loop-condition": "error",
|
||||
"no-unneeded-ternary": "error",
|
||||
"no-unused-expressions": "error",
|
||||
"no-unused-vars": "off",
|
||||
"no-use-before-define": "off",
|
||||
"no-useless-call": "error",
|
||||
"no-useless-computed-key": "error",
|
||||
"no-useless-concat": "error",
|
||||
"no-useless-constructor": "error",
|
||||
"no-useless-rename": "error",
|
||||
"no-useless-return": "error",
|
||||
"no-var": "off",
|
||||
"no-void": "error",
|
||||
"no-warning-comments": "error",
|
||||
"no-whitespace-before-property": "error",
|
||||
"nonblock-statement-body-position": "error",
|
||||
"object-curly-newline": "error",
|
||||
"object-curly-spacing": "off",
|
||||
"object-property-newline": "error",
|
||||
"object-shorthand": "error",
|
||||
"one-var": "off",
|
||||
"one-var-declaration-per-line": "error",
|
||||
"operator-assignment": "error",
|
||||
"operator-linebreak": "error",
|
||||
"padded-blocks": "off",
|
||||
"padding-line-between-statements": "error",
|
||||
"prefer-arrow-callback": "off",
|
||||
"prefer-const": "off",
|
||||
"prefer-destructuring": "off",
|
||||
"prefer-named-capture-group": "error",
|
||||
"prefer-numeric-literals": "error",
|
||||
"prefer-object-spread": "error",
|
||||
"prefer-promise-reject-errors": "error",
|
||||
"prefer-reflect": "error",
|
||||
"prefer-regex-literals": "error",
|
||||
"prefer-rest-params": "error",
|
||||
"prefer-spread": "error",
|
||||
"prefer-template": "off",
|
||||
"quote-props": "off",
|
||||
quotes: ["error", "double"],
|
||||
radix: "error",
|
||||
"require-await": "error",
|
||||
"require-jsdoc": "off",
|
||||
"require-unicode-regexp": "error",
|
||||
"rest-spread-spacing": "error",
|
||||
semi: "error",
|
||||
"semi-spacing": "error",
|
||||
"semi-style": ["error", "last"],
|
||||
"sort-imports": "error",
|
||||
"sort-keys": "off",
|
||||
"sort-vars": "error",
|
||||
"space-before-blocks": "error",
|
||||
"space-before-function-paren": "off",
|
||||
"space-in-parens": ["error", "never"],
|
||||
"space-infix-ops": "error",
|
||||
"space-unary-ops": "error",
|
||||
"spaced-comment": "off",
|
||||
strict: ["error", "never"],
|
||||
"switch-colon-spacing": "error",
|
||||
"symbol-description": "error",
|
||||
"template-curly-spacing": "error",
|
||||
"template-tag-spacing": "error",
|
||||
"unicode-bom": ["error", "never"],
|
||||
"valid-jsdoc": "error",
|
||||
"vars-on-top": "off",
|
||||
"wrap-iife": "error",
|
||||
"wrap-regex": "error",
|
||||
"yield-star-spacing": "error",
|
||||
yoda: ["error", "never"],
|
||||
},
|
||||
};
|
||||
|
52
Makefile
@@ -32,16 +32,16 @@ ls:
|
||||
ls -lah $(PREFIX)/share/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}
|
||||
|
||||
clean: rc clean-artifacts
|
||||
rm -fr ../i2psetproxy.js.zip ../i2p_proxy*.xpi ../i2p*.xpi *.torrent #../i2psetproxy.js_*.*
|
||||
rm -fr ../i2psetproxy.js.zip ../i2p_proxy*.xpi *.torrent #../i2psetproxy.js_*.*
|
||||
|
||||
## EVEN RELEASES are AMO RELEASES
|
||||
## ODD RELEASES are SELFHOSTED RELEASES
|
||||
|
||||
MOZ_VERSION=0.82
|
||||
VERSION=0.81
|
||||
MOZ_VERSION=0.108
|
||||
VERSION=0.107
|
||||
|
||||
## INCREMENT THIS EVERY TIME YOU DO A RELEASE
|
||||
LAST_VERSION=0.79
|
||||
LAST_VERSION=0.105
|
||||
|
||||
YELLOW=F7E59A
|
||||
ORANGE=FFC56D
|
||||
@@ -64,7 +64,7 @@ amo-readme:
|
||||
sed 's|</h3>|</strong>|g' | \
|
||||
grep -v '<img' > amo-index.html
|
||||
|
||||
MAGNET=`torrent2magnet i2ppb@eyedeekay.github.io.xpi.torrent`
|
||||
MAGNET=`rhash --magnet i2ppb@eyedeekay.github.io.xpi.torrent`
|
||||
|
||||
index:
|
||||
@echo "<!DOCTYPE html>" > index.html
|
||||
@@ -98,15 +98,15 @@ version:
|
||||
sed -i 's|7647|7657|g' *.js* torrent/*.js*
|
||||
sed -i 's|$(shell grep "\"version\": " manifest.json)| \"version\": \"$(VERSION)\",|g' manifest.json
|
||||
# sed -i 's|$(shell grep "\"version_name\": " manifest.json)| \"version_name\": \"$(VERSION)\",|g' manifest.json
|
||||
sed -si 's|$(shell grep $(LAST_VERSION) _locales/en/messages.json)| "message": "$(VERSION)",|g' _locales/en/messages.json; true
|
||||
sed -si 's|$(shell grep $(MOZ_VERSION) _locales/en/messages.json)| "message": "$(VERSION)",|g' _locales/en/messages.json; true
|
||||
find . -name 'messages.json' -exec sed -i 's|$(LAST_VERSION)|$(VERSION)|g' {} \;
|
||||
find . -name 'messages.json' -exec sed -i 's|$(MOZ_VERSION)|$(VERSION)|g' {} \;
|
||||
|
||||
moz-version:
|
||||
sed -i 's|7647|7657|g' *.js* torrent/*.js*
|
||||
sed -i 's|$(shell grep "\"version\": " manifest.json)| \"version\": \"$(MOZ_VERSION)\",|g' manifest.json
|
||||
# sed -i 's|$(shell grep "\"version_name\": " manifest.json)| \"version_name\": \"$(MOZ_VERSION)\",|g' manifest.json
|
||||
sed -si 's|$(shell grep $(LAST_VERSION) _locales/en/messages.json)| "message": "$(MOZ_VERSION)",|g' _locales/en/messages.json; true
|
||||
sed -si 's|$(shell grep $(VERSION) _locales/en/messages.json)| "message": "$(MOZ_VERSION)",|g' _locales/en/messages.json; true
|
||||
find . -name 'messages.json' -exec sed -i 's|$(LAST_VERSION)|$(MOZ_VERSION)|g' {} \;
|
||||
find . -name 'messages.json' -exec sed -i 's|$(VERSION)|$(MOZ_VERSION)|g' {} \;
|
||||
|
||||
rhz-version:
|
||||
sed -i 's|$(shell grep "\"version\": " manifest.json)| \"version\": \"$(VERSION)1\",|g' manifest.json
|
||||
@@ -168,7 +168,7 @@ moz-sign: version clean-artifacts
|
||||
@echo "Using the 'sign' target to instantly sign an extension for self-distribution"
|
||||
@echo "requires a JWT API Key and Secret from addons.mozilla.org to be made available"
|
||||
@echo "to the Makefile under the variables WEB_EXT_API_KEY and WEB_EXT_API_SECRET."
|
||||
$(HOME)/node_modules/web-ext-submit/extender.sh --channel unlisted --config-discovery false --api-key $(WEB_EXT_API_KEY) --api-secret $(WEB_EXT_API_SECRET)
|
||||
$(HOME)/node_modules/web-ext/bin/web-ext sign --channel unlisted --config-discovery false --api-key $(WEB_EXT_API_KEY) --api-secret $(WEB_EXT_API_SECRET)
|
||||
make copyss
|
||||
sleep 5
|
||||
|
||||
@@ -182,7 +182,7 @@ moz-submit: moz-version
|
||||
@echo "to the Makefile under the variables WEB_EXT_API_KEY and WEB_EXT_API_SECRET."
|
||||
mv manifest.json .manifest.json
|
||||
grep -v update_url .manifest.json > manifest.json
|
||||
web-ext sign --channel listed --config-discovery false --api-key $(WEB_EXT_API_KEY) --api-secret $(WEB_EXT_API_SECRET); true
|
||||
$(HOME)/node_modules/web-ext/bin/web-ext sign --channel listed --config-discovery false --api-key $(WEB_EXT_API_KEY) --api-secret $(WEB_EXT_API_SECRET); true
|
||||
sleep 5
|
||||
mv .manifest.json manifest.json
|
||||
|
||||
@@ -286,6 +286,9 @@ fmt-js:
|
||||
fixjsstyle manifest.json
|
||||
#find . -path ./node_modules -prune -o -name '*.json' -exec fixjsstyle --write {} \;
|
||||
|
||||
fmt-prettier:
|
||||
find . -name '*.js*' -exec $(HOME)/node_modules/.bin/prettier -w {} \;
|
||||
|
||||
lint:
|
||||
|
||||
gjslint *.js; true
|
||||
@@ -325,7 +328,7 @@ upload-updatemanifest:
|
||||
gothub upload -R -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t docs -n "updateManifest.json" -f updateManifest.json
|
||||
|
||||
webext:
|
||||
web-ext run -u "about:devtools-toolbox?type=extension&id=i2ppb%40eyedeekay.github.io"
|
||||
$(HOME)/node_modules/web-ext/bin/web-ext run --firefox /usr/bin/firefox -u "about:devtools-toolbox?type=extension&id=i2ppb%40eyedeekay.github.io"
|
||||
|
||||
snark-mirror:
|
||||
http_proxy=http://127.0.0.1:4444 wget -c -O ../i2psnark-rpc.su3 http://stats.i2p/i2p/plugins/i2psnark-rpc.su3
|
||||
@@ -336,7 +339,30 @@ snark-mirror:
|
||||
seed:
|
||||
cp -v "./i2ppb-$(VERSION)@eyedeekay.github.io.xpi.torrent" "$(HOME)/.i2p/i2psnark"
|
||||
cp -v "../i2ppb-$(VERSION)@eyedeekay.github.io.xpi" "$(HOME)/.i2p/i2psnark"
|
||||
|
||||
|
||||
wire:
|
||||
cp -v "./i2ppb-$(VERSION)@eyedeekay.github.io.xpi.torrent" "$(HOME)/i2p/MuWireDownloads/"
|
||||
cp -v "../i2ppb-$(VERSION)@eyedeekay.github.io.xpi" "$(HOME)/i2p/MuWireDownloads/"
|
||||
|
||||
ndtest:
|
||||
$(HOME)/node_modules/web-ext/bin/web-ext run --firefox /usr/bin/firefox -u about:debugging \
|
||||
-u http://127.0.0.1:7657/home \
|
||||
-u http://127.0.0.1:7657/i2ptunnel \
|
||||
-u http://127.0.0.1:7657/i2psnark \
|
||||
-u http://127.0.0.1:7657/webmail \
|
||||
-u http://127.0.0.1:7657/MuWire \
|
||||
-u http://idk.i2p/video.html \
|
||||
-u http://idk.i2p \
|
||||
-u http://stats.i2p \
|
||||
-u http://tvndxxkxcstbtqfxg7iigco6bj22ff2y6jxikmk7wqkyadkhrd4a.b32.i2p \
|
||||
-u https://ramble.pw \
|
||||
-u https://ramble.pw/f/i2p \
|
||||
|
||||
lht-test:
|
||||
$(HOME)/node_modules/web-ext/bin/web-ext run --firefox /usr/bin/firefox -u about:debugging \
|
||||
-u http://localhost:7657/home \
|
||||
-u http://localhost:7657/i2ptunnel \
|
||||
-u http://localhost:7657/i2psnark \
|
||||
-u http://localhost:7657/webmail \
|
||||
-u http://localhost:7657/MuWire/ \
|
||||
-u http://idk.i2p
|
||||
|
15
README.md
@@ -115,15 +115,16 @@ Usage:
|
||||
the use of I2PSnark as a peer-to-peer delivery mechanism for media files.
|
||||
* 
|
||||
* 
|
||||
* 
|
||||
* [Started] **Indicate** the level of authenticity provided by TLS. TLS is
|
||||
optional on I2P for now, but some sites offer it anyway. TLS support is
|
||||
experimental and in the works.
|
||||
* [Started] **Provide** alternate, in-I2P destinations for web sites that want to
|
||||
mirror their content within I2P.
|
||||
* [Started] **Enhance** the I2P browsing experience by allowing site developers
|
||||
* [Done] **Enhance** the I2P browsing experience by allowing site developers
|
||||
distribute some or all of their resources as torrents, allowing the torrents to
|
||||
be treated effectively as a CDN.
|
||||
* 
|
||||
* [Done] **Indicate** the level of authenticity provided by TLS. TLS is
|
||||
optional on I2P for now, but some sites offer it anyway. TLS support is
|
||||
experimental and in the works.
|
||||
* 
|
||||
* [Done] **Provide** alternate, in-I2P destinations for web sites that want to
|
||||
mirror their content within I2P.
|
||||
* [barely started] **Isolate** traffic by contextual identity to it's own HTTP
|
||||
Proxy tunnel, each reflecting it's own pseudonymous identity within I2P. The
|
||||
contextual identities. For now, the contextual identities used to manage
|
||||
|
@@ -3,6 +3,10 @@
|
||||
"message": "I2P In Private Browsing",
|
||||
"description": "Name of the extension."
|
||||
},
|
||||
"extensionNameVariant": {
|
||||
"message": "I2P In Private Browsing - Rhizome Variant",
|
||||
"description": "Name of the extension."
|
||||
},
|
||||
"toopieName": {
|
||||
"message": "toopie.html",
|
||||
"description": "Name of the sidebar."
|
||||
@@ -16,7 +20,7 @@
|
||||
"description": "Description of the extension."
|
||||
},
|
||||
"extensionVersion": {
|
||||
"message": "0.77",
|
||||
"message": "0.107",
|
||||
"description": "Version of the extension."
|
||||
},
|
||||
"proxyFailedStatus": {
|
||||
@@ -159,12 +163,28 @@
|
||||
"message": "Web Browser (Private)",
|
||||
"description": "Preface for the browser titlebar"
|
||||
},
|
||||
"localPreface": {
|
||||
"message": "Localhost Browser",
|
||||
"ircPreface": {
|
||||
"message": "Dispatch IRC",
|
||||
"description": "Preface for the browser titlebar"
|
||||
},
|
||||
"localPrefacePrivate": {
|
||||
"message": "Localhost Browser (Private)",
|
||||
"ircPrefacePrivate": {
|
||||
"message": "Dispatch IRC (Private)",
|
||||
"description": "Preface for the browser titlebar"
|
||||
},
|
||||
"blogPreface": {
|
||||
"message": "Blog",
|
||||
"description": "Preface for the browser titlebar"
|
||||
},
|
||||
"blogPrefacePrivate": {
|
||||
"message": "Blog (Private)",
|
||||
"description": "Preface for the browser titlebar"
|
||||
},
|
||||
"botePreface": {
|
||||
"message": "I2P-Bote Mail",
|
||||
"description": "Preface for the browser titlebar"
|
||||
},
|
||||
"botePrefacePrivate": {
|
||||
"message": "I2P-Bote Mail (Private)",
|
||||
"description": "Preface for the browser titlebar"
|
||||
},
|
||||
"routerPreface": {
|
||||
|
314
_locales/es/messages.json
Normal file
@@ -0,0 +1,314 @@
|
||||
{
|
||||
"extensionName": {
|
||||
"message": "I2P en navegación privada",
|
||||
"description": "Nombre de la extensión."
|
||||
},
|
||||
"extensionNameVariant": {
|
||||
"message": "I2P en navegación privada - Rhizome",
|
||||
"description": "Nombre de la extensión."
|
||||
},
|
||||
"toopieName": {
|
||||
"message": "toopie.html",
|
||||
"description": "Nombre de la barra lateral."
|
||||
},
|
||||
"toopieTLS": {
|
||||
"message": "Propiedades del sitio",
|
||||
"description": "Nombre del panel de seguridad."
|
||||
},
|
||||
"extensionDescription": {
|
||||
"message": "Su navegador ahora está configurado para usar I2P.",
|
||||
"description": "Descripción de la extensión."
|
||||
},
|
||||
"extensionVersion": {
|
||||
"message": "0,107",
|
||||
"description": "Versión de la extensión."
|
||||
},
|
||||
"proxyFailedStatus": {
|
||||
"message": "El proxy no está listo",
|
||||
"description": "Estado fallido del proxy."
|
||||
},
|
||||
"proxySuccessStatus": {
|
||||
"message": "El proxy está listo",
|
||||
"description": "Estado fallido del proxy."
|
||||
},
|
||||
"controlHeader": {
|
||||
"message": "Control",
|
||||
"description": "Título del panel de control."
|
||||
},
|
||||
"controlExplain": {
|
||||
"message": "Estos controles se utilizan para personalizar su experiencia de navegación I2P",
|
||||
"description": "Introduce el panel de control."
|
||||
},
|
||||
"clearData": {
|
||||
"message": "Borrar datos de navegación:",
|
||||
"description": "Elemento de menú Borrar datos de navegación."
|
||||
},
|
||||
"clearDesc": {
|
||||
"message": "Use esto para borrar sus datos de navegación I2P.",
|
||||
"description": "Borrar descripción de la acción de datos de navegación."
|
||||
},
|
||||
"enableWebRTC": {
|
||||
"message": "¿Habilitar WebRTC con proxy?",
|
||||
"description": "Etiqueta de casilla de verificación de WebRTC."
|
||||
},
|
||||
"rtcDesc": {
|
||||
"message": "WebRTC está deshabilitado de forma predeterminada, pero puede volver a encenderlo y forzarlo para que respete el proxy. Si es un usuario de la extensión del navegador Snowflake, esta opción está deshabilitada y WebRTC está activado de forma predeterminada.",
|
||||
"description": "Descripción de la acción de WebRTC"
|
||||
},
|
||||
"disableHistory": {
|
||||
"message": "¿Deshabilitar el historial en las pestañas I2P?",
|
||||
"description": "Etiqueta de casilla de verificación del historial."
|
||||
},
|
||||
"histDesc": {
|
||||
"message": "El historial se borra automáticamente cuando se cierran las pestañas de I2P. Si desea borrar el historial sobre la marcha, marque esta casilla.",
|
||||
"description": "Descripción de la acción del historial"
|
||||
},
|
||||
"applicationHeader": {
|
||||
"message": "Aplicaciones",
|
||||
"description": "Encabezado de la sección de aplicaciones."
|
||||
},
|
||||
"applicationExplain": {
|
||||
"message": "Estas aplicaciones funcionan con I2P directamente para brindarles seguridad y privacidad.",
|
||||
"description": "Descripción de la sección de aplicación."
|
||||
},
|
||||
"windowVisitConsole": {
|
||||
"message": "Consola del enrutador:",
|
||||
"description": "Etiqueta de la consola del enrutador."
|
||||
},
|
||||
"routerConsole": {
|
||||
"message": "El punto de entrada para todas las demás aplicaciones I2P es la consola del enrutador I2P. Para visitarla, haga clic aquí.",
|
||||
"description": "Descripción de la consola del enrutador."
|
||||
},
|
||||
"windowVisitHomepage": {
|
||||
"message": "Página de inicio:",
|
||||
"description": "Página de inicio para la etiqueta de extensión."
|
||||
},
|
||||
"abouthome": {
|
||||
"message": "Para obtener más información sobre esta extensión, visite esta página.",
|
||||
"description": "Descripción de la página del botón de extensión."
|
||||
},
|
||||
"windowVisitHelppage": {
|
||||
"message": "Página de ayuda:",
|
||||
"description": "Página de ayuda para la etiqueta de extensión."
|
||||
},
|
||||
"help": {
|
||||
"message": "Para obtener más información sobre esta extensión, visite esta página.",
|
||||
"description": "Descripción de la página del botón de extensión."
|
||||
},
|
||||
"windowVisitI2ptunnel": {
|
||||
"message": "Administrador de servicios ocultos:",
|
||||
"description": "Título para i2ptunnel"
|
||||
},
|
||||
"i2ptunnel": {
|
||||
"message": "I2P tiene una interfaz basada en web para configurar servicios .i2p como sitios web que puede configurar.",
|
||||
"description": "Descripción de i2ptunnel"
|
||||
},
|
||||
"windowVisitSusimail": {
|
||||
"message": "Correo electrónico:",
|
||||
"descripción": "Título del correo electrónico"
|
||||
},
|
||||
"susimail": {
|
||||
"message": "I2P también incluye un cliente de correo web que se puede utilizar para acceder al correo electrónico in-I2P.",
|
||||
"description": "Descripción para correo electrónico"
|
||||
},
|
||||
"windowVisitSnark": {
|
||||
"message": "Bittorrent:",
|
||||
"description": "Título para Bittorrent"
|
||||
},
|
||||
"snark": {
|
||||
"message": "I2P es capaz de compartir archivos de igual a igual de forma anónima utilizando la aplicación bittorrent incorporada.",
|
||||
"description": "Descripción de Bittorrent"
|
||||
},
|
||||
"windowVisitSources": {
|
||||
"message": "Código fuente de extensión:",
|
||||
"description": "Título del enlace del código fuente"
|
||||
},
|
||||
"sources": {
|
||||
"message": "Examine el código fuente aquí",
|
||||
"description": "Descripción del enlace del código fuente"
|
||||
},
|
||||
"windowVisitWebPage": {
|
||||
"message": "Página de inicio de la extensión:",
|
||||
"description": "Visita la página de inicio de la extensión en Github"
|
||||
},
|
||||
"homepage": {
|
||||
"message": "Hay más información disponible aquí",
|
||||
"description": "Encontrar más información"
|
||||
},
|
||||
"windowVisitReleases": {
|
||||
"message": "Extension Releases:",
|
||||
"description": "Visite la página de lanzamiento"
|
||||
},
|
||||
"releases": {
|
||||
"message": "Compruebe si hay nuevas versiones aquí",
|
||||
"description": "Descripción de la nueva página de lanzamiento"
|
||||
},
|
||||
"titlePreface": {
|
||||
"message": "Navegador I2P",
|
||||
"description": "Prefacio de la barra de título del navegador"
|
||||
},
|
||||
"titlePrefacePrivate": {
|
||||
"message": "Navegador I2P (privado)",
|
||||
"description": "Prefacio de la barra de título del navegador"
|
||||
},
|
||||
"extensionPreface": {
|
||||
"message": "Gestión I2P",
|
||||
"description": "Prefacio de la barra de título del navegador"
|
||||
},
|
||||
"webPreface": {
|
||||
"message": "Navegador web",
|
||||
"description": "Prefacio de la barra de título del navegador"
|
||||
},
|
||||
"webPrefacePrivate": {
|
||||
"message": "Navegador web (privado)",
|
||||
"description": "Prefacio de la barra de título del navegador"
|
||||
},
|
||||
"ircPreface": {
|
||||
"message": "Envío de IRC",
|
||||
"description": "Prefacio de la barra de título del navegador"
|
||||
},
|
||||
"ircPrefacePrivate": {
|
||||
"message": "Despacho de IRC (privado)",
|
||||
"description": "Prefacio de la barra de título del navegador"
|
||||
},
|
||||
"blogPreface": {
|
||||
"message": "Blog",
|
||||
"description": "Prefacio de la barra de título del navegador"
|
||||
},
|
||||
"blogPrefacePrivate": {
|
||||
"message": "Blog (Private)",
|
||||
"description": "Prefacio de la barra de título del navegador"
|
||||
},
|
||||
"botePreface": {
|
||||
"message": "I2P-Bote Mail",
|
||||
"description": "Prefacio de la barra de título del navegador"
|
||||
},
|
||||
"botePrefacePrivate": {
|
||||
"message": "I2P-Bote Mail (privado)",
|
||||
"description": "Prefacio de la barra de título del navegador"
|
||||
},
|
||||
"routerPreface": {
|
||||
"message": "Consola del enrutador",
|
||||
"description": "Prefacio de la barra de título del navegador"
|
||||
},
|
||||
"routerPrefacePrivate": {
|
||||
"message": "Consola del enrutador (privada)",
|
||||
"description": "Prefacio de la barra de título del navegador"
|
||||
},
|
||||
"torrentPreface": {
|
||||
"message": "Bittorrent",
|
||||
"description": "Prefacio de la barra de título del navegador"
|
||||
},
|
||||
"torrentPrefacePrivate": {
|
||||
"message": "Bittorrent (privado)",
|
||||
"description": "Prefacio de la barra de título del navegador"
|
||||
},
|
||||
"mailPreface": {
|
||||
"message": "Correo web",
|
||||
"description": "Prefacio de la barra de título del navegador"
|
||||
},
|
||||
"mailPrefacePrivate": {
|
||||
"message": "Correo web (privado)",
|
||||
"description": "Prefacio de la barra de título del navegador"
|
||||
},
|
||||
"i2ptunnelPreface": {
|
||||
"message": "Administrador de servicios ocultos",
|
||||
"description": "Prefacio de la barra de título del navegador"
|
||||
},
|
||||
"i2ptunnelPrefacePrivate": {
|
||||
"message": "Administrador de servicios ocultos (privado)",
|
||||
"description": "Prefacio de la barra de título del navegador"
|
||||
},
|
||||
"muwirePreface": {
|
||||
"message": "MuWire",
|
||||
"description": "Prefacio de la barra de título del navegador"
|
||||
},
|
||||
"muwirePrefacePrivate": {
|
||||
"message": "MuWire (privado)",
|
||||
"description": "Prefacio de la barra de título del navegador"
|
||||
},
|
||||
"resetMessage": {
|
||||
"message": "Reset Tunnel",
|
||||
"description": "Mensaje para el botón Reset Tunnel"
|
||||
},
|
||||
"infoTitle": {
|
||||
"message": "Ayuda I2P",
|
||||
"description": "Título del menú de ayuda"
|
||||
},
|
||||
"infoMessage": {
|
||||
"message": "¡Ahora puede navegar libremente por eepWeb! Su navegador ahora está configurado para navegar de forma anónima en la red I2P. Mientras navega, su tráfico se enrutará a través de otros nodos de red para disfrazar su origen, tanto desde el servidor de los propios nodos. ",
|
||||
"description": "Mensaje de ayuda"
|
||||
},
|
||||
"helpMessage": {
|
||||
"message": "Obtén ayuda adicional",
|
||||
"description": "Mensaje de ayuda"
|
||||
},
|
||||
"newsMessage": {
|
||||
"message": "Visite el blog de I2P para conocer las últimas novedades sobre i2p.",
|
||||
"description": "Mensaje de ayuda"
|
||||
},
|
||||
"forumMessage": {
|
||||
"message": "Visite el Foro I2P para obtener más información o solicitar ayuda",
|
||||
"description": "Mensaje de ayuda"
|
||||
},
|
||||
"proxyHelpText": {
|
||||
"message": "Configure aquí su proxy I2P",
|
||||
"description": "Ayuda para configurar las opciones del botón Reset Tunnel"
|
||||
},
|
||||
"hostText": {
|
||||
"message": "Anfitrión:",
|
||||
"description": "Host para el proxy HTTP o SOCKS5"
|
||||
},
|
||||
"portText": {
|
||||
"message": "Puerto:",
|
||||
"description": "Puerto para el proxy HTTP o SOCKS5"
|
||||
},
|
||||
"controlHelpText": {
|
||||
"message": "Configure aquí la consola de su enrutador.",
|
||||
"description": "Ayuda para configurar las opciones del botón Reset Tunnel"
|
||||
},
|
||||
"controlHostText": {
|
||||
"message": "Host de control:",
|
||||
"description": "Host para la consola del enrutador"
|
||||
},
|
||||
"controlPortText": {
|
||||
"message": "Puerto de control:",
|
||||
"description": "Puerto para la consola del enrutador"
|
||||
},
|
||||
"controlHostValue": {
|
||||
"message": "127.0.0.1",
|
||||
"description": "Host para la consola del enrutador"
|
||||
},
|
||||
"controlPortValue": {
|
||||
"message": "7657",
|
||||
"description": "Puerto para la consola del enrutador"
|
||||
},
|
||||
"isBase32": {
|
||||
"message": "Dirección con formato I2P Base32",
|
||||
"description": "Mensaje para el panel de información del sitio base32"
|
||||
},
|
||||
"isHostName": {
|
||||
"message": "Nombre de host de salto I2P",
|
||||
"description": "Mensaje para el nombre de host del panel de información del sitio"
|
||||
},
|
||||
"siteLabel": {
|
||||
"message": "Dirección / Información del sitio:",
|
||||
"description": "Etiqueta para la información del sitio i2p"
|
||||
},
|
||||
"certLabel": {
|
||||
"message": "Información del certificado:",
|
||||
"description": "Etiqueta para la información del certificado"
|
||||
},
|
||||
"certAbsent": {
|
||||
"message": "Este sitio no está usando HTTPS. I2P aún lo verifica criptográficamente.",
|
||||
"description": "Contenido de la información del certificado si no está"
|
||||
},
|
||||
"certPresent": {
|
||||
"message": "Este sitio utiliza HTTPS. HTTPS sobre I2P es experimental y requiere certificados autofirmados o autorizaciones raíz alternativas.",
|
||||
"description": "Contenido de la información del certificado si está presente"
|
||||
},
|
||||
"protocolHandlerValue": {
|
||||
"message": "http://127.0.0.1:7657/i2psnark/?nofilter_newURL=%s&action=Add&foo=Add+torrent",
|
||||
"description": "Valor para el controlador de protocolo magnético"
|
||||
}
|
||||
}
|
Before Width: | Height: | Size: 314 KiB After Width: | Height: | Size: 309 KiB |
489
background.js
@@ -1,19 +1,33 @@
|
||||
var titlepref = chrome.i18n.getMessage('titlePreface');
|
||||
var titleprefpriv = chrome.i18n.getMessage('titlePrefacePrivate');
|
||||
var webpref = chrome.i18n.getMessage('webPreface');
|
||||
var webprefpriv = chrome.i18n.getMessage('webPrefacePrivate');
|
||||
var routerpref = chrome.i18n.getMessage('routerPreface');
|
||||
var routerprefpriv = chrome.i18n.getMessage('routerPrefacePrivate');
|
||||
var mailpref = chrome.i18n.getMessage('mailPreface');
|
||||
var mailprefpriv = chrome.i18n.getMessage('mailPrefacePrivate');
|
||||
var torrentpref = chrome.i18n.getMessage('torrentPreface');
|
||||
var torrentprefpriv = chrome.i18n.getMessage('torrentPrefacePrivate');
|
||||
var tunnelpref = chrome.i18n.getMessage('i2ptunnelPreface');
|
||||
var tunnelprefpriv = chrome.i18n.getMessage('i2ptunnelPrefacePrivate');
|
||||
var localpref = chrome.i18n.getMessage('localPreface');
|
||||
var localprefpriv = chrome.i18n.getMessage('localPrefacePrivate');
|
||||
var extensionpref = chrome.i18n.getMessage('extensionPreface');
|
||||
var muwirepref = chrome.i18n.getMessage('muwirePreface');
|
||||
var titlepref = chrome.i18n.getMessage("titlePreface");
|
||||
var titleprefpriv = chrome.i18n.getMessage("titlePrefacePrivate");
|
||||
var webpref = chrome.i18n.getMessage("webPreface");
|
||||
var webprefpriv = chrome.i18n.getMessage("webPrefacePrivate");
|
||||
var routerpref = chrome.i18n.getMessage("routerPreface");
|
||||
var routerprefpriv = chrome.i18n.getMessage("routerPrefacePrivate");
|
||||
var mailpref = chrome.i18n.getMessage("mailPreface");
|
||||
var mailprefpriv = chrome.i18n.getMessage("mailPrefacePrivate");
|
||||
var torrentpref = chrome.i18n.getMessage("torrentPreface");
|
||||
var torrentprefpriv = chrome.i18n.getMessage("torrentPrefacePrivate");
|
||||
var tunnelpref = chrome.i18n.getMessage("i2ptunnelPreface");
|
||||
var tunnelprefpriv = chrome.i18n.getMessage("i2ptunnelPrefacePrivate");
|
||||
var ircpref = chrome.i18n.getMessage("ircPreface");
|
||||
var ircprefpriv = chrome.i18n.getMessage("ircPrefacePrivate");
|
||||
var extensionpref = chrome.i18n.getMessage("extensionPreface");
|
||||
var muwirepref = chrome.i18n.getMessage("muwirePreface");
|
||||
var muwireprefpriv = chrome.i18n.getMessage("muwirePrefacePrivate");
|
||||
var botepref = chrome.i18n.getMessage("botePreface");
|
||||
var blogpref = chrome.i18n.getMessage("blogPreface");
|
||||
var blogprefpriv = chrome.i18n.getMessage("blogPrefacePrivate");
|
||||
|
||||
function onError(err) {
|
||||
console.log("(background)", err);
|
||||
}
|
||||
|
||||
function onContextGotLog(contexts) {
|
||||
if (contexts != null) {
|
||||
console.log(contexts);
|
||||
}
|
||||
}
|
||||
|
||||
function onContextsGot(contexts) {
|
||||
var ids = [];
|
||||
@@ -21,13 +35,22 @@ function onContextsGot(contexts) {
|
||||
console.log(`Name : ${context.name}`);
|
||||
ids.push(context.name);
|
||||
}
|
||||
console.log('Checking new contexts');
|
||||
console.log("Checking new contexts");
|
||||
if (ids.indexOf(titlepref) == -1) {
|
||||
browser.contextualIdentities
|
||||
.create({
|
||||
name: titlepref,
|
||||
color: 'orange',
|
||||
icon: 'fingerprint'
|
||||
color: "orange",
|
||||
icon: "fingerprint",
|
||||
})
|
||||
.then(onCreated, onNotCreated);
|
||||
}
|
||||
if (ids.indexOf(blogpref) == -1) {
|
||||
browser.contextualIdentities
|
||||
.create({
|
||||
name: blogpref,
|
||||
color: "pink",
|
||||
icon: "pet",
|
||||
})
|
||||
.then(onCreated, onNotCreated);
|
||||
}
|
||||
@@ -35,8 +58,8 @@ function onContextsGot(contexts) {
|
||||
browser.contextualIdentities
|
||||
.create({
|
||||
name: webpref,
|
||||
color: 'red',
|
||||
icon: 'circle'
|
||||
color: "red",
|
||||
icon: "circle",
|
||||
})
|
||||
.then(onCreated, onNotCreated);
|
||||
}
|
||||
@@ -44,8 +67,8 @@ function onContextsGot(contexts) {
|
||||
browser.contextualIdentities
|
||||
.create({
|
||||
name: routerpref,
|
||||
color: 'blue',
|
||||
icon: 'briefcase'
|
||||
color: "blue",
|
||||
icon: "briefcase",
|
||||
})
|
||||
.then(onCreated, onNotCreated);
|
||||
}
|
||||
@@ -53,8 +76,8 @@ function onContextsGot(contexts) {
|
||||
browser.contextualIdentities
|
||||
.create({
|
||||
name: tunnelpref,
|
||||
color: 'green',
|
||||
icon: 'tree'
|
||||
color: "green",
|
||||
icon: "tree",
|
||||
})
|
||||
.then(onCreated, onNotCreated);
|
||||
}
|
||||
@@ -62,8 +85,8 @@ function onContextsGot(contexts) {
|
||||
browser.contextualIdentities
|
||||
.create({
|
||||
name: mailpref,
|
||||
color: 'yellow',
|
||||
icon: 'briefcase'
|
||||
color: "yellow",
|
||||
icon: "briefcase",
|
||||
})
|
||||
.then(onCreated, onNotCreated);
|
||||
}
|
||||
@@ -71,48 +94,57 @@ function onContextsGot(contexts) {
|
||||
browser.contextualIdentities
|
||||
.create({
|
||||
name: torrentpref,
|
||||
color: 'purple',
|
||||
icon: 'chill'
|
||||
color: "purple",
|
||||
icon: "chill",
|
||||
})
|
||||
.then(onCreated, onNotCreated);
|
||||
}
|
||||
if (ids.indexOf(localpref) == -1) {
|
||||
if (ids.indexOf(ircpref) == -1) {
|
||||
browser.contextualIdentities
|
||||
.create({
|
||||
name: localpref,
|
||||
color: 'red',
|
||||
icon: 'fence'
|
||||
name: ircpref,
|
||||
color: "red",
|
||||
icon: "vacation",
|
||||
})
|
||||
.then(onCreated, onNotCreated);
|
||||
}
|
||||
if (ids.indexOf(localpref) == -1) {
|
||||
if (ids.indexOf(muwirepref) == -1) {
|
||||
browser.contextualIdentities
|
||||
.create({
|
||||
name: muwirepref,
|
||||
color: 'turquoise',
|
||||
icon: 'gift'
|
||||
color: "turquoise",
|
||||
icon: "gift",
|
||||
})
|
||||
.then(onCreated, onNotCreated);
|
||||
}
|
||||
if (ids.indexOf(botepref) == -1) {
|
||||
browser.contextualIdentities
|
||||
.create({
|
||||
name: botepref,
|
||||
color: "blue",
|
||||
icon: "fence",
|
||||
})
|
||||
.then(onCreated, onNotCreated);
|
||||
}
|
||||
}
|
||||
|
||||
function onContextsError() {
|
||||
console.log('Error finding contextual identities, is the API enabled?');
|
||||
console.log("Error finding contextual identities, is the API enabled?");
|
||||
}
|
||||
|
||||
function onCreated(context) {
|
||||
console.log(' ID:', context.cookieStoreId, 'created.');
|
||||
console.log(" ID:", context.cookieStoreId, "created.");
|
||||
}
|
||||
|
||||
function onNotCreated(context) {
|
||||
console.log('ID:', context.cookieStoreId, 'not created.');
|
||||
console.log("ID:", context.cookieStoreId, "not created.");
|
||||
}
|
||||
|
||||
browser.contextualIdentities.query({}).then(onContextsGot, onContextsError);
|
||||
|
||||
var gettingInfo = browser.runtime.getPlatformInfo();
|
||||
gettingInfo.then(got => {
|
||||
if (got.os != 'android') {
|
||||
gettingInfo.then((got) => {
|
||||
if (got.os != "android") {
|
||||
browser.windows.onCreated.addListener(themeWindow);
|
||||
browser.windows.onFocusChanged.addListener(themeWindow);
|
||||
browser.windows.onRemoved.addListener(themeWindow);
|
||||
@@ -124,8 +156,8 @@ gettingInfo.then(got => {
|
||||
function themeWindowByTab(tabId) {
|
||||
function tabWindow(tab) {
|
||||
var gettingPlatformInfo = browser.runtime.getPlatformInfo();
|
||||
gettingPlatformInfo.then(got => {
|
||||
if (got.os == 'android') {
|
||||
gettingPlatformInfo.then((got) => {
|
||||
if (got.os == "android") {
|
||||
let getwindow = browser.tabs.get(tab.tabId);
|
||||
getwindow.then(themeWindow);
|
||||
} else {
|
||||
@@ -134,7 +166,7 @@ function themeWindowByTab(tabId) {
|
||||
}
|
||||
});
|
||||
}
|
||||
if (typeof tabId === 'number') {
|
||||
if (typeof tabId === "number") {
|
||||
let tab = browser.tabs.get(tabId);
|
||||
tab.then(tabWindow);
|
||||
} else {
|
||||
@@ -154,134 +186,97 @@ function isEmpty(obj) {
|
||||
return true;
|
||||
}
|
||||
|
||||
let btheme = {
|
||||
colors: {
|
||||
frame: "#363A68",
|
||||
toolbar: "#363A68",
|
||||
},
|
||||
};
|
||||
|
||||
let dtheme = {
|
||||
colors: {
|
||||
frame: "#4456B7",
|
||||
toolbar: "#4456B7",
|
||||
},
|
||||
};
|
||||
|
||||
function themeWindow(window) {
|
||||
// Check if the window is in private browsing
|
||||
function onThemeError() {
|
||||
console.log('theme color set error');
|
||||
console.log("(theme) color set error");
|
||||
browser.theme.reset();
|
||||
}
|
||||
|
||||
function dynamicTheme() {
|
||||
if (window.incognito) {
|
||||
browser.theme.update(window.id, dtheme);
|
||||
} else {
|
||||
browser.theme.update(window.id, dtheme);
|
||||
}
|
||||
}
|
||||
|
||||
function browserTheme() {
|
||||
console.log("(theme)Active in I2P window");
|
||||
if (window.incognito) {
|
||||
browser.theme.update(window.id, btheme);
|
||||
} else {
|
||||
browser.theme.update(window.id, btheme);
|
||||
}
|
||||
}
|
||||
|
||||
function unsetTheme() {
|
||||
browser.theme.reset();
|
||||
}
|
||||
function logTabs(tabInfo) {
|
||||
function onContextGotTheme(context) {
|
||||
if (context.name == titlepref) {
|
||||
console.log('Active in I2P window');
|
||||
if (window.incognito) {
|
||||
browser.theme.update(window.id, {
|
||||
colors: {
|
||||
frame: '#363A68',
|
||||
toolbar: '#363A68'
|
||||
}
|
||||
});
|
||||
} else {
|
||||
browser.theme.update(window.id, {
|
||||
colors: {
|
||||
frame: '#363A68',
|
||||
toolbar: '#363A68'
|
||||
}
|
||||
});
|
||||
}
|
||||
if (tabInfo[0].url.startsWith('https://')) {
|
||||
browser.pageAction.setPopup({
|
||||
tabId: tabInfo[0].id,
|
||||
popup: 'security.html'
|
||||
});
|
||||
//console.log("(background) tabinfo", tabInfo[0].id)
|
||||
browser.pageAction.show(tabInfo[0].id);
|
||||
} else {
|
||||
//browser.pageAction.hide(tabInfo[0].id);
|
||||
}
|
||||
browserTheme();
|
||||
browser.pageAction.show(tabInfo[0].id);
|
||||
} else if (context.name == routerpref) {
|
||||
console.log('Active in Router Console window');
|
||||
if (window.incognito) {
|
||||
browser.theme.update(window.id, {
|
||||
colors: {
|
||||
frame: '#4456B7',
|
||||
toolbar: '#4456B7'
|
||||
}
|
||||
});
|
||||
} else {
|
||||
browser.theme.update(window.id, {
|
||||
colors: {
|
||||
frame: '#4456B7',
|
||||
toolbar: '#4456B7'
|
||||
}
|
||||
});
|
||||
}
|
||||
console.log("(theme) Active in Router Console window");
|
||||
dynamicTheme();
|
||||
} else if (context.name == tunnelpref) {
|
||||
console.log('Active in Hidden Services Manager window');
|
||||
if (window.incognito) {
|
||||
browser.theme.update(window.id, {
|
||||
colors: {
|
||||
frame: '#4456B7',
|
||||
toolbar: '#4456B7'
|
||||
}
|
||||
});
|
||||
} else {
|
||||
browser.theme.update(window.id, {
|
||||
colors: {
|
||||
frame: '#4456B7',
|
||||
toolbar: '#4456B7'
|
||||
}
|
||||
});
|
||||
}
|
||||
console.log("(theme) Active in Hidden Services Manager window");
|
||||
dynamicTheme();
|
||||
} else if (context.name == mailpref) {
|
||||
console.log('Active in Web Mail window');
|
||||
if (window.incognito) {
|
||||
browser.theme.update(window.id, {
|
||||
colors: {
|
||||
frame: '#4456B7',
|
||||
toolbar: '#4456B7'
|
||||
}
|
||||
});
|
||||
} else {
|
||||
browser.theme.update(window.id, {
|
||||
colors: {
|
||||
frame: '#4456B7',
|
||||
toolbar: '#4456B7'
|
||||
}
|
||||
});
|
||||
}
|
||||
console.log("(theme) Active in Web Mail window");
|
||||
dynamicTheme();
|
||||
} else if (context.name == torrentpref) {
|
||||
console.log('Active in Bittorrent window');
|
||||
if (window.incognito) {
|
||||
browser.theme.update(window.id, {
|
||||
colors: {
|
||||
frame: '#4456B7',
|
||||
toolbar: '#4456B7'
|
||||
}
|
||||
});
|
||||
} else {
|
||||
browser.theme.update(window.id, {
|
||||
colors: {
|
||||
frame: '#4456B7',
|
||||
toolbar: '#4456B7'
|
||||
}
|
||||
});
|
||||
}
|
||||
console.log("(theme) Active in Bittorrent window");
|
||||
dynamicTheme();
|
||||
} else if (context.name == botepref) {
|
||||
console.log("(theme) Active in Bote window");
|
||||
dynamicTheme();
|
||||
} else if (context.name == ircpref) {
|
||||
console.log("(theme) Active in IRC window");
|
||||
dynamicTheme();
|
||||
} else if (context.name == blogpref) {
|
||||
console.log("(theme) (theme) Active in Blog window");
|
||||
dynamicTheme();
|
||||
} else if (context.name == muwirepref) {
|
||||
console.log("(theme) Active in MuWire window");
|
||||
dynamicTheme();
|
||||
} else {
|
||||
console.log("(theme) Not active in MuWire window");
|
||||
browser.theme.reset();
|
||||
}
|
||||
}
|
||||
if (
|
||||
tabInfo[0].cookieStoreId != 'firefox-default' &&
|
||||
tabInfo[0].cookieStoreId != 'firefox-private'
|
||||
tabInfo[0].cookieStoreId != "firefox-default" &&
|
||||
tabInfo[0].cookieStoreId != "firefox-private"
|
||||
) {
|
||||
browser.contextualIdentities
|
||||
.get(tabInfo[0].cookieStoreId)
|
||||
.then(onContextGotTheme, onThemeError);
|
||||
}else {
|
||||
console.log('Not active in I2P window');
|
||||
function unSetTheme(them) {
|
||||
console.log('unsetting theme', them);
|
||||
if (Object.keys(them).length > 0) {
|
||||
browser.theme.update(window.id, them.originalTheme);
|
||||
}else {
|
||||
browser.theme.update(window.id, { colors: null });
|
||||
}
|
||||
}
|
||||
browser.storage.local.get('originalTheme').then(unSetTheme, onError);
|
||||
} else {
|
||||
console.log("(theme) Not active in I2P window");
|
||||
browser.theme.reset();
|
||||
}
|
||||
}
|
||||
|
||||
var querying = browser.tabs.query({
|
||||
currentWindow: true,
|
||||
active: true
|
||||
active: true,
|
||||
});
|
||||
querying.then(logTabs, onThemeError);
|
||||
}
|
||||
@@ -289,167 +284,97 @@ function themeWindow(window) {
|
||||
function setTitle(window) {
|
||||
// Check if the window is in private browsing
|
||||
function onContextError() {
|
||||
console.log('Context Error');
|
||||
console.log("Context Error");
|
||||
}
|
||||
function setTitle(title, privtitle) {
|
||||
if (window.incognito) {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: privtitle + ": ",
|
||||
});
|
||||
} else {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: title + ": ",
|
||||
});
|
||||
}
|
||||
}
|
||||
function logTabs(tabInfo) {
|
||||
function onContextGotTitle(context) {
|
||||
if (context.name == titlepref) {
|
||||
console.log('Active in I2P window');
|
||||
|
||||
if (window.incognito) {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: titleprefpriv + ': '
|
||||
});
|
||||
} else {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: titlepref + ': '
|
||||
});
|
||||
}
|
||||
} else if (context.name == webpref) {
|
||||
console.log('Active in Web window');
|
||||
if (window.incognito) {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: webprefpriv + ' - '
|
||||
});
|
||||
} else {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: webpref + ' - '
|
||||
});
|
||||
}
|
||||
console.log("Active in I2P window");
|
||||
setTitle(titlepref, titleprefpriv);
|
||||
} else if (context.name == muwirepref) {
|
||||
console.log("Active in MuWire window");
|
||||
setTitle(muwirepref, muwireprefpriv);
|
||||
} else if (context.name == routerpref) {
|
||||
console.log('Active in Router Console window');
|
||||
if (window.incognito) {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: titleprefpriv + ' - ' + routerprefpriv + ': '
|
||||
});
|
||||
} else {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: titlepref + ' - ' + routerpref + ': '
|
||||
});
|
||||
}
|
||||
console.log("Active in Router Console window");
|
||||
setTitle(routerpref, routerprefpriv);
|
||||
} else if (context.name == botepref) {
|
||||
console.log("Active in Bote window");
|
||||
setTitle(botepref, boteprefpriv);
|
||||
} else if (context.name == tunnelpref) {
|
||||
console.log('Active in Hidden Services Manager window');
|
||||
|
||||
if (window.incognito) {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: titleprefpriv + ' - ' + tunnelprefpriv + ': '
|
||||
});
|
||||
} else {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: titlepref + ' - ' + tunnelpref + ': '
|
||||
});
|
||||
}
|
||||
console.log("Active in Hidden Services Manager window");
|
||||
setTitle(tunnelpref, tunnelprefpriv);
|
||||
} else if (context.name == mailpref) {
|
||||
console.log('Active in I2P Web Mail window');
|
||||
|
||||
if (window.incognito) {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: titleprefpriv + ' - ' + mailprefpriv + ': '
|
||||
});
|
||||
} else {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: titlepref + ' - ' + mailpref + ': '
|
||||
});
|
||||
}
|
||||
console.log("Active in I2P Web Mail window");
|
||||
setTitle(mailpref, mailprefpriv);
|
||||
} else if (context.name == blogpref) {
|
||||
console.log("Active in I2P Blog window");
|
||||
setTitle(blogpref, blogprefpriv);
|
||||
} else if (context.name == torrentpref) {
|
||||
console.log('Active in I2P Torrent window');
|
||||
|
||||
if (window.incognito) {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: titleprefpriv + ' - ' + torrentprefpriv + ': '
|
||||
});
|
||||
} else {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: titlepref + ' - ' + torrentpref + ': '
|
||||
});
|
||||
}
|
||||
} else if (context.name == localpref) {
|
||||
console.log('Active in Localhost window');
|
||||
|
||||
if (window.incognito) {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: localprefpriv + ' - ' + localprefpriv + ': '
|
||||
});
|
||||
} else {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: localpref + ' - ' + localpref + ': '
|
||||
});
|
||||
}
|
||||
console.log("Active in I2P Torrent window");
|
||||
setTitle(torrentpref, torrentprefpriv);
|
||||
} else if (context.name == ircpref) {
|
||||
console.log("Active in IRC window");
|
||||
setTitle(ircpref, ircprefpriv);
|
||||
}
|
||||
}
|
||||
|
||||
if (
|
||||
tabInfo[0].cookieStoreId != 'firefox-default' &&
|
||||
tabInfo[0].cookieStoreId != 'firefox-private'
|
||||
tabInfo[0].cookieStoreId != "firefox-default" &&
|
||||
tabInfo[0].cookieStoreId != "firefox-private"
|
||||
) {
|
||||
browser.contextualIdentities
|
||||
.get(tabInfo[0].cookieStoreId)
|
||||
.then(onContextGotTitle, onContextError);
|
||||
} else if (window.incognito) {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: ''
|
||||
titlePreface: "",
|
||||
});
|
||||
} else {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: ''
|
||||
titlePreface: "",
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
var querying = browser.tabs.query({
|
||||
currentWindow: true,
|
||||
active: true
|
||||
active: true,
|
||||
});
|
||||
querying.then(logTabs, onContextError);
|
||||
}
|
||||
|
||||
var gettingListenerInfo = browser.runtime.getPlatformInfo();
|
||||
gettingListenerInfo.then(got => {
|
||||
gettingListenerInfo.then((got) => {
|
||||
function onPlatformError() {
|
||||
console.log('Error finding platform info');
|
||||
console.log("Error finding platform info");
|
||||
}
|
||||
if (got.os != 'android') {
|
||||
if (got.os != "android") {
|
||||
browser.tabs.onCreated.addListener(() => {
|
||||
var getting = browser.windows.getCurrent({
|
||||
populate: true
|
||||
populate: true,
|
||||
});
|
||||
getting.then(setTitle, onPlatformError);
|
||||
});
|
||||
browser.tabs.onActivated.addListener(() => {
|
||||
var getting = browser.windows.getCurrent({
|
||||
populate: true
|
||||
populate: true,
|
||||
});
|
||||
getting.then(setTitle, onPlatformError);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
function handleUpdated(updateInfo) {
|
||||
function maybeSet(them){
|
||||
console.log("original theme found:", them, Object.keys(them).length)
|
||||
try{
|
||||
if ((Object.keys(them).length == 0) || them.originalTheme.colors == null && them.originalTheme.images == null && them.originalTheme.properties == null) {
|
||||
if (updateInfo.theme.colors.frame != '#4456B7' && updateInfo.theme.colors.frame != '#363A68') {
|
||||
function onSet(){
|
||||
console.log("stored theme:", updateInfo.theme)
|
||||
}
|
||||
if (updateInfo.theme.colors != null || updateInfo.theme.images != null || updateInfo.theme.properties != null ) {
|
||||
console.log("storing theme:", updateInfo.theme)
|
||||
browser.storage.local.set({"originalTheme": updateInfo.theme}).then(onSet, onError)
|
||||
}
|
||||
}
|
||||
}else{
|
||||
console.log("keeping stored theme:", them)
|
||||
}
|
||||
}catch{
|
||||
console.log("theme storage error")
|
||||
}
|
||||
}
|
||||
browser.storage.local.get("originalTheme").then(maybeSet, onError);
|
||||
}
|
||||
|
||||
browser.theme.onUpdated.addListener(handleUpdated);
|
||||
|
||||
function handleClick() {
|
||||
console.log("Opening page action");
|
||||
browser.pageAction.openPopup();
|
||||
@@ -499,3 +424,41 @@ browser.webRequest.onHeadersReceived.addListener(
|
||||
{ urls: ["<all_urls>"] },
|
||||
["blocking", "responseHeaders"]
|
||||
);
|
||||
|
||||
function onClosedWindowCheck() {
|
||||
var getContext = browser.contextualIdentities.query({ name: titlepref });
|
||||
function checkTabs(ctx) {
|
||||
for (let context in ctx) {
|
||||
function conditionallyDelete(tabs) {
|
||||
if (tabs.length == 0) {
|
||||
browser.contextualIdentities.remove(context.cookieStoreId);
|
||||
}
|
||||
}
|
||||
var tabs = browser.tabs.query({ cookieStoreId: context.cookieStoreId });
|
||||
tabs.then(conditionallyDelete, onError);
|
||||
}
|
||||
}
|
||||
getContext.then(checkTabs, onError);
|
||||
}
|
||||
|
||||
function onOpenedWindowCheck() {
|
||||
var getContext = browser.contextualIdentities.query({ name: titlepref });
|
||||
function checkTabs(ctx) {
|
||||
for (let context in ctx) {
|
||||
function conditionallyDelete(tabs) {
|
||||
if (tabs.length == 0) {
|
||||
browser.contextualIdentities.remove(context.cookieStoreId);
|
||||
}
|
||||
}
|
||||
var tabs = browser.tabs.query({ cookieStoreId: context.cookieStoreId });
|
||||
tabs.then(conditionallyDelete, onError);
|
||||
}
|
||||
}
|
||||
getContext.then(checkTabs, onError);
|
||||
}
|
||||
|
||||
onOpenedWindowCheck();
|
||||
|
||||
browser.tabs.onRemoved.addListener(onClosedWindowCheck);
|
||||
browser.windows.onRemoved.addListener(onClosedWindowCheck);
|
||||
browser.windows.onCreated.addListener(onOpenedWindowCheck);
|
||||
|
418
bookmarks.js
@@ -1,213 +1,245 @@
|
||||
var gettingInfo = browser.runtime.getPlatformInfo();
|
||||
gettingInfo.then(got => {
|
||||
if (got.os != 'android') {
|
||||
function bookmarks(bookmarkToolbar) {
|
||||
console.log('Setting up bookmark toolbar', bookmarkToolbar);
|
||||
function bookHome(bookmarkItems) {
|
||||
if (!bookmarkItems.length) {
|
||||
function gotProxyInfo(info) {
|
||||
let port = info.value.http.split(':')[1];
|
||||
if (port == '7644') {
|
||||
let createRhizomeBookmark = browser.bookmarks.create({
|
||||
url: 'about:I2p',
|
||||
title: 'I2P Extension Home Page',
|
||||
parentId: bookmarkToolbar[0].id
|
||||
});
|
||||
createRhizomeBookmark.then(onCreated);
|
||||
} else {
|
||||
let createBookmark = browser.bookmarks.create({
|
||||
url: browser.runtime.getURL('home.html'),
|
||||
title: 'I2P Extension Home Page',
|
||||
parentId: bookmarkToolbar[0].id
|
||||
});
|
||||
createBookmark.then(onCreated);
|
||||
function bookmarksSetup() {
|
||||
var gettingInfo = browser.runtime.getPlatformInfo();
|
||||
gettingInfo.then((got) => {
|
||||
if (got.os != "android") {
|
||||
function bookmarks(bookmarkToolbar) {
|
||||
console.log("(bookmarks)", bookmarkToolbar);
|
||||
console.log("Setting up bookmark toolbar", bookmarkToolbar);
|
||||
function bookHome(bookmarkItems) {
|
||||
if (!bookmarkItems.length) {
|
||||
function gotProxyInfo(info) {
|
||||
let port = info.value.http.split(":")[1];
|
||||
if (port == "7644") {
|
||||
let createRhizomeBookmark = browser.bookmarks.create({
|
||||
url: "about:I2p",
|
||||
title: "I2P Extension Home Page",
|
||||
parentId: bookmarkToolbar[0].id,
|
||||
});
|
||||
createRhizomeBookmark.then(onCreated);
|
||||
} else {
|
||||
let createBookmark = browser.bookmarks.create({
|
||||
url: browser.runtime.getURL("home.html"),
|
||||
title: "I2P Extension Home Page",
|
||||
parentId: bookmarkToolbar[0].id,
|
||||
});
|
||||
createBookmark.then(onCreated);
|
||||
}
|
||||
console.log("(bookmarks) adding home page bookmark");
|
||||
}
|
||||
console.log('(bookmarks) adding home page bookmark');
|
||||
console.log(
|
||||
"(bookmarks) checking if we're running in an I2P Browser"
|
||||
);
|
||||
let gettingProxyInfo = browser.proxy.settings.get({});
|
||||
gettingProxyInfo.then(gotProxyInfo);
|
||||
}
|
||||
console.log(
|
||||
"(bookmarks) checking if we're running in an I2P Browser"
|
||||
);
|
||||
let gettingProxyInfo = browser.proxy.settings.get({});
|
||||
gettingProxyInfo.then(gotProxyInfo);
|
||||
}
|
||||
}
|
||||
function bookTorrent(bookmarkItems) {
|
||||
if (!bookmarkItems.length) {
|
||||
function gotProxyInfo(info) {
|
||||
let port = info.value.http.split(':')[1];
|
||||
if (port == '7644') {
|
||||
let createBookmark = browser.bookmarks.create({
|
||||
url: 'http://localhost:7657/i2psnark',
|
||||
title: 'Bittorrent',
|
||||
parentId: bookmarkToolbar[0].id
|
||||
});
|
||||
createBookmark.then(onCreated);
|
||||
} else {
|
||||
let createRhizomeBookmark = browser.bookmarks.create({
|
||||
url:
|
||||
'http://' + control_host + ':' + control_port + '/i2psnark',
|
||||
title: 'Bittorrent',
|
||||
parentId: bookmarkToolbar[0].id
|
||||
});
|
||||
createRhizomeBookmark.then(onCreated);
|
||||
function bookTorrent(bookmarkItems) {
|
||||
if (!bookmarkItems.length) {
|
||||
function gotProxyInfo(info) {
|
||||
let port = info.value.http.split(":")[1];
|
||||
if (port == "7644") {
|
||||
let createBookmark = browser.bookmarks.create({
|
||||
url: "http://localhost:7657/i2psnark",
|
||||
title: "Bittorrent",
|
||||
parentId: bookmarkToolbar[0].id,
|
||||
});
|
||||
createBookmark.then(onCreated);
|
||||
} else {
|
||||
let createRhizomeBookmark = browser.bookmarks.create({
|
||||
url:
|
||||
"http://" + control_host + ":" + control_port + "/i2psnark",
|
||||
title: "Bittorrent",
|
||||
parentId: bookmarkToolbar[0].id,
|
||||
});
|
||||
createRhizomeBookmark.then(onCreated);
|
||||
}
|
||||
}
|
||||
console.log(
|
||||
"(bookmarks) checking if we're running in an I2P Browser"
|
||||
);
|
||||
let gettingProxyInfo = browser.proxy.settings.get({});
|
||||
gettingProxyInfo.then(gotProxyInfo);
|
||||
}
|
||||
console.log(
|
||||
"(bookmarks) checking if we're running in an I2P Browser"
|
||||
);
|
||||
let gettingProxyInfo = browser.proxy.settings.get({});
|
||||
gettingProxyInfo.then(gotProxyInfo);
|
||||
}
|
||||
}
|
||||
function bookConsole(bookmarkItems) {
|
||||
if (!bookmarkItems.length) {
|
||||
function gotProxyInfo(info) {
|
||||
let port = info.value.http.split(':')[1];
|
||||
if (port == '7644') {
|
||||
let createBookmark = browser.bookmarks.create({
|
||||
url: 'http://localhost:7657/home',
|
||||
title: 'I2P Console',
|
||||
parentId: bookmarkToolbar[0].id
|
||||
});
|
||||
createBookmark.then(onCreated);
|
||||
} else {
|
||||
let createRhizomeBookmark = browser.bookmarks.create({
|
||||
url: 'http://' + control_host + ':' + control_port + '/home',
|
||||
title: 'I2P Console',
|
||||
parentId: bookmarkToolbar[0].id
|
||||
});
|
||||
createRhizomeBookmark.then(onCreated);
|
||||
function bookConsole(bookmarkItems) {
|
||||
if (!bookmarkItems.length) {
|
||||
function gotProxyInfo(info) {
|
||||
let port = info.value.http.split(":")[1];
|
||||
if (port == "7644") {
|
||||
let createBookmark = browser.bookmarks.create({
|
||||
url: "http://localhost:7657/home",
|
||||
title: "I2P Console",
|
||||
parentId: bookmarkToolbar[0].id,
|
||||
});
|
||||
createBookmark.then(onCreated);
|
||||
} else {
|
||||
let createRhizomeBookmark = browser.bookmarks.create({
|
||||
url: "http://" + control_host + ":" + control_port + "/home",
|
||||
title: "I2P Console",
|
||||
parentId: bookmarkToolbar[0].id,
|
||||
});
|
||||
createRhizomeBookmark.then(onCreated);
|
||||
}
|
||||
}
|
||||
console.log(
|
||||
"(bookmarks) checking if we're running in an I2P Browser"
|
||||
);
|
||||
let gettingProxyInfo = browser.proxy.settings.get({});
|
||||
gettingProxyInfo.then(gotProxyInfo);
|
||||
}
|
||||
console.log(
|
||||
"(bookmarks) checking if we're running in an I2P Browser"
|
||||
);
|
||||
let gettingProxyInfo = browser.proxy.settings.get({});
|
||||
gettingProxyInfo.then(gotProxyInfo);
|
||||
}
|
||||
}
|
||||
function bookMail(bookmarkItems) {
|
||||
if (!bookmarkItems.length) {
|
||||
function gotProxyInfo(info) {
|
||||
let port = info.value.http.split(':')[1];
|
||||
if (port == '7644') {
|
||||
let createBookmark = browser.bookmarks.create({
|
||||
url: 'http://localhost:7657/webmail',
|
||||
title: 'Web Mail',
|
||||
parentId: bookmarkToolbar[0].id
|
||||
});
|
||||
createBookmark.then(onCreated);
|
||||
} else {
|
||||
let createRhizomeBookmark = browser.bookmarks.create({
|
||||
url: 'http://' + control_host + ':' + control_port + '/webmail',
|
||||
title: 'Web Mail',
|
||||
parentId: bookmarkToolbar[0].id
|
||||
});
|
||||
createRhizomeBookmark.then(onCreated);
|
||||
function bookMail(bookmarkItems) {
|
||||
if (!bookmarkItems.length) {
|
||||
function gotProxyInfo(info) {
|
||||
let port = info.value.http.split(":")[1];
|
||||
if (port == "7644") {
|
||||
let createBookmark = browser.bookmarks.create({
|
||||
url: "http://localhost:7657/webmail",
|
||||
title: "Web Mail",
|
||||
parentId: bookmarkToolbar[0].id,
|
||||
});
|
||||
createBookmark.then(onCreated);
|
||||
} else {
|
||||
let createRhizomeBookmark = browser.bookmarks.create({
|
||||
url:
|
||||
"http://" + control_host + ":" + control_port + "/webmail",
|
||||
title: "Web Mail",
|
||||
parentId: bookmarkToolbar[0].id,
|
||||
});
|
||||
createRhizomeBookmark.then(onCreated);
|
||||
}
|
||||
console.log("(bookmarks) adding webmail bookmark");
|
||||
}
|
||||
console.log('(bookmarks) adding webmail bookmark');
|
||||
console.log(
|
||||
"(bookmarks) checking if we're running in an I2P Browser"
|
||||
);
|
||||
let gettingProxyInfo = browser.proxy.settings.get({});
|
||||
gettingProxyInfo.then(gotProxyInfo);
|
||||
}
|
||||
console.log(
|
||||
"(bookmarks) checking if we're running in an I2P Browser"
|
||||
);
|
||||
let gettingProxyInfo = browser.proxy.settings.get({});
|
||||
gettingProxyInfo.then(gotProxyInfo);
|
||||
}
|
||||
}
|
||||
function bookI2PTunnel(bookmarkItems) {
|
||||
if (!bookmarkItems.length) {
|
||||
function gotProxyInfo(info) {
|
||||
let port = info.value.http.split(':')[1];
|
||||
if (port == '7644') {
|
||||
var createBookmark = browser.bookmarks.create({
|
||||
url: 'http://localhost:7657/i2ptunnel',
|
||||
title: 'Hidden Services Manager',
|
||||
parentId: bookmarkToolbar[0].id
|
||||
});
|
||||
createBookmark.then(onCreated);
|
||||
} else {
|
||||
var createRhizomeBookmark = browser.bookmarks.create({
|
||||
url:
|
||||
'http://' + control_host + ':' + control_port + '/i2ptunnel',
|
||||
title: 'Hidden Services Manager',
|
||||
parentId: bookmarkToolbar[0].id
|
||||
});
|
||||
createRhizomeBookmark.then(onCreated);
|
||||
function bookI2PTunnel(bookmarkItems) {
|
||||
if (!bookmarkItems.length) {
|
||||
function gotProxyInfo(info) {
|
||||
let port = info.value.http.split(":")[1];
|
||||
if (port == "7644") {
|
||||
var createBookmark = browser.bookmarks.create({
|
||||
url: "http://localhost:7657/i2ptunnel",
|
||||
title: "Hidden Services Manager",
|
||||
parentId: bookmarkToolbar[0].id,
|
||||
});
|
||||
createBookmark.then(onCreated);
|
||||
} else {
|
||||
var createRhizomeBookmark = browser.bookmarks.create({
|
||||
url:
|
||||
"http://" +
|
||||
control_host +
|
||||
":" +
|
||||
control_port +
|
||||
"/i2ptunnel",
|
||||
title: "Hidden Services Manager",
|
||||
parentId: bookmarkToolbar[0].id,
|
||||
});
|
||||
createRhizomeBookmark.then(onCreated);
|
||||
}
|
||||
console.log("(bookmarks) adding i2ptunnel bookmark");
|
||||
}
|
||||
console.log('(bookmarks) adding i2ptunnel bookmark');
|
||||
console.log(
|
||||
"(bookmarks) checking if we're running in an I2P Browser"
|
||||
);
|
||||
var gettingProxyInfo = browser.proxy.settings.get({});
|
||||
gettingProxyInfo.then(gotProxyInfo);
|
||||
}
|
||||
console.log(
|
||||
"(bookmarks) checking if we're running in an I2P Browser"
|
||||
);
|
||||
var gettingProxyInfo = browser.proxy.settings.get({});
|
||||
gettingProxyInfo.then(gotProxyInfo);
|
||||
}
|
||||
|
||||
function onRejected(error) {
|
||||
console.log(`An error : ${error}`);
|
||||
}
|
||||
function onCreated(node) {
|
||||
console.log("Bookmarked", node);
|
||||
}
|
||||
|
||||
var b0 = browser.bookmarks.search({
|
||||
title: "I2P Extension Home Page",
|
||||
});
|
||||
b0.then(bookHome, onRejected);
|
||||
|
||||
var b1 = browser.bookmarks.search({
|
||||
title: "Bittorrent",
|
||||
});
|
||||
b1.then(bookTorrent, onRejected);
|
||||
|
||||
var b2 = browser.bookmarks.search({
|
||||
title: "Hidden Services Manager",
|
||||
});
|
||||
b2.then(bookI2PTunnel, onRejected);
|
||||
|
||||
var b3 = browser.bookmarks.search({
|
||||
title: "Web Mail",
|
||||
});
|
||||
b3.then(bookMail, onRejected);
|
||||
|
||||
var b4 = browser.bookmarks.search({
|
||||
title: "I2P Console",
|
||||
});
|
||||
b4.then(bookConsole, onRejected);
|
||||
defaultSettings["bookmarks_state"] = true;
|
||||
}
|
||||
|
||||
var bt = browser.bookmarks.search({
|
||||
query: "Toolbar",
|
||||
});
|
||||
|
||||
function toolDir(bookmarkToolbar) {
|
||||
let defaultSettings = {};
|
||||
chrome.storage.local.set(defaultSettings);
|
||||
console.log("(bookmarks) created");
|
||||
var ibbt = browser.bookmarks.search("I2P Toolbar");
|
||||
function setupDir(ibbt) {
|
||||
function onToolbarCreated(node) {
|
||||
var ibt = browser.bookmarks.search("I2P Toolbar");
|
||||
ibt.then(bookmarks);
|
||||
}
|
||||
if (ibbt[0] == null) {
|
||||
let createBookmark = browser.bookmarks.create({
|
||||
title: "I2P Toolbar",
|
||||
parentId: bookmarkToolbar[0].id,
|
||||
});
|
||||
createBookmark.then(onToolbarCreated);
|
||||
}
|
||||
}
|
||||
ibbt.then(setupDir);
|
||||
}
|
||||
bt.then(toolDir);
|
||||
|
||||
function handleCreated(id, bookmarkInfo) {
|
||||
//var propValue;
|
||||
for (var propName in bookmarkInfo) {
|
||||
let propValue = bookmarkInfo[propName];
|
||||
console.log(propName, propValue);
|
||||
}
|
||||
}
|
||||
|
||||
function onRejected(error) {
|
||||
console.log(`An error : ${error}`);
|
||||
}
|
||||
function onCreated(node) {
|
||||
console.log('Bookmarked', node);
|
||||
}
|
||||
|
||||
var b0 = browser.bookmarks.search({
|
||||
title: 'I2P Extension Home Page'
|
||||
});
|
||||
b0.then(bookHome, onRejected);
|
||||
|
||||
var b1 = browser.bookmarks.search({
|
||||
title: 'Bittorrent'
|
||||
});
|
||||
b1.then(bookTorrent, onRejected);
|
||||
|
||||
var b2 = browser.bookmarks.search({
|
||||
title: 'Hidden Services Manager'
|
||||
});
|
||||
b2.then(bookI2PTunnel, onRejected);
|
||||
|
||||
var b3 = browser.bookmarks.search({
|
||||
title: 'Web Mail'
|
||||
});
|
||||
b3.then(bookMail, onRejected);
|
||||
|
||||
var b4 = browser.bookmarks.search({
|
||||
title: 'I2P Console'
|
||||
});
|
||||
b4.then(bookConsole, onRejected);
|
||||
browser.bookmarks.onCreated.addListener(handleCreated);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
var bt = browser.bookmarks.search({
|
||||
query: 'Toolbar'
|
||||
});
|
||||
|
||||
function toolDir(bookmarkToolbar) {
|
||||
var ibbt = browser.bookmarks.search('I2P Toolbar');
|
||||
function setupDir(ibbt) {
|
||||
function onToolbarCreated(node) {
|
||||
var ibt = browser.bookmarks.search('I2P Toolbar');
|
||||
ibt.then(bookmarks);
|
||||
}
|
||||
if (ibbt[0] == null) {
|
||||
let createBookmark = browser.bookmarks.create({
|
||||
title: 'I2P Toolbar',
|
||||
parentId: bookmarkToolbar[0].id
|
||||
});
|
||||
createBookmark.then(onToolbarCreated);
|
||||
}
|
||||
}
|
||||
ibbt.then(setupDir);
|
||||
}
|
||||
bt.then(toolDir);
|
||||
|
||||
function handleCreated(id, bookmarkInfo) {
|
||||
//var propValue;
|
||||
for (var propName in bookmarkInfo) {
|
||||
let propValue = bookmarkInfo[propName];
|
||||
console.log(propName, propValue);
|
||||
}
|
||||
}
|
||||
|
||||
browser.bookmarks.onCreated.addListener(handleCreated);
|
||||
function conditionalBookmarksSetup(obj) {
|
||||
console.log("(bookmarks) state", obj.bookmarks_state);
|
||||
if (obj.bookmarks_state == false) {
|
||||
bookmarksSetup();
|
||||
}
|
||||
});
|
||||
if (obj.bookmarks_state == undefined) {
|
||||
bookmarksSetup();
|
||||
}
|
||||
}
|
||||
|
||||
if (browser != null) {
|
||||
let gettingStorage = browser.storage.local.get("bookmarks_state");
|
||||
gettingStorage.then(conditionalBookmarksSetup, bookmarksSetup);
|
||||
}
|
||||
|
||||
const bookmarksButton = document.getElementById("bookmarksButton");
|
||||
if (bookmarksButton != null) {
|
||||
bookmarksButton.addEventListener("click", bookmarksSetup);
|
||||
}
|
||||
|
30
cert.js
@@ -1,42 +1,42 @@
|
||||
function blankContent(id) {
|
||||
let infoTitle = document.getElementById(id);
|
||||
if (infoTitle === null) {
|
||||
console.log('content error', id);
|
||||
console.log("content error", id);
|
||||
return;
|
||||
}
|
||||
infoTitle.textContent = '';
|
||||
infoTitle.textContent = "";
|
||||
}
|
||||
|
||||
function contentUpdateById(id, message) {
|
||||
let infoTitle = document.getElementById(id);
|
||||
let messageContent = chrome.i18n.getMessage(message);
|
||||
if (infoTitle === null) {
|
||||
console.log('content error', id, messageContent);
|
||||
console.log("content error", id, messageContent);
|
||||
return;
|
||||
}
|
||||
infoTitle.textContent = messageContent;
|
||||
}
|
||||
|
||||
contentUpdateById('TypeLabel', 'siteLabel');
|
||||
contentUpdateById("TypeLabel", "siteLabel");
|
||||
|
||||
contentUpdateById('CertLabel', 'certLabel');
|
||||
contentUpdateById("CertLabel", "certLabel");
|
||||
|
||||
function tabCheck(tabInfo) {
|
||||
// Information Section
|
||||
console.log('(cert) checking tab');
|
||||
var host = tabInfo[0].url.split('.i2p')[0] + '.i2p';
|
||||
console.log("(cert) checking tab");
|
||||
var host = tabInfo[0].url.split(".i2p")[0] + ".i2p";
|
||||
if (host.length < 51) {
|
||||
contentUpdateById('AddressInfo', 'isHostName');
|
||||
contentUpdateById("AddressInfo", "isHostName");
|
||||
} else {
|
||||
if (host.endsWith('b32.i2p')) {
|
||||
contentUpdateById('AddressInfo', 'isBase32');
|
||||
if (host.endsWith("b32.i2p")) {
|
||||
contentUpdateById("AddressInfo", "isBase32");
|
||||
}
|
||||
}
|
||||
if (host.startsWith('https')) {
|
||||
contentUpdateById('AddressCertInfo', 'certPresent');
|
||||
console.log('(cert) initiating request to check server cert');
|
||||
fetch(host).then(response => {
|
||||
console.log('Updating cert information', response);
|
||||
if (host.startsWith("https")) {
|
||||
contentUpdateById("AddressCertInfo", "certPresent");
|
||||
console.log("(cert) initiating request to check server cert");
|
||||
fetch(host).then((response) => {
|
||||
console.log("Updating cert information", response);
|
||||
});
|
||||
} else {
|
||||
contentUpdateById("AddressCertInfo", "certAbsent");
|
||||
|
BIN
clearweb.png
Before Width: | Height: | Size: 126 KiB After Width: | Height: | Size: 215 KiB |
26
config.js
@@ -1,18 +1,18 @@
|
||||
var proxy_scheme = 'HTTP';
|
||||
var proxy_host = '127.0.0.1';
|
||||
var proxy_port = '4444';
|
||||
var proxy_scheme = "HTTP";
|
||||
var proxy_host = "127.0.0.1";
|
||||
var proxy_port = "4444";
|
||||
|
||||
var control_host = '127.0.0.1';
|
||||
var control_port = '7657';
|
||||
var control_host = "127.0.0.1";
|
||||
var control_port = "7657";
|
||||
|
||||
var rpc_host = '127.0.0.1';
|
||||
var rpc_port = '7657';
|
||||
var rpc_path = 'jsonrpc';
|
||||
var rpc_pass = 'itoopie';
|
||||
var rpc_host = "127.0.0.1";
|
||||
var rpc_port = "7657";
|
||||
var rpc_path = "jsonrpc";
|
||||
var rpc_pass = "itoopie";
|
||||
|
||||
var bt_rpc_host = '127.0.0.1';
|
||||
var bt_rpc_port = '7657';
|
||||
var bt_rpc_path = 'transmission/rpc';
|
||||
var bt_rpc_pass = 'transmission';
|
||||
var bt_rpc_host = "127.0.0.1";
|
||||
var bt_rpc_port = "7657";
|
||||
var bt_rpc_path = "transmission/rpc";
|
||||
var bt_rpc_pass = "transmission";
|
||||
|
||||
var disable_history = false;
|
||||
|
110
content.js
@@ -2,53 +2,91 @@ function contentUpdateById(id, message) {
|
||||
let infoTitle = document.getElementById(id);
|
||||
let messageContent = chrome.i18n.getMessage(message);
|
||||
if (infoTitle === null) {
|
||||
console.log('content error', id, messageContent);
|
||||
console.log("content error", id, messageContent);
|
||||
return;
|
||||
}
|
||||
infoTitle.textContent = messageContent;
|
||||
}
|
||||
|
||||
// Information Section
|
||||
contentUpdateById('text-section-header', 'extensionName');
|
||||
contentUpdateById('description', 'extensionDescription');
|
||||
contentUpdateById('i2pbrowser-version', 'extensionVersion');
|
||||
contentUpdateById('proxy-check', 'proxyFailedStatus');
|
||||
contentUpdateById("text-section-header", "extensionName");
|
||||
contentUpdateById("description", "extensionDescription");
|
||||
contentUpdateById("i2pbrowser-version", "extensionVersion");
|
||||
contentUpdateById("proxy-check", "proxyFailedStatus");
|
||||
|
||||
// Control Section
|
||||
contentUpdateById('controlHeader', 'controlHeader');
|
||||
contentUpdateById('controlExplain', 'controlExplain');
|
||||
contentUpdateById('clear-browser-data', 'clearData');
|
||||
contentUpdateById('clear-desc', 'clearDesc');
|
||||
contentUpdateById('enable-web-rtc', 'enableWebRTC');
|
||||
contentUpdateById('rtcDesc', 'rtcDesc');
|
||||
contentUpdateById('disable-history', 'disableHistory');
|
||||
contentUpdateById('histDesc', 'histDesc');
|
||||
contentUpdateById("controlHeader", "controlHeader");
|
||||
contentUpdateById("controlExplain", "controlExplain");
|
||||
contentUpdateById("clear-browser-data", "clearData");
|
||||
contentUpdateById("clear-desc", "clearDesc");
|
||||
contentUpdateById("enable-web-rtc", "enableWebRTC");
|
||||
contentUpdateById("rtcDesc", "rtcDesc");
|
||||
contentUpdateById("disable-history", "disableHistory");
|
||||
contentUpdateById("histDesc", "histDesc");
|
||||
|
||||
// Application Section
|
||||
contentUpdateById('applicationHeader', 'applicationHeader');
|
||||
contentUpdateById('applicationExplain', 'applicationExplain');
|
||||
contentUpdateById('window-visit-index', 'windowVisitHelppage');
|
||||
contentUpdateById('help', 'help');
|
||||
contentUpdateById('window-visit-router', 'windowVisitConsole');
|
||||
contentUpdateById('routerConsole', 'routerConsole');
|
||||
contentUpdateById('window-visit-homepage', 'windowVisitHomepage');
|
||||
contentUpdateById('abouthome', 'abouthome');
|
||||
contentUpdateById('window-visit-i2ptunnel', 'windowVisitI2ptunnel');
|
||||
contentUpdateById('i2ptunnel', 'i2ptunnel');
|
||||
contentUpdateById('window-visit-susimail', 'windowVisitSusiMail');
|
||||
contentUpdateById('susimail', 'susimail');
|
||||
contentUpdateById('window-visit-snark', 'windowVisitSnark');
|
||||
contentUpdateById('snark', 'snark');
|
||||
contentUpdateById("applicationHeader", "applicationHeader");
|
||||
contentUpdateById("applicationExplain", "applicationExplain");
|
||||
contentUpdateById("window-visit-index", "windowVisitHelppage");
|
||||
contentUpdateById("help", "help");
|
||||
contentUpdateById("window-visit-router", "windowVisitConsole");
|
||||
contentUpdateById("routerConsole", "routerConsole");
|
||||
contentUpdateById("window-visit-homepage", "windowVisitHomepage");
|
||||
contentUpdateById("abouthome", "abouthome");
|
||||
contentUpdateById("window-visit-i2ptunnel", "windowVisitI2ptunnel");
|
||||
contentUpdateById("i2ptunnel", "i2ptunnel");
|
||||
contentUpdateById("window-visit-susimail", "windowVisitSusiMail");
|
||||
contentUpdateById("susimail", "susimail");
|
||||
contentUpdateById("window-visit-snark", "windowVisitSnark");
|
||||
contentUpdateById("snark", "snark");
|
||||
|
||||
// Homepage Section
|
||||
contentUpdateById('window-visit-webpage', 'windowVisitWebPage');
|
||||
contentUpdateById('webpage', 'help');
|
||||
contentUpdateById('window-visit-sources', 'windowVisitSources');
|
||||
contentUpdateById('sources', 'sources');
|
||||
contentUpdateById('window-visit-releases', 'windowVisitReleases');
|
||||
contentUpdateById('releases', 'releases');
|
||||
contentUpdateById("window-visit-webpage", "windowVisitWebPage");
|
||||
contentUpdateById("webpage", "help");
|
||||
contentUpdateById("window-visit-sources", "windowVisitSources");
|
||||
contentUpdateById("sources", "sources");
|
||||
contentUpdateById("window-visit-releases", "windowVisitReleases");
|
||||
contentUpdateById("releases", "releases");
|
||||
|
||||
fetch('http://proxy.i2p').then(myJson => {
|
||||
console.log('FETCH RESULT', myJson);
|
||||
contentUpdateById('proxy-check', 'proxySuccessStatus');
|
||||
fetch("http://proxy.i2p").then((myJson) => {
|
||||
contentUpdateById("proxy-check", "proxySuccessStatus");
|
||||
let readyness = document.querySelectorAll(".readyness");
|
||||
if (readyness != null) {
|
||||
hide(readyness);
|
||||
}
|
||||
});
|
||||
|
||||
function hide(elements) {
|
||||
elements = elements.length ? elements : [elements];
|
||||
for (var index = 0; index < elements.length; index++) {
|
||||
elements[index].style.display = "none";
|
||||
}
|
||||
}
|
||||
|
||||
function unhide(elements) {
|
||||
elements = elements.length ? elements : [elements];
|
||||
for (var index = 0; index < elements.length; index++) {
|
||||
elements[index].style.display = "inline-block";
|
||||
}
|
||||
}
|
||||
|
||||
//TODO: Don't hard-code this.
|
||||
fetch("http://127.0.0.1:7657/themes/console/light/images/i2plogo.png")
|
||||
.then((myJson) => {
|
||||
var consoleLinks = document.querySelectorAll(".application-info");
|
||||
unhide(consoleLinks);
|
||||
})
|
||||
.catch((error) => {
|
||||
var consoleLinks = document.querySelectorAll(".application-info");
|
||||
hide(consoleLinks);
|
||||
});
|
||||
|
||||
fetch("http://127.0.0.1:7657/jsonrpc/")
|
||||
.then((myJson) => {
|
||||
var toopieLinks = document.querySelectorAll(".window-visit-toopie");
|
||||
unhide(toopieLinks);
|
||||
})
|
||||
.catch((error) => {
|
||||
var toopieLinks = document.querySelectorAll(".window-visit-toopie");
|
||||
hide(toopieLinks);
|
||||
});
|
||||
|
22
context.js
@@ -1,5 +1,5 @@
|
||||
//var windowIds = []
|
||||
var titlepref = chrome.i18n.getMessage('titlePreface');
|
||||
var titlepref = chrome.i18n.getMessage("titlePreface");
|
||||
|
||||
function onError(error) {
|
||||
console.log(`Error : ${error}`);
|
||||
@@ -10,23 +10,23 @@ function eventHandler(event) {
|
||||
console.log(`Created window : ${windowInfo.id}`);
|
||||
browser.tabs.create({
|
||||
windowId: windowInfo.id,
|
||||
url: 'about:blank',
|
||||
cookieStoreId: event.target.dataset.identity
|
||||
url: "about:blank",
|
||||
cookieStoreId: event.target.dataset.identity,
|
||||
});
|
||||
}
|
||||
if (event.target.dataset.action == 'create') {
|
||||
if (event.target.dataset.action == "create") {
|
||||
var creating = browser.tabs.create({
|
||||
cookieStoreId: event.target.dataset.identity
|
||||
cookieStoreId: event.target.dataset.identity,
|
||||
});
|
||||
creating.then(onCreated, onError);
|
||||
}
|
||||
if (event.target.dataset.action == 'close-all') {
|
||||
if (event.target.dataset.action == "close-all") {
|
||||
browser.tabs
|
||||
.query({
|
||||
cookieStoreId: event.target.dataset.identity
|
||||
cookieStoreId: event.target.dataset.identity,
|
||||
})
|
||||
.then(tabs => {
|
||||
browser.tabs.remove(tabs.map(rem => rem.id));
|
||||
.then((tabs) => {
|
||||
browser.tabs.remove(tabs.map((rem) => rem.id));
|
||||
});
|
||||
}
|
||||
event.preventDefault();
|
||||
@@ -52,9 +52,9 @@ if (browser.contextualIdentities === undefined) {
|
||||
} else {
|
||||
browser.contextualIdentities
|
||||
.query({
|
||||
name: titlepref
|
||||
name: titlepref,
|
||||
})
|
||||
.then(identities => {
|
||||
.then((identities) => {
|
||||
if (!identities.length) {
|
||||
div.innerText = "No identities returned from the API.";
|
||||
return;
|
||||
|
88
debian/changelog
vendored
@@ -1,3 +1,91 @@
|
||||
i2psetproxy.js (0.107-1) UNRELEASED; urgency=low
|
||||
|
||||
* Small code fixes
|
||||
* Fix for interference with non-I2P containers
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Wed, 26 May 2021 12:56:56 -0400
|
||||
|
||||
i2psetproxy.js (0.105-1) UNRELEASED; urgency=low
|
||||
|
||||
* Add help page for configuring i2pcontrol
|
||||
* Add help page for configuring i2psnark-rpc
|
||||
* Update the icons
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Wed, 26 May 2021 12:56:56 -0400
|
||||
|
||||
i2psetproxy.js (0.103-1) UNRELEASED; urgency=low
|
||||
|
||||
* Fix for double-test issue on /home.html page in the extension
|
||||
* Fix for broken options menu
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Wed, 26 May 2021 12:56:56 -0400
|
||||
|
||||
i2psetproxy.js (0.101-1) UNRELEASED; urgency=low
|
||||
|
||||
* Sweeping changes to styles
|
||||
* fix for issue when using noscript and visiting susimail
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Mon, 24 May 2021 3:41:35 -0400
|
||||
|
||||
i2psetproxy.js (0.99-1) UNRELEASED; urgency=low
|
||||
|
||||
* Sweeping changes to styles
|
||||
* fix for issue when using noscript and visiting susimail
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Mon, 24 May 2021 2:05:21 -0400
|
||||
|
||||
i2psetproxy.js (0.97-1) UNRELEASED; urgency=low
|
||||
|
||||
* Fix theme issue, add x-i2p-torrentlocation HEADER support
|
||||
|
||||
-- idk <hankhill19580@gmail.com> FRI, 5 FEB 2021 1:02:55 -0400
|
||||
|
||||
i2psetproxy.js (0.95-1) UNRELEASED; urgency=low
|
||||
|
||||
* Fix github #102 and #103
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Sat, 21 DEC 2020 6:15:05 -0400
|
||||
|
||||
i2psetproxy.js (0.93-1) UNRELEASED; urgency=low
|
||||
|
||||
* Emergency fix of the first one
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Sat, 14 DEC 2020 5:18:53 -0400
|
||||
|
||||
i2psetproxy.js (0.91-1) UNRELEASED; urgency=low
|
||||
|
||||
* Exclude clearnet code hosting sites from scrub checks
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Sat, 14 DEC 2020 2:46:23 -0400
|
||||
|
||||
i2psetproxy.js (0.89-1) UNRELEASED; urgency=low
|
||||
|
||||
* Pages with lots of AJAX requests could trigger a performance degradation
|
||||
* Improve performance of x-i2p-* headers and meta tags
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Sat, 13 DEC 2020 2:22:00 -0400
|
||||
|
||||
i2psetproxy.js (0.87-1) UNRELEASED; urgency=low
|
||||
|
||||
* Disable searching for i2p sites in non-i2p search engines
|
||||
* Add contexts for i2pbote and Dispatch
|
||||
* Remain in tighter control of x-i2p-torrentlocation priority
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Sat, 10 NOV 2020 1:33:50 -0400
|
||||
|
||||
i2psetproxy.js (0.85-1) UNRELEASED; urgency=low
|
||||
|
||||
* Fix a bug which was causing i2psnark to fail to isolate.
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Sat, 10 NOV 2020 1:33:50 -0400
|
||||
|
||||
|
||||
i2psetproxy.js (0.83-1) UNRELEASED; urgency=low
|
||||
|
||||
* Add a tab for I2P-Native Dispatch
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Sat, 10 NOV 2020 22:00:01 -0400
|
||||
|
||||
i2psetproxy.js (0.81-1) UNRELEASED; urgency=low
|
||||
|
||||
* X-I2P-TorrentLocation header
|
||||
|
123
handler.js
@@ -1,61 +1,73 @@
|
||||
function routerHost(url) {
|
||||
let hostname = '';
|
||||
let path = '';
|
||||
// console.log("(urlcheck) HANDLER URL CHECK");
|
||||
let hostname = "";
|
||||
let path = "";
|
||||
function pathcheck(str) {
|
||||
// console.log("(urlcheck) HANDLER PATH CHECK", str);
|
||||
if (str != undefined) {
|
||||
let final = str.split('/')[0];
|
||||
if (final === 'i2ptunnelmgr' || final === 'i2ptunnel') {
|
||||
console.log('(urlcheck) Tunnel application path', final);
|
||||
return 'i2ptunnelmgr';
|
||||
let final = str.split("/")[0];
|
||||
if (final === "i2ptunnelmgr" || final === "i2ptunnel") {
|
||||
console.log("(urlcheck) Tunnel application path", final);
|
||||
return "i2ptunnelmgr";
|
||||
} else if (
|
||||
final === 'i2psnark' ||
|
||||
final === 'torrents' ||
|
||||
final.startsWith('transmission') ||
|
||||
final.startsWith('tracker')
|
||||
final === "i2psnark" ||
|
||||
final === "torrents" ||
|
||||
final.startsWith("transmission") ||
|
||||
final.startsWith("tracker") ||
|
||||
url.includes(":7662")
|
||||
) {
|
||||
console.log('(urlcheck) Torrent application path', final);
|
||||
return 'i2psnark';
|
||||
} else if (final === 'webmail' || final === 'susimail') {
|
||||
console.log('(urlcheck) Mail application path', final);
|
||||
return 'webmail';
|
||||
} else if (final.startsWith('MuWire')) {
|
||||
if (!url.includes('.png')) {
|
||||
console.log('(urlcheck) MuWire application path', final);
|
||||
return 'muwire';
|
||||
console.log("(urlcheck) Torrent application path", final);
|
||||
return "i2psnark";
|
||||
} else if (final === "webmail" || final === "susimail") {
|
||||
if (!url.includes(".css")) {
|
||||
console.log("(urlcheck) Mail application path", final);
|
||||
return "webmail";
|
||||
}
|
||||
} else if (final.startsWith("MuWire")) {
|
||||
if (!url.includes(".png")) {
|
||||
console.log("(urlcheck) MuWire application path", final);
|
||||
return "muwire";
|
||||
}
|
||||
} else if (final.startsWith("i2pbote")) {
|
||||
if (!url.includes(".png")) {
|
||||
console.log("(urlcheck) I2PBote application path", final);
|
||||
return "i2pbote";
|
||||
}
|
||||
} else if (
|
||||
final === 'home' ||
|
||||
final === 'console' ||
|
||||
final === 'dns' ||
|
||||
final === 'sitemap' ||
|
||||
final.startsWith('config')
|
||||
final === "home" ||
|
||||
final === "console" ||
|
||||
final === "dns" ||
|
||||
final === "susidns" ||
|
||||
final.startsWith("susidns") ||
|
||||
final === "sitemap" ||
|
||||
final.startsWith("config")
|
||||
) {
|
||||
console.log('(urlcheck) Console application path', final);
|
||||
return 'routerconsole';
|
||||
console.log("(urlcheck) Console application path", final);
|
||||
return "routerconsole";
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
if (url.indexOf('://') > -1) {
|
||||
hostname = url.split('/')[2];
|
||||
let prefix = url.substr(0, url.indexOf('://') + 3);
|
||||
path = url.replace(prefix + hostname + '/', '');
|
||||
if (url.indexOf("://") > -1) {
|
||||
hostname = url.split("/")[2];
|
||||
let prefix = url.substr(0, url.indexOf("://") + 3);
|
||||
path = url.replace(prefix + hostname + "/", "");
|
||||
} else if (identifyProtocolHandler(url)) {
|
||||
let newurl = identifyProtocolHandler(url);
|
||||
return routerHost(newurl);
|
||||
} else {
|
||||
hostname = url.split('/')[0];
|
||||
path = url.replace(hostname + '/', '');
|
||||
hostname = url.split("/")[0];
|
||||
path = url.replace(hostname + "/", "");
|
||||
}
|
||||
if (hostname === control_host + ':' + control_port) {
|
||||
if (hostname === control_host + ":" + control_port) {
|
||||
//console.log("(hostcheck) router console found on configured ports");
|
||||
return pathcheck(path);
|
||||
}
|
||||
if (hostname === 'localhost' + ':' + control_port) {
|
||||
if (hostname === "localhost" + ":" + control_port) {
|
||||
//console.log("(hostcheck) router console found on configured ports");
|
||||
return pathcheck(path);
|
||||
}
|
||||
if (hostname === '127.0.0.1' + ':' + control_port) {
|
||||
if (hostname === "127.0.0.1" + ":" + control_port) {
|
||||
return pathcheck(path);
|
||||
}
|
||||
|
||||
@@ -65,45 +77,44 @@ function routerHost(url) {
|
||||
function identifyProtocolHandler(url) {
|
||||
//console.log("looking for handler-able requests")
|
||||
if (routerHost(url)) {
|
||||
if (url.includes(encodeURIComponent('ext+rc:'))) {
|
||||
return url.replace(encodeURIComponent('ext+rc:'), '');
|
||||
} else if (url.includes('ext+rc:')) {
|
||||
return url.replace('ext+rc:', '');
|
||||
if (url.includes(encodeURIComponent("ext+rc:"))) {
|
||||
return url.replace(encodeURIComponent("ext+rc:"), "");
|
||||
} else if (url.includes("ext+rc:")) {
|
||||
return url.replace("ext+rc:", "");
|
||||
}
|
||||
} else if (url.includes('ext+rc:')) {
|
||||
} else if (url.includes("ext+rc:")) {
|
||||
return url;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function trimHost(url) {
|
||||
let hostname = '';
|
||||
let prefix = '';
|
||||
if (url.indexOf('://') > -1) {
|
||||
prefix = url.substr(0, url.indexOf('://') + 3);
|
||||
hostname = url.split('/')[2];
|
||||
let hostname = "";
|
||||
let prefix = "";
|
||||
if (url.indexOf("://") > -1) {
|
||||
prefix = url.substr(0, url.indexOf("://") + 3);
|
||||
hostname = url.split("/")[2];
|
||||
} else {
|
||||
hostname = url.split('/')[0];
|
||||
hostname = url.split("/")[0];
|
||||
}
|
||||
let path = url.replace(prefix + hostname, '');
|
||||
console.log('(handler) path', prefix + hostname, path);
|
||||
let path = url.replace(prefix + hostname, "");
|
||||
console.log("(handler) path", prefix + hostname, path);
|
||||
return path;
|
||||
}
|
||||
|
||||
var handlerSetup = function(requestDetails) {
|
||||
var handlerSetup = function (requestDetails) {
|
||||
//console.log("checking protocol handler listener")
|
||||
let rwurl = identifyProtocolHandler(requestDetails.url);
|
||||
if (rwurl != false) {
|
||||
console.log('(handler) rewrite URL requested', rwurl);
|
||||
console.log("(handler) rewrite URL requested", rwurl);
|
||||
requestDetails.redirectUrl = rwurl;
|
||||
requestDetails.url = trimHost(rwurl);
|
||||
requestDetails.originUrl = trimHost(rwurl);
|
||||
}
|
||||
return requestDetails;
|
||||
};
|
||||
|
||||
browser.webRequest.onBeforeRequest.addListener(
|
||||
handlerSetup,
|
||||
{ urls: ['<all_urls>'] },
|
||||
['blocking']
|
||||
);
|
||||
/*
|
||||
browser.webRequest.onBeforeRequest.addListener(handlerSetup, {
|
||||
urls: ['<all_urls>'],
|
||||
});
|
||||
*/
|
||||
|
385
home.css
@@ -1,34 +1,140 @@
|
||||
|
||||
|
||||
* {
|
||||
padding: 0;
|
||||
color: #1f1a24;
|
||||
margin: 0
|
||||
margin: 0;
|
||||
}
|
||||
a,
|
||||
button {
|
||||
color: #1f1a24;
|
||||
|
||||
html {
|
||||
margin: 0 4%;
|
||||
padding: 0 20px;
|
||||
min-height: 100%;
|
||||
background: #9ab;
|
||||
background: repeating-linear-gradient(to bottom, #9ab, #89a 2px);
|
||||
scrollbar-color: #bcd #789;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 20px 40px;
|
||||
font-family: Open Sans, Noto Sans, Segoe UI, sans-serif;
|
||||
font-size: 12pt;
|
||||
color: #495057;
|
||||
text-decoration: none;
|
||||
word-wrap: break-word;
|
||||
border-left: 1px solid #495057;
|
||||
border-right: 1px solid #495057;
|
||||
box-shadow: 0 0 2px 2px rgba(0, 0, 0, .1);
|
||||
background: #f2f2f2;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4 {
|
||||
display: block;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
h1 {
|
||||
text-transform: uppercase;
|
||||
font-weight: 900;
|
||||
font-size: 200%;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 140%;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 120%;
|
||||
}
|
||||
|
||||
h4 {
|
||||
margin-bottom: 5px;
|
||||
text-align: right;
|
||||
text-transform: none;
|
||||
font-size: 90%;
|
||||
font-weight: 600;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
p {
|
||||
margin-bottom: 15px;
|
||||
width: 100%;
|
||||
line-height: 1.4;
|
||||
word-wrap: break-word;
|
||||
text-align: justify;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
ul {
|
||||
margin: 10px 20px;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
li {
|
||||
margin-left: 0;
|
||||
padding: 12px 15px 15px 20px;
|
||||
width: calc(100% - 40px);
|
||||
text-align: justify;
|
||||
border: 1px solid #9ab;
|
||||
border-radius: 2px;
|
||||
box-shadow: inset 0 0 0 1px #fff;
|
||||
background: #dee2e6;
|
||||
}
|
||||
|
||||
li li {
|
||||
padding-bottom: 0;
|
||||
width: calc(100% - 40px);
|
||||
text-align: left;
|
||||
border: none;
|
||||
border-top: 1px solid #9ab;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
li li:first-of-type {
|
||||
margin-top: 15px;
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
li a:first-of-type {
|
||||
display: block;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#applicationExplain {
|
||||
float: unset;
|
||||
}
|
||||
|
||||
li+li {
|
||||
margin-top: 15px;
|
||||
}
|
||||
|
||||
h3+ul, ul+h3, ul+h2 {
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
a, button {
|
||||
color: #3b6bbf;
|
||||
text-decoration: none;
|
||||
background: none;
|
||||
font-weight: 700;
|
||||
word-wrap: break-word;
|
||||
outline: 0;
|
||||
padding: 3px;
|
||||
margin: auto
|
||||
}
|
||||
|
||||
.applicationDesc {
|
||||
color: #81888f;
|
||||
text-decoration: none;
|
||||
font-weight: 700;
|
||||
word-wrap: break-word;
|
||||
outline: 0
|
||||
outline: 0;
|
||||
}
|
||||
.applicationDesc:hover,
|
||||
a:hover,
|
||||
button:hover {
|
||||
color: #495057;
|
||||
|
||||
.applicationDesc:hover, a:hover, button:hover {
|
||||
text-decoration: none;
|
||||
font-weight: 700;
|
||||
word-wrap: break-word;
|
||||
outline: 0
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
button {
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
@@ -36,137 +142,77 @@ button {
|
||||
text-decoration: none;
|
||||
font-weight: 700;
|
||||
word-wrap: break-word;
|
||||
outline: 0
|
||||
}
|
||||
body {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
font-family: "Droid Sans","Noto Sans",Ubuntu,"Segoe UI","Lucida Grande",Verdana,Helvetica,sans-serif;
|
||||
margin: 0 auto;
|
||||
padding: 0;
|
||||
text-decoration: none;
|
||||
font-weight: 700;
|
||||
word-wrap: break-word;
|
||||
outline: 0
|
||||
}
|
||||
.button-list {
|
||||
min-height: 230px;
|
||||
min-width: 230px
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
.background {
|
||||
height: 100%
|
||||
}
|
||||
p {
|
||||
line-height: 32px;
|
||||
font-size: 17px;
|
||||
font-family: "Droid Sans","Noto Sans",Ubuntu,"Segoe UI","Lucida Grande",Verdana,Helvetica,sans-serif;
|
||||
text-decoration: none;
|
||||
font-weight: 700;
|
||||
word-wrap: break-word;
|
||||
outline: 0
|
||||
background-color: #f8f8ff;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.content {
|
||||
min-height: 3rem;
|
||||
padding: 1rem;
|
||||
margin: 1.5rem;
|
||||
display: block;
|
||||
border-radius: 2px;
|
||||
min-width: 100%
|
||||
}
|
||||
#header,
|
||||
.application-info,
|
||||
.browser-info,
|
||||
.extended-info,
|
||||
.search-info {
|
||||
min-height: 3rem;
|
||||
padding: 1rem;
|
||||
margin-top: 1.5rem;
|
||||
display: block;
|
||||
min-height: 3rem;
|
||||
min-width: 95%;
|
||||
display: inline-block;
|
||||
border: 1px solid #d9d9d6;
|
||||
border-radius: 2px;
|
||||
min-width: 100%
|
||||
box-shadow: inset 0 0 0 1px #fff, 0 0 1px #ccc;
|
||||
background: #f8f8ff;
|
||||
}
|
||||
h1 {
|
||||
margin: auto;
|
||||
font-family: "Droid Sans","Noto Sans",Ubuntu,"Segoe UI","Lucida Grande",Verdana,Helvetica,sans-serif;
|
||||
font-weight: 600;
|
||||
font-size: 32px;
|
||||
color: #e6e6e7;
|
||||
background: #1f1a24;
|
||||
width: 100%;
|
||||
border-radius: 2px 2px 0 0
|
||||
}
|
||||
h2,
|
||||
h3 {
|
||||
margin-right: auto;
|
||||
font-family: "Droid Sans","Noto Sans",Ubuntu,"Segoe UI","Lucida Grande",Verdana,Helvetica,sans-serif;
|
||||
font-weight: 600;
|
||||
font-size: 25px;
|
||||
color: #e6e6e7;
|
||||
border-radius: 2px 2px 0 0;
|
||||
background: #1f1a24;
|
||||
width: 100%;
|
||||
padding-left: 5%
|
||||
}
|
||||
h4 {
|
||||
margin-right: auto;
|
||||
font-family: "Droid Sans","Noto Sans",Ubuntu,"Segoe UI","Lucida Grande",Verdana,Helvetica,sans-serif;
|
||||
font-weight: 600;
|
||||
font-size: 20px!important;
|
||||
color: #41465f;
|
||||
border-radius: 2px 2px 0 0;
|
||||
background: #1f1a24;
|
||||
width: 100%;
|
||||
padding-left: 5%
|
||||
|
||||
#header, .application-info, .browser-info, .extended-info, .search-info {
|
||||
margin-top: 1.5rem;
|
||||
padding: 1rem;
|
||||
min-height: 3rem;
|
||||
min-width: 95%;
|
||||
display: inline-block;
|
||||
border: 1px solid #d9d9d6;
|
||||
border-radius: 2px;
|
||||
box-shadow: inset 0 0 0 1px #fff, 0 0 1px #ccc;
|
||||
background: #f8f8ff;
|
||||
}
|
||||
|
||||
.showhider {
|
||||
margin-right: auto;
|
||||
font-family: "Droid Sans","Noto Sans",Ubuntu,"Segoe UI","Lucida Grande",Verdana,Helvetica,sans-serif;
|
||||
border: none;
|
||||
padding: 0!important;
|
||||
text-transform: uppercase;
|
||||
background: none !important;
|
||||
border: none;
|
||||
width: 90%;
|
||||
color: #3b6bbf;
|
||||
text-decoration: none;
|
||||
font-weight: 700;
|
||||
word-wrap: break-word;
|
||||
outline: 0;
|
||||
text-align: left
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
#links .showhider {
|
||||
font-size: 25px
|
||||
font-size: 25px;
|
||||
}
|
||||
|
||||
.section-header {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
margin-bottom: 80px
|
||||
}
|
||||
ul {
|
||||
margin: auto;
|
||||
border-radius: 2px;
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
padding: 0
|
||||
}
|
||||
li {
|
||||
display: block;
|
||||
text-align: center;
|
||||
margin: 0;
|
||||
padding: 0
|
||||
}
|
||||
.center {
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
width: 50%
|
||||
margin-bottom: 80px;
|
||||
}
|
||||
|
||||
#readyness {
|
||||
padding-top: 1rem;
|
||||
padding-bottom: 1rem;
|
||||
margin: 1rem;
|
||||
width: 42%;
|
||||
min-width: 42%;
|
||||
background: #dee2e6;
|
||||
text-align: center!important;
|
||||
border: 1px solid #dee2e6;
|
||||
border-radius: 2px;
|
||||
display: block
|
||||
box-shadow: inset 0 0 0 1px #fff, 0 0 1px #ccc;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
#onboarding {
|
||||
min-height: 5rem;
|
||||
padding: .5rem;
|
||||
@@ -175,101 +221,138 @@ li {
|
||||
width: 42%;
|
||||
min-width: 42%;
|
||||
font-size: 2rem;
|
||||
background: #a48fe1;
|
||||
text-align: center!important;
|
||||
border-radius: 2px
|
||||
border: 1px solid #a48fe1;
|
||||
border-radius: 2px;
|
||||
box-shadow: inset 0 0 0 1px #fff, 0 0 1px #ccc;
|
||||
}
|
||||
|
||||
#i2pbrowser-description {
|
||||
padding-top: 1rem;
|
||||
padding-bottom: 1rem;
|
||||
width: 50%;
|
||||
min-width: 50%;
|
||||
display: block
|
||||
}
|
||||
html body ul.label-list li {
|
||||
list-style: none;
|
||||
float: left
|
||||
}
|
||||
html body ul.label-list li:nth-child(odd) {
|
||||
clear: left
|
||||
display: inline-block;
|
||||
background: #dee2e6;
|
||||
border: 1px solid #dee2e6;
|
||||
border-radius: 2px;
|
||||
box-shadow: inset 0 0 0 1px #fff, 0 0 1px #ccc;
|
||||
}
|
||||
|
||||
#linksExplain {
|
||||
min-height: 5rem;
|
||||
padding: .5rem;
|
||||
margin: .5rem;
|
||||
width: 30%;
|
||||
min-width: 30%;
|
||||
background: #dee2e6;
|
||||
text-align: center!important;
|
||||
border-radius: 2px
|
||||
border: 1px solid #dee2e6;
|
||||
border-radius: 2px;
|
||||
box-shadow: inset 0 0 0 1px #fff, 0 0 1px #ccc;
|
||||
}
|
||||
#applicationExplain,
|
||||
#controlExplain {
|
||||
|
||||
#applicationExplain, #controlExplain {
|
||||
min-height: 5rem;
|
||||
padding: .5rem;
|
||||
margin: .5rem;
|
||||
text-align: left!important;
|
||||
float: left
|
||||
width: 30%;
|
||||
min-width: 30%;
|
||||
background: #dee2e6;
|
||||
text-align: center!important;
|
||||
border: 1px solid #dee2e6;
|
||||
border-radius: 2px;
|
||||
box-shadow: inset 0 0 0 1px #fff, 0 0 1px #ccc;
|
||||
float: left;
|
||||
}
|
||||
|
||||
#proxyReady {
|
||||
min-height: 3rem;
|
||||
padding: .5rem;
|
||||
margin: .2rem;
|
||||
width: 38%;
|
||||
min-width: 38%;
|
||||
display: block;
|
||||
display: inline-block;
|
||||
background: #d9d9d6;
|
||||
float: right;
|
||||
text-align: center!important
|
||||
text-align: center!important;
|
||||
border: 1px solid #d9d9d6;
|
||||
border-radius: 2px;
|
||||
box-shadow: inset 0 0 0 1px #fff, 0 0 1px #ccc;
|
||||
}
|
||||
|
||||
#proxyUnready {
|
||||
min-height: 3rem;
|
||||
padding: .5rem;
|
||||
margin: .2rem;
|
||||
width: 38%;
|
||||
min-width: 38%;
|
||||
display: block;
|
||||
display: inline-block;
|
||||
float: right;
|
||||
text-align: center!important
|
||||
text-align: center!important;
|
||||
border: 1px solid #ffc56d;
|
||||
border-radius: 2px;
|
||||
background: #ffc56d;
|
||||
box-shadow: inset 0 0 0 1px #fff, 0 0 1px #ccc;
|
||||
}
|
||||
|
||||
#consoleOn {
|
||||
min-height: 3rem;
|
||||
padding: .5rem;
|
||||
margin: .2rem;
|
||||
width: 38%;
|
||||
min-width: 38%;
|
||||
display: block;
|
||||
display: inline-block;
|
||||
float: left;
|
||||
text-align: center!important
|
||||
}
|
||||
.tabicon {
|
||||
min-width: 64px;
|
||||
min-height: 64px
|
||||
}
|
||||
li.application {
|
||||
text-align: left
|
||||
}
|
||||
button.applicationName {
|
||||
width: auto
|
||||
text-align: center!important;
|
||||
border: 1px solid #f7e59a;
|
||||
border-radius: 2px;
|
||||
background: #f7e59a;
|
||||
box-shadow: inset 0 0 0 1px #fff, 0 0 1px #ccc;
|
||||
}
|
||||
|
||||
.onboardingContent {
|
||||
font-size: .8rem!important;
|
||||
text-align: left;
|
||||
display: none
|
||||
display: none;
|
||||
}
|
||||
|
||||
#info-content {
|
||||
display: none
|
||||
display: none;
|
||||
}
|
||||
.consoleOn:hover #proxy-check,
|
||||
.proxyReady:hover #proxy-check {
|
||||
|
||||
.consoleOn:hover #proxy-check, .proxyReady:hover #proxy-check {
|
||||
visibility: visible;
|
||||
opacity: 1
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
img {
|
||||
max-width: 100%;
|
||||
margin: 3%
|
||||
}
|
||||
|
||||
img.readyness {
|
||||
height: 100%;
|
||||
width: auto
|
||||
width: auto;
|
||||
}
|
||||
input {
|
||||
color: #1f1a24
|
||||
|
||||
@media only screen and (max-width: 399px) {
|
||||
.application-info {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1200px) {
|
||||
body {
|
||||
font-size: 10.5pt;
|
||||
}
|
||||
}
|
||||
|
||||
video {
|
||||
width: 100%
|
||||
}
|
||||
|
||||
.hidden {
|
||||
visibility: none;
|
||||
display: none
|
||||
}
|
@@ -86,8 +86,8 @@
|
||||
</div>
|
||||
</li>-->
|
||||
|
||||
<li class="application">
|
||||
<a class="applicationName" href="toopie.html" id="window-visit-toopie">Toopie</a> <span class="applicationDesc" id="toopie">For information about your I2P router status, go here:</span>
|
||||
<li class="application window-visit-toopie">
|
||||
<a class="applicationName window-visit-toopie" href="toopie.html" id="window-visit-toopie">Toopie</a> <span class="applicationDesc window-visit-toopie" id="toopie">For information about your I2P router status, go here:</span>
|
||||
</li>
|
||||
|
||||
<li class="application">
|
||||
@@ -147,5 +147,6 @@
|
||||
</div>
|
||||
<script src="home.js" type="text/javascript"></script>
|
||||
<script src="content.js" type="text/javascript"></script> <!--</div>-->
|
||||
<script src="i2pcontrol/i2pcontrol.js" type="text/javascript"></script> <!--</div>-->
|
||||
</body>
|
||||
</html>
|
||||
|
34
home.js
@@ -1,25 +1,25 @@
|
||||
document.addEventListener('click', clickEvent => {
|
||||
if (clickEvent.target.id === 'onboardingButtonZero') {
|
||||
flipVisibility('onboardingContentZero');
|
||||
} else if (clickEvent.target.id === 'onboardingButtonOne') {
|
||||
flipVisibility('onboardingContentOne');
|
||||
} else if (clickEvent.target.id === 'onboardingButtonTwo') {
|
||||
flipVisibility('onboardingContentTwo');
|
||||
} else if (clickEvent.target.id === 'onboardingButtonThree') {
|
||||
flipVisibility('onboardingContentThree');
|
||||
} else if (clickEvent.target.id === 'onboardingButtonFour') {
|
||||
flipVisibility('onboardingContentFour');
|
||||
} else if (clickEvent.target.id === 'fliplinks') {
|
||||
flipVisibility('info-content');
|
||||
document.addEventListener("click", (clickEvent) => {
|
||||
if (clickEvent.target.id === "onboardingButtonZero") {
|
||||
flipVisibility("onboardingContentZero");
|
||||
} else if (clickEvent.target.id === "onboardingButtonOne") {
|
||||
flipVisibility("onboardingContentOne");
|
||||
} else if (clickEvent.target.id === "onboardingButtonTwo") {
|
||||
flipVisibility("onboardingContentTwo");
|
||||
} else if (clickEvent.target.id === "onboardingButtonThree") {
|
||||
flipVisibility("onboardingContentThree");
|
||||
} else if (clickEvent.target.id === "onboardingButtonFour") {
|
||||
flipVisibility("onboardingContentFour");
|
||||
} else if (clickEvent.target.id === "fliplinks") {
|
||||
flipVisibility("info-content");
|
||||
}
|
||||
});
|
||||
|
||||
function flipVisibility(div) {
|
||||
console.log('(home) seeking flippable', div);
|
||||
console.log("(home) seeking flippable", div);
|
||||
let flippable = document.getElementById(div);
|
||||
if (flippable.style.display !== 'block') {
|
||||
flippable.style.display = 'block';
|
||||
if (flippable.style.display !== "block") {
|
||||
flippable.style.display = "block";
|
||||
} else {
|
||||
flippable.style.display = 'none';
|
||||
flippable.style.display = "none";
|
||||
}
|
||||
}
|
||||
|
177
host.js
@@ -1,15 +1,15 @@
|
||||
function proxyHost(url) {
|
||||
let hostname = '';
|
||||
if (url.indexOf('://') > -1) {
|
||||
hostname = url.split('/')[2];
|
||||
let hostname = "";
|
||||
if (url.indexOf("://") > -1) {
|
||||
hostname = url.split("/")[2];
|
||||
} else {
|
||||
hostname = url.split('/')[0];
|
||||
hostname = url.split("/")[0];
|
||||
}
|
||||
if (hostname == 'proxy.i2p') {
|
||||
if (hostname == "proxy.i2p") {
|
||||
return true;
|
||||
}
|
||||
if (
|
||||
hostname == 'c6lilt4cr5x7jifxridpkesf2zgfwqfchtp6laihr4pdqomq25iq.b32.i2p'
|
||||
hostname == "c6lilt4cr5x7jifxridpkesf2zgfwqfchtp6laihr4pdqomq25iq.b32.i2p"
|
||||
) {
|
||||
return true;
|
||||
}
|
||||
@@ -17,119 +17,158 @@ function proxyHost(url) {
|
||||
}
|
||||
|
||||
function localHost(url) {
|
||||
let hostname = '';
|
||||
if (url.indexOf('://') > -1) {
|
||||
hostname = url.split('/')[2];
|
||||
let hostname = "";
|
||||
if (url.indexOf("://") > -1) {
|
||||
hostname = url.split("/")[2];
|
||||
} else {
|
||||
hostname = url.split('/')[0];
|
||||
hostname = url.split("/")[0];
|
||||
}
|
||||
hostname = hostname.split(':')[0];
|
||||
if (hostname === '127.0.0.1') {
|
||||
return true;
|
||||
} else if (hostname === 'localhost') {
|
||||
return true;
|
||||
hostname = hostname.split(":")[0];
|
||||
console.log("(isolate) hostname localhost", hostname);
|
||||
console.log("(isolate) url localhost", url);
|
||||
if (hostname === "127.0.0.1") {
|
||||
if (url.indexOf("7669") != -1) return "irc";
|
||||
} else if (hostname === "localhost") {
|
||||
if (url.indexOf("8084") != -1) return "blog";
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function extensionHost(url) {
|
||||
var prefix = browser.runtime
|
||||
.getURL("")
|
||||
.replace("moz-extension://", "")
|
||||
.replace("/", "");
|
||||
if (url.originUrl !== undefined) {
|
||||
var res = url.originUrl.startsWith(browser.runtime.getURL(''));
|
||||
var originUrl = url.originUrl
|
||||
.replace("moz-extension://", "")
|
||||
.replace("/", "");
|
||||
// console.log("(urlcheck) Extension application path", originUrl);
|
||||
// console.log("(urlcheck) Extension application path", prefix);
|
||||
var res = originUrl.startsWith(prefix);
|
||||
// console.log("(urlcheck) Extension application path", res);
|
||||
if (res) return res;
|
||||
}
|
||||
if (url.url !== undefined) {
|
||||
var res = url.url.startsWith(browser.runtime.getURL(''));
|
||||
if (url.documentUrl !== undefined) {
|
||||
// console.log("(urlcheck) Extension application path", originUrl);
|
||||
// console.log("(urlcheck) Extension application path", prefix);
|
||||
var res = originUrl.startsWith(prefix);
|
||||
// console.log("(urlcheck) Extension application path", res);
|
||||
if (res) return res;
|
||||
}
|
||||
console.log("(urlcheck) Extension application path", url);
|
||||
}
|
||||
|
||||
function i2pHostName(url) {
|
||||
let hostname = '';
|
||||
if (url.indexOf('://') > -1) {
|
||||
hostname = url.split('/')[2];
|
||||
let hostname = "";
|
||||
console.log("(hosts)", url);
|
||||
let u = new URL(url);
|
||||
if (u.host.endsWith(".i2p")) {
|
||||
hostname = u.host;
|
||||
} else if (url.includes("=")) {
|
||||
if (url.includes(".i2p")) {
|
||||
lsit = url.split("=");
|
||||
for (let item in lsit) {
|
||||
var items = lsit[item].split(`\ % `); //"\%")
|
||||
for (let p in items) {
|
||||
if (items[p].includes(".i2p")) {
|
||||
hostname = items[p].replace("3D", 1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (hostname != "") {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (url.indexOf("://") > -1) {
|
||||
hostname = url.split("/")[2];
|
||||
} else {
|
||||
hostname = url.split('/')[0];
|
||||
hostname = url.split("/")[0];
|
||||
}
|
||||
console.log("(hosts) scrub", hostname);
|
||||
return hostname;
|
||||
}
|
||||
|
||||
function i2pHost(url) {
|
||||
let hostname = i2pHostName(url);
|
||||
return hostname.endsWith('.i2p');
|
||||
return hostname.endsWith(".i2p");
|
||||
}
|
||||
|
||||
function routerHost(url) {
|
||||
let hostname = '';
|
||||
let path = '';
|
||||
// console.log("(urlcheck) HOST URL CHECK");
|
||||
let hostname = "";
|
||||
let path = "";
|
||||
function pathcheck(str) {
|
||||
if (str != undefined) {
|
||||
let final = str.split('/')[0];
|
||||
if (final === 'i2ptunnelmgr' || final === 'i2ptunnel') {
|
||||
console.log('(urlcheck) Tunnel application path', final);
|
||||
return 'i2ptunnelmgr';
|
||||
let final = str.split("/")[0];
|
||||
if (final === "i2ptunnelmgr" || final === "i2ptunnel") {
|
||||
console.log("(urlcheck) Tunnel application path", final);
|
||||
return "i2ptunnelmgr";
|
||||
} else if (
|
||||
final === 'i2psnark' ||
|
||||
final === 'torrents' ||
|
||||
final.startsWith('transmission') ||
|
||||
final.startsWith('tracker')
|
||||
final === "i2psnark" ||
|
||||
final === "torrents" ||
|
||||
final.startsWith("transmission") ||
|
||||
final.startsWith("tracker") ||
|
||||
url.includes(":7662")
|
||||
) {
|
||||
console.log('(urlcheck) Torrent application path', final);
|
||||
return 'i2psnark';
|
||||
} else if (final === 'webmail' || final === 'susimail') {
|
||||
console.log('(urlcheck) Mail application path', final);
|
||||
return 'webmail';
|
||||
} else if (final.startsWith('MuWire')) {
|
||||
if (!url.includes('.png')) {
|
||||
console.log('(urlcheck) MuWire application path', final);
|
||||
return 'muwire';
|
||||
console.log("(urlcheck) Torrent application path", final);
|
||||
return "i2psnark";
|
||||
} else if (final === "webmail" || final === "susimail") {
|
||||
if (!url.includes(".css")) {
|
||||
console.log("(urlcheck) Mail application path", final);
|
||||
return "webmail";
|
||||
}
|
||||
} else if (final.startsWith("MuWire")) {
|
||||
if (!url.includes(".png")) {
|
||||
console.log("(urlcheck) MuWire application path", final);
|
||||
return "muwire";
|
||||
}
|
||||
} else if (final.startsWith("i2pbote")) {
|
||||
if (!url.includes(".png")) {
|
||||
console.log("(urlcheck) I2PBote application path", final);
|
||||
return "i2pbote";
|
||||
}
|
||||
} else if (
|
||||
final === 'home' ||
|
||||
final === 'console' ||
|
||||
final === 'dns' ||
|
||||
final === 'sitemap' ||
|
||||
final.startsWith('config')
|
||||
final === "home" ||
|
||||
final === "console" ||
|
||||
final === "dns" ||
|
||||
final === "susidns" ||
|
||||
final.startsWith("susidns") ||
|
||||
final === "sitemap" ||
|
||||
final.startsWith("config")
|
||||
) {
|
||||
console.log('(urlcheck) Console application path', final);
|
||||
return 'routerconsole';
|
||||
console.log("(urlcheck) Console application path", final);
|
||||
return "routerconsole";
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
if (url.indexOf('://') > -1) {
|
||||
hostname = url.split('/')[2];
|
||||
let prefix = url.substr(0, url.indexOf('://') + 3);
|
||||
path = url.replace(prefix + hostname + '/', '');
|
||||
if (url.indexOf("://") > -1) {
|
||||
hostname = url.split("/")[2];
|
||||
let prefix = url.substr(0, url.indexOf("://") + 3);
|
||||
path = url.replace(prefix + hostname + "/", "");
|
||||
} else if (identifyProtocolHandler(url)) {
|
||||
let newurl = identifyProtocolHandler(url);
|
||||
return routerHost(newurl);
|
||||
} else {
|
||||
hostname = url.split('/')[0];
|
||||
path = url.replace(hostname + '/', '');
|
||||
hostname = url.split("/")[0];
|
||||
path = url.replace(hostname + "/", "");
|
||||
}
|
||||
if (hostname === control_host + ':' + control_port) {
|
||||
if (hostname === control_host + ":" + control_port) {
|
||||
return pathcheck(path);
|
||||
}
|
||||
if (hostname === control_host + ':' + '7662') {
|
||||
if (hostname === "localhost" + ":" + control_port) {
|
||||
return pathcheck(path);
|
||||
}
|
||||
if (hostname === 'localhost' + ':' + '7662') {
|
||||
if (hostname === "127.0.0.1" + ":" + control_port) {
|
||||
return pathcheck(path);
|
||||
}
|
||||
if (hostname === '127.0.0.1' + ':' + '7662') {
|
||||
if (hostname === "localhost" + ":" + 7070) {
|
||||
return pathcheck(path);
|
||||
}
|
||||
if (hostname === 'localhost' + ':' + control_port) {
|
||||
return pathcheck(path);
|
||||
}
|
||||
if (hostname === '127.0.0.1' + ':' + control_port) {
|
||||
return pathcheck(path);
|
||||
}
|
||||
if (hostname === 'localhost' + ':' + 7070) {
|
||||
return pathcheck(path);
|
||||
}
|
||||
if (hostname === '127.0.0.1' + ':' + 7070) {
|
||||
if (hostname === "127.0.0.1" + ":" + 7070) {
|
||||
return pathcheck(path);
|
||||
}
|
||||
return false;
|
||||
|
BIN
i2p-https.png
Normal file
After Width: | Height: | Size: 184 KiB |
@@ -1,5 +1,8 @@
|
||||
i2pcontrol.js
|
||||
=============
|
||||
toopie.html/i2pcontrol.js
|
||||
=========================
|
||||
|
||||
This is inside of the webextension for now, but it's actually a fully-fledged,
|
||||
standalone library for talking to i2pcontrol.
|
||||
To enable toopie.html, the built in I2P monitoring system in this webextension,
|
||||
go to the [Web App Configuration page in the I2P Router and start I2PControl](http://127.0.0.1:7657/configwebapps).
|
||||
Click the "Start" button next to the menu item that says `jsonrpc`.
|
||||
|
||||
- 
|
||||
|
@@ -1,9 +1,9 @@
|
||||
var hello = 'hello i2pcontrol';
|
||||
var hello = "hello i2pcontrol";
|
||||
|
||||
function makeid(length) {
|
||||
var result = '';
|
||||
var result = "";
|
||||
var characters =
|
||||
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
||||
var charactersLength = characters.length;
|
||||
for (var i = 0; i < length; i++) {
|
||||
result += characters.charAt(Math.floor(Math.random() * charactersLength));
|
||||
@@ -22,16 +22,16 @@ function send(
|
||||
let requestBody = JSON.stringify(data);
|
||||
//console.log("(i2pcontrol) sending request", requestBody);
|
||||
let opts = {
|
||||
method: 'POST', // *GET, POST, PUT, DELETE, etc.
|
||||
mode: 'cors', // no-cors, *cors, same-origin
|
||||
cache: 'no-cache', // *default, no-cache, reload, force-cache, only-if-cached
|
||||
credentials: 'same-origin', // include, *same-origin, omit
|
||||
method: "POST", // *GET, POST, PUT, DELETE, etc.
|
||||
mode: "cors", // no-cors, *cors, same-origin
|
||||
cache: "no-cache", // *default, no-cache, reload, force-cache, only-if-cached
|
||||
credentials: "same-origin", // include, *same-origin, omit
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
redirect: 'follow', // manual, *follow, error
|
||||
referrerPolicy: 'no-referrer', // no-referrer, *client
|
||||
body: requestBody // body data type must match "Content-Type" header
|
||||
redirect: "follow", // manual, *follow, error
|
||||
referrerPolicy: "no-referrer", // no-referrer, *client
|
||||
body: requestBody, // body data type must match "Content-Type" header
|
||||
};
|
||||
const response = await fetch(url, opts);
|
||||
return await response.json(); // parses JSON response into native JavaScript objects
|
||||
@@ -39,7 +39,7 @@ function send(
|
||||
|
||||
//console.log("http://" + control_host + ":" + control_port + "/" + control_path)
|
||||
return postData(
|
||||
'http://' + control_host + ':' + control_port + '/' + control_path + '/',
|
||||
"http://" + control_host + ":" + control_port + "/" + control_path + "/",
|
||||
message
|
||||
);
|
||||
}
|
||||
@@ -51,12 +51,12 @@ async function authenticate(
|
||||
control_path = "jsonrpc"
|
||||
) {
|
||||
var json = new Object();
|
||||
json['id'] = makeid(6);
|
||||
json['jsonrpc'] = '2.0';
|
||||
json['method'] = 'Authenticate';
|
||||
json['params'] = new Object();
|
||||
json['params']['API'] = 1;
|
||||
json['params']['Password'] = password;
|
||||
json["id"] = makeid(6);
|
||||
json["jsonrpc"] = "2.0";
|
||||
json["method"] = "Authenticate";
|
||||
json["params"] = new Object();
|
||||
json["params"]["API"] = 1;
|
||||
json["params"]["Password"] = password;
|
||||
return send(json, control_host, control_port, control_path);
|
||||
}
|
||||
|
||||
@@ -81,14 +81,14 @@ async function Echo(
|
||||
password = "itoopie"
|
||||
) {
|
||||
function echo(token) {
|
||||
console.log('(i2pcontrol) testing I2PControl connection');
|
||||
console.log("(i2pcontrol) testing I2PControl connection");
|
||||
var json = new Object();
|
||||
json['id'] = makeid(6);
|
||||
json['jsonrpc'] = '2.0';
|
||||
json['method'] = 'Echo';
|
||||
json['params'] = new Object();
|
||||
json['params']['Token'] = token;
|
||||
json['params']['Echo'] = message;
|
||||
json["id"] = makeid(6);
|
||||
json["jsonrpc"] = "2.0";
|
||||
json["method"] = "Echo";
|
||||
json["params"] = new Object();
|
||||
json["params"]["Token"] = token;
|
||||
json["params"]["Echo"] = message;
|
||||
return send(json, control_host, control_port, control_path);
|
||||
}
|
||||
let token = GetToken(password, control_host, control_port, control_path);
|
||||
@@ -121,13 +121,13 @@ async function GetRate(
|
||||
) {
|
||||
function getrate(token) {
|
||||
var json = new Object();
|
||||
json['id'] = makeid(6);
|
||||
json['jsonrpc'] = '2.0';
|
||||
json['method'] = 'I2PControl';
|
||||
json['params'] = new Object();
|
||||
json['params']['Token'] = token;
|
||||
json['params']['Stat'] = Query;
|
||||
json['params']['Period'] = 2000;
|
||||
json["id"] = makeid(6);
|
||||
json["jsonrpc"] = "2.0";
|
||||
json["method"] = "I2PControl";
|
||||
json["params"] = new Object();
|
||||
json["params"]["Token"] = token;
|
||||
json["params"]["Stat"] = Query;
|
||||
json["params"]["Period"] = 2000;
|
||||
return send(json, control_host, control_port, control_path);
|
||||
}
|
||||
let token = GetToken(password, control_host, control_port, control_path);
|
||||
@@ -160,12 +160,12 @@ async function I2PControl(
|
||||
) {
|
||||
function i2pcontrol(token) {
|
||||
var json = new Object();
|
||||
json['id'] = makeid(6);
|
||||
json['jsonrpc'] = '2.0';
|
||||
json['method'] = 'I2PControl';
|
||||
json['params'] = new Object();
|
||||
json['params']['Token'] = token;
|
||||
json['params'][Query] = null;
|
||||
json["id"] = makeid(6);
|
||||
json["jsonrpc"] = "2.0";
|
||||
json["method"] = "I2PControl";
|
||||
json["params"] = new Object();
|
||||
json["params"]["Token"] = token;
|
||||
json["params"][Query] = null;
|
||||
return send(json, control_host, control_port, control_path);
|
||||
}
|
||||
let token = GetToken(password, control_host, control_port, control_path);
|
||||
@@ -204,12 +204,12 @@ async function RouterInfo(
|
||||
) {
|
||||
function routerinfo(token) {
|
||||
var json = new Object();
|
||||
json['id'] = makeid(6);
|
||||
json['jsonrpc'] = '2.0';
|
||||
json['method'] = 'RouterInfo';
|
||||
json['params'] = new Object();
|
||||
json['params']['Token'] = token;
|
||||
json['params'][Query] = null;
|
||||
json["id"] = makeid(6);
|
||||
json["jsonrpc"] = "2.0";
|
||||
json["method"] = "RouterInfo";
|
||||
json["params"] = new Object();
|
||||
json["params"]["Token"] = token;
|
||||
json["params"][Query] = null;
|
||||
return send(json, control_host, control_port, control_path);
|
||||
}
|
||||
let token = GetToken(password, control_host, control_port, control_path);
|
||||
@@ -255,12 +255,12 @@ async function RouterManager(
|
||||
) {
|
||||
function routermanager(token) {
|
||||
var json = new Object();
|
||||
json['id'] = makeid(6);
|
||||
json['jsonrpc'] = '2.0';
|
||||
json['method'] = 'RouterManager';
|
||||
json['params'] = new Object();
|
||||
json['params']['Token'] = token;
|
||||
json['params'][Query] = null;
|
||||
json["id"] = makeid(6);
|
||||
json["jsonrpc"] = "2.0";
|
||||
json["method"] = "RouterManager";
|
||||
json["params"] = new Object();
|
||||
json["params"]["Token"] = token;
|
||||
json["params"][Query] = null;
|
||||
return send(json, control_host, control_port, control_path);
|
||||
}
|
||||
let token = GetToken(password, control_host, control_port, control_path);
|
||||
@@ -300,12 +300,12 @@ async function NetworkSetting(
|
||||
) {
|
||||
function networksetting(token) {
|
||||
var json = new Object();
|
||||
json['id'] = makeid(6);
|
||||
json['jsonrpc'] = '2.0';
|
||||
json['method'] = 'NetworkSetting';
|
||||
json['params'] = new Object();
|
||||
json['params']['Token'] = token;
|
||||
json['params'][Query] = null;
|
||||
json["id"] = makeid(6);
|
||||
json["jsonrpc"] = "2.0";
|
||||
json["method"] = "NetworkSetting";
|
||||
json["params"] = new Object();
|
||||
json["params"]["Token"] = token;
|
||||
json["params"][Query] = null;
|
||||
return send(json, control_host, control_port, control_path);
|
||||
}
|
||||
let token = GetToken(password, control_host, control_port, control_path);
|
||||
@@ -336,56 +336,77 @@ function UpdateNetworkSettingElementByID(
|
||||
}
|
||||
|
||||
function UpdateContents() {
|
||||
UpdateRouterInfoElementByID('i2p.router.status', 'router-status');
|
||||
UpdateRouterInfoElementByID('i2p.router.uptime', 'router-uptime');
|
||||
UpdateRouterInfoElementByID('i2p.router.version', 'router-version');
|
||||
UpdateRouterInfoElementByID("i2p.router.status", "router-status");
|
||||
UpdateRouterInfoElementByID("i2p.router.uptime", "router-uptime");
|
||||
UpdateRouterInfoElementByID("i2p.router.version", "router-version");
|
||||
UpdateRouterInfoElementByID(
|
||||
'i2p.router.net.bw.inbound.1s',
|
||||
'router-net-bw-inbound-1s'
|
||||
"i2p.router.net.bw.inbound.1s",
|
||||
"router-net-bw-inbound-1s"
|
||||
);
|
||||
UpdateRouterInfoElementByID(
|
||||
'i2p.router.net.bw.inbound.15s',
|
||||
'router-net-bw-inbound-15s'
|
||||
"i2p.router.net.bw.inbound.15s",
|
||||
"router-net-bw-inbound-15s"
|
||||
);
|
||||
UpdateRouterInfoElementByID(
|
||||
'i2p.router.net.bw.outbound.1s',
|
||||
'router-net-bw-outbound-1s'
|
||||
"i2p.router.net.bw.outbound.1s",
|
||||
"router-net-bw-outbound-1s"
|
||||
);
|
||||
UpdateRouterInfoElementByID(
|
||||
'i2p.router.net.bw.outbound.15s',
|
||||
'router-net-bw-outbound-15s'
|
||||
"i2p.router.net.bw.outbound.15s",
|
||||
"router-net-bw-outbound-15s"
|
||||
);
|
||||
UpdateRouterInfoElementByID('i2p.router.net.status', 'router-net-status');
|
||||
UpdateRouterInfoElementByID("i2p.router.net.status", "router-net-status");
|
||||
UpdateRouterInfoElementByID(
|
||||
'i2p.router.net.tunnels.participating',
|
||||
'router-net-tunnels-participating'
|
||||
"i2p.router.net.tunnels.participating",
|
||||
"router-net-tunnels-participating"
|
||||
);
|
||||
UpdateRouterInfoElementByID(
|
||||
'i2p.router.netdb.activepeers',
|
||||
'router-netdb-activepeers'
|
||||
"i2p.router.netdb.activepeers",
|
||||
"router-netdb-activepeers"
|
||||
);
|
||||
UpdateRouterInfoElementByID(
|
||||
'i2p.router.netdb.fastpeers',
|
||||
'router-netdb-fastpeers'
|
||||
"i2p.router.netdb.fastpeers",
|
||||
"router-netdb-fastpeers"
|
||||
);
|
||||
UpdateRouterInfoElementByID(
|
||||
'i2p.router.netdb.highcapacitypeers',
|
||||
'router-netdb-highcapacitypeers'
|
||||
"i2p.router.netdb.highcapacitypeers",
|
||||
"router-netdb-highcapacitypeers"
|
||||
);
|
||||
UpdateRouterInfoElementByID(
|
||||
'i2p.router.netdb.isreseeding',
|
||||
'router-netdb-isreseeding'
|
||||
"i2p.router.netdb.isreseeding",
|
||||
"router-netdb-isreseeding"
|
||||
);
|
||||
UpdateRouterInfoElementByID(
|
||||
'i2p.router.netdb.knownpeers',
|
||||
'router-netdb-knownpeers'
|
||||
"i2p.router.netdb.knownpeers",
|
||||
"router-netdb-knownpeers"
|
||||
);
|
||||
}
|
||||
|
||||
var done = Echo(hello);
|
||||
done.then(Done);
|
||||
done.then(Done).catch(Done);
|
||||
|
||||
function Done(output) {
|
||||
console.log('(i2pcontrol) I2PControl connection tested,', output);
|
||||
function hide(elements) {
|
||||
elements = elements.length ? elements : [elements];
|
||||
for (var index = 0; index < elements.length; index++) {
|
||||
elements[index].style.display = "none";
|
||||
}
|
||||
}
|
||||
|
||||
function unhide(elements) {
|
||||
elements = elements.length ? elements : [elements];
|
||||
for (var index = 0; index < elements.length; index++) {
|
||||
elements[index].style.display = "inline-block";
|
||||
}
|
||||
}
|
||||
|
||||
console.log("(i2pcontrol) I2PControl connection tested,", output);
|
||||
if (output == hello) {
|
||||
var toopieLinks = document.querySelectorAll(".window-visit-toopie");
|
||||
unhide(toopieLinks);
|
||||
} else {
|
||||
var toopieLinks = document.querySelectorAll(".window-visit-toopie");
|
||||
hide(toopieLinks);
|
||||
}
|
||||
return output;
|
||||
}
|
||||
|
BIN
i2pcontrol/i2pcontrol.png
Normal file
After Width: | Height: | Size: 109 KiB |
17
i2pcontrol/index.html
Normal file
@@ -0,0 +1,17 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>I2P in Private Browsing Mode</title>
|
||||
<link rel="stylesheet" type="text/css" href="../home.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../sidebar.css" />
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h1 id="toopie.htmli2pcontrol.js">toopie.html/i2pcontrol.js</h1>
|
||||
<p>To enable toopie.html, the built in I2P monitoring system in this webextension, go to the <a href="http://127.0.0.1:7657/configwebapps">Web App Configuration page in the I2P Router and start I2PControl</a>. Click the "Start" button next to the menu item that says <code>jsonrpc</code>.</p>
|
||||
<ul>
|
||||
<li><img src="i2pcontrol.png" title="fig:" alt="i2pcontrol.png" /></li>
|
||||
</ul>
|
||||
|
||||
</body>
|
||||
</html>
|
Before Width: | Height: | Size: 213 KiB After Width: | Height: | Size: 327 KiB |
BIN
i2psnark-integrate.png
Normal file
After Width: | Height: | Size: 222 KiB |
BIN
i2psnark.png
Before Width: | Height: | Size: 123 KiB After Width: | Height: | Size: 100 KiB |
BIN
i2ptunnel.png
Before Width: | Height: | Size: 209 KiB After Width: | Height: | Size: 197 KiB |
0
icons/README.md
Normal file
BIN
icons/browse.png
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 3.5 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 34 KiB |
BIN
icons/infotoopie.png
Normal file
After Width: | Height: | Size: 6.8 KiB |
BIN
icons/infotoopiebt.png
Normal file
After Width: | Height: | Size: 8.2 KiB |
BIN
icons/infotoopies.png
Normal file
After Width: | Height: | Size: 6.8 KiB |
BIN
icons/infotoopiesbt.png
Normal file
After Width: | Height: | Size: 7.3 KiB |
BIN
icons/local_up.png
Normal file
After Width: | Height: | Size: 404 B |
BIN
icons/toopie.png
Before Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 6.3 KiB |
BIN
images/gear.png
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 2.1 KiB |
17
index.html
@@ -57,7 +57,7 @@ Clearnet Bittorrent network(With a web seed to support it in case one goes
|
||||
dead).</p>
|
||||
|
||||
<ul>
|
||||
<li><a href="magnet:?xt=urn:btih:5f45673bc107ec42a8b4d02aa4d5d7487949fc66">Magnet Link</a></li>
|
||||
<li><a href="magnet:?xl=2485magnetsubdn=i2ppb%40eyedeekay.github.io.xpi.torrentmagnetsubxt=urn:tree:tiger:w6kewvpw25bnau2rwkczbnryrjdzn54ietse3zimagnetsubxt=urn:ed2k:1cd9743fb664404298b7f2ad7ee45db0magnetsubxt=urn:aich:4vhcsp6t3c2mkjzds2etixyinyj7xtkp">Magnet Link</a></li>
|
||||
<li><a href="./i2ppb@eyedeekay.github.io.xpi.torrent">Get the .torrent file</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -124,15 +124,16 @@ adding them directly into the Firefox downloads drop-downs, menus, etc. Enable
|
||||
the use of I2PSnark as a peer-to-peer delivery mechanism for media files.</li>
|
||||
<li><img src="i2psnark.png" alt="Visiting i2psnark" title="" /></li>
|
||||
<li><img src="transmissionrpc.png" alt="Monitoring torrents" title="" /></li>
|
||||
<li><img src="x-i2p-torrentlocation.png" alt="Distribute your site as a torrent." title="" /></li>
|
||||
<li>[Started] <strong>Indicate</strong> the level of authenticity provided by TLS. TLS is
|
||||
optional on I2P for now, but some sites offer it anyway. TLS support is
|
||||
experimental and in the works.</li>
|
||||
<li>[Started] <strong>Provide</strong> alternate, in-I2P destinations for web sites that want to
|
||||
mirror their content within I2P.</li>
|
||||
<li>[Started] <strong>Enhance</strong> the I2P browsing experience by allowing site developers
|
||||
<li>[Done] <strong>Enhance</strong> the I2P browsing experience by allowing site developers
|
||||
distribute some or all of their resources as torrents, allowing the torrents to
|
||||
be treated effectively as a CDN.</li>
|
||||
<li><img src="x-i2p-torrentlocation.png" alt="Distribute your site as a torrent." title="" /></li>
|
||||
<li>[Done] <strong>Indicate</strong> the level of authenticity provided by TLS. TLS is
|
||||
optional on I2P for now, but some sites offer it anyway. TLS support is
|
||||
experimental and in the works.</li>
|
||||
<li><img src="i2p-https.png" alt="Use HTTPS with your I2P Site." title="" /></li>
|
||||
<li>[Done] <strong>Provide</strong> alternate, in-I2P destinations for web sites that want to
|
||||
mirror their content within I2P.</li>
|
||||
<li>[barely started] <strong>Isolate</strong> traffic by contextual identity to it's own HTTP
|
||||
Proxy tunnel, each reflecting it's own pseudonymous identity within I2P. The
|
||||
contextual identities. For now, the contextual identities used to manage
|
||||
|
11
info.css
@@ -1,20 +1,19 @@
|
||||
body,
|
||||
html {
|
||||
width: 450px
|
||||
width: 600px
|
||||
}
|
||||
.panel {
|
||||
margin: 5px;
|
||||
width: 450px;
|
||||
height: 450px
|
||||
width: 500px
|
||||
}
|
||||
.panel-section-header {
|
||||
width: 450px
|
||||
width: 500px
|
||||
}
|
||||
#text-section-torrents-header {
|
||||
width: 450px
|
||||
width: 500px
|
||||
}
|
||||
span.identity {
|
||||
width: 450px;
|
||||
width: 500px;
|
||||
display: block;
|
||||
margin-left: 1em
|
||||
}
|
||||
|
121
info.js
@@ -1,10 +1,10 @@
|
||||
function checkPeerConnection() {
|
||||
let getting = browser.privacy.network.peerConnectionEnabled.get({});
|
||||
getting.then(got => {
|
||||
getting.then((got) => {
|
||||
let webrtc = got.value;
|
||||
console.log('checking webrtc', webrtc);
|
||||
if (document.getElementById('enable-web-rtc') !== null)
|
||||
document.getElementById('enable-web-rtc').checked = webrtc;
|
||||
console.log("checking webrtc", webrtc);
|
||||
if (document.getElementById("enable-web-rtc") !== null)
|
||||
document.getElementById("enable-web-rtc").checked = webrtc;
|
||||
});
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ function checkSnowflake() {
|
||||
try {
|
||||
function snowflake(snowflake) {
|
||||
console.log("snowflake plugin found, leaving WebRTC alone", snowflake);
|
||||
EnablePeerConnection();
|
||||
AssurePeerConnection();
|
||||
}
|
||||
var snowflakeInfo = browser.management.get(
|
||||
"{b11bea1f-a888-4332-8d8a-cec2be7d24b9}" // string
|
||||
@@ -29,7 +29,7 @@ checkSnowflake();
|
||||
|
||||
function checkHistory() {
|
||||
let getting = browser.storage.local.get("disable_history");
|
||||
getting.then(got => {
|
||||
getting.then((got) => {
|
||||
let disable_history = got.disable_history;
|
||||
if (disable_history == undefined) {
|
||||
disable_history = false;
|
||||
@@ -42,11 +42,11 @@ function checkHistory() {
|
||||
|
||||
checkHistory();
|
||||
|
||||
document.addEventListener("click", clickEvent => {
|
||||
document.addEventListener("click", (clickEvent) => {
|
||||
if (clickEvent.target.id === "window-create-help-panel") {
|
||||
let createData = {
|
||||
type: "panel",
|
||||
incognito: true
|
||||
incognito: true,
|
||||
};
|
||||
let creating = browser.tabs.create(createData);
|
||||
creating.then(() => {
|
||||
@@ -55,12 +55,15 @@ document.addEventListener("click", clickEvent => {
|
||||
} else if (clickEvent.target.id === "window-create-news-panel") {
|
||||
let createData = {
|
||||
type: "panel",
|
||||
incognito: true
|
||||
incognito: true,
|
||||
};
|
||||
let creating = browser.tabs.create(createData);
|
||||
creating.then(() => {
|
||||
console.log("The news panel has been created");
|
||||
});
|
||||
} else if (clickEvent.target.id === "visit-irc") {
|
||||
browser.sidebarAction.setPanel({ panel: "http://127.0.0.1:7669" });
|
||||
browser.sidebarAction.open();
|
||||
} else if (clickEvent.target.id === "generate-fresh-tunnel") {
|
||||
function refreshIdentity() {
|
||||
console.log("Generating new identity");
|
||||
@@ -68,7 +71,7 @@ document.addEventListener("click", clickEvent => {
|
||||
const url = "http://" + controlHost + ":" + controlPort;
|
||||
Http.open("GET", url);
|
||||
Http.send();
|
||||
Http.onreadystatechange = event => {
|
||||
Http.onreadystatechange = (event) => {
|
||||
console.log(Http.responseText);
|
||||
};
|
||||
}
|
||||
@@ -80,28 +83,30 @@ document.addEventListener("click", clickEvent => {
|
||||
console.log("attempting to initiate graceful shutdown");
|
||||
RouterManager("ShutdownGraceful");
|
||||
} else if (clickEvent.target.id === "label-router-status") {
|
||||
if (document.getElementById("label-status-list").style.display !== "none"){
|
||||
if (document.getElementById("label-status-list").style.display !== "none") {
|
||||
console.log("hiding label-status-list");
|
||||
document.getElementById("label-status-list").style.display = "none"
|
||||
}else{
|
||||
document.getElementById("label-status-list").style.display = "none";
|
||||
} else {
|
||||
console.log("showing label-status-list");
|
||||
document.getElementById("label-status-list").style.display = "block"
|
||||
document.getElementById("label-status-list").style.display = "block";
|
||||
}
|
||||
} else if (clickEvent.target.id === "label-router-peers") {
|
||||
if (document.getElementById("label-peers-list").style.display !== "none"){
|
||||
if (document.getElementById("label-peers-list").style.display !== "none") {
|
||||
console.log("hiding label-peers-list");
|
||||
document.getElementById("label-peers-list").style.display = "none"
|
||||
}else{
|
||||
document.getElementById("label-peers-list").style.display = "none";
|
||||
} else {
|
||||
console.log("showing label-peers-list");
|
||||
document.getElementById("label-peers-list").style.display = "block"
|
||||
document.getElementById("label-peers-list").style.display = "block";
|
||||
}
|
||||
} else if (clickEvent.target.id === "label-router-bandwidth") {
|
||||
if (document.getElementById("label-bandwidth-list").style.display !== "none"){
|
||||
if (
|
||||
document.getElementById("label-bandwidth-list").style.display !== "none"
|
||||
) {
|
||||
console.log("hiding label-bandwidth-list");
|
||||
document.getElementById("label-bandwidth-list").style.display = "none"
|
||||
}else{
|
||||
document.getElementById("label-bandwidth-list").style.display = "none";
|
||||
} else {
|
||||
console.log("showing label-bandwidth-list");
|
||||
document.getElementById("label-bandwidth-list").style.display = "block"
|
||||
document.getElementById("label-bandwidth-list").style.display = "block";
|
||||
}
|
||||
} else if (clickEvent.target.id === "search-submit") {
|
||||
console.log("attempting to create search tab");
|
||||
@@ -118,6 +123,12 @@ document.addEventListener("click", clickEvent => {
|
||||
} else if (clickEvent.target.id === "window-visit-index") {
|
||||
console.log("attempting to create index tab");
|
||||
goIndex();
|
||||
} else if (clickEvent.target.id === "window-visit-torrent") {
|
||||
console.log("attempting to create torrent tab");
|
||||
goTorrent();
|
||||
} else if (clickEvent.target.id === "window-visit-help") {
|
||||
console.log("attempting to create torrent tab");
|
||||
goHelp();
|
||||
} else if (clickEvent.target.id === "window-visit-homepage") {
|
||||
console.log("attempting to create homepage tab");
|
||||
goHome();
|
||||
@@ -157,21 +168,21 @@ document.addEventListener("click", clickEvent => {
|
||||
clickEvent.preventDefault();
|
||||
});
|
||||
|
||||
window.onload = function(e){
|
||||
window.onload = function (e) {
|
||||
if (document.getElementById("label-peers-list") != null) {
|
||||
document.getElementById("label-peers-list").style.display = "none"
|
||||
document.getElementById("label-peers-list").style.display = "none";
|
||||
}
|
||||
if (document.getElementById("label-bandwidth-list") != null) {
|
||||
document.getElementById("label-bandwidth-list").style.display = "none"
|
||||
document.getElementById("label-bandwidth-list").style.display = "none";
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
function proxyReadiness() {
|
||||
console.log(this.responseText);
|
||||
}
|
||||
|
||||
var gettingInfo = browser.runtime.getPlatformInfo();
|
||||
gettingInfo.then(got => {
|
||||
gettingInfo.then((got) => {
|
||||
if (got.os != "android") {
|
||||
browser.history.onVisited.addListener(onVisited);
|
||||
}
|
||||
@@ -192,18 +203,21 @@ function showTorrentsMenu() {
|
||||
}
|
||||
|
||||
function goHome() {
|
||||
function onTabError() {
|
||||
console.log("Help tab created");
|
||||
}
|
||||
function gotProxyInfo(info) {
|
||||
let port = info.value.http.split(":")[1];
|
||||
if (port == "7644") {
|
||||
let createRhizomeData = {
|
||||
url: "about:I2p"
|
||||
url: "about:I2p",
|
||||
};
|
||||
console.log("visiting homepage");
|
||||
let creating = browser.tabs.create(createRhizomeData);
|
||||
creating.then(onTabCreated, onTabError);
|
||||
} else {
|
||||
let createData = {
|
||||
url: "home.html"
|
||||
url: "home.html",
|
||||
};
|
||||
console.log("visiting homepage");
|
||||
let creating = browser.tabs.create(createData);
|
||||
@@ -218,16 +232,40 @@ function goHome() {
|
||||
|
||||
function goIndex() {
|
||||
function onTabError() {
|
||||
console.log("Help tab created");
|
||||
console.log("Help tab not created");
|
||||
}
|
||||
let createData = {
|
||||
url: "index.html"
|
||||
url: "index.html",
|
||||
};
|
||||
console.log("visiting help");
|
||||
let creating = browser.tabs.create(createData);
|
||||
creating.then(onTabCreated, onTabError);
|
||||
}
|
||||
|
||||
function goTorrent() {
|
||||
function onTabError() {
|
||||
console.log("Torrent Help tab not created");
|
||||
}
|
||||
let createData = {
|
||||
url: "torrent/index.html",
|
||||
};
|
||||
console.log("visiting torrent help");
|
||||
let creating = browser.tabs.create(createData);
|
||||
creating.then(onTabCreated, onTabError);
|
||||
}
|
||||
|
||||
function goHelp() {
|
||||
function onTabError() {
|
||||
console.log("Torrent Help tab not created");
|
||||
}
|
||||
let createData = {
|
||||
url: "i2pcontrol/index.html",
|
||||
};
|
||||
console.log("visiting torrent help");
|
||||
let creating = browser.tabs.create(createData);
|
||||
creating.then(onTabCreated, onTabError);
|
||||
}
|
||||
|
||||
function goToopie() {
|
||||
function onTabError() {
|
||||
console.log("Toopie tab created");
|
||||
@@ -249,7 +287,7 @@ function goSearch() {
|
||||
url:
|
||||
"http://yacy.idk.i2p/yacysearch.html?" +
|
||||
"query=" +
|
||||
document.getElementById("search-query").value
|
||||
document.getElementById("search-query").value,
|
||||
};
|
||||
console.log("visiting legwork");
|
||||
let creating = browser.tabs.create(createData);
|
||||
@@ -267,7 +305,7 @@ function goTunnel() {
|
||||
console.log("I2PTunnel tab created");
|
||||
}
|
||||
let createData = {
|
||||
url: "http://" + routerAddr() + "/i2ptunnel"
|
||||
url: "http://" + routerAddr() + "/i2ptunnel",
|
||||
};
|
||||
console.log("visiting i2ptunnel");
|
||||
let creating = browser.tabs.create(createData);
|
||||
@@ -279,7 +317,7 @@ function goMail() {
|
||||
console.log("Mail tab created");
|
||||
}
|
||||
let createData = {
|
||||
url: "http://" + routerAddr() + "/susimail"
|
||||
url: "http://" + routerAddr() + "/susimail",
|
||||
};
|
||||
console.log("visiting mail");
|
||||
let creating = browser.tabs.create(createData);
|
||||
@@ -291,7 +329,7 @@ function goSnark() {
|
||||
console.log("Snark tab created");
|
||||
}
|
||||
let createData = {
|
||||
url: "http://" + routerAddr() + "/i2psnark"
|
||||
url: "http://" + routerAddr() + "/i2psnark",
|
||||
};
|
||||
console.log("visiting snark");
|
||||
let creating = browser.tabs.create(createData);
|
||||
@@ -310,7 +348,7 @@ function onVisited(historyItem) {
|
||||
function onRemoved() {
|
||||
var searching = browser.history.search({
|
||||
text: historyItem.url,
|
||||
startTime: 0
|
||||
startTime: 0,
|
||||
});
|
||||
searching.then(onCleaned);
|
||||
}
|
||||
@@ -327,6 +365,15 @@ if (UpdateContents !== undefined) UpdateContents();
|
||||
const minutes = 0.2;
|
||||
const interval = minutes * 60 * 1000;
|
||||
|
||||
setInterval(function() {
|
||||
setInterval(function () {
|
||||
if (UpdateContents !== undefined) UpdateContents();
|
||||
}, interval);
|
||||
|
||||
fetch("http://127.0.0.1:7669").then((myJson) => {
|
||||
if (myJson.status == 200) {
|
||||
let irc = document.getElementById("visit-irc");
|
||||
if (irc != null) {
|
||||
irc.classList.remove("hidden");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
BIN
lander.png
Before Width: | Height: | Size: 237 KiB After Width: | Height: | Size: 97 KiB |
@@ -4,7 +4,7 @@
|
||||
<meta charset="utf-8">
|
||||
<link href="search.css" rel="stylesheet">
|
||||
<link href="home.css" rel="stylesheet">
|
||||
<link href="info.css" rel="stylesheet"><!--<link href="torrent/popup.css" rel="stylesheet">-->
|
||||
<!--<link href="info.css" rel="stylesheet">--><!--<link href="torrent/popup.css" rel="stylesheet">-->
|
||||
|
||||
<title>
|
||||
</title>
|
||||
|
@@ -1,15 +1,14 @@
|
||||
|
||||
function gotCurrent(tab) {
|
||||
function gotTitle(title) {
|
||||
let addr = title;
|
||||
document.getElementById('TypeInfo').innerHTML = '<div class=\"AddressInfo\"><a href=\"' + addr + '\">' + addr + '</a></div>';
|
||||
document.getElementById("TypeInfo").innerHTML =
|
||||
'<div class="AddressInfo"><a href="' + addr + '">' + addr + "</a></div>";
|
||||
}
|
||||
console.log(tab);
|
||||
var gettingTitle = browser.pageAction.getTitle({
|
||||
tabId: tab[0].id
|
||||
tabId: tab[0].id,
|
||||
});
|
||||
gettingTitle.then(gotTitle);
|
||||
|
||||
}
|
||||
|
||||
function tabError(error) {
|
||||
|
@@ -2,7 +2,7 @@
|
||||
"applications": {
|
||||
"gecko": {
|
||||
"id": "i2ppb@eyedeekay.github.io",
|
||||
"strict_min_version": "60.0"
|
||||
"strict_min_version": "64.0"
|
||||
}
|
||||
},
|
||||
"permissions": [
|
||||
@@ -16,6 +16,7 @@
|
||||
"proxy",
|
||||
"privacy",
|
||||
"storage",
|
||||
"webNavigation",
|
||||
"webRequest",
|
||||
"webRequestBlocking",
|
||||
"contextualIdentities",
|
||||
@@ -26,7 +27,7 @@
|
||||
],
|
||||
"manifest_version": 2,
|
||||
"name": "__MSG_extensionName__",
|
||||
"version": "0.77",
|
||||
"version": "0.107",
|
||||
"description": "__MSG_extensionDescription__",
|
||||
"homepage_url": "https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox",
|
||||
"icons": {
|
||||
@@ -48,7 +49,7 @@
|
||||
"page_action": {
|
||||
"browser_style": true,
|
||||
"default_title": "__MSG_toopieTLS__",
|
||||
"default_icon": "icons/toopie.png",
|
||||
"default_icon": "icons/i2plogo.png",
|
||||
"show_matches": [
|
||||
"http://*.i2p/*",
|
||||
"https://*.i2p/*",
|
||||
|
BIN
menu.png
Before Width: | Height: | Size: 97 KiB After Width: | Height: | Size: 300 KiB |
@@ -19,11 +19,17 @@
|
||||
</select>
|
||||
</section>
|
||||
|
||||
<section class="scheme-options">
|
||||
<span class="title">Bookmarks Status:</span>
|
||||
<input type="checkbox" id="bookmarksState" name="bookmarksstate" value="bookmarksstate">
|
||||
<label for="bookmarksState">Bookmarks were created at install-time.</tv>
|
||||
<button type="submit" id="bookmarksButton">Re-Create Bookmarks</button>
|
||||
</section>
|
||||
|
||||
<section class="scheme-options proxy-options" id="proxy-options">
|
||||
<div class="title">
|
||||
Proxy Options
|
||||
</div>
|
||||
|
||||
<p id="proxyHelpText">
|
||||
</p>
|
||||
<label id="portText">Host:</label> <input data="host" id="host" type="text" value="127.0.0.1">
|
||||
@@ -83,7 +89,8 @@
|
||||
</div>
|
||||
</section>
|
||||
<input id="save-button" type="button" value="Save preferences">
|
||||
<script src="options.js"></script> <!--<script src="/torrent/browser-polyfill.min.js"></script>
|
||||
<script src="options.js"></script>
|
||||
<script src="/bookmarks.js"></script> <!--<script src="/torrent/browser-polyfill.min.js"></script>
|
||||
<script src="/torrent/options.js"></script>-->
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -1,151 +1,171 @@
|
||||
function SetBookButton() {
|
||||
// var bmid = document.getElementById("bookmark");
|
||||
//bmid.textContent = chrome.i18n.getMessage("bookmarkButton");
|
||||
}
|
||||
|
||||
function SetHostText() {
|
||||
var hostid = document.getElementById('hostText');
|
||||
hostid.textContent = chrome.i18n.getMessage('hostText');
|
||||
var hostid = document.getElementById("hostText");
|
||||
hostid.textContent = chrome.i18n.getMessage("hostText");
|
||||
}
|
||||
|
||||
function SetPortText() {
|
||||
var portid = document.getElementById('portText');
|
||||
portid.textContent = chrome.i18n.getMessage('portText');
|
||||
var portid = document.getElementById("portText");
|
||||
portid.textContent = chrome.i18n.getMessage("portText");
|
||||
}
|
||||
|
||||
function SetPortHelpText() {
|
||||
var portid = document.getElementById('proxyHelpText');
|
||||
portid.textContent = chrome.i18n.getMessage('proxyHelpText');
|
||||
var portid = document.getElementById("proxyHelpText");
|
||||
portid.textContent = chrome.i18n.getMessage("proxyHelpText");
|
||||
}
|
||||
|
||||
function SetControlHostText() {
|
||||
var controlhostid = document.getElementById('controlHostText');
|
||||
controlhostid.textContent = chrome.i18n.getMessage('controlHostText');
|
||||
var controlhostid = document.getElementById("controlHostText");
|
||||
controlhostid.textContent = chrome.i18n.getMessage("controlHostText");
|
||||
}
|
||||
|
||||
function SetControlPortText() {
|
||||
var controlportid = document.getElementById('controlPortText');
|
||||
controlportid.textContent = chrome.i18n.getMessage('controlPortText');
|
||||
var controlportid = document.getElementById("controlPortText");
|
||||
controlportid.textContent = chrome.i18n.getMessage("controlPortText");
|
||||
}
|
||||
|
||||
function SetControlHelpText() {
|
||||
var portid = document.getElementById('controlHelpText');
|
||||
portid.textContent = chrome.i18n.getMessage('controlHelpText');
|
||||
var portid = document.getElementById("controlHelpText");
|
||||
portid.textContent = chrome.i18n.getMessage("controlHelpText");
|
||||
}
|
||||
|
||||
function getBookmarksCreated() {
|
||||
bookmarks_state = document.getElementById("bookmarks");
|
||||
console.log("(options)Got i2p bookmarks state:", bookmarks_state);
|
||||
if (bookmarks_state == undefined) {
|
||||
return false;
|
||||
}
|
||||
if (bookmarks_state.value == "false") {
|
||||
return false;
|
||||
}
|
||||
if (bookmarks_state.value == "true") {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function getScheme() {
|
||||
const proxy_scheme = document.querySelector('#proxy_scheme');
|
||||
console.log('(options)Got i2p proxy scheme:', proxy_scheme.value);
|
||||
if (proxy_scheme.value == 'HTTP') {
|
||||
return 'http';
|
||||
const proxy_scheme = document.querySelector("#proxy_scheme");
|
||||
console.log("(options)Got i2p proxy scheme:", proxy_scheme.value);
|
||||
if (proxy_scheme.value == "HTTP") {
|
||||
return "http";
|
||||
}
|
||||
if (proxy_scheme.value == 'SOCKS') {
|
||||
return 'socks';
|
||||
if (proxy_scheme.value == "SOCKS") {
|
||||
return "socks";
|
||||
}
|
||||
if (proxy_scheme.value == 'http') return 'http';
|
||||
if (proxy_scheme.value == 'socks') return 'socks';
|
||||
else return 'http';
|
||||
if (proxy_scheme.value == "http") return "http";
|
||||
if (proxy_scheme.value == "socks") return "socks";
|
||||
else return "http";
|
||||
}
|
||||
|
||||
function getHost() {
|
||||
proxy_host = document.getElementById('host').value;
|
||||
console.log('(options)Got i2p proxy host:', proxy_host);
|
||||
proxy_host = document.getElementById("host").value;
|
||||
console.log("(options)Got i2p proxy host:", proxy_host);
|
||||
if (proxy_host == undefined) {
|
||||
return '127.0.0.1';
|
||||
return "127.0.0.1";
|
||||
}
|
||||
return proxy_host;
|
||||
}
|
||||
|
||||
function getPort() {
|
||||
proxy_port = document.getElementById('port').value;
|
||||
console.log('(options)Got i2p proxy port:', proxy_port);
|
||||
proxy_port = document.getElementById("port").value;
|
||||
console.log("(options)Got i2p proxy port:", proxy_port);
|
||||
if (proxy_port == undefined) {
|
||||
return '4444';
|
||||
return "4444";
|
||||
}
|
||||
return proxy_port;
|
||||
}
|
||||
|
||||
function getControlHost() {
|
||||
control_host = document.getElementById('controlhost').value;
|
||||
console.log('(options)Got i2p control host:', control_host);
|
||||
control_host = document.getElementById("controlhost").value;
|
||||
console.log("(options)Got i2p control host:", control_host);
|
||||
if (control_host == undefined) {
|
||||
return '127.0.0.1';
|
||||
return "127.0.0.1";
|
||||
}
|
||||
return control_host;
|
||||
}
|
||||
|
||||
function getControlPort() {
|
||||
control_port = document.getElementById('controlport').value;
|
||||
console.log('(options)Got i2p control port:', control_port);
|
||||
control_port = document.getElementById("controlport").value;
|
||||
console.log("(options)Got i2p control port:", control_port);
|
||||
if (control_port == undefined) {
|
||||
return '4444';
|
||||
return "4444";
|
||||
}
|
||||
return control_port;
|
||||
}
|
||||
|
||||
function getRPCHost() {
|
||||
rpc_host = document.getElementById('rpchost').value;
|
||||
console.log('(options)Got i2pcontrol rpc host:', rpc_host);
|
||||
rpc_host = document.getElementById("rpchost").value;
|
||||
console.log("(options)Got i2pcontrol rpc host:", rpc_host);
|
||||
if (rpc_host == undefined) {
|
||||
return '127.0.0.1';
|
||||
return "127.0.0.1";
|
||||
}
|
||||
return rpc_host;
|
||||
}
|
||||
|
||||
function getRPCPort() {
|
||||
rpc_port = document.getElementById('rpcport').value;
|
||||
console.log('(options)Got i2pcontrol rpc port:', rpc_port);
|
||||
rpc_port = document.getElementById("rpcport").value;
|
||||
console.log("(options)Got i2pcontrol rpc port:", rpc_port);
|
||||
if (rpc_port == undefined) {
|
||||
return '7657';
|
||||
return "7657";
|
||||
}
|
||||
return rpc_port;
|
||||
}
|
||||
|
||||
function getRPCPath() {
|
||||
rpc_path = document.getElementById('rpcpath').value;
|
||||
console.log('(options)Got i2pcontrol rpc path:', rpc_path);
|
||||
rpc_path = document.getElementById("rpcpath").value;
|
||||
console.log("(options)Got i2pcontrol rpc path:", rpc_path);
|
||||
if (rpc_path == undefined) {
|
||||
return 'jsonrpc';
|
||||
return "jsonrpc";
|
||||
}
|
||||
return rpc_path;
|
||||
}
|
||||
|
||||
function getRPCPass() {
|
||||
rpc_pass = document.getElementById('rpcpass').value;
|
||||
console.log('(options)Got i2pcontrol rpc password:');
|
||||
rpc_pass = document.getElementById("rpcpass").value;
|
||||
console.log("(options)Got i2pcontrol rpc password:");
|
||||
if (rpc_pass == undefined) {
|
||||
return 'itoopie';
|
||||
return "itoopie";
|
||||
}
|
||||
return rpc_pass;
|
||||
}
|
||||
|
||||
function getBTRPCHost() {
|
||||
bt_rpc_host = document.getElementById('btrpchost').value;
|
||||
console.log('(options)Got torrent rpc host:', bt_rpc_host);
|
||||
bt_rpc_host = document.getElementById("btrpchost").value;
|
||||
console.log("(options)Got torrent rpc host:", bt_rpc_host);
|
||||
if (bt_rpc_host == undefined) {
|
||||
return '127.0.0.1';
|
||||
return "127.0.0.1";
|
||||
}
|
||||
return bt_rpc_host;
|
||||
}
|
||||
|
||||
function getBTRPCPort() {
|
||||
bt_rpc_port = document.getElementById('btrpcport').value;
|
||||
console.log('(options)Got torrent rpc port:', bt_rpc_port);
|
||||
bt_rpc_port = document.getElementById("btrpcport").value;
|
||||
console.log("(options)Got torrent rpc port:", bt_rpc_port);
|
||||
if (bt_rpc_port == undefined) {
|
||||
return '7657';
|
||||
return "7657";
|
||||
}
|
||||
return bt_rpc_port;
|
||||
}
|
||||
|
||||
function getBTRPCPath() {
|
||||
bt_rpc_path = document.getElementById('btrpcpath').value;
|
||||
console.log('(options)Got torrent rpc path:', bt_rpc_path);
|
||||
bt_rpc_path = document.getElementById("btrpcpath").value;
|
||||
console.log("(options)Got torrent rpc path:", bt_rpc_path);
|
||||
if (bt_rpc_path == undefined) {
|
||||
return 'transmission/rpc';
|
||||
return "transmission/rpc";
|
||||
}
|
||||
return bt_rpc_path;
|
||||
}
|
||||
|
||||
function getBTRPCPass() {
|
||||
bt_rpc_pass = document.getElementById('btrpcpass').value;
|
||||
console.log('(options)Got torrent rpc password:');
|
||||
bt_rpc_pass = document.getElementById("btrpcpass").value;
|
||||
console.log("(options)Got torrent rpc password:");
|
||||
if (bt_rpc_pass == undefined) {
|
||||
return 'itoopie';
|
||||
return "itoopie";
|
||||
}
|
||||
return bt_rpc_pass;
|
||||
}
|
||||
@@ -153,85 +173,88 @@ function getBTRPCPass() {
|
||||
function checkStoredSettings(storedSettings) {
|
||||
function gotProxyInfo(info) {
|
||||
let defaultSettings = {};
|
||||
let host = info.value.http.split(':')[0];
|
||||
let port = info.value.http.split(':')[1];
|
||||
let host = info.value.http.split(":")[0];
|
||||
let port = info.value.http.split(":")[1];
|
||||
if (port != 7644) {
|
||||
port = undefined;
|
||||
}
|
||||
console.log('(options)proxy', "'" + host + "'", ':', port);
|
||||
if (!storedSettings['proxy_scheme'])
|
||||
defaultSettings['proxy_scheme'] = 'http';
|
||||
else defaultSettings['proxy_scheme'] = storedSettings['proxy_scheme'];
|
||||
if (!storedSettings['proxy_host']) {
|
||||
if (host == '') defaultSettings['proxy_host'] = '127.0.0.1';
|
||||
else defaultSettings['proxy_host'] = host;
|
||||
} else defaultSettings['proxy_host'] = storedSettings['proxy_host'];
|
||||
console.log("(options)proxy", "'" + host + "'", ":", port);
|
||||
if (!storedSettings["bookmarks_state"])
|
||||
defaultSettings["bookmarks_state"] = false;
|
||||
else defaultSettings["bookmarks_state"] = storedSettings["bookmarks_state"];
|
||||
if (!storedSettings["proxy_scheme"])
|
||||
defaultSettings["proxy_scheme"] = "http";
|
||||
else defaultSettings["proxy_scheme"] = storedSettings["proxy_scheme"];
|
||||
if (!storedSettings["proxy_host"]) {
|
||||
if (host == "") defaultSettings["proxy_host"] = "127.0.0.1";
|
||||
else defaultSettings["proxy_host"] = host;
|
||||
} else defaultSettings["proxy_host"] = storedSettings["proxy_host"];
|
||||
|
||||
if (!storedSettings['proxy_port']) {
|
||||
if (port == undefined) defaultSettings['proxy_port'] = 4444;
|
||||
else if (port == 7644) defaultSettings['proxy_port'] = port;
|
||||
else defaultSettings['proxy_port'] = 4444;
|
||||
} else defaultSettings['proxy_port'] = storedSettings.proxy_port;
|
||||
if (!storedSettings["proxy_port"]) {
|
||||
if (port == undefined) defaultSettings["proxy_port"] = 4444;
|
||||
else if (port == 7644) defaultSettings["proxy_port"] = port;
|
||||
else defaultSettings["proxy_port"] = 4444;
|
||||
} else defaultSettings["proxy_port"] = storedSettings.proxy_port;
|
||||
|
||||
if (!storedSettings['control_host']) {
|
||||
if (host == '') defaultSettings['control_host'] = '127.0.0.1';
|
||||
else defaultSettings['control_host'] = host;
|
||||
} else defaultSettings['control_host'] = storedSettings.control_host;
|
||||
if (!storedSettings["control_host"]) {
|
||||
if (host == "") defaultSettings["control_host"] = "127.0.0.1";
|
||||
else defaultSettings["control_host"] = host;
|
||||
} else defaultSettings["control_host"] = storedSettings.control_host;
|
||||
|
||||
if (!storedSettings['control_port']) {
|
||||
defaultSettings['control_port'] = 7657;
|
||||
} else defaultSettings['control_port'] = storedSettings.control_port;
|
||||
if (!storedSettings["control_port"]) {
|
||||
defaultSettings["control_port"] = 7657;
|
||||
} else defaultSettings["control_port"] = storedSettings.control_port;
|
||||
|
||||
if (!storedSettings['rpc_host']) {
|
||||
if (host == '') defaultSettings['rpc_host'] = '127.0.0.1';
|
||||
else defaultSettings['rpc_host'] = host;
|
||||
} else defaultSettings['rpc_host'] = storedSettings.rpc_host;
|
||||
if (!storedSettings["rpc_host"]) {
|
||||
if (host == "") defaultSettings["rpc_host"] = "127.0.0.1";
|
||||
else defaultSettings["rpc_host"] = host;
|
||||
} else defaultSettings["rpc_host"] = storedSettings.rpc_host;
|
||||
|
||||
if (!storedSettings['rpc_port']) {
|
||||
defaultSettings['rpc_port'] = 7657;
|
||||
} else defaultSettings['rpc_port'] = storedSettings.rpc_port;
|
||||
if (!storedSettings["rpc_port"]) {
|
||||
defaultSettings["rpc_port"] = 7657;
|
||||
} else defaultSettings["rpc_port"] = storedSettings.rpc_port;
|
||||
|
||||
if (!storedSettings['rpc_path']) {
|
||||
defaultSettings['rpc_path'] = 'jsonrpc';
|
||||
} else defaultSettings['rpc_path'] = storedSettings.rpc_path;
|
||||
if (!storedSettings["rpc_path"]) {
|
||||
defaultSettings["rpc_path"] = "jsonrpc";
|
||||
} else defaultSettings["rpc_path"] = storedSettings.rpc_path;
|
||||
|
||||
if (!storedSettings['rpc_pass']) {
|
||||
defaultSettings['rpc_pass'] = 'itoopie';
|
||||
} else defaultSettings['rpc_pass'] = storedSettings.rpc_pass;
|
||||
if (!storedSettings["rpc_pass"]) {
|
||||
defaultSettings["rpc_pass"] = "itoopie";
|
||||
} else defaultSettings["rpc_pass"] = storedSettings.rpc_pass;
|
||||
|
||||
if (!storedSettings['bt_rpc_host']) {
|
||||
if (host == '') defaultSettings['bt_rpc_host'] = '127.0.0.1';
|
||||
else defaultSettings['bt_rpc_host'] = host;
|
||||
} else defaultSettings['bt_rpc_host'] = storedSettings.bt_rpc_host;
|
||||
if (!storedSettings["bt_rpc_host"]) {
|
||||
if (host == "") defaultSettings["bt_rpc_host"] = "127.0.0.1";
|
||||
else defaultSettings["bt_rpc_host"] = host;
|
||||
} else defaultSettings["bt_rpc_host"] = storedSettings.bt_rpc_host;
|
||||
|
||||
if (!storedSettings['bt_rpc_port']) {
|
||||
defaultSettings['bt_rpc_port'] = 7657;
|
||||
} else defaultSettings['bt_rpc_port'] = storedSettings.bt_rpc_port;
|
||||
if (!storedSettings["bt_rpc_port"]) {
|
||||
defaultSettings["bt_rpc_port"] = 7657;
|
||||
} else defaultSettings["bt_rpc_port"] = storedSettings.bt_rpc_port;
|
||||
|
||||
if (!storedSettings['bt_rpc_path']) {
|
||||
defaultSettings['bt_rpc_path'] = 'transmission/';
|
||||
} else defaultSettings['bt_rpc_path'] = storedSettings.bt_rpc_path;
|
||||
if (!storedSettings["bt_rpc_path"]) {
|
||||
defaultSettings["bt_rpc_path"] = "transmission/";
|
||||
} else defaultSettings["bt_rpc_path"] = storedSettings.bt_rpc_path;
|
||||
|
||||
if (!storedSettings['bt_rpc_pass']) {
|
||||
defaultSettings['bt_rpc_pass'] = 'transmission';
|
||||
} else defaultSettings['bt_rpc_pass'] = storedSettings.bt_rpc_pass;
|
||||
if (!storedSettings["bt_rpc_pass"]) {
|
||||
defaultSettings["bt_rpc_pass"] = "transmission";
|
||||
} else defaultSettings["bt_rpc_pass"] = storedSettings.bt_rpc_pass;
|
||||
|
||||
console.log('(options)(browserinfo) NATIVE PROXYSETTINGS', info.value);
|
||||
defaultSettings['base_url'] =
|
||||
'http://' +
|
||||
defaultSettings['bt_rpc_host'] +
|
||||
':' +
|
||||
defaultSettings['bt_rpc_port'] +
|
||||
'/' +
|
||||
defaultSettings['bt_rpc_path'];
|
||||
console.log("(options)(browserinfo) NATIVE PROXYSETTINGS", info.value);
|
||||
defaultSettings["base_url"] =
|
||||
"http://" +
|
||||
defaultSettings["bt_rpc_host"] +
|
||||
":" +
|
||||
defaultSettings["bt_rpc_port"] +
|
||||
"/" +
|
||||
defaultSettings["bt_rpc_path"];
|
||||
console.log(
|
||||
'(options)',
|
||||
defaultSettings['proxy_scheme'],
|
||||
defaultSettings['proxy_host'],
|
||||
defaultSettings['proxy_port'],
|
||||
defaultSettings['control_host'],
|
||||
defaultSettings['control_port'],
|
||||
defaultSettings['base_url']
|
||||
"(options)",
|
||||
defaultSettings["proxy_scheme"],
|
||||
defaultSettings["proxy_host"],
|
||||
defaultSettings["proxy_port"],
|
||||
defaultSettings["control_host"],
|
||||
defaultSettings["control_port"],
|
||||
defaultSettings["base_url"]
|
||||
);
|
||||
|
||||
chrome.storage.local.set(defaultSettings);
|
||||
@@ -243,72 +266,75 @@ function checkStoredSettings(storedSettings) {
|
||||
|
||||
function checkAndroidStoredSettings(storedSettings) {
|
||||
let defaultSettings = {};
|
||||
let host = '';
|
||||
let port = '';
|
||||
if (!storedSettings['proxy_scheme']) defaultSettings['proxy_scheme'] = 'http';
|
||||
else defaultSettings['proxy_scheme'] = storedSettings['proxy_scheme'];
|
||||
if (!storedSettings['proxy_host']) {
|
||||
if (host == '') defaultSettings['proxy_host'] = '127.0.0.1';
|
||||
else defaultSettings['proxy_host'] = host;
|
||||
} else defaultSettings['proxy_host'] = storedSettings['proxy_host'];
|
||||
let host = "";
|
||||
let port = "";
|
||||
if (!storedSettings["bookmarks_state"])
|
||||
defaultSettings["bookmarks_state"] = false;
|
||||
else defaultSettings["bookmarks_state"] = storedSettings["bookmarks_state"];
|
||||
if (!storedSettings["proxy_scheme"]) defaultSettings["proxy_scheme"] = "http";
|
||||
else defaultSettings["proxy_scheme"] = storedSettings["proxy_scheme"];
|
||||
if (!storedSettings["proxy_host"]) {
|
||||
if (host == "") defaultSettings["proxy_host"] = "127.0.0.1";
|
||||
else defaultSettings["proxy_host"] = host;
|
||||
} else defaultSettings["proxy_host"] = storedSettings["proxy_host"];
|
||||
|
||||
if (!storedSettings['proxy_port']) {
|
||||
if (port == undefined) defaultSettings['proxy_port'] = 4444;
|
||||
else if (port == 7644) defaultSettings['proxy_port'] = port;
|
||||
else defaultSettings['proxy_port'] = 4444;
|
||||
} else defaultSettings['proxy_port'] = storedSettings.proxy_port;
|
||||
if (!storedSettings["proxy_port"]) {
|
||||
if (port == undefined) defaultSettings["proxy_port"] = 4444;
|
||||
else if (port == 7644) defaultSettings["proxy_port"] = port;
|
||||
else defaultSettings["proxy_port"] = 4444;
|
||||
} else defaultSettings["proxy_port"] = storedSettings.proxy_port;
|
||||
|
||||
if (!storedSettings['control_host']) {
|
||||
if (host == '') defaultSettings['control_host'] = '127.0.0.1';
|
||||
else defaultSettings['control_host'] = host;
|
||||
} else defaultSettings['control_host'] = storedSettings.control_host;
|
||||
if (!storedSettings["control_host"]) {
|
||||
if (host == "") defaultSettings["control_host"] = "127.0.0.1";
|
||||
else defaultSettings["control_host"] = host;
|
||||
} else defaultSettings["control_host"] = storedSettings.control_host;
|
||||
|
||||
if (!storedSettings['control_port']) {
|
||||
defaultSettings['control_port'] = 7657;
|
||||
} else defaultSettings['control_port'] = storedSettings.control_port;
|
||||
if (!storedSettings["control_port"]) {
|
||||
defaultSettings["control_port"] = 7657;
|
||||
} else defaultSettings["control_port"] = storedSettings.control_port;
|
||||
|
||||
if (!storedSettings['rpc_host']) {
|
||||
if (host == '') defaultSettings['rpc_host'] = '127.0.0.1';
|
||||
else defaultSettings['rpc_host'] = host;
|
||||
} else defaultSettings['rpc_host'] = storedSettings.rpc_host;
|
||||
if (!storedSettings["rpc_host"]) {
|
||||
if (host == "") defaultSettings["rpc_host"] = "127.0.0.1";
|
||||
else defaultSettings["rpc_host"] = host;
|
||||
} else defaultSettings["rpc_host"] = storedSettings.rpc_host;
|
||||
|
||||
if (!storedSettings['rpc_port']) {
|
||||
defaultSettings['rpc_port'] = 7657;
|
||||
} else defaultSettings['rpc_port'] = storedSettings.rpc_port;
|
||||
if (!storedSettings["rpc_port"]) {
|
||||
defaultSettings["rpc_port"] = 7657;
|
||||
} else defaultSettings["rpc_port"] = storedSettings.rpc_port;
|
||||
|
||||
if (!storedSettings['rpc_path']) {
|
||||
defaultSettings['rpc_path'] = 'jsonrpc';
|
||||
} else defaultSettings['rpc_path'] = storedSettings.rpc_path;
|
||||
if (!storedSettings["rpc_path"]) {
|
||||
defaultSettings["rpc_path"] = "jsonrpc";
|
||||
} else defaultSettings["rpc_path"] = storedSettings.rpc_path;
|
||||
|
||||
if (!storedSettings['rpc_pass']) {
|
||||
defaultSettings['rpc_pass'] = 'itoopie';
|
||||
} else defaultSettings['rpc_pass'] = storedSettings.rpc_pass;
|
||||
if (!storedSettings["rpc_pass"]) {
|
||||
defaultSettings["rpc_pass"] = "itoopie";
|
||||
} else defaultSettings["rpc_pass"] = storedSettings.rpc_pass;
|
||||
|
||||
if (!storedSettings['bt_rpc_host']) {
|
||||
if (host == '') defaultSettings['bt_rpc_host'] = '127.0.0.1';
|
||||
else defaultSettings['bt_rpc_host'] = host;
|
||||
} else defaultSettings['bt_rpc_host'] = storedSettings.bt_rpc_host;
|
||||
if (!storedSettings["bt_rpc_host"]) {
|
||||
if (host == "") defaultSettings["bt_rpc_host"] = "127.0.0.1";
|
||||
else defaultSettings["bt_rpc_host"] = host;
|
||||
} else defaultSettings["bt_rpc_host"] = storedSettings.bt_rpc_host;
|
||||
|
||||
if (!storedSettings['bt_rpc_port']) {
|
||||
defaultSettings['bt_rpc_port'] = 7657;
|
||||
} else defaultSettings['bt_rpc_port'] = storedSettings.bt_rpc_port;
|
||||
if (!storedSettings["bt_rpc_port"]) {
|
||||
defaultSettings["bt_rpc_port"] = 7657;
|
||||
} else defaultSettings["bt_rpc_port"] = storedSettings.bt_rpc_port;
|
||||
|
||||
if (!storedSettings['bt_rpc_path']) {
|
||||
defaultSettings['bt_rpc_path'] = 'transmission/rpc';
|
||||
} else defaultSettings['bt_rpc_path'] = storedSettings.bt_rpc_path;
|
||||
if (!storedSettings["bt_rpc_path"]) {
|
||||
defaultSettings["bt_rpc_path"] = "transmission/rpc";
|
||||
} else defaultSettings["bt_rpc_path"] = storedSettings.bt_rpc_path;
|
||||
|
||||
if (!storedSettings['bt_rpc_pass']) {
|
||||
defaultSettings['bt_rpc_pass'] = 'transmission';
|
||||
} else defaultSettings['bt_rpc_pass'] = storedSettings.bt_rpc_pass;
|
||||
if (!storedSettings["bt_rpc_pass"]) {
|
||||
defaultSettings["bt_rpc_pass"] = "transmission";
|
||||
} else defaultSettings["bt_rpc_pass"] = storedSettings.bt_rpc_pass;
|
||||
|
||||
console.log('(options)(browserinfo) NATIVE PROXYSETTINGS', info.value);
|
||||
console.log("(options)(browserinfo) NATIVE PROXYSETTINGS", info.value);
|
||||
console.log(
|
||||
'(options)',
|
||||
defaultSettings['proxy_scheme'],
|
||||
defaultSettings['proxy_host'],
|
||||
defaultSettings['proxy_port'],
|
||||
defaultSettings['control_host'],
|
||||
defaultSettings['control_port']
|
||||
"(options)",
|
||||
defaultSettings["proxy_scheme"],
|
||||
defaultSettings["proxy_host"],
|
||||
defaultSettings["proxy_port"],
|
||||
defaultSettings["control_host"],
|
||||
defaultSettings["control_port"]
|
||||
);
|
||||
chrome.storage.local.set(defaultSettings);
|
||||
return defaultSettings;
|
||||
@@ -320,84 +346,90 @@ function onError(e) {
|
||||
|
||||
function storeSettings() {
|
||||
let storableSettings = {};
|
||||
storableSettings['proxy_scheme'] = getScheme();
|
||||
storableSettings['proxy_host'] = getHost();
|
||||
storableSettings['proxy_port'] = getPort();
|
||||
storableSettings['control_host'] = getControlHost();
|
||||
storableSettings['control_port'] = getControlPort();
|
||||
storableSettings['rpc_host'] = getRPCHost();
|
||||
storableSettings['rpc_port'] = getRPCPort();
|
||||
storableSettings['rpc_path'] = getRPCPath();
|
||||
storableSettings['rpc_pass'] = getRPCPass();
|
||||
storableSettings['bt_rpc_host'] = getBTRPCHost();
|
||||
storableSettings['bt_rpc_port'] = getBTRPCPort();
|
||||
storableSettings['bt_rpc_path'] = getBTRPCPath();
|
||||
storableSettings['bt_rpc_pass'] = getBTRPCPass();
|
||||
storableSettings['base_url'] =
|
||||
'http://' + bt_rpc_host + ':' + bt_rpc_port + '/' + bt_rpc_path;
|
||||
console.log('storing', storableSettings);
|
||||
storableSettings["bookmarks_state"] = getBookmarksCreated();
|
||||
storableSettings["proxy_scheme"] = getScheme();
|
||||
storableSettings["proxy_host"] = getHost();
|
||||
storableSettings["proxy_port"] = getPort();
|
||||
storableSettings["control_host"] = getControlHost();
|
||||
storableSettings["control_port"] = getControlPort();
|
||||
storableSettings["rpc_host"] = getRPCHost();
|
||||
storableSettings["rpc_port"] = getRPCPort();
|
||||
storableSettings["rpc_path"] = getRPCPath();
|
||||
storableSettings["rpc_pass"] = getRPCPass();
|
||||
storableSettings["bt_rpc_host"] = getBTRPCHost();
|
||||
storableSettings["bt_rpc_port"] = getBTRPCPort();
|
||||
storableSettings["bt_rpc_path"] = getBTRPCPath();
|
||||
storableSettings["bt_rpc_pass"] = getBTRPCPass();
|
||||
storableSettings["base_url"] =
|
||||
"http://" + bt_rpc_host + ":" + bt_rpc_port + "/" + bt_rpc_path;
|
||||
console.log("storing", storableSettings);
|
||||
chrome.storage.local.set(storableSettings);
|
||||
}
|
||||
|
||||
function updateUI(restoredSettings) {
|
||||
const selectList = document.querySelector('#proxy_scheme');
|
||||
if (selectList == undefined) selectList.value = restoredSettings.proxy_scheme;
|
||||
const selectList = document.querySelector("#proxy_scheme");
|
||||
if (selectList != undefined) selectList.value = restoredSettings.proxy_scheme;
|
||||
//console.log("(options)showing proxy scheme:", selectList.value);
|
||||
|
||||
const hostitem = document.getElementById('host');
|
||||
if (hostitem == undefined) hostitem.value = restoredSettings.proxy_host;
|
||||
console.log(restoredSettings);
|
||||
const bms = document.getElementById("bookmarksState");
|
||||
if (bms != undefined) bms.checked = restoredSettings.bookmarks_state;
|
||||
|
||||
const hostitem = document.getElementById("host");
|
||||
if (hostitem != undefined) hostitem.value = restoredSettings.proxy_host;
|
||||
//console.log("(options)showing proxy host:", hostitem.value);
|
||||
|
||||
const portitem = document.getElementById('port');
|
||||
if (portitem == undefined) portitem.value = restoredSettings.proxy_port;
|
||||
const portitem = document.getElementById("port");
|
||||
if (portitem != undefined) portitem.value = restoredSettings.proxy_port;
|
||||
//console.log("(options)showing proxy port:", portitem.value);
|
||||
|
||||
const controlhostitem = document.getElementById('controlhost');
|
||||
const controlhostitem = document.getElementById("controlhost");
|
||||
if (controlhostitem == undefined)
|
||||
controlhostitem.value = restoredSettings.control_host;
|
||||
//console.log("(options)showing control host:", controlhostitem.value);
|
||||
|
||||
const controlportitem = document.getElementById('controlport');
|
||||
const controlportitem = document.getElementById("controlport");
|
||||
if (controlportitem == undefined)
|
||||
controlportitem.value = restoredSettings.control_port;
|
||||
//console.log("(options)showing control port:", controlportitem.value);
|
||||
|
||||
const rpchostitem = document.getElementById('rpchost');
|
||||
if (rpchostitem == undefined) rpchostitem.value = restoredSettings.rpc_host;
|
||||
const rpchostitem = document.getElementById("rpchost");
|
||||
if (rpchostitem != undefined) rpchostitem.value = restoredSettings.rpc_host;
|
||||
//console.log("(options)showing rpc host:", rpchostitem.value);
|
||||
|
||||
const rpcportitem = document.getElementById('rpcport');
|
||||
if (rpcportitem == undefined) rpcportitem.value = restoredSettings.rpc_port;
|
||||
const rpcportitem = document.getElementById("rpcport");
|
||||
if (rpcportitem != undefined) rpcportitem.value = restoredSettings.rpc_port;
|
||||
//console.log("(options)showing rpc port:", rpcportitem.value);
|
||||
|
||||
const rpcpathitem = document.getElementById('rpcpath');
|
||||
if (rpcpathitem == undefined) rpcpathitem.value = restoredSettings.rpc_path;
|
||||
const rpcpathitem = document.getElementById("rpcpath");
|
||||
if (rpcpathitem != undefined) rpcpathitem.value = restoredSettings.rpc_path;
|
||||
//console.log("(options)showing rpc path:", rpcpathitem.value);
|
||||
|
||||
const rpcpassitem = document.getElementById('rpcpass');
|
||||
if (rpcpassitem == undefined) rpcpassitem.value = restoredSettings.rpc_pass;
|
||||
const rpcpassitem = document.getElementById("rpcpass");
|
||||
if (rpcpassitem != undefined) rpcpassitem.value = restoredSettings.rpc_pass;
|
||||
//console.log("(options)showing rpc pass:");
|
||||
|
||||
const btrpchostitem = document.getElementById('btrpchost');
|
||||
if (btrpchostitem == undefined)
|
||||
btrpchostitem.value = restoredSettings.rpc_host;
|
||||
const btrpchostitem = document.getElementById("btrpchost");
|
||||
if (btrpchostitem != undefined)
|
||||
btrpchostitem.value = restoredSettings.bt_rpc_host;
|
||||
//console.log("(options)showing bt rpc host:", btrpchostitem.value);
|
||||
|
||||
const btrpcportitem = document.getElementById('btrpcport');
|
||||
if (btrpcportitem == undefined)
|
||||
btrpcportitem.value = restoredSettings.rpc_port;
|
||||
const btrpcportitem = document.getElementById("btrpcport");
|
||||
if (btrpcportitem != undefined)
|
||||
btrpcportitem.value = restoredSettings.bt_rpc_port;
|
||||
//console.log("(options)showing rbt pc port:", rpcportitem.value);
|
||||
|
||||
const btrpcpathitem = document.getElementById('btrpcpath');
|
||||
if (btrpcpathitem == undefined)
|
||||
btrpcpathitem.value = restoredSettings.rpc_path;
|
||||
const btrpcpathitem = document.getElementById("btrpcpath");
|
||||
if (btrpcpathitem != undefined)
|
||||
btrpcpathitem.value = restoredSettings.bt_rpc_path;
|
||||
//console.log("(options)showing bt rpc path:", btrpcpathitem.value);
|
||||
|
||||
const btrpcpassitem = document.getElementById('btrpcpass');
|
||||
if (btrpcpassitem == undefined)
|
||||
btrpcpassitem.value = restoredSettings.rpc_pass;
|
||||
const btrpcpassitem = document.getElementById("btrpcpass");
|
||||
if (btrpcpassitem != undefined)
|
||||
btrpcpassitem.value = restoredSettings.bt_rpc_pass;
|
||||
//console.log("(options)showing bt rpc pass:");
|
||||
|
||||
SetBookButton();
|
||||
SetHostText();
|
||||
SetPortText();
|
||||
SetPortHelpText();
|
||||
@@ -411,19 +443,19 @@ function onError(e) {
|
||||
}
|
||||
|
||||
var gettingInfo = browser.runtime.getPlatformInfo();
|
||||
gettingInfo.then(got => {
|
||||
if (got.os != 'android') {
|
||||
chrome.storage.local.get(function(got) {
|
||||
gettingInfo.then((got) => {
|
||||
if (got.os != "android") {
|
||||
chrome.storage.local.get(function (got) {
|
||||
let settings = checkStoredSettings(got);
|
||||
settings.then(updateUI);
|
||||
});
|
||||
} else {
|
||||
chrome.storage.local.get(function(got) {
|
||||
chrome.storage.local.get(function (got) {
|
||||
checkAndroidStoredSettings(got);
|
||||
updateUI(got);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
const saveButton = document.querySelector('#save-button');
|
||||
saveButton.addEventListener('click', storeSettings);
|
||||
const saveButton = document.querySelector("#save-button");
|
||||
saveButton.addEventListener("click", storeSettings);
|
||||
|
10
platform.js
@@ -1,20 +1,20 @@
|
||||
var android = false;
|
||||
|
||||
var gettingInfo = browser.runtime.getPlatformInfo();
|
||||
gettingInfo.then(got => {
|
||||
if (got.os == 'android') {
|
||||
console.log('Running in Android detected');
|
||||
gettingInfo.then((got) => {
|
||||
if (got.os == "android") {
|
||||
console.log("Running in Android detected");
|
||||
android = true;
|
||||
return true;
|
||||
} else {
|
||||
console.log('Running in Desktop detected');
|
||||
console.log("Running in Desktop detected");
|
||||
android = false;
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
function isDroid() {
|
||||
console.log('android?', android);
|
||||
console.log("android?", android);
|
||||
if (android == undefined) {
|
||||
return false;
|
||||
}
|
||||
|
233
privacy.js
@@ -1,10 +1,10 @@
|
||||
var titlepref = chrome.i18n.getMessage('titlePreface');
|
||||
var titlepref = chrome.i18n.getMessage("titlePreface");
|
||||
|
||||
function onSet(result) {
|
||||
if (result) {
|
||||
console.log('->: Value was updated');
|
||||
console.log("->: Value was updated");
|
||||
} else {
|
||||
console.log('-X: Value was not updated');
|
||||
console.log("-X: Value was not updated");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,10 +12,19 @@ function onSet(result) {
|
||||
risky sites in your browser */
|
||||
function disableHyperlinkAuditing() {
|
||||
var setting = browser.privacy.websites.hyperlinkAuditingEnabled.set({
|
||||
value: false
|
||||
value: false,
|
||||
});
|
||||
console.log('Disabling hyperlink auditing/val=', {
|
||||
value: false
|
||||
console.log("Disabling hyperlink auditing/val=", {
|
||||
value: false,
|
||||
});
|
||||
setting.then(onSet);
|
||||
}
|
||||
|
||||
// UNINSTALL ONLY
|
||||
function enableHyperlinkAuditing() {
|
||||
var setting = browser.privacy.websites.hyperlinkAuditingEnabled.clear();
|
||||
console.log("Disabling hyperlink auditing/val=", {
|
||||
value: false,
|
||||
});
|
||||
setting.then(onSet);
|
||||
}
|
||||
@@ -23,10 +32,19 @@ function disableHyperlinkAuditing() {
|
||||
// This enables first-party isolation
|
||||
function enableFirstPartyIsolation() {
|
||||
var setting = browser.privacy.websites.firstPartyIsolate.set({
|
||||
value: true
|
||||
value: true,
|
||||
});
|
||||
console.log('Enabling first party isolation/val=', {
|
||||
value: true
|
||||
console.log("Enabling first party isolation/val=", {
|
||||
value: true,
|
||||
});
|
||||
setting.then(onSet);
|
||||
}
|
||||
|
||||
// UNINSTALL ONLY
|
||||
function disableFirstPartyIsolation() {
|
||||
var setting = browser.privacy.websites.firstPartyIsolate.clear();
|
||||
console.log("Enabling first party isolation/val=", {
|
||||
value: true,
|
||||
});
|
||||
setting.then(onSet);
|
||||
}
|
||||
@@ -36,23 +54,27 @@ function enableFirstPartyIsolation() {
|
||||
interface for now */
|
||||
function disableEvilCookies() {
|
||||
var getting = browser.privacy.websites.cookieConfig.get({});
|
||||
getting.then(got => {
|
||||
getting.then((got) => {
|
||||
var setting = browser.privacy.websites.cookieConfig.set({
|
||||
value: {
|
||||
behavior: 'reject_third_party',
|
||||
nonPersistentCookies: got.value.nonPersistentCookies
|
||||
}
|
||||
behavior: "reject_third_party",
|
||||
nonPersistentCookies: got.value.nonPersistentCookies,
|
||||
},
|
||||
});
|
||||
console.log('Setting cookie behavior/val=', {
|
||||
console.log("Setting cookie behavior/val=", {
|
||||
value: {
|
||||
behavior: 'reject_third_party',
|
||||
nonPersistentCookies: got.value.nonPersistentCookies
|
||||
}
|
||||
behavior: "reject_third_party",
|
||||
nonPersistentCookies: got.value.nonPersistentCookies,
|
||||
},
|
||||
});
|
||||
setting.then(onSet);
|
||||
});
|
||||
}
|
||||
|
||||
function enableEvilCookies() {
|
||||
var getting = browser.privacy.websites.cookieConfig.clear();
|
||||
}
|
||||
|
||||
// Make sure that they're gone
|
||||
/*function disableBadCookies(){
|
||||
var setting = browser.privacy.websites.thirdPartyCookiesAllowed.set({
|
||||
@@ -67,10 +89,19 @@ function disableEvilCookies() {
|
||||
// this disables the use of referrer headers
|
||||
function disableReferrers() {
|
||||
var setting = browser.privacy.websites.referrersEnabled.set({
|
||||
value: false
|
||||
value: false,
|
||||
});
|
||||
console.log("Disabling referrer headers/val=", {
|
||||
value: false
|
||||
value: false,
|
||||
});
|
||||
setting.then(onSet);
|
||||
}
|
||||
|
||||
// UNINSATALL ONLY
|
||||
function enableReferrers() {
|
||||
var setting = browser.privacy.websites.referrersEnabled.clear();
|
||||
console.log("Disabling referrer headers/val=", {
|
||||
value: false,
|
||||
});
|
||||
setting.then(onSet);
|
||||
}
|
||||
@@ -78,10 +109,19 @@ function disableReferrers() {
|
||||
// enable fingerprinting resistent features(letterboxing and stuff)
|
||||
function enableResistFingerprinting() {
|
||||
var setting = browser.privacy.websites.resistFingerprinting.set({
|
||||
value: true
|
||||
value: true,
|
||||
});
|
||||
console.log("Enabling resist fingerprinting/val=", {
|
||||
value: true
|
||||
value: true,
|
||||
});
|
||||
setting.then(onSet);
|
||||
}
|
||||
|
||||
// UNINSTALL ONLY
|
||||
function disableResistFingerprinting() {
|
||||
var setting = browser.privacy.websites.resistFingerprinting.clear();
|
||||
console.log("Enabling resist fingerprinting/val=", {
|
||||
value: false,
|
||||
});
|
||||
setting.then(onSet);
|
||||
}
|
||||
@@ -89,10 +129,19 @@ function enableResistFingerprinting() {
|
||||
// This is essentially a blocklist of clearnet web-sites known to do bad tracking
|
||||
function enableTrackingProtection() {
|
||||
var setting = browser.privacy.websites.trackingProtectionMode.set({
|
||||
value: "always"
|
||||
value: "always",
|
||||
});
|
||||
console.log("Enabling tracking protection/val=", {
|
||||
value: "always"
|
||||
value: "always",
|
||||
});
|
||||
setting.then(onSet);
|
||||
}
|
||||
|
||||
// UNINSTALL ONLY
|
||||
function disableTrackingProtection() {
|
||||
var setting = browser.privacy.websites.trackingProtectionMode.clear();
|
||||
console.log("Enabling tracking protection/val=", {
|
||||
value: "always",
|
||||
});
|
||||
setting.then(onSet);
|
||||
}
|
||||
@@ -101,15 +150,15 @@ function enableTrackingProtection() {
|
||||
management dependent on identifying information */
|
||||
function disableDigitalRestrictionsManagement() {
|
||||
var gettingInfo = browser.runtime.getPlatformInfo();
|
||||
gettingInfo.then(got => {
|
||||
gettingInfo.then((got) => {
|
||||
if (got.os == "win") {
|
||||
var setting = browser.privacy.websites.protectedContentEnabled.set({
|
||||
value: false
|
||||
value: false,
|
||||
});
|
||||
console.log(
|
||||
"Setting Protected Content(Digital Restrictions Management) false/val=",
|
||||
{
|
||||
value: false
|
||||
value: false,
|
||||
}
|
||||
);
|
||||
setting.then(onSet);
|
||||
@@ -117,6 +166,45 @@ function disableDigitalRestrictionsManagement() {
|
||||
});
|
||||
}
|
||||
|
||||
// UNINSTALL ONLY
|
||||
function disableDigitalRestrictionsManagement() {
|
||||
var gettingInfo = browser.runtime.getPlatformInfo();
|
||||
gettingInfo.then((got) => {
|
||||
if (got.os == "win") {
|
||||
var setting = browser.privacy.websites.protectedContentEnabled.clear();
|
||||
console.log(
|
||||
"Setting Protected Content(Digital Restrictions Management) false/val=",
|
||||
{
|
||||
value: true,
|
||||
}
|
||||
);
|
||||
setting.then(onSet);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function unsetAllPrivacy() {
|
||||
enableHyperlinkAuditing();
|
||||
disableFirstPartyIsolation();
|
||||
enableEvilCookies();
|
||||
enableReferrers();
|
||||
disableTrackingProtection();
|
||||
disableResistFingerprinting();
|
||||
enableDigitalRestrictionsManagement();
|
||||
UnsetPeerConnection();
|
||||
EnableSavePasswords();
|
||||
}
|
||||
|
||||
browser.management.onUninstalled.addListener((info) => {
|
||||
function gotSelf(selfinfo) {
|
||||
if (info.name == selfinfo.name) {
|
||||
unsetAllPrivacy();
|
||||
}
|
||||
}
|
||||
var gettingSelf = browser.management.getSelf();
|
||||
gettingSelf.then(gotSelf);
|
||||
});
|
||||
|
||||
function setAllPrivacy() {
|
||||
disableHyperlinkAuditing();
|
||||
enableFirstPartyIsolation();
|
||||
@@ -134,13 +222,13 @@ function ResetPeerConnection() {
|
||||
var webrtc = true;
|
||||
console.log("No snowflake plugin found, pre-disabled WebRTC");
|
||||
var rtc = browser.privacy.network.peerConnectionEnabled.set({
|
||||
value: webrtc
|
||||
value: webrtc,
|
||||
});
|
||||
rtc.then(AssurePeerConnection);
|
||||
}
|
||||
function snowflake(snowflake) {
|
||||
console.log("snowflake plugin found, leaving WebRTC alone", snowflake);
|
||||
EnablePeerConnection();
|
||||
AssurePeerConnection();
|
||||
}
|
||||
var snowflakeInfo = browser.management.get(
|
||||
"{b11bea1f-a888-4332-8d8a-cec2be7d24b9}" // string
|
||||
@@ -148,25 +236,27 @@ function ResetPeerConnection() {
|
||||
snowflakeInfo.then(snowflake, reset);
|
||||
}
|
||||
|
||||
function EnablePeerConnection() {
|
||||
var webrtc = true;
|
||||
var rtc = browser.privacy.network.peerConnectionEnabled.set({
|
||||
value: webrtc
|
||||
});
|
||||
rtc.then(AssurePeerConnection);
|
||||
console.log("Enabled WebRTC");
|
||||
}
|
||||
|
||||
function AssurePeerConnection() {
|
||||
function assure(webrtc) {
|
||||
browser.privacy.network.peerConnectionEnabled.set({
|
||||
value: true
|
||||
});
|
||||
browser.privacy.network.networkPredictionEnabled.set({
|
||||
value: false
|
||||
value: true,
|
||||
});
|
||||
chrome.privacy.network.webRTCIPHandlingPolicy.set({
|
||||
value: "disable_non_proxied_udp"
|
||||
value: "disable_non_proxied_udp",
|
||||
});
|
||||
}
|
||||
let rtc = browser.privacy.network.peerConnectionEnabled.get({});
|
||||
rtc.then(assure);
|
||||
}
|
||||
|
||||
// UNINSTALL ONLY
|
||||
function UnsetPeerConnection() {
|
||||
function assure(webrtc) {
|
||||
browser.privacy.network.peerConnectionEnabled.set({
|
||||
value: true,
|
||||
});
|
||||
chrome.privacy.network.webRTCIPHandlingPolicy.set({
|
||||
value: "default",
|
||||
});
|
||||
}
|
||||
let rtc = browser.privacy.network.peerConnectionEnabled.get({});
|
||||
@@ -174,7 +264,7 @@ function AssurePeerConnection() {
|
||||
}
|
||||
|
||||
var gettingInfo = browser.runtime.getPlatformInfo();
|
||||
gettingInfo.then(got => {
|
||||
gettingInfo.then((got) => {
|
||||
if (got.os == "android") {
|
||||
browser.tabs.onCreated.addListener(ResetPeerConnection);
|
||||
} else {
|
||||
@@ -185,15 +275,13 @@ gettingInfo.then(got => {
|
||||
|
||||
function ResetDisableSavePasswords() {
|
||||
browser.privacy.services.passwordSavingEnabled.set({
|
||||
value: false
|
||||
value: false,
|
||||
});
|
||||
console.log("Re-disabled saved passwords");
|
||||
}
|
||||
|
||||
function EnableSavePasswords() {
|
||||
browser.privacy.services.passwordSavingEnabled.set({
|
||||
value: true
|
||||
});
|
||||
browser.privacy.services.passwordSavingEnabled.clear();
|
||||
console.log("Enabled saved passwords");
|
||||
}
|
||||
|
||||
@@ -201,7 +289,7 @@ function EnableSavePasswords() {
|
||||
|
||||
var defaultSettings = {
|
||||
since: "forever",
|
||||
dataTypes: ["downloads", "passwords", "formData", "localStorage", "history"]
|
||||
dataTypes: ["downloads", "passwords", "formData", "localStorage", "history"],
|
||||
};
|
||||
|
||||
function onError(therror) {
|
||||
@@ -217,7 +305,7 @@ function forgetBrowsingData(storedSettings) {
|
||||
const times = {
|
||||
hour: () => 1000 * 60 * 60,
|
||||
day: () => 1000 * 60 * 60 * 24,
|
||||
week: () => 1000 * 60 * 60 * 24 * 7
|
||||
week: () => 1000 * 60 * 60 * 24 * 7,
|
||||
};
|
||||
|
||||
const sinceMilliseconds = times[selectedSince].call();
|
||||
@@ -241,7 +329,7 @@ function forgetBrowsingData(storedSettings) {
|
||||
browser.notifications.create({
|
||||
type: "basic",
|
||||
title: "Removed browsing data",
|
||||
message: `Removed ${dataTypesString}\n for I2P Browsing`
|
||||
message: `Removed ${dataTypesString}\n for I2P Browsing`,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -250,41 +338,41 @@ function forgetBrowsingData(storedSettings) {
|
||||
for (let item of historyItems) {
|
||||
if (i2pHost(item.url)) {
|
||||
browser.history.deleteUrl({
|
||||
url: item.url
|
||||
url: item.url,
|
||||
});
|
||||
browser.browsingData.removeCache({});
|
||||
console.log("cleared Cache");
|
||||
browser.browsingData
|
||||
.removePasswords({
|
||||
hostnames: [i2pHostName(item.url)],
|
||||
since
|
||||
since,
|
||||
})
|
||||
.then(onContextGotLog);
|
||||
console.log("cleared Passwords");
|
||||
browser.browsingData
|
||||
.removeDownloads({
|
||||
hostnames: [i2pHostName(item.url)],
|
||||
since
|
||||
since,
|
||||
})
|
||||
.then(onContextGotLog);
|
||||
console.log("cleared Downloads");
|
||||
browser.browsingData
|
||||
.removeFormData({
|
||||
hostnames: [i2pHostName(item.url)],
|
||||
since
|
||||
since,
|
||||
})
|
||||
.then(onContextGotLog);
|
||||
console.log("cleared Form Data");
|
||||
browser.browsingData
|
||||
.removeLocalStorage({
|
||||
hostnames: [i2pHostName(item.url)],
|
||||
since
|
||||
since,
|
||||
})
|
||||
.then(onContextGotLog);
|
||||
console.log("cleared Local Storage");
|
||||
|
||||
let contexts = browser.contextualIdentities.query({
|
||||
name: titlepref
|
||||
name: titlepref,
|
||||
});
|
||||
|
||||
function deepCleanCookies(cookies) {
|
||||
@@ -292,7 +380,7 @@ function forgetBrowsingData(storedSettings) {
|
||||
var removing = browser.cookies.remove({
|
||||
firstPartyDomain: cookie.firstPartyDomain,
|
||||
name: cookie.name,
|
||||
url: item.url
|
||||
url: item.url,
|
||||
});
|
||||
removing.then(onContextGotLog, onError);
|
||||
}
|
||||
@@ -303,7 +391,7 @@ function forgetBrowsingData(storedSettings) {
|
||||
for (let cookieStoreId of cookieStoreIds) {
|
||||
var removing = browser.cookies.getAll({
|
||||
firstPartyDomain: null,
|
||||
storeId: cookieStoreId.cookieStoreId
|
||||
storeId: cookieStoreId.cookieStoreId,
|
||||
});
|
||||
removing.then(deepCleanCookies, onError);
|
||||
}
|
||||
@@ -317,7 +405,7 @@ function forgetBrowsingData(storedSettings) {
|
||||
|
||||
var searching = browser.history.search({
|
||||
text: "i2p",
|
||||
startTime: 0
|
||||
startTime: 0,
|
||||
});
|
||||
|
||||
searching.then(deepCleanHistory);
|
||||
@@ -328,7 +416,27 @@ function forgetBrowsingData(storedSettings) {
|
||||
|
||||
function i2pHostName(url) {
|
||||
let hostname = "";
|
||||
if (url.indexOf("://") > -1) {
|
||||
console.log("(hosts)", url);
|
||||
let u = new URL(url);
|
||||
if (u.host.endsWith(".i2p")) {
|
||||
hostname = u.host;
|
||||
} else if (url.includes("=")) {
|
||||
if (url.includes(".i2p")) {
|
||||
lsit = url.split("=");
|
||||
for (let item in lsit) {
|
||||
var items = lsit[item].split(`\ % `); //"\%")
|
||||
for (let p in items) {
|
||||
if (items[p].includes(".i2p")) {
|
||||
hostname = items[p].replace("3D", 1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (hostname != "") {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (url.indexOf("://") > -1) {
|
||||
hostname = url.split("/")[2];
|
||||
} else {
|
||||
hostname = url.split("/")[0];
|
||||
@@ -338,6 +446,9 @@ function i2pHostName(url) {
|
||||
|
||||
function i2pHost(url) {
|
||||
let hostname = i2pHostName(url);
|
||||
if (hostname.endsWith(".i2p")) {
|
||||
console.log("(hostname) i2p", hostname);
|
||||
}
|
||||
return hostname.endsWith(".i2p");
|
||||
}
|
||||
|
||||
@@ -381,7 +492,7 @@ function message(recieved) {
|
||||
console.log(recieved);
|
||||
if (recieved.rtc === "enableWebRTC") {
|
||||
console.log("enableWebRTC");
|
||||
EnablePeerConnection();
|
||||
AssurePeerConnection();
|
||||
} else if (recieved.rtc === "disableWebRTC") {
|
||||
console.log("disableWebRTC");
|
||||
ResetPeerConnection();
|
||||
|
355
proxy.js
@@ -1,168 +1,234 @@
|
||||
var titlepref = chrome.i18n.getMessage('titlePreface');
|
||||
var webpref = chrome.i18n.getMessage('webPreface');
|
||||
var routerpref = chrome.i18n.getMessage('routerPreface');
|
||||
var routerprefpriv = chrome.i18n.getMessage('routerPrefacePrivate');
|
||||
var titlepref = chrome.i18n.getMessage("titlePreface");
|
||||
var webpref = chrome.i18n.getMessage("webPreface");
|
||||
var routerpref = chrome.i18n.getMessage("routerPreface");
|
||||
var mailpref = chrome.i18n.getMessage("mailPreface");
|
||||
var torrentpref = chrome.i18n.getMessage("torrentPreface");
|
||||
var tunnelpref = chrome.i18n.getMessage("i2ptunnelPreface");
|
||||
var ircpref = chrome.i18n.getMessage("ircPreface");
|
||||
var extensionpref = chrome.i18n.getMessage("extensionPreface");
|
||||
var muwirepref = chrome.i18n.getMessage("muwirePreface");
|
||||
var botepref = chrome.i18n.getMessage("botePreface");
|
||||
var blogpref = chrome.i18n.getMessage("blogPreface");
|
||||
var blogprefpriv = chrome.i18n.getMessage("blogPrefacePrivate");
|
||||
|
||||
browser.privacy.network.peerConnectionEnabled.set({
|
||||
value: true
|
||||
value: true,
|
||||
});
|
||||
|
||||
chrome.privacy.network.networkPredictionEnabled.set({
|
||||
value: false
|
||||
value: false,
|
||||
});
|
||||
chrome.privacy.network.webRTCIPHandlingPolicy.set({
|
||||
value: 'disable_non_proxied_udp'
|
||||
value: "disable_non_proxied_udp",
|
||||
});
|
||||
console.log('Disabled unproxied UDP.');
|
||||
console.log("Disabled unproxied UDP.");
|
||||
|
||||
function shouldProxyRequest(requestInfo) {
|
||||
return requestInfo.parentFrameId != -1;
|
||||
}
|
||||
|
||||
var handleContextProxyRequest = async function(requestDetails) {
|
||||
try {
|
||||
var handleProxyRequest = function(context) {
|
||||
var handleContextProxyRequest = async function (requestDetails) {
|
||||
function ircProxy() {
|
||||
if (!requestDetails.url.includes("7669")) {
|
||||
proxy = {
|
||||
failoverTimeout: 0,
|
||||
proxyDns: false
|
||||
type: getScheme(),
|
||||
host: getHost(),
|
||||
port: getPort(),
|
||||
};
|
||||
if (context == 'firefox-default' || context == 'firefox-private') {
|
||||
return proxy;
|
||||
}
|
||||
if (requestDetails.url.includes(":7669")) {
|
||||
proxy = null;
|
||||
return proxy;
|
||||
}
|
||||
}
|
||||
function blogProxy() {
|
||||
if (!requestDetails.url.includes("8084")) {
|
||||
proxy = {
|
||||
type: getScheme(),
|
||||
host: getHost(),
|
||||
port: getPort(),
|
||||
};
|
||||
return proxy;
|
||||
}
|
||||
if (requestDetails.url.includes(":8084")) {
|
||||
proxy = null;
|
||||
return proxy;
|
||||
}
|
||||
}
|
||||
|
||||
function btProxy() {
|
||||
proxy = routerProxy();
|
||||
if (requestDetails.url.includes(":7662")) {
|
||||
proxy = null;
|
||||
return proxy;
|
||||
}
|
||||
console.log("(bt proxy)", proxy);
|
||||
return proxy;
|
||||
}
|
||||
function mainProxy() {
|
||||
console.log("(proxy) mainproxy 0");
|
||||
proxy = {
|
||||
type: getScheme(),
|
||||
host: getHost(),
|
||||
port: getPort(),
|
||||
};
|
||||
let url = new URL(requestDetails.url);
|
||||
if (
|
||||
requestDetails.url.startsWith(
|
||||
"http://" + getHost() + ":" + getConsolePort() + "/i2psnark/"
|
||||
)
|
||||
) {
|
||||
//+url.host)) {
|
||||
console.log("(proxy) mainproxy 2", url);
|
||||
proxy = null;
|
||||
}
|
||||
return proxy;
|
||||
}
|
||||
function routerProxy() {
|
||||
if (routerHost(requestDetails.url)) {
|
||||
proxy = null;
|
||||
return proxy;
|
||||
} else if (!routerHost(requestDetails.url)) {
|
||||
proxy = {
|
||||
type: getScheme(),
|
||||
host: getHost(),
|
||||
port: getPort(),
|
||||
};
|
||||
return proxy;
|
||||
}
|
||||
}
|
||||
try {
|
||||
var handleProxyRequest = function (context) {
|
||||
proxy = {
|
||||
type: getScheme(),
|
||||
host: getHost(),
|
||||
port: getPort(),
|
||||
};
|
||||
|
||||
if (context == "firefox-default" || context == "firefox-private") {
|
||||
proxy = null;
|
||||
return proxy;
|
||||
}
|
||||
|
||||
if (context != undefined) {
|
||||
if (context.name == titlepref) {
|
||||
var tab = tabGet(requestDetails.tabId);
|
||||
if (!requestDetails.url.includes('/i2psnark/')) {
|
||||
console.log('URL', requestDetails.url);
|
||||
proxy = {
|
||||
type: getScheme(),
|
||||
host: getHost(),
|
||||
port: getPort()
|
||||
};
|
||||
}
|
||||
/*console.log("(proxy)", context.name);
|
||||
console.log("Using", proxy.type);
|
||||
console.log("proxy ", proxy.host + ":" + proxy.port);*/
|
||||
console.log("(proxy), context", context);
|
||||
proxy = routerProxy();
|
||||
if (context.name == ircpref) {
|
||||
proxy = ircProxy();
|
||||
return proxy;
|
||||
} else if (context.name == blogpref) {
|
||||
proxy = blogProxy();
|
||||
return proxy;
|
||||
} else if (context.name == titlepref) {
|
||||
proxy = mainProxy();
|
||||
return proxy;
|
||||
} else if (context.name == routerpref) {
|
||||
if (routerHost(requestDetails.url)) {
|
||||
return proxy;
|
||||
} else if (!routerHost(requestDetails.url)) {
|
||||
proxy = {
|
||||
type: 'http',
|
||||
host: 'localhost',
|
||||
port: '65535'
|
||||
};
|
||||
proxy = routerProxy();
|
||||
return proxy;
|
||||
} else if (context.name == torrentpref) {
|
||||
proxy = btProxy();
|
||||
return proxy;
|
||||
} else if (context.name == mailpref) {
|
||||
return proxy;
|
||||
} else if (context.name == tunnelpref) {
|
||||
return proxy;
|
||||
} else if (context.name == muwirepref) {
|
||||
return proxy;
|
||||
} else if (context.name == botepref) {
|
||||
return proxy;
|
||||
}
|
||||
} else {
|
||||
if (!routerHost(requestDetails.url)) {
|
||||
if (localHost(requestDetails.url)) {
|
||||
if (requestDetails.url.includes(":7669")) {
|
||||
proxy = null;
|
||||
} else if (requestDetails.url.includes(":7662")) {
|
||||
proxy = null;
|
||||
} else {
|
||||
console.log(
|
||||
"(proxy) non-routerconsole localhost url, will not interfere",
|
||||
requestDetails.url
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (i2pHost(requestDetails.url)) {
|
||||
proxy = {
|
||||
type: getScheme(),
|
||||
host: getHost(),
|
||||
port: getPort()
|
||||
port: getPort(),
|
||||
};
|
||||
/*console.log("(proxy)", context.name);
|
||||
console.log("Using", proxy.type);
|
||||
console.log("proxy ", proxy.host + ":" + proxy.port);*/
|
||||
return proxy;
|
||||
} else if (context.name == webpref) {
|
||||
if (localHost(requestDetails.url)) {
|
||||
if (!routerHost(requestDetails.url)) {
|
||||
proxy = {
|
||||
type: 'http',
|
||||
host: 'localhost',
|
||||
port: '65535'
|
||||
};
|
||||
}
|
||||
}
|
||||
console.log('(proxy)', context.name);
|
||||
console.log('Using', proxy.type);
|
||||
console.log('proxy ', proxy.host + ':' + proxy.port);
|
||||
return proxy;
|
||||
} else {
|
||||
proxy = null;
|
||||
}
|
||||
}
|
||||
if (!routerHost(requestDetails.url)) {
|
||||
if (localHost(requestDetails.url)) {
|
||||
console.log(
|
||||
'(proxy) non-routerconsole localhost url, will not interfere',
|
||||
requestDetails.url
|
||||
);
|
||||
/*proxy = {
|
||||
type: "http",
|
||||
host: "localhost",
|
||||
port: "65535"
|
||||
};*/
|
||||
if (requestDetails.url.includes("rpc")) {
|
||||
console.log("(proxy for rpc url)", rpc);
|
||||
}
|
||||
} else if (i2pHost(requestDetails.url)) {
|
||||
proxy = {
|
||||
type: getScheme(),
|
||||
host: getHost(),
|
||||
port: getPort()
|
||||
};
|
||||
//var tab = tabGet(requestDetails.tabId);
|
||||
//tab.then(handleTabRequest,)
|
||||
return proxy;
|
||||
}
|
||||
return proxy;
|
||||
};
|
||||
var contextGet = async function(tabInfo) {
|
||||
var contextGet = async function (tabInfo) {
|
||||
try {
|
||||
console.log('(proxy)Tab info from Function', tabInfo);
|
||||
context = await browser.contextualIdentities.get(tabInfo.cookieStoreId);
|
||||
return context;
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
return 'firefox-default';
|
||||
return "firefox-default";
|
||||
}
|
||||
};
|
||||
var tabGet = async function(tabId) {
|
||||
var tabGet = async function (tabId) {
|
||||
try {
|
||||
console.log('(proxy)Tab ID from Request', tabId);
|
||||
let tabInfo = await browser.tabs.get(tabId);
|
||||
return tabInfo;
|
||||
} catch (error) {
|
||||
console.log('(proxy)Tab error', error);
|
||||
console.log("(proxy)Tab error", error);
|
||||
}
|
||||
};
|
||||
if (proxyHost(requestDetails.url)) {
|
||||
proxy = {
|
||||
type: getScheme(),
|
||||
host: getHost(),
|
||||
port: getPort()
|
||||
port: getPort(),
|
||||
};
|
||||
return proxy;
|
||||
}
|
||||
if (requestDetails.originUrl == browser.runtime.getURL('security.html')) {
|
||||
console.log(
|
||||
'(proxy) extension security URL',
|
||||
browser.runtime.getURL('security.html')
|
||||
);
|
||||
if (requestDetails.originUrl == browser.runtime.getURL("security.html")) {
|
||||
proxy = {
|
||||
type: getScheme(),
|
||||
host: getHost(),
|
||||
port: getPort()
|
||||
port: getPort(),
|
||||
};
|
||||
return proxy;
|
||||
}
|
||||
if (
|
||||
requestDetails.cookieStoreId == 'firefox-default' ||
|
||||
requestDetails.cookieStoreId == 'firefox-private'
|
||||
requestDetails.cookieStoreId == "firefox-default" ||
|
||||
requestDetails.cookieStoreId == "firefox-private"
|
||||
) {
|
||||
return browser.proxy.settings.get({});
|
||||
}
|
||||
if (requestDetails.tabId > 0) {
|
||||
if (requestDetails.url.includes("MuWire")) {
|
||||
return;
|
||||
}
|
||||
if (proxyHost(requestDetails.url)) {
|
||||
proxy = {
|
||||
type: getScheme(),
|
||||
host: getHost(),
|
||||
port: getPort()
|
||||
port: getPort(),
|
||||
};
|
||||
return proxy;
|
||||
} else if (extensionHost(requestDetails.url)) {
|
||||
return;
|
||||
} else if (i2pHost(requestDetails.url)) {
|
||||
var tab = tabGet(requestDetails.tabId);
|
||||
requestDetails.tabId = tab;
|
||||
var context = tab.then(contextGet);
|
||||
var proxy = await context.then(handleProxyRequest);
|
||||
console.log('(proxy)Returning I2P Proxy', proxy);
|
||||
//console.log('(proxy)Returning I2P Proxy', proxy);
|
||||
return proxy;
|
||||
} else if (extensionHost(requestDetails)) {
|
||||
return;
|
||||
} else {
|
||||
var tab = tabGet(requestDetails.tabId);
|
||||
var context = tab.then(contextGet);
|
||||
@@ -173,64 +239,72 @@ var handleContextProxyRequest = async function(requestDetails) {
|
||||
/*proxy = {};
|
||||
console.log("(proxy)Returning unset Proxy", proxy);
|
||||
return proxy;*/
|
||||
} else {
|
||||
proxy = {
|
||||
type: getScheme(),
|
||||
host: getHost(),
|
||||
port: getPort(),
|
||||
};
|
||||
console.log("(proxy for rpc url)", rpc);
|
||||
return proxy;
|
||||
}
|
||||
} catch (error) {
|
||||
console.log('(proxy)Not using I2P Proxy.', error);
|
||||
console.log("(proxy)Not using I2P Proxy.", error);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
function SetupSettings() {
|
||||
console.log('Initialising Settings');
|
||||
console.log("Initialising Settings");
|
||||
function onSetupError() {
|
||||
console.log('Settings initialization error');
|
||||
console.log("Settings initialization error");
|
||||
}
|
||||
//
|
||||
function checkSchemeStoredSettings(storedSettings) {
|
||||
if (storedSettings.proxy_scheme == undefined)
|
||||
storedSettings.proxy_scheme = 'http';
|
||||
storedSettings.proxy_scheme = "http";
|
||||
else proxy_scheme = storedSettings.proxy_scheme;
|
||||
|
||||
console.log('Initialising Proxy Scheme', storedSettings.proxy_scheme);
|
||||
console.log("Initialising Proxy Scheme", storedSettings.proxy_scheme);
|
||||
setupProxy();
|
||||
}
|
||||
var gettingSchemeStoredSettings = browser.storage.local.get('proxy_scheme');
|
||||
var gettingSchemeStoredSettings = browser.storage.local.get("proxy_scheme");
|
||||
gettingSchemeStoredSettings.then(checkSchemeStoredSettings, onSetupError);
|
||||
|
||||
//
|
||||
function checkHostStoredSettings(storedSettings) {
|
||||
if (storedSettings.proxy_host == undefined)
|
||||
storedSettings.proxy_host = '127.0.0.1';
|
||||
storedSettings.proxy_host = "127.0.0.1";
|
||||
else proxy_host = storedSettings.proxy_host;
|
||||
|
||||
console.log('Initialising Host', storedSettings.proxy_host);
|
||||
console.log("Initialising Host", storedSettings.proxy_host);
|
||||
setupProxy();
|
||||
}
|
||||
var gettingHostStoredSettings = browser.storage.local.get('proxy_host');
|
||||
var gettingHostStoredSettings = browser.storage.local.get("proxy_host");
|
||||
gettingHostStoredSettings.then(checkHostStoredSettings, onSetupError);
|
||||
|
||||
//
|
||||
function checkPortStoredSettings(storedSettings) {
|
||||
if (storedSettings.proxy_port == undefined)
|
||||
storedSettings.proxy_port = '4444';
|
||||
storedSettings.proxy_port = "4444";
|
||||
else proxy_port = storedSettings.proxy_port;
|
||||
|
||||
console.log('Initialising Port', storedSettings.proxy_port);
|
||||
console.log("Initialising Port", storedSettings.proxy_port);
|
||||
setupProxy();
|
||||
}
|
||||
var gettingPortStoredSettings = browser.storage.local.get('proxy_port');
|
||||
var gettingPortStoredSettings = browser.storage.local.get("proxy_port");
|
||||
gettingPortStoredSettings.then(checkPortStoredSettings, onSetupError);
|
||||
|
||||
//
|
||||
function checkControlHostStoredSettings(storedSettings) {
|
||||
if (storedSettings.control_host == undefined)
|
||||
storedSettings.control_host = '127.0.0.1';
|
||||
storedSettings.control_host = "127.0.0.1";
|
||||
else control_host = storedSettings.control_host;
|
||||
|
||||
console.log('Initialising Control Host', storedSettings.control_host);
|
||||
console.log("Initialising Control Host", storedSettings.control_host);
|
||||
setupProxy();
|
||||
}
|
||||
var gettingControlHostStoredSettings = browser.storage.local.get(
|
||||
'control_host'
|
||||
"control_host"
|
||||
);
|
||||
gettingControlHostStoredSettings.then(
|
||||
checkControlHostStoredSettings,
|
||||
@@ -240,14 +314,14 @@ function SetupSettings() {
|
||||
//
|
||||
function checkControlPortStoredSettings(storedSettings) {
|
||||
if (storedSettings.control_port == undefined)
|
||||
storedSettings.control_port = '7657';
|
||||
storedSettings.control_port = "7657";
|
||||
else control_port = storedSettings.control_port;
|
||||
|
||||
console.log('Initialising Control Port', storedSettings.control_port);
|
||||
console.log("Initialising Control Port", storedSettings.control_port);
|
||||
setupProxy();
|
||||
}
|
||||
var gettingControlPortStoredSettings = browser.storage.local.get(
|
||||
'control_port'
|
||||
"control_port"
|
||||
);
|
||||
gettingControlPortStoredSettings.then(
|
||||
checkControlPortStoredSettings,
|
||||
@@ -261,28 +335,28 @@ function SetupSettings() {
|
||||
else disable_history = storedSettings.disable_history;
|
||||
|
||||
console.log(
|
||||
'Initialising Disabled History',
|
||||
"Initialising Disabled History",
|
||||
storedSettings.disable_history
|
||||
);
|
||||
setupProxy();
|
||||
}
|
||||
var gettingHistoryStoredSettings = browser.storage.local.get(
|
||||
'disable_history'
|
||||
"disable_history"
|
||||
);
|
||||
gettingHistoryStoredSettings.then(checkHistoryStoredSettings, onSetupError);
|
||||
}
|
||||
|
||||
function getScheme() {
|
||||
if (proxy_scheme == 'HTTP') return 'http';
|
||||
if (proxy_scheme == 'SOCKS') return 'socks';
|
||||
if (proxy_scheme == 'http') return 'http';
|
||||
if (proxy_scheme == 'socks') return 'socks';
|
||||
else return 'http';
|
||||
if (proxy_scheme == "HTTP") return "http";
|
||||
if (proxy_scheme == "SOCKS") return "socks";
|
||||
if (proxy_scheme == "http") return "http";
|
||||
if (proxy_scheme == "socks") return "socks";
|
||||
else return "http";
|
||||
}
|
||||
|
||||
function getHost() {
|
||||
if (proxy_host == undefined) {
|
||||
proxy_host = '127.0.0.1';
|
||||
proxy_host = "127.0.0.1";
|
||||
}
|
||||
return proxy_host;
|
||||
}
|
||||
@@ -290,41 +364,44 @@ function getHost() {
|
||||
function getPort() {
|
||||
if (proxy_port == undefined) {
|
||||
var scheme = getScheme();
|
||||
if (scheme == 'socks') proxy_port = '4446';
|
||||
else proxy_port = '4444';
|
||||
if (scheme == "socks") proxy_port = "4446";
|
||||
else proxy_port = "4444";
|
||||
}
|
||||
return proxy_port;
|
||||
}
|
||||
|
||||
function getConsolePort() {
|
||||
if (control_port == undefined) {
|
||||
var scheme = getScheme();
|
||||
if (scheme == "socks") proxy_port = "7657";
|
||||
else control_port = "7657";
|
||||
}
|
||||
return control_port;
|
||||
}
|
||||
|
||||
function setupProxy() {
|
||||
console.log('Setting up Firefox WebExtension proxy');
|
||||
console.log("Setting up Firefox WebExtension proxy");
|
||||
browser.proxy.onRequest.addListener(handleContextProxyRequest, {
|
||||
urls: ['<all_urls>']
|
||||
urls: ["<all_urls>"],
|
||||
});
|
||||
console.log('i2p settings created for WebExtension Proxy');
|
||||
console.log("i2p settings created for WebExtension Proxy");
|
||||
}
|
||||
|
||||
function update() {
|
||||
console.log('restoring proxy scheme:', proxy_scheme);
|
||||
console.log('restoring proxy host:', proxy_host);
|
||||
console.log('restoring proxy port:', proxy_port);
|
||||
console.log('restoring control host:', control_host);
|
||||
console.log('restoring control port:', control_port);
|
||||
console.log("restoring proxy scheme:", proxy_scheme);
|
||||
console.log("restoring proxy host:", proxy_host);
|
||||
console.log("restoring proxy port:", proxy_port);
|
||||
console.log("restoring control host:", control_host);
|
||||
console.log("restoring control port:", control_port);
|
||||
}
|
||||
|
||||
function updateFromStorage() {
|
||||
console.log('updating settings from storage');
|
||||
chrome.storage.local.get(function() {
|
||||
console.log("updating settings from storage");
|
||||
chrome.storage.local.get(function () {
|
||||
SetupSettings();
|
||||
update();
|
||||
setupProxy();
|
||||
});
|
||||
var gettingInfo = browser.runtime.getPlatformInfo();
|
||||
gettingInfo.then(got => {
|
||||
if (got.os != 'android') {
|
||||
browser.windows.getAll().then(wins => wins.forEach(themeWindow));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
updateFromStorage();
|
||||
@@ -333,9 +410,9 @@ SetupSettings();
|
||||
setupProxy();
|
||||
|
||||
var gettingListenerInfo = browser.runtime.getPlatformInfo();
|
||||
gettingListenerInfo.then(got => {
|
||||
gettingListenerInfo.then((got) => {
|
||||
browser.windows.onCreated.addListener(() => {
|
||||
chrome.storage.local.get(function() {
|
||||
chrome.storage.local.get(function () {
|
||||
setupProxy();
|
||||
});
|
||||
});
|
||||
|
299
releases.atom
@@ -4,195 +4,200 @@
|
||||
<link type="text/html" rel="alternate" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases"/>
|
||||
<link type="application/atom+xml" rel="self" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases.atom"/>
|
||||
<title>Release notes from I2P-in-Private-Browsing-Mode-Firefox</title>
|
||||
<updated>2020-06-23T03:21:35Z</updated>
|
||||
<updated>2021-05-26T22:32:58Z</updated>
|
||||
<entry>
|
||||
<id>tag:github.com,2008:Repository/169256012/0.77</id>
|
||||
<updated>2020-09-25T00:19:45Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.77"/>
|
||||
<title>0.77</title>
|
||||
<enclosure url="magnet:?xt=urn:btih:5f45673bc107ec42a8b4d02aa4d5d7487949fc66" type="application/x-bittorrent" />
|
||||
<content type="html"><p>Merge pull request <a class="issue-link js-issue-link" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/pull/100">#100</a> from eyedeekay/bookmarks</p>
|
||||
|
||||
<p>make the bookmarks part of a subdirectory</p></content>
|
||||
<id>tag:github.com,2008:Repository/169256012/0.105</id>
|
||||
<updated>2021-05-27T20:19:35Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.105"/>
|
||||
<title>0.105</title>
|
||||
<enclosure url="magnet:?xl=2485<title>0.105</title>dn=i2ppb%40eyedeekay.github.io.xpi.torrent<title>0.105</title>xt=urn:tree:tiger:w6kewvpw25bnau2rwkczbnryrjdzn54ietse3zi<title>0.105</title>xt=urn:ed2k:1cd9743fb664404298b7f2ad7ee45db0<title>0.105</title>xt=urn:aich:4vhcsp6t3c2mkjzds2etixyinyj7xtkp" type="application/x-bittorrent" />
|
||||
<content type="html"><p>Browsing to a single contextual identity, thus creating an I2P in Private<br>
|
||||
Browsing mode. It requires the use of a pre-installed I2P Router.<br>
|
||||
i2psetproxy.js (0.105-1) UNRELEASED; urgency=low</p>
|
||||
<ul>
|
||||
<li>Add help page for configuring i2pcontrol</li>
|
||||
<li>Add help page for configuring i2psnark-rpc</li>
|
||||
<li>Update the icons</li>
|
||||
</ul>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Wed, 26 May 2021 12:56:56 -0400</p>
|
||||
<p>i2psetproxy.js (0.103-1) UNRELEASED; urgency=low</p></content>
|
||||
<author>
|
||||
<name>eyedeekay</name>
|
||||
</author>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>tag:github.com,2008:Repository/169256012/0.75</id>
|
||||
<updated>2020-06-23T03:22:59Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.75"/>
|
||||
<title>0.75</title>
|
||||
<id>tag:github.com,2008:Repository/169256012/0.103</id>
|
||||
<updated>2021-05-26T16:59:28Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.103"/>
|
||||
<title>0.103</title>
|
||||
<content type="html"><p>A simple plugin for configuring a Firefox based web browser to isolate I2P<br>
|
||||
Browsing to a single contextual identity, thus creating an I2P in Private<br>
|
||||
Browsing mode. It requires the use of a pre-installed I2P Router.<br>
|
||||
i2psetproxy.js (0.75-1) UNRELEASED; urgency=low</p>
|
||||
i2psetproxy.js (0.103-1) UNRELEASED; urgency=low</p>
|
||||
<ul>
|
||||
<li>Update bookmarks format</li>
|
||||
<li>Deprecate WebRTC State Management</li>
|
||||
<li>Fix for double-test issue on /home.html page in the extension</li>
|
||||
<li>Fix for broken options menu</li>
|
||||
</ul>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Mon, 22 JUN 2020 11:22:37 -0400</p>
|
||||
<p>i2psetproxy.js (0.73-1) UNRELEASED; urgency=low</p></content>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Wed, 26 May 2021 12:56:56 -0400</p>
|
||||
<p>i2psetproxy.js (0.101-1) UNRELEASED; urgency=low</p></content>
|
||||
<author>
|
||||
<name>eyedeekay</name>
|
||||
</author>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>tag:github.com,2008:Repository/169256012/0.73</id>
|
||||
<updated>2020-03-24T23:49:45Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.73"/>
|
||||
<title>0.73</title>
|
||||
<id>tag:github.com,2008:Repository/169256012/0.101</id>
|
||||
<updated>2021-05-24T19:42:29Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.101"/>
|
||||
<title>0.101</title>
|
||||
<content type="html"><p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Mon, 24 May 2021 3:41:35 -0400</p>
|
||||
<p>i2psetproxy.js (0.99-1) UNRELEASED; urgency=low</p>
|
||||
<ul>
|
||||
<li>Sweeping changes to styles</li>
|
||||
<li>fix for issue when using noscript and visiting susimail</li>
|
||||
</ul>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Mon, 24 May 2021 2:05:21 -0400</p>
|
||||
<p>i2psetproxy.js (0.97-1) UNRELEASED; urgency=low</p></content>
|
||||
<author>
|
||||
<name>eyedeekay</name>
|
||||
</author>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>tag:github.com,2008:Repository/169256012/0.99</id>
|
||||
<updated>2021-05-24T18:08:37Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.99"/>
|
||||
<title>0.99</title>
|
||||
<content type="html"><p>A simple plugin for configuring a Firefox based web browser to isolate I2P<br>
|
||||
Browsing to a single contextual identity, thus creating an I2P in Private<br>
|
||||
Browsing mode. It requires the use of a pre-installed I2P Router.<br>
|
||||
i2psetproxy.js (0.73-1) UNRELEASED; urgency=low</p>
|
||||
i2psetproxy.js (0.99-1) UNRELEASED; urgency=low</p>
|
||||
<ul>
|
||||
<li>Fix incomplete bugfix from 0.69 again</li>
|
||||
<li>Sweeping changes to styles</li>
|
||||
<li>fix for issue when using noscript and visiting susimail</li>
|
||||
</ul>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Tue, 24 MAR 2020 19:48:14 -0400</p>
|
||||
<p>i2psetproxy.js (0.71-1) UNRELEASED; urgency=low</p></content>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Mon, 24 May 2021 2:05:21 -0400</p>
|
||||
<p>i2psetproxy.js (0.97-1) UNRELEASED; urgency=low</p></content>
|
||||
<author>
|
||||
<name>eyedeekay</name>
|
||||
</author>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>tag:github.com,2008:Repository/169256012/0.71</id>
|
||||
<updated>2020-03-24T23:01:20Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.71"/>
|
||||
<title>0.71</title>
|
||||
<content type="html"><h1>I2P in Private Browsing Mode</h1>
|
||||
<id>tag:github.com,2008:Repository/169256012/0.97</id>
|
||||
<updated>2021-02-05T18:05:51Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.97"/>
|
||||
<title>0.97</title>
|
||||
<content type="html"><p>A simple plugin for configuring a Firefox based web browser to isolate I2P<br>
|
||||
Browsing to a single contextual identity, thus creating an I2P in Private<br>
|
||||
Browsing mode. It requires the use of a pre-installed I2P Router.<br>
|
||||
i2psetproxy.js (0.97-1) UNRELEASED; urgency=low</p>
|
||||
<ul>
|
||||
<li>Fix theme issue, add x-i2p-torrentlocation HEADER support</li>
|
||||
</ul>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> FRI, 5 FEB 2021 1:02:55 -0400</p>
|
||||
<p>i2psetproxy.js (0.95-1) UNRELEASED; urgency=low</p></content>
|
||||
<author>
|
||||
<name>eyedeekay</name>
|
||||
</author>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>tag:github.com,2008:Repository/169256012/0.95</id>
|
||||
<updated>2020-12-21T23:21:35Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.95"/>
|
||||
<title>0.95</title>
|
||||
<content type="html"><p>A simple plugin for configuring a Firefox based web browser to isolate I2P<br>
|
||||
Browsing to a single contextual identity, thus creating an I2P in Private<br>
|
||||
Browsing mode. It requires the use of a pre-installed I2P Router.<br>
|
||||
i2psetproxy.js (0.95-1) UNRELEASED; urgency=low</p>
|
||||
<ul>
|
||||
<li>Fix github <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="763036769" data-permission-text="Title is private" data-url="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/issues/102" data-hovercard-type="issue" data-hovercard-url="/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/issues/102/hovercard" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/issues/102">#102</a> and <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="763043125" data-permission-text="Title is private" data-url="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/issues/103" data-hovercard-type="issue" data-hovercard-url="/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/issues/103/hovercard" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/issues/103">#103</a></li>
|
||||
</ul>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Sat, 21 DEC 2020 6:15:05 -0400</p>
|
||||
<p>i2psetproxy.js (0.93-1) UNRELEASED; urgency=low</p></content>
|
||||
<author>
|
||||
<name>eyedeekay</name>
|
||||
</author>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>tag:github.com,2008:Repository/169256012/0.93</id>
|
||||
<updated>2020-12-14T22:20:08Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.93"/>
|
||||
<title>0.93</title>
|
||||
<content type="html"><p>A simple plugin for configuring a Firefox based web browser to isolate I2P<br>
|
||||
Browsing to a single contextual identity, thus creating an I2P in Private<br>
|
||||
Browsing mode. It requires the use of a pre-installed I2P Router.<br>
|
||||
i2psetproxy.js (0.93-1) UNRELEASED; urgency=low</p>
|
||||
<ul>
|
||||
<li>Emergency fix of the first one</li>
|
||||
</ul>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Sat, 14 DEC 2020 5:18:53 -0400</p>
|
||||
<p>i2psetproxy.js (0.91-1) UNRELEASED; urgency=low</p></content>
|
||||
<author>
|
||||
<name>eyedeekay</name>
|
||||
</author>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>tag:github.com,2008:Repository/169256012/0.91</id>
|
||||
<updated>2020-12-14T19:47:59Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.91"/>
|
||||
<title>0.91</title>
|
||||
<content type="html"><p>A simple plugin for configuring a Firefox based web browser to isolate I2P<br>
|
||||
Browsing to a single contextual identity, thus creating an I2P in Private<br>
|
||||
Browsing mode. It requires the use of a pre-installed I2P Router.<br>
|
||||
i2psetproxy.js (0.91-1) UNRELEASED; urgency=low</p>
|
||||
<ul>
|
||||
<li>Exclude clearnet code hosting sites from scrub checks</li>
|
||||
</ul>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Sat, 14 DEC 2020 2:46:23 -0400</p>
|
||||
<p>i2psetproxy.js (0.89-1) UNRELEASED; urgency=low</p></content>
|
||||
<author>
|
||||
<name>eyedeekay</name>
|
||||
</author>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>tag:github.com,2008:Repository/169256012/0.89</id>
|
||||
<updated>2020-12-13T19:11:13Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.89"/>
|
||||
<title>0.89</title>
|
||||
<content type="html"><p>============================</p>
|
||||
<p>A simple plugin for configuring a Firefox based web browser to isolate I2P<br>
|
||||
Browsing to a single contextual identity, thus creating an I2P in Private<br>
|
||||
Browsing mode. It requires the use of a pre-installed I2P Router.<br>
|
||||
i2psetproxy.js (0.71-1) UNRELEASED; urgency=low</p>
|
||||
i2psetproxy.js (0.89-1) UNRELEASED; urgency=low</p>
|
||||
<ul>
|
||||
<li>Fix incomplete bugfix from 0.69</li>
|
||||
<li>Pages with lots of AJAX requests could trigger a performance degradation</li>
|
||||
<li>Improve performance of x-i2p-* headers and meta tags</li>
|
||||
</ul>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Tue, 24 MAR 2020 0:19:59 -0400</p>
|
||||
<p>i2psetproxy.js (0.69-1) UNRELEASED; urgency=low</p></content>
|
||||
<p>i2psetproxy.js (0.87-1) UNRELEASED; urgency=low</p></content>
|
||||
<author>
|
||||
<name>eyedeekay</name>
|
||||
</author>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>tag:github.com,2008:Repository/169256012/0.69</id>
|
||||
<updated>2020-03-24T04:19:44Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.69"/>
|
||||
<title>0.69</title>
|
||||
<content type="html"><p>A simple plugin for configuring a Firefox based web browser to isolate I2P<br>
|
||||
Browsing to a single contextual identity, thus creating an I2P in Private<br>
|
||||
Browsing mode. It requires the use of a pre-installed I2P Router.<br>
|
||||
i2psetproxy.js (0.69-1) UNRELEASED; urgency=low</p>
|
||||
<ul>
|
||||
<li>Add MuWire contextual ID</li>
|
||||
<li>Fix bug occurring on certain modded I2P installs</li>
|
||||
</ul>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Tue, 24 MAR 2020 0:12:02 -0400</p>
|
||||
<p>i2psetproxy.js (0.67-1) UNRELEASED; urgency=low</p></content>
|
||||
<author>
|
||||
<name>eyedeekay</name>
|
||||
</author>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>tag:github.com,2008:Repository/169256012/0.67</id>
|
||||
<updated>2020-03-18T04:27:30Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.67"/>
|
||||
<title>0.67</title>
|
||||
<content type="html"><p>A simple plugin for configuring a Firefox based web browser to isolate I2P<br>
|
||||
Browsing to a single contextual identity, thus creating an I2P in Private<br>
|
||||
Browsing mode. It requires the use of a pre-installed I2P Router.<br>
|
||||
i2psetproxy.js (0.67-1) UNRELEASED; urgency=low</p>
|
||||
<ul>
|
||||
<li>Tweak some default settings that should have gone into 65</li>
|
||||
</ul>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Tue, 17 MAR 2020 22:58:55 -0400</p>
|
||||
<p>i2psetproxy.js (0.65-1) UNRELEASED; urgency=low</p></content>
|
||||
<author>
|
||||
<name>eyedeekay</name>
|
||||
</author>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>tag:github.com,2008:Repository/169256012/0.65</id>
|
||||
<updated>2020-03-18T03:01:20Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.65"/>
|
||||
<title>0.65</title>
|
||||
<id>tag:github.com,2008:Repository/169256012/0.87</id>
|
||||
<updated>2020-12-06T18:37:57Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.87"/>
|
||||
<title>0.87</title>
|
||||
<content type="html"><p>Browsing to a single contextual identity, thus creating an I2P in Private<br>
|
||||
Browsing mode. It requires the use of a pre-installed I2P Router.<br>
|
||||
i2psetproxy.js (0.65-1) UNRELEASED; urgency=low</p>
|
||||
i2psetproxy.js (0.87-1) UNRELEASED; urgency=low</p>
|
||||
<ul>
|
||||
<li>Initial prototype of certs implementation</li>
|
||||
<li>Use "pinned apptabs" to minimize the number of tabs occupied by an app</li>
|
||||
<li>Get ready for self-hosted updates but with bittorrent because it's cooler</li>
|
||||
<li>Disable searching for i2p sites in non-i2p search engines</li>
|
||||
<li>Add contexts for i2pbote and Dispatch</li>
|
||||
<li>Remain in tighter control of x-i2p-torrentlocation priority</li>
|
||||
</ul>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Tue, 17 MAR 2020 22:58:55 -0400</p>
|
||||
<p>i2psetproxy.js (0.63-1) UNRELEASED; urgency=low</p></content>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Sat, 10 NOV 2020 1:33:50 -0400</p>
|
||||
<p>i2psetproxy.js (0.85-1) UNRELEASED; urgency=low</p></content>
|
||||
<author>
|
||||
<name>eyedeekay</name>
|
||||
</author>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>tag:github.com,2008:Repository/169256012/0.63</id>
|
||||
<updated>2020-03-02T23:01:58Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.63"/>
|
||||
<title>0.63</title>
|
||||
<content type="html"><p>A simple plugin for configuring a Firefox based web browser to isolate I2P<br>
|
||||
Browsing to a single contextual identity, thus creating an I2P in Private<br>
|
||||
Browsing mode. It requires the use of a pre-installed I2P Router.<br>
|
||||
i2psetproxy.js (0.63-1) UNRELEASED; urgency=low</p>
|
||||
<ul>
|
||||
<li>other containerizers bugfix</li>
|
||||
</ul>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Mon, 02 MAR 2020 17:54:26 -0400</p>
|
||||
<p>i2psetproxy.js (0.61-1) UNRELEASED; urgency=low</p></content>
|
||||
<author>
|
||||
<name>eyedeekay</name>
|
||||
</author>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>tag:github.com,2008:Repository/169256012/0.61</id>
|
||||
<updated>2020-03-02T22:48:06Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.61"/>
|
||||
<title>0.61</title>
|
||||
<content type="html"><p>A simple plugin for configuring a Firefox based web browser to isolate I2P<br>
|
||||
Browsing to a single contextual identity, thus creating an I2P in Private<br>
|
||||
Browsing mode. It requires the use of a pre-installed I2P Router.<br>
|
||||
i2psetproxy.js (0.61-1) UNRELEASED; urgency=low</p>
|
||||
<ul>
|
||||
<li>other containerizers bugfix</li>
|
||||
</ul>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Mon, 02 MAR 2020 17:46:24 -0400</p>
|
||||
<p>i2psetproxy.js (0.59-1) UNRELEASED; urgency=low</p></content>
|
||||
<author>
|
||||
<name>eyedeekay</name>
|
||||
</author>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>tag:github.com,2008:Repository/169256012/0.59</id>
|
||||
<updated>2020-02-26T03:10:23Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.59"/>
|
||||
<title>0.59</title>
|
||||
<content type="html"><p>A simple plugin for configuring a Firefox based web browser to isolate I2P<br>
|
||||
Browsing to a single contextual identity, thus creating an I2P in Private<br>
|
||||
Browsing mode. It requires the use of a pre-installed I2P Router.<br>
|
||||
i2psetproxy.js (0.59-1) UNRELEASED; urgency=low</p>
|
||||
<ul>
|
||||
<li>transmission-rpc based torrent controls</li>
|
||||
<li>bugfixes</li>
|
||||
</ul>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Tue, 25 FEB 2020 20:52:19 -0400</p>
|
||||
<p>i2psetproxy.js (0.57-1) UNRELEASED; urgency=low</p></content>
|
||||
<author>
|
||||
<name>eyedeekay</name>
|
||||
</author>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
</entry>
|
||||
</feed>
|
||||
|
Before Width: | Height: | Size: 242 KiB After Width: | Height: | Size: 198 KiB |
302
script.js
@@ -1,161 +1,151 @@
|
||||
|
||||
browser.runtime.onMessage.addListener(request => {
|
||||
var response = '';
|
||||
if (request.req === 'i2p-location') {
|
||||
response = 'no-alt-location';
|
||||
const metas = document.getElementsByTagName('meta');
|
||||
for (let i = 0; i < metas.length; i++) {
|
||||
try {
|
||||
tag = metas[i].getAttribute('http-equiv');
|
||||
if (tag.toUpperCase() === 'I2P-LOCATION') {
|
||||
response = metas[i].getAttribute('content');
|
||||
}
|
||||
if (tag.toUpperCase() === 'X-I2P-LOCATION') {
|
||||
response = metas[i].getAttribute('content');
|
||||
}
|
||||
}catch{
|
||||
};
|
||||
browser.runtime.onMessage.addListener((request) => {
|
||||
var response = "no-alt-location";
|
||||
console.log(request);
|
||||
if (request.req === "i2p-location") {
|
||||
var tag = document.querySelector('meta[http-equiv="i2p-location"]');
|
||||
if (tag != undefined) {
|
||||
console.log(tag);
|
||||
if (tag) response = tag.content;
|
||||
}
|
||||
var tag = document.querySelector('meta[http-equiv="x-i2p-location"]');
|
||||
if (tag != undefined) {
|
||||
console.log(tag);
|
||||
if (tag) response = tag.content;
|
||||
}
|
||||
}
|
||||
if (request.req === 'i2p-torrentlocation') {
|
||||
response = 'no-alt-location';
|
||||
const metas = document.getElementsByTagName('meta');
|
||||
for (let i = 0; i < metas.length; i++) {
|
||||
try {
|
||||
tag = metas[i].getAttribute('http-equiv');
|
||||
if (tag.toUpperCase() === 'I2P-TORRENTLOCATION') {
|
||||
response = metas[i].getAttribute('content');
|
||||
var imgs = document.getElementsByTagName('img');
|
||||
for (let img of imgs) {
|
||||
let tmpsrc = new URL(img.src);
|
||||
if (tmpsrc.host == location.host) {
|
||||
img.src = 'http://127.0.0.1:7657/i2psnark/' + tmpsrc.host + tmpsrc.pathname;
|
||||
img.onerror = function() {
|
||||
img.src = tmpsrc;
|
||||
};
|
||||
}
|
||||
}
|
||||
var links = document.getElementsByTagName('a');
|
||||
console.log('Listing link', links);
|
||||
for (let link of links) {
|
||||
console.log('(Changing Link)', link);
|
||||
let tmpsrc = new URL(link.href);
|
||||
// console.log("link", tmpsrc.host, tmpsrc.pathname)
|
||||
if (tmpsrc.host == location.host) {
|
||||
if (!tmpsrc.pathname.endsWith('html') && !tmpsrc.pathname.endsWith('htm') &&
|
||||
!tmpsrc.pathname.endsWith('php') && !tmpsrc.pathname.endsWith('jsp') &&
|
||||
!tmpsrc.pathname.endsWith('asp') && !tmpsrc.pathname.endsWith('aspx') &&
|
||||
!tmpsrc.pathname.endsWith('atom') && !tmpsrc.pathname.endsWith('rss') &&
|
||||
!tmpsrc.pathname.endsWith('\/') && tmpsrc.pathname.includes('.')) {
|
||||
console.log('link', tmpsrc.host, tmpsrc.pathname);
|
||||
link.href = 'http://127.0.0.1:7657/i2psnark/' + tmpsrc.host + tmpsrc.pathname;
|
||||
link.onerror = function() {
|
||||
window.location.href = tmpsrc.href;
|
||||
};
|
||||
}
|
||||
//if (!tmpsrc.pathname.endsWith('html')) { // && !tmpsrc.pathname.endsWith('htm') &&
|
||||
// !tmpsrc.pathname.endsWith('php') && !tmpsrc.pathname.endsWith('jsp') &&
|
||||
// !tmpsrc.pathname.endsWith('asp') && !tmpsrc.pathname.endsWith('aspx') &&
|
||||
// tmpsrc.pathname.includes('.') && !tmpsrc..pathname.endsWith('/')) {
|
||||
//console.log('http://127.0.0.1:7657/i2psnark/' + tmpsrc.host + tmpsrc.pathname;)
|
||||
//link.href = 'http://127.0.0.1:7657/i2psnark/' + tmpsrc.host + tmpsrc.pathname;
|
||||
//link.onerror = function() {
|
||||
//link.src = tmpsrc;
|
||||
//};
|
||||
//}
|
||||
}
|
||||
}
|
||||
var videos = document.getElementsByTagName('video');
|
||||
for (let video of videos) {
|
||||
let tmpsrc = new URL(video.currentSrc);
|
||||
if (tmpsrc.host == location.host) {
|
||||
if (!video.innerHTML.includes('127.0.0.1')) {
|
||||
innerHTML = video.innerHTML;
|
||||
topInnerHTML = video.innerHTML.replace('src=\"', 'src=\"http://127.0.0.1:7657/i2psnark/' + location.host + '/');
|
||||
video.innerHTML = topInnerHTML + innerHTML;
|
||||
}
|
||||
}
|
||||
}
|
||||
var audios = document.getElementsByTagName('audio');
|
||||
for (let audio of audios) {
|
||||
let tmpsrc = new URL(audio.currentSrc);
|
||||
if (tmpsrc.host == location.host) {
|
||||
if (!audio.innerHTML.includes('127.0.0.1')) {
|
||||
innerHTML = audio.innerHTML;
|
||||
topInnerHTML = audio.innerHTML.replace('src=\"', 'src=\"http://127.0.0.1:7657/i2psnark/' + location.host + '/');
|
||||
audio.innerHTML = topInnerHTML + innerHTML;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (tag.toUpperCase() === 'X-I2P-TORRENTLOCATION') {
|
||||
response = metas[i].getAttribute('content');
|
||||
var imgs = document.getElementsByTagName('img');
|
||||
for (let img of imgs) {
|
||||
let tmpsrc = new URL(img.src);
|
||||
if (tmpsrc.host == location.host) {
|
||||
img.src = 'http://127.0.0.1:7657/i2psnark/' + tmpsrc.host + tmpsrc.pathname;
|
||||
img.onerror = function() {
|
||||
img.src = tmpsrc;
|
||||
};
|
||||
}
|
||||
}
|
||||
var links = document.getElementsByTagName('a');
|
||||
console.log('Listing link', links);
|
||||
for (let link of links) {
|
||||
console.log('(Changing Link)', link);
|
||||
let tmpsrc = new URL(link.href);
|
||||
//console.log("link", tmpsrc.host, tmpsrc.pathname)
|
||||
if (tmpsrc.host == location.host) {
|
||||
if (!tmpsrc.pathname.endsWith('html') && !tmpsrc.pathname.endsWith('htm') &&
|
||||
!tmpsrc.pathname.endsWith('php') && !tmpsrc.pathname.endsWith('jsp') &&
|
||||
!tmpsrc.pathname.endsWith('asp') && !tmpsrc.pathname.endsWith('aspx') &&
|
||||
!tmpsrc.pathname.endsWith('atom') && !tmpsrc.pathname.endsWith('rss') &&
|
||||
!tmpsrc.pathname.endsWith('\/') && tmpsrc.pathname.includes('.')) {
|
||||
console.log('link', tmpsrc.host, tmpsrc.pathname);
|
||||
link.href = 'http://127.0.0.1:7657/i2psnark/' + tmpsrc.host + tmpsrc.pathname;
|
||||
link.onerror = function() {
|
||||
window.location.href = tmpsrc.href;
|
||||
};
|
||||
}
|
||||
//if (!tmpsrc.pathname.endsWith('html')) { // && !tmpsrc.pathname.endsWith('htm') &&
|
||||
// !tmpsrc.pathname.endsWith('php') && !tmpsrc.pathname.endsWith('jsp') &&
|
||||
// !tmpsrc.pathname.endsWith('asp') && !tmpsrc.pathname.endsWith('aspx') &&
|
||||
// tmpsrc.pathname.includes('.') && !tmpsrc..pathname.endsWith('/')) {
|
||||
//console.log('http://127.0.0.1:7657/i2psnark/' + tmpsrc.host + tmpsrc.pathname;)
|
||||
//link.href = 'http://127.0.0.1:7657/i2psnark/' + tmpsrc.host + tmpsrc.pathname;
|
||||
//link.onerror = function() {
|
||||
//link.src = tmpsrc;
|
||||
//};
|
||||
//}
|
||||
}
|
||||
}
|
||||
var videos = document.getElementsByTagName('video');
|
||||
for (let video of videos) {
|
||||
let tmpsrc = new URL(video.currentSrc);
|
||||
if (tmpsrc.host == location.host) {
|
||||
if (!video.innerHTML.includes('127.0.0.1')) {
|
||||
innerHTML = video.innerHTML;
|
||||
topInnerHTML = video.innerHTML.replace('src=\"', 'src=\"http://127.0.0.1:7657/i2psnark/' + location.host + '/');
|
||||
video.innerHTML = topInnerHTML + innerHTML;
|
||||
}
|
||||
}
|
||||
}
|
||||
var audios = document.getElementsByTagName('audio');
|
||||
for (let audio of audios) {
|
||||
let tmpsrc = new URL(audio.currentSrc);
|
||||
if (tmpsrc.host == location.host) {
|
||||
if (!audio.innerHTML.includes('127.0.0.1')) {
|
||||
innerHTML = audio.innerHTML;
|
||||
topInnerHTML = audio.innerHTML.replace('src=\"', 'src=\"http://127.0.0.1:7657/i2psnark/' + location.host + '/');
|
||||
audio.innerHTML = topInnerHTML + innerHTML;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}catch{
|
||||
};
|
||||
if (request.req === "i2p-torrentlocation") {
|
||||
var tag = document.querySelector('meta[http-equiv="i2p-torrentlocation"]');
|
||||
if (tag != undefined) {
|
||||
console.log(tag);
|
||||
response = i2pTorrent(tag);
|
||||
}
|
||||
var tag = document.querySelector(
|
||||
'meta[http-equiv="x-i2p-torrentlocation"]'
|
||||
);
|
||||
if (tag != undefined) {
|
||||
console.log(tag);
|
||||
response = i2pTorrent(tag);
|
||||
}
|
||||
}
|
||||
return Promise.resolve({content: response});
|
||||
return Promise.resolve({ content: response });
|
||||
});
|
||||
|
||||
window.document.onload = function (e) {
|
||||
console.log("presetting x-i2p-torrentlocation");
|
||||
var tag = document.querySelector('meta[http-equiv="i2p-torrentlocation"]');
|
||||
if (tag != undefined) {
|
||||
console.log(tag);
|
||||
response = i2pTorrent(tag);
|
||||
}
|
||||
var tag = document.querySelector('meta[http-equiv="x-i2p-torrentlocation"]');
|
||||
if (tag != undefined) {
|
||||
console.log(tag);
|
||||
response = i2pTorrent(tag);
|
||||
}
|
||||
};
|
||||
|
||||
console.log("presetting x-i2p-torrentlocation");
|
||||
var tag = document.querySelector('meta[http-equiv="i2p-torrentlocation"]');
|
||||
if (tag != undefined) {
|
||||
console.log(tag);
|
||||
response = i2pTorrent(tag);
|
||||
}
|
||||
var tag = document.querySelector('meta[http-equiv="x-i2p-torrentlocation"]');
|
||||
if (tag != undefined) {
|
||||
console.log(tag);
|
||||
response = i2pTorrent(tag);
|
||||
}
|
||||
|
||||
function i2pTorrent(tag) {
|
||||
let response = "no-alt-location";
|
||||
if (tag) {
|
||||
response = tag.content;
|
||||
var imgs = document.getElementsByTagName("img");
|
||||
console.log("rewriting torrent link");
|
||||
for (let img of imgs) {
|
||||
let tmpsrc = new URL(img.src);
|
||||
if (tmpsrc.host == location.host) {
|
||||
img.src =
|
||||
"http://127.0.0.1:7657/i2psnark/" + tmpsrc.host + tmpsrc.pathname;
|
||||
img.onerror = function () {
|
||||
img.src = tmpsrc;
|
||||
};
|
||||
}
|
||||
}
|
||||
var videos = document.getElementsByTagName("video");
|
||||
for (let video of videos) {
|
||||
video.setAttribute("preload", "none");
|
||||
let tmpsrc = new URL(video.currentSrc);
|
||||
if (tmpsrc.host == location.host) {
|
||||
if (!video.innerHTML.includes("127.0.0.1")) {
|
||||
innerHTML = video.innerHTML;
|
||||
topInnerHTML = video.innerHTML.replace(
|
||||
'src="',
|
||||
'src="http://127.0.0.1:7657/i2psnark/' + location.host + "/"
|
||||
);
|
||||
// let url = new URL("http://127.0.0.1:7657/i2psnark/"+location.host+"/"location.path)
|
||||
console.log(
|
||||
"http://127.0.0.1:7657/i2psnark/" + tmpsrc.host + tmpsrc.pathname
|
||||
); //+"/"location.path)
|
||||
video.src =
|
||||
"http://127.0.0.1:7657/i2psnark/" + tmpsrc.host + tmpsrc.pathname;
|
||||
video.innerHTML = topInnerHTML; // + innerHTML;
|
||||
video.onerror = function () {
|
||||
console.log("video error");
|
||||
video.innerHTML = topInnerHTML + innerHTML;
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
var audios = document.getElementsByTagName("audio");
|
||||
for (let audio of audios) {
|
||||
audio.setAttribute("preload", "none");
|
||||
let tmpsrc = new URL(audio.currentSrc);
|
||||
if (tmpsrc.host == location.host) {
|
||||
if (!audio.innerHTML.includes("127.0.0.1")) {
|
||||
innerHTML = audio.innerHTML;
|
||||
topInnerHTML = audio.innerHTML.replace(
|
||||
'src="',
|
||||
'src="http://127.0.0.1:7657/i2psnark/' + location.host + "/"
|
||||
);
|
||||
//console.log("http://127.0.0.1:7657/i2psnark/" + location); //.host+"/"location.path)
|
||||
console.log(
|
||||
"http://127.0.0.1:7657/i2psnark/" + tmpsrc.host + tmpsrc.pathname
|
||||
); //+"/"location.path)
|
||||
audio.src =
|
||||
"http://127.0.0.1:7657/i2psnark/" + tmpsrc.host + tmpsrc.pathname;
|
||||
audio.innerHTML = topInnerHTML; // + innerHTML;
|
||||
audio.onerror = function () {
|
||||
console.log("audio error");
|
||||
audio.innerHTML = topInnerHTML + innerHTML;
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
var links = document.getElementsByTagName("a");
|
||||
for (let link of links) {
|
||||
let tmpsrc = new URL(link.href);
|
||||
if (tmpsrc.host == location.host) {
|
||||
if (
|
||||
!tmpsrc.pathname.endsWith("html") &&
|
||||
!tmpsrc.pathname.endsWith("htm") &&
|
||||
!tmpsrc.pathname.endsWith("php") &&
|
||||
!tmpsrc.pathname.endsWith("jsp") &&
|
||||
!tmpsrc.pathname.endsWith("asp") &&
|
||||
!tmpsrc.pathname.endsWith("aspx") &&
|
||||
!tmpsrc.pathname.endsWith("atom") &&
|
||||
!tmpsrc.pathname.endsWith("rss") &&
|
||||
!tmpsrc.pathname.endsWith("/") &&
|
||||
tmpsrc.pathname.includes(".")
|
||||
) {
|
||||
link.href =
|
||||
"http://127.0.0.1:7657/i2psnark/" + tmpsrc.host + tmpsrc.pathname;
|
||||
link.onerror = function () {
|
||||
window.location.href = tmpsrc.href;
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return response;
|
||||
}
|
||||
|
70
sectorrent.html
Normal file
@@ -0,0 +1,70 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link href="search.css" rel="stylesheet">
|
||||
<link href="home.css" rel="stylesheet"><!--<link href="info.css" rel="stylesheet">--><!--<link href="torrent/popup.css" rel="stylesheet">-->
|
||||
|
||||
<title>
|
||||
</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="browserpanel">
|
||||
<div class="panel">
|
||||
<div class="section-header panel-section panel-section-header" id="headline">
|
||||
<div class="text-section-header" id="text-section-header">
|
||||
<h1 id="text-section-header">I2P Site Properties | This I2P Site has peer-to-peer resources.</h1>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel">
|
||||
<ul>
|
||||
<li>
|
||||
<div class="address-info">
|
||||
<div id="addresstype">
|
||||
<span id="TypeLabel">Address Type:</span> <span id="Type"></span>
|
||||
<div id="TypeInfo">
|
||||
<span id="AddressInfo"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<div class="tls-info">
|
||||
<div id="sitecert">
|
||||
<span id="CertLabel">Certificate Information:</span> <span id="Cert"></span>
|
||||
<div id="CertInfo">
|
||||
<span id="AddressCertInfo"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<div id="signingcert">
|
||||
<span id="SignedLabel">Signed By:</span> <span id="Signed"></span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="panel">
|
||||
<p>
|
||||
To help distribute the site content, use the links below to join the swarm.
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
<div class="address-info">
|
||||
<span id="TorrentTypeLabel">Torrent Links:</span> <span id="Type"></span>
|
||||
<div id="TorrentTypeInfo">
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<script src="cert.js"></script>
|
||||
<script src="torrent.js"></script>
|
||||
</body>
|
||||
</html>
|
@@ -3,8 +3,7 @@
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link href="search.css" rel="stylesheet">
|
||||
<link href="home.css" rel="stylesheet">
|
||||
<link href="info.css" rel="stylesheet"><!--<link href="torrent/popup.css" rel="stylesheet">-->
|
||||
<link href="home.css" rel="stylesheet"><!--<link href="info.css" rel="stylesheet">--><!--<link href="torrent/popup.css" rel="stylesheet">-->
|
||||
|
||||
<title>
|
||||
</title>
|
||||
|
@@ -14,4 +14,10 @@ button {
|
||||
}
|
||||
.button-list {
|
||||
display: inline
|
||||
}
|
||||
#hidden {
|
||||
display: none
|
||||
}
|
||||
.hidden {
|
||||
display: none
|
||||
}
|
BIN
susimail.png
Before Width: | Height: | Size: 162 KiB After Width: | Height: | Size: 65 KiB |
BIN
toopie.png
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 133 KiB |
@@ -4,7 +4,7 @@
|
||||
<meta charset="utf-8">
|
||||
<link href="search.css" rel="stylesheet">
|
||||
<link href="home.css" rel="stylesheet">
|
||||
<link href="info.css" rel="stylesheet"><!--<link href="torrent/popup.css" rel="stylesheet">-->
|
||||
<!--<link href="info.css" rel="stylesheet">--><!--<link href="torrent/popup.css" rel="stylesheet">-->
|
||||
|
||||
<title>
|
||||
</title>
|
||||
|
@@ -1,15 +1,14 @@
|
||||
|
||||
function gotCurrent(tab) {
|
||||
function gotTitle(title) {
|
||||
let addr = title;
|
||||
document.getElementById('TypeInfo').innerHTML = '<div class=\"AddressInfo\"><a href=\"' + addr + '\">' + addr + '</a></div>';
|
||||
document.getElementById("TypeInfo").innerHTML =
|
||||
'<div class="AddressInfo"><a href="' + addr + '">' + addr + "</a></div>";
|
||||
}
|
||||
console.log(tab);
|
||||
var gettingTitle = browser.pageAction.getTitle({
|
||||
tabId: tab[0].id
|
||||
tabId: tab[0].id,
|
||||
});
|
||||
gettingTitle.then(gotTitle);
|
||||
|
||||
}
|
||||
|
||||
function tabError(error) {
|
||||
|
@@ -1,4 +1,4 @@
|
||||
Acknowledgement
|
||||
Acknowledgementindex
|
||||
===============
|
||||
|
||||
**Many, many thanks to the [Transmitter](https://github.com/myfreeweb/transmitter)
|
||||
@@ -33,7 +33,7 @@ To install the plugin, go to [http://127.0.0.1:7657/configplugins](http://127.0.
|
||||
and scroll down to the section of the page where it says "Installation from URL"
|
||||
and paste the following URL:
|
||||
|
||||
```http://stats.i2p/i2p/plugins/i2psnark-rpc.su3```
|
||||
`http://stats.i2p/i2p/plugins/i2psnark-rpc.su3`
|
||||
|
||||
Click the "Install Plugin" button and you'll be ready to go. Now, open the
|
||||
extension options menu, and just click "Save." The defaults are correct for use
|
||||
|
@@ -1,18 +1,18 @@
|
||||
'use strict';
|
||||
"use strict";
|
||||
|
||||
////// Session extraction
|
||||
|
||||
function setupExtractor() {
|
||||
browser.webRequest.onHeadersReceived.removeListener(extractSession);
|
||||
browser.storage.local.get('server').then(({ server }) => {
|
||||
browser.storage.local.get("server").then(({ server }) => {
|
||||
if (!server) {
|
||||
return;
|
||||
}
|
||||
console.log('Session extractor setup for', server.base_url);
|
||||
console.log("Session extractor setup for", server.base_url);
|
||||
browser.webRequest.onBeforeSendHeaders.addListener(
|
||||
extractSession,
|
||||
{ urls: [server.base_url + '*'] },
|
||||
['requestHeaders']
|
||||
{ urls: [server.base_url + "*"] },
|
||||
["requestHeaders"]
|
||||
);
|
||||
});
|
||||
}
|
||||
@@ -21,7 +21,7 @@ setupExtractor();
|
||||
|
||||
function extractSession(requestDetails) {
|
||||
const hdr = requestDetails.requestHeaders.filter(
|
||||
x => x.name.toLowerCase() === "x-transmission-session-id"
|
||||
(x) => x.name.toLowerCase() === "x-transmission-session-id"
|
||||
)[0];
|
||||
if (!hdr) {
|
||||
return;
|
||||
@@ -58,21 +58,21 @@ function addUrl(torrentUrl, downloadDir) {
|
||||
console.log("Downloading torrent", torrentUrl);
|
||||
p = fetch(torrentUrl, {
|
||||
method: "GET",
|
||||
credentials: "include"
|
||||
credentials: "include",
|
||||
})
|
||||
.then(resp => {
|
||||
.then((resp) => {
|
||||
if (resp.ok) {
|
||||
return resp.blob();
|
||||
}
|
||||
throw new Error("Could not download torrent");
|
||||
})
|
||||
.then(blobToBase64)
|
||||
.then(b64 => {
|
||||
.then((b64) => {
|
||||
params.metainfo = b64;
|
||||
return rpcCall("torrent-add", params);
|
||||
});
|
||||
}
|
||||
return p.then(x => {
|
||||
return p.then((x) => {
|
||||
updateBadge();
|
||||
return x;
|
||||
});
|
||||
@@ -85,7 +85,7 @@ function handleUrl(requestDetails) {
|
||||
decodeURIComponent(
|
||||
requestDetails.url.replace("http://transmitter.web-extension/", "")
|
||||
)
|
||||
).then(x => {
|
||||
).then((x) => {
|
||||
return browser.storage.local.get("server").then(({ server }) => {
|
||||
return { redirectUrl: server.base_url + "web/" };
|
||||
});
|
||||
@@ -107,19 +107,19 @@ function createContextMenu() {
|
||||
browser.contextMenus.create({
|
||||
id: "transmitter-add",
|
||||
title: "Download with Transmission remote",
|
||||
contexts: ["link"]
|
||||
contexts: ["link"],
|
||||
});
|
||||
} else {
|
||||
browser.contextMenus.create({
|
||||
id: "transmitter-add",
|
||||
title: "Download to Default location",
|
||||
contexts: ["link"]
|
||||
contexts: ["link"],
|
||||
});
|
||||
server.locations.forEach(location => {
|
||||
server.locations.forEach((location) => {
|
||||
browser.contextMenus.create({
|
||||
id: "transmitter-add-loc-" + location.index,
|
||||
title: "Download to " + location.name,
|
||||
contexts: ["link"]
|
||||
contexts: ["link"],
|
||||
});
|
||||
});
|
||||
}
|
||||
@@ -152,42 +152,42 @@ function updateBadge() {
|
||||
) {
|
||||
return;
|
||||
}
|
||||
return rpcCall("session-stats", {}).then(response => {
|
||||
return rpcCall("session-stats", {}).then((response) => {
|
||||
const args = response.arguments; // lol the name 'arguments' means destructuring in strict mode is impossible
|
||||
switch (server.badge) {
|
||||
case "num":
|
||||
browser.browserAction.setBadgeBackgroundColor({ color: "gray" });
|
||||
browser.browserAction.setBadgeText({
|
||||
text: "" + args.activeTorrentCount
|
||||
text: "" + args.activeTorrentCount,
|
||||
});
|
||||
break;
|
||||
case "dl":
|
||||
browser.browserAction.setBadgeBackgroundColor({ color: "green" });
|
||||
browser.browserAction.setBadgeText({
|
||||
text: formatSpeed(args.downloadSpeed)
|
||||
text: formatSpeed(args.downloadSpeed),
|
||||
});
|
||||
break;
|
||||
case "ul":
|
||||
browser.browserAction.setBadgeBackgroundColor({ color: "blue" });
|
||||
browser.browserAction.setBadgeText({
|
||||
text: formatSpeed(args.uploadSpeed)
|
||||
text: formatSpeed(args.uploadSpeed),
|
||||
});
|
||||
break;
|
||||
case "auto":
|
||||
if (args.downloadSpeed > 0) {
|
||||
browser.browserAction.setBadgeBackgroundColor({ color: "green" });
|
||||
browser.browserAction.setBadgeText({
|
||||
text: formatSpeed(args.downloadSpeed)
|
||||
text: formatSpeed(args.downloadSpeed),
|
||||
});
|
||||
} else if (args.uploadSpeed > 0) {
|
||||
browser.browserAction.setBadgeBackgroundColor({ color: "blue" });
|
||||
browser.browserAction.setBadgeText({
|
||||
text: formatSpeed(args.uploadSpeed)
|
||||
text: formatSpeed(args.uploadSpeed),
|
||||
});
|
||||
} else {
|
||||
browser.browserAction.setBadgeBackgroundColor({ color: "gray" });
|
||||
browser.browserAction.setBadgeText({
|
||||
text: "" + args.activeTorrentCount
|
||||
text: "" + args.activeTorrentCount,
|
||||
});
|
||||
}
|
||||
break;
|
||||
@@ -196,20 +196,20 @@ function updateBadge() {
|
||||
});
|
||||
}
|
||||
|
||||
browser.alarms.onAlarm.addListener(alarm => {
|
||||
browser.alarms.onAlarm.addListener((alarm) => {
|
||||
if (alarm.name === "transmitter-badge-update") {
|
||||
return updateBadge();
|
||||
}
|
||||
});
|
||||
|
||||
function setupBadge() {
|
||||
browser.alarms.clear("transmitter-badge-update").then(x => {
|
||||
browser.alarms.clear("transmitter-badge-update").then((x) => {
|
||||
browser.storage.local.get("server").then(({ server }) => {
|
||||
if (!server) {
|
||||
return;
|
||||
}
|
||||
browser.alarms.create("transmitter-badge-update", {
|
||||
periodInMinutes: parseInt(server.badge_interval || "1")
|
||||
periodInMinutes: parseInt(server.badge_interval || "1"),
|
||||
});
|
||||
updateBadge();
|
||||
});
|
||||
|
@@ -1,30 +1,30 @@
|
||||
'use strict';
|
||||
"use strict";
|
||||
|
||||
////// RPC
|
||||
|
||||
function rpcCall(meth, args) {
|
||||
return browser.storage.local.get(function(server) {
|
||||
return browser.storage.local.get(function (server) {
|
||||
const myHeaders = {
|
||||
'Content-Type': 'application/json',
|
||||
'x-transmission-session-id': server.session
|
||||
"Content-Type": "application/json",
|
||||
"x-transmission-session-id": server.session,
|
||||
};
|
||||
//console.log("(torrent)", server.session)
|
||||
if (server.username !== '' || server.btrpcpass !== '') {
|
||||
myHeaders['Authorization'] =
|
||||
'Basic ' +
|
||||
btoa((server.username || '') + ':' + (server.btrpcpass || ''));
|
||||
if (server.username !== "" || server.btrpcpass !== "") {
|
||||
myHeaders["Authorization"] =
|
||||
"Basic " +
|
||||
btoa((server.username || "") + ":" + (server.btrpcpass || ""));
|
||||
}
|
||||
//console.log("(torrent) rpc", server.base_url);
|
||||
return fetch(server.base_url + 'rpc', {
|
||||
method: 'POST',
|
||||
return fetch(server.base_url + "rpc", {
|
||||
method: "POST",
|
||||
headers: myHeaders,
|
||||
body: JSON.stringify({ method: meth, arguments: args }),
|
||||
credentials: 'include' // allows HTTPS client certs!
|
||||
credentials: "include", // allows HTTPS client certs!
|
||||
})
|
||||
.then(function(response) {
|
||||
const session = response.headers.get('x-transmission-session-id');
|
||||
.then(function (response) {
|
||||
const session = response.headers.get("x-transmission-session-id");
|
||||
if (session) {
|
||||
browser.storage.local.get({}).then(function(storage) {
|
||||
browser.storage.local.get({}).then(function (storage) {
|
||||
storage.session = session;
|
||||
browser.storage.local.set(storage);
|
||||
});
|
||||
@@ -39,7 +39,7 @@ function rpcCall(meth, args) {
|
||||
error.response = response;
|
||||
throw error;
|
||||
})
|
||||
.then(function(response) {
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
});
|
||||
});
|
||||
@@ -50,11 +50,11 @@ function rpcCall(meth, args) {
|
||||
function formatSpeed(s) {
|
||||
// Firefox shows 4 characters max
|
||||
if (s < 1000 * 1000) {
|
||||
return (s / 1000).toFixed() + 'K';
|
||||
return (s / 1000).toFixed() + "K";
|
||||
}
|
||||
if (s < 1000 * 1000 * 1000) {
|
||||
return (s / 1000 / 1000).toFixed() + 'M';
|
||||
return (s / 1000 / 1000).toFixed() + "M";
|
||||
}
|
||||
// You probably don't have that download speed…
|
||||
return (s / 1000 / 1000 / 1000).toFixed() + 'T';
|
||||
return (s / 1000 / 1000 / 1000).toFixed() + "T";
|
||||
}
|
||||
|
@@ -6,7 +6,7 @@
|
||||
<link rel="stylesheet" type="text/css" href="../sidebar.css" />
|
||||
</head>
|
||||
<body>
|
||||
<h1>Acknowledgement</h1>
|
||||
<h1>Acknowledgementindex</h1>
|
||||
|
||||
<p><strong>Many, many thanks to the <a href="https://github.com/myfreeweb/transmitter">Transmitter</a>
|
||||
webextension.</strong></p>
|
||||
|
@@ -1,22 +1,27 @@
|
||||
'use strict';
|
||||
"use strict";
|
||||
|
||||
var TrpcCall = async function(meth, args) {
|
||||
var TrpcCall = async function (meth, args) {
|
||||
const server = await browser.storage.local.get(null);
|
||||
const myHeaders = {
|
||||
'Content-Type': 'application/json',
|
||||
'x-transmission-session-id': server.session
|
||||
"Content-Type": "application/json",
|
||||
"x-transmission-session-id": server.session,
|
||||
};
|
||||
console.log('(torrent) session', server.session);
|
||||
if (server.username !== '' || server.btrpcpass !== '') {
|
||||
myHeaders['Authorization'] =
|
||||
'Basic ' + btoa((server.username || '') + ':' + (server.btrpcpass || ''));
|
||||
console.log("(torrent) session", server.session);
|
||||
if (server.username !== "" || server.bt_rpc_pass !== "") {
|
||||
myHeaders["Authorization"] =
|
||||
"Basic " +
|
||||
btoa((server.username || "") + ":" + (server.bt_rpc_pass || ""));
|
||||
}
|
||||
console.log('(torrent) rpcurl', server.base_url + 'rpc');
|
||||
return fetch(server.base_url + 'rpc', {
|
||||
method: 'POST',
|
||||
|
||||
let req_url = "http://" + server.bt_rpc_host;
|
||||
if (server.bt_rpc_port != 0) req_url += ":" + server.bt_rpc_port;
|
||||
req_url += "/" + server.bt_rpc_path;
|
||||
console.log("(torrent) rpcurl", req_url);
|
||||
return fetch(req_url + "rpc", {
|
||||
method: "POST",
|
||||
headers: myHeaders,
|
||||
body: JSON.stringify({ method: meth, arguments: args }),
|
||||
credentials: 'include' // allows HTTPS client certs!
|
||||
credentials: "include", // allows HTTPS client certs!
|
||||
});
|
||||
|
||||
/*.then(function(response) {
|
||||
@@ -32,13 +37,13 @@ var TrpcCall = async function(meth, args) {
|
||||
error.response = response;
|
||||
throw error;
|
||||
});*/
|
||||
}
|
||||
};
|
||||
|
||||
const torrentsPane = document.getElementById('torrents-pane');
|
||||
const configPane = document.getElementById('config-pane');
|
||||
const torrentsPane = document.getElementById("torrents-pane");
|
||||
const configPane = document.getElementById("config-pane");
|
||||
|
||||
for (const opener of document.querySelectorAll('.config-opener')) {
|
||||
opener.addEventListener('click', e => {
|
||||
for (const opener of document.querySelectorAll(".config-opener")) {
|
||||
opener.addEventListener("click", (e) => {
|
||||
browser.runtime.openOptionsPage();
|
||||
});
|
||||
}
|
||||
@@ -53,7 +58,13 @@ const torrentsList = document.getElementById("torrents-list");
|
||||
const torrentsTpl = document.getElementById("torrents-tpl");
|
||||
const torrentsError = document.getElementById("torrents-error");
|
||||
const getArgs = {
|
||||
fields: ["name", "percentDone", "rateDownload", "rateUpload", "queuePosition"]
|
||||
fields: [
|
||||
"name",
|
||||
"percentDone",
|
||||
"rateDownload",
|
||||
"rateUpload",
|
||||
"queuePosition",
|
||||
],
|
||||
};
|
||||
let cachedTorrents = [];
|
||||
|
||||
@@ -90,7 +101,7 @@ function searchTorrents() {
|
||||
let newTorrents = cachedTorrents;
|
||||
const val = torrentsSearch.value.toLowerCase().trim();
|
||||
if (val.length > 0) {
|
||||
newTorrents = newTorrents.filter(x => x.name.toLowerCase().includes(val));
|
||||
newTorrents = newTorrents.filter((x) => x.name.toLowerCase().includes(val));
|
||||
}
|
||||
renderTorrents(newTorrents);
|
||||
}
|
||||
@@ -99,16 +110,16 @@ torrentsSearch.addEventListener("keyup", searchTorrents);
|
||||
|
||||
function refreshTorrents(server) {
|
||||
console.log("(torrent) initiating", server);
|
||||
return TrpcCall("torrent-get", getArgs).then(function(response) {
|
||||
return TrpcCall("torrent-get", getArgs).then(function (response) {
|
||||
const session = response.headers.get("x-transmission-session-id");
|
||||
if (session) {
|
||||
browser.storage.local.get({}).then(function(storage) {
|
||||
browser.storage.local.get({}).then(function (storage) {
|
||||
storage.session = session;
|
||||
browser.storage.local.set(storage);
|
||||
});
|
||||
}
|
||||
let sponse = response.json();
|
||||
sponse.then(function(response) {
|
||||
sponse.then(function (response) {
|
||||
console.log("(torrent) refreshing", response);
|
||||
let newTorrents = response.arguments.torrents;
|
||||
newTorrents.sort((x, y) => y.queuePosition - x.queuePosition);
|
||||
@@ -125,7 +136,7 @@ function refreshTorrents(server) {
|
||||
}
|
||||
|
||||
function refreshTorrentsLogErr(server) {
|
||||
return refreshTorrents(server).catch(err => {
|
||||
return refreshTorrents(server).catch((err) => {
|
||||
console.error(err);
|
||||
torrentsError.textContent = "Error: " + err.toString();
|
||||
});
|
||||
@@ -135,15 +146,18 @@ function showTorrents(server) {
|
||||
torrentsPane.hidden = false;
|
||||
configPane.hidden = true;
|
||||
for (const opener of document.querySelectorAll(".webui-opener")) {
|
||||
opener.href = server.base_url + "web/";
|
||||
let req_url = "http://" + server.bt_rpc_host;
|
||||
if (server.bt_rpc_port != 0) req_url += ":" + server.bt_rpc_port;
|
||||
req_url += "/" + server.bt_rpc_path;
|
||||
opener.href = req_url + "web/";
|
||||
}
|
||||
console.log("(torrent) showing torrents");
|
||||
refreshTorrents(server).catch(_ => refreshTorrentsLogErr(server));
|
||||
setInterval(() => refreshTorrentsLogErr(server), 2000);
|
||||
refreshTorrents(server).catch((_) => refreshTorrentsLogErr(server));
|
||||
setInterval(() => refreshTorrentsLogErr(server), 60000);
|
||||
}
|
||||
|
||||
//let store =
|
||||
browser.storage.local.get(function(server) {
|
||||
browser.storage.local.get(function (server) {
|
||||
console.log("(torrent) querying storage", server);
|
||||
if (server && server.base_url && server.base_url !== "") {
|
||||
showTorrents(server);
|
||||
|
Before Width: | Height: | Size: 165 KiB After Width: | Height: | Size: 80 KiB |
@@ -35,11 +35,12 @@
|
||||
</div>
|
||||
|
||||
<div class="hideIfI2PProxyOff" id="readyness">
|
||||
<img class="readyness" src="http://proxy.i2p/themes/console/images/local_up.png"> <span id="proxy-check">Proxy is ready.</span>
|
||||
<img class="readyness" src="icons/local_up.png"> <span id="proxy-check">Proxy is ready.</span>
|
||||
</div>
|
||||
|
||||
<div id="i2pbrowser-description">
|
||||
<p id="description">You are now able to use I2P in this browser.</p>
|
||||
<button class="hidden" id="visit-irc">Visit IRC</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -83,9 +84,9 @@
|
||||
<p id="applicationExplain">These applications use I2P to provide them with security and privacy.</p>
|
||||
|
||||
<ul>
|
||||
<li class="application"><button class="applicationName window-visit-homepage" href="#" id="window-visit-index" target="_blank">Help Page</button> <span class="applicationDesc" id="abouthome">For more information about this extension, go here:</span></li>
|
||||
<li class="application"><button class="applicationName window-visit-help" href="#" id="window-visit-help" target="_blank">Help Page</button> <span class="applicationDesc" id="abouthome">For more information about this extension, go here:</span></li>
|
||||
|
||||
<li class="application"><button class="applicationName window-visit-toopie" href="#" id="window-visit-toopie" target="_blank">Toopie</button> <span class="applicationDesc" id="toopie">For information about your I2P router status, go here:</span></li>
|
||||
<li class="application window-visit-toopie"><button class="applicationName window-visit-toopie" href="#" id="window-visit-toopie" target="_blank">Toopie</button> <span class="applicationDesc window-visit-toopie" id="toopie">For information about your I2P router status, go here:</span></li>
|
||||
|
||||
<li class="application"><button class="applicationName" id="window-visit-i2ptunnel" target="_blank">Hidden Services Manager</button> <span class="applicationDesc" id="i2ptunnel">I2P has a web-based interface for configuring .i2p services like web sites, to set up your own web sites, go here:</span></li>
|
||||
|
||||
@@ -112,6 +113,8 @@
|
||||
<br>
|
||||
The server address is not set yet.
|
||||
<br>
|
||||
<a class="torrent-opener" id="window-visit-torrent" href="#">For assistance, visit the torrent help page</a>.
|
||||
<br>
|
||||
<a class="config-opener" href="#">Open the settings</a> to continue.
|
||||
</div>
|
||||
|
||||
|
Before Width: | Height: | Size: 449 KiB After Width: | Height: | Size: 237 KiB |