• Stars
    star
    103
  • Rank 321,624 (Top 7 %)
  • Language
    JavaScript
  • License
    BSD 3-Clause "New...
  • Created almost 6 years ago
  • Updated 6 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Google Chrome Extension API for Safari

Are you a JavaScript developer?

Write Swiftless Safari Extensions using Chrome API

๐Ÿ—ฃ๏ธ Looking for a JS + Swift developer to provide a commercial support. Please contact @pavelstudeny for more info.

Topee provides Chrome Extension API. You can have the same codebase for all browsers.

While Google Chrome, Firefox and Edge share the same extension API, Safari extensions are going in a different direction, requiring developers to use a different set of APIs and partly also Swift instead of JavaScript.

The Topee project provides the Google Chrome Extension API for Safari, allowing you to run a single codebase on all the browsers.

The API is complete enough to run in production, such as the extension delivered with Avast Passwords for Mac.

Use carthage to add it to your project.

First run

If you are completely new to Xcode, read how to run the Demo application first. Also, before you run the extension for the first time, make sure to build the containing application.

Xcode Project

Detailed setup instruction with pictures are available at wizard.md.

  • Add github "https://github.com/avast/topee" ~> 1.0.0 to your Cartfile
  • Link the Topee to your Appex target
  • Add a resource to your Appex pointing to Carthage/Build/Mac/Topee.framework/Resources/topee-content.js
  • Make sure the topee-content.js script is referenced in the plist of your appex under: NSExtension / SFSafariContentScript and appears as the first script in the array
  • Add a subclass of TopeeSafariExtensionHandler and reference your background script in the NSExtension / TopeeSafariBackgroundScript attribute like shown in the snippet below
  • Make sure the the plist entry: NSExtension > NSExtensionPrincipalClass of your appex plist points to $(PRODUCT_MODULE_NAME).SafariExtensionHandler where SafariExtensionHandler is the name of your TopeeSafariExtensionHandler subclass

See xcode.md for more details.

Extension parts

Content scripts are listed in Info.plist as specified for the app extensions. Make sure to list Topee API (topee-content.js) as the first one. Content scripts are injected when document starts loading by default. src/Framework/Scripts/run-at-document-end.sh preprocesses them at build time to run when document body already exists.

Background scripts are also listed in Info.plist in the same manner as content scripts, under SFSafariBackgroundScript key. topee-background.js should not be listed, but place it into the Appex resources.

Injected iframes from web accessible resources need to reference topee-iframe-resources.js.

Place browserAction icons into the Appex resources. browserAction popup is currently in beta.

How it works

documentation/integration.svg To run Chrome-API-based extension, Topee creates an invisible WebView to run background scripts and chrome namespace implementations for background and content scripts, that provides messaging and other functionality.

Use carthage to add it to your project.

Tests

Once you have the demo extension installed in Safari, you can run unit tests by visiting https://pamcdn.avast.com/pamcdn/extensions/install/mac/blank.html

More Repositories

1

retdec

RetDec is a retargetable machine-code decompiler based on LLVM.
C++
7,718
star
2

android-butterknife-zelezny

Android Studio plug-in for generating ButterKnife injections from selected layout XML.
Java
3,385
star
3

retry-go

Simple golang library for retry mechanism
Go
2,170
star
4

android-styled-dialogs

Backport of Material dialogs with easy-to-use API based on DialogFragment
Java
2,153
star
5

retdec-idaplugin

RetDec plugin for IDA
C++
736
star
6

gradle-docker-compose-plugin

Simplifies usage of Docker Compose for integration testing in Gradle environment.
Groovy
402
star
7

pytest-docker

Docker-based integration tests
Python
386
star
8

ioc

Threat Intel IoCs + bits and pieces of dark matter
C
338
star
9

scala-server-toolkit

Functional programming toolkit for building server applications in Scala.
Scala
194
star
10

hdfs-shell

HDFS Shell is a HDFS manipulation tool to work with functions integrated in Hadoop DFS
Java
151
star
11

yaramod

Parsing of YARA rules into AST and building new rulesets in C++.
C++
113
star
12

apkparser

APK manifest & resources parsing in Golang.
Go
109
star
13

yari

YARI is an interactive debugger for YARA Language.
Rust
84
star
14

apkverifier

APK Signature verification in Go. Supports scheme v1, v2 and v3 and passes Google apksig's testing suite.
Go
76
star
15

gradle-dependencies-viewer

A simple web UI to analyze dependencies for your project based on the text data generated from "gradle dependencies" command.
JavaScript
76
star
16

yls

YARA Language Server
Python
63
star
17

yarang

Alternative YARA scanning engine
C++
62
star
18

pelib

PE file manipulation library.
C++
61
star
19

datadog4s

Making great monitoring easy in functional Scala
Scala
60
star
20

pe_tools

A cross-platform Python toolkit for parsing/writing PE files.
Python
60
star
21

k8s-admission-webhook

A general-purpose Kubernetes admission webhook to aid with enforcing best practices within your cluster.
Go
54
star
22

yaracpp

C++ wrapper for YARA.
C++
45
star
23

grpc-java-jwt

JWT based authentication for gRPC-Java.
Java
44
star
24

hexrays-demo

IDA SDK tech demo
C++
34
star
25

rabbitmq-scala-client

Scala wrapper over standard RabbitMQ Java client library
Scala
32
star
26

marathon-vault-plugin

Marathon plugin which injects Vault secrets via environment variables
Scala
30
star
27

android-lectures

Class material for lectures about Android development
Kotlin
24
star
28

retdec-regression-tests-framework

A framework for writing and running regression tests for RetDec and related tools.
Python
23
star
29

capstone-dumper

Utility for dumping all the information Capstone has on given instructions.
C++
23
star
30

libdwarf

Library to provide access to DWARF debugging information.
C
22
star
31

PurpleDome

Simulation environment for attacks on computer networks
Python
20
star
32

avast-ctu-cape-dataset

Jupyter Notebook
19
star
33

llvm

An LLVM clone modified for use in RetDec and associated tools.
LLVM
18
star
34

wanna-ml

Complete MLOps framework for Vertex-AI
Python
17
star
35

authenticode-parser

Authenticode-parser is a simple C library for Authenticode format parsing using OpenSSL.
C
15
star
36

grpc-json-bridge

Library for exposing gRPC endpoints via HTTP (JSON) API
Scala
15
star
37

elfio

Library for reading and generating ELF files.
C++
14
star
38

vuei18n-po

transform gettext .po files for vue-i18n
JavaScript
14
star
39

ep-stats

Statistics for Experimentation Platform
Python
13
star
40

retdec-regression-tests

A collection of regression tests for RetDec and associated tools.
Python
11
star
41

cactus

Library for easy conversion between GPB and Scala case classes.
Scala
9
star
42

safariextz

Safari extension packer for node.js
JavaScript
9
star
43

bytes

Library providing universal interface for having an immutable representation of sequence of bytes.
Java
8
star
44

hermes

SMTP honeypot built on top of the Salmon mail server
Python
8
star
45

kafka-tests

Integration test of Apache Kafka 0.9.0+ and Java clients.
Java
8
star
46

ctf-aca-brno-2020

Tasks from Avast Cyber Adventure 2020 Brno
Objective-C
6
star
47

Stor

HTTP API for SHA256 objects
Perl
5
star
48

clockwork

An adoption of the map-reduce paradigm based on the concept of coroutines to the world of stream data processing.
Java
5
star
49

covid-19-ioc

HTML
5
star
50

tlshc

TLSH library in C
C
5
star
51

decryptor-keys

Decryption keys for our ransomware decryptors
5
star
52

bytecompressor

Java and Scala abstractions for some compression algorithms.
Java
5
star
53

slog4s

Structured and contextual logging for Scala
Scala
5
star
54

retdec-support

Support packages for the RetDec decompiler.
5
star
55

hackcambridge-ccleaner-app

A custom build of CCleaner that enables the integration of Avast Secure Browser
Visual Basic
5
star
56

hackcambridge-ccleaner-extension

A stub for the CCleaner extension for Avast Secure Browser
JavaScript
5
star
57

metrics

Java/Scala library defining API for metrics publishing
Java
4
star
58

asio-mutex

Awaitable Mutex compatible with Boost.Asio
C++
4
star
59

machine-learning-python

Machine learning in Python Workshop
Jupyter Notebook
4
star
60

scala-hashes

Case-classes representing MD5, SHA1 and SHA256.
Scala
4
star
61

syringe

Syringe - Dependency Injection and Configuration Library from AVAST Software
Java
4
star
62

mongodb-oplog-stats

A tool for obtaining statistics about a MongoDB replica-set oplog
Rust
4
star
63

keystone

Keystone assembler framework: Core (Arm, Arm64, Hexagon, Mips, PowerPC, Sparc, SystemZ & X86) + bindings
C++
3
star
64

syringe-maven-plugin

Supporting Maven plugin for Syringe
Java
3
star
65

cargo-depdiff

Inspecting what changed around dependencies between versions
Rust
3
star
66

webtrails

Svelte
3
star
67

labmanager-unit-vsphere

REST service for vmWare vSphere virtual machine control
Python
3
star
68

BigMap

Scala Map that uses binary search in memory mapped sorted file. It makes possible usage of data sets bigger than available memory as a Map.
Scala
3
star
69

management-console-config

Sample configuration for Avast Business management console
2
star
70

boost-python-examples

Examples that show capabilities of Boost Python
C++
2
star
71

ndisdump

A no-dependencies network packet capture tool for Windows
C++
2
star
72

docker-centos_perl_cpanm

2
star
73

adblock

JavaScript
2
star
74

stor-client

Go
2
star
75

retdec-build-system-tests

Tests of RetDec build system. This can also serve as RetDec component usage examples.
C++
2
star
76

eslint-plugin-apklab-frida

ESLint plugin & config for the Frida scripts used in the apklab.io platform.
JavaScript
2
star
77

VSArchConv

Converts .sln/.vcxproj to support different architecture
C++
2
star
78

hackcambridge-challenge

Integrate the Avast Secure Browser (ASB) and CCleaner products to improve user privacy, prevent website tracking, and reduce the userโ€™s online footprint.
2
star
79

stepdance

Functional iterators for easy and elegant parsing, scanning, iterating etc. Written Scala.
Scala
1
star
80

docker-flume-hdfs

Shell
1
star
81

storage-client

Scala
1
star
82

vsphere-instaclone

Really quickly clone machines to be used as TeamCity agents
Kotlin
1
star
83

jmx-publisher

Tool to get properties and methods published via JMX easily.
Java
1
star
84

browser-extension-messaging-sample

JavaScript
1
star
85

instaprofiles-sync

application is used to regularly synchronize defined cloud profiles for [TeamCity plugin vsphere-instaclone](https://github.com/avast/vsphere-instaclone)
Java
1
star
86

continuity

Library for passing context between threads in multi-threaded applications
Scala
1
star
87

firefox-xpi

Firefox extension packer for node.js
JavaScript
1
star
88

jasmine-class-mock

Create a mock class for the Jasmine framework
JavaScript
1
star
89

jfrog-verisign

JFrog plugin to verify deploying artifacts signatures. It supports both JAR and RPM (PGP) verification
Java
1
star
90

https-encryption

Avast HTTPS Encryption powered by HTTPSEverywhere
JavaScript
1
star
91

kluzo

Library for passing tracing ID between threads in multi-threaded applications
Scala
1
star
92

genrex

Generator of regular expressions
Python
1
star
93

fairy-tale

Toolbox for functional programming in Scala using Finally Tagless approach
Scala
1
star
94

ResolveTest

Simple dns resolve utility.
C++
1
star
95

gossip-bot

Find out what is happening within the company
Go
1
star