Created
January 29, 2020 21:51
-
-
Save tomaski/d61f0ee71aa57862d19e96c7edd8b34b to your computer and use it in GitHub Desktop.
Tasker OpenVPN config with Quick Settings toggle button
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
=== PREREQUISITES === | |
in order to get this working, following apps need to be installed on the phone (Android only): | |
Tasker | |
OpenVPN | |
AutoNotification plugin for Tasker | |
=== OPENVPN CONFIG === | |
1) edit the provided file to suit your specific configuration (usually changing URL and ports should suffice) | |
2) copy the config file to the "OpenVPN" folder (create if not present) on your phone internal memory (SD should be fine too, but internal memory is safer) | |
3) open the OpenVPN app and import the config file | |
4) name the connection (you're gonna need it later) | |
5) start the connection to see if it's working | |
=== TASKER CONFIG === | |
1) copy the task file to Tasker/tasks/ folder on your phone | |
2) open Tasker | |
3) if Tasker didnt import the task automatically, do it manually: | |
3.1) press and hold on "tasks" tab | |
3.2) select "import task" | |
3.3) select location and click on the file you want to import | |
4) open the newly imported task and edit action numer 3 (send intent) filling in your profile name | |
5) create quick settings tile to be able to quickly toggle VPN on and off (OPTIONAL) | |
5.1) preferences -> action -> quick settings tasks | |
5.2) click the search icon and select the VPN profile from the list |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
client | |
dev tun | |
proto udp | |
remote YOUR_URL_HERE YOUR_PORT_HERE | |
resolv-retry infinite | |
nobind | |
persist-key | |
persist-tun | |
cipher AES-128-CBC | |
comp-lzo | |
verb 5 | |
dhcp-option DNS 1.1.1.1 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<TaskerData sr="" dvi="1" tv="5.9.1"> | |
<Task sr="task36"> | |
<cdate>1540209393631</cdate> | |
<edate>1580334047673</edate> | |
<id>36</id> | |
<nme>VPN</nme> | |
<pri>100</pri> | |
<Action sr="act0" ve="7"> | |
<code>565385068</code> | |
<label>Check notification area if there's already an active VPN connection</label> | |
<Bundle sr="arg0"> | |
<Vals sr="val"> | |
<AllFields>false</AllFields> | |
<AllFields-type>java.lang.Boolean</AllFields-type> | |
<BigImageNames><null></BigImageNames> | |
<BigImageNames-type>java.lang.String</BigImageNames-type> | |
<BigTextNames><null></BigTextNames> | |
<BigTextNames-type>java.lang.String</BigTextNames-type> | |
<HasReplyAction>false</HasReplyAction> | |
<HasReplyAction-type>java.lang.Boolean</HasReplyAction-type> | |
<ImageNames><null></ImageNames> | |
<ImageNames-type>java.lang.String</ImageNames-type> | |
<InterceptApps><StringArray sr=""/></InterceptApps> | |
<InterceptApps-type>[Ljava.lang.String;</InterceptApps-type> | |
<InterceptPersistent>2</InterceptPersistent> | |
<InterceptPersistent-type>java.lang.String</InterceptPersistent-type> | |
<InternalActionsBig><null></InternalActionsBig> | |
<InternalActionsBig-type>java.lang.String</InternalActionsBig-type> | |
<InternalActionsSmall><null></InternalActionsSmall> | |
<InternalActionsSmall-type>java.lang.String</InternalActionsSmall-type> | |
<QueryAnyMatch><null></QueryAnyMatch> | |
<QueryAnyMatch-type>java.lang.String</QueryAnyMatch-type> | |
<QueryAppName><null></QueryAppName> | |
<QueryAppName-type>java.lang.String</QueryAppName-type> | |
<QueryAppPackage>net.openvpn.openvpn</QueryAppPackage> | |
<QueryAppPackage-type>java.lang.String</QueryAppPackage-type> | |
<QueryText><null></QueryText> | |
<QueryText-type>java.lang.String</QueryText-type> | |
<QueryTitle><null></QueryTitle> | |
<QueryTitle-type>java.lang.String</QueryTitle-type> | |
<SnoozedNotifications>false</SnoozedNotifications> | |
<SnoozedNotifications-type>java.lang.Boolean</SnoozedNotifications-type> | |
<TextNames><null></TextNames> | |
<TextNames-type>java.lang.String</TextNames-type> | |
<UseRegex>false</UseRegex> | |
<UseRegex-type>java.lang.Boolean</UseRegex-type> | |
<com.twofortyfouram.locale.intent.extra.BLURB>Persistency Type: Persistent Only | |
Package: net.openvpn.openvpn</com.twofortyfouram.locale.intent.extra.BLURB> | |
<com.twofortyfouram.locale.intent.extra.BLURB-type>java.lang.String</com.twofortyfouram.locale.intent.extra.BLURB-type> | |
<net.dinglisch.android.tasker.RELEVANT_VARIABLES><StringArray sr=""><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0>%anapp() | |
01. App name | |
</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES1>%anbackgroundimage() | |
Background Image | |
</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES1><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES2>%anbigicon() | |
04. Icon When Expanded | |
</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES2><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES3>%anbutton1action() | |
13. Button Action 1 | |
Use with AutoNotification Actions</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES3><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES4>%anbutton1icon() | |
13. Button 1 Icon | |
</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES4><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES5>%anbutton1text() | |
12. Button 1 Text | |
</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES5><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES6>%anbutton2action() | |
15. Button 2 Action | |
Use with AutoNotification Actions</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES6><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES7>%anbutton2icon() | |
15. Button 2 Icon | |
</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES7><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES8>%anbutton2text() | |
14. Button 2 Text | |
</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES8><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES9>%anbutton3action() | |
17. Button 3 Action | |
Use with AutoNotification Actions</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES9><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES10>%anbutton3icon() | |
17. Button 3 Icon | |
</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES10><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES11>%anbutton3text() | |
16. Button 3 Text | |
</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES11><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES12>%anbutton4action() | |
18. Button 4 Action | |
Use with AutoNotification Actions</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES12><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES13>%anbutton4icon() | |
18. Button 4 Icon | |
</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES13><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES14>%anbutton4text() | |
18. Button 4 Text | |
</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES14><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES15>%anbutton5action() | |
19. Button 5 Action | |
Use with AutoNotification Actions</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES15><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES16>%anbutton5icon() | |
19. Button 5 Icon | |
</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES16><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES17>%anbutton5text() | |
19. Button 5 Text | |
</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES17><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES18>%ancancelreason() | |
Reason Cancelled Code | |
Code of the reason the notification was cancelled</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES18><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES19>%ancancelreasontext() | |
Reason Cancelled Text | |
Reason the notification was cancelled</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES19><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES20>%ancategoryid() | |
Category ID | |
Notification's category ID</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES20><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES21>%ancolor() | |
Color | |
</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES21><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES22>%andismissaction() | |
23. Action On Dismiss Id | |
Use with AutoNotification Actions</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES22><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES23>%anextrainfo() | |
Extra Info | |
Extra info that you can add to an AutoNotification notification when you create it. Empty for others.</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES23><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES24>%anextras() | |
All Extras | |
All extras from the notification that are not already in one of the other variables in JSON format</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES24><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES25>%angroup() | |
Group | |
</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES25><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES26>%anicon() | |
04. Icon | |
</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES26><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES27>%anid() | |
Id | |
</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES27><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES28>%aninfotext() | |
10. Info Text | |
</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES28><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES29>%ankey() | |
Key | |
A unique instance key for this notification</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES29><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES30>%anpackage() | |
Package Name | |
</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES30><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES31>%anpeople() | |
People | |
</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES31><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES32>%anpicture() | |
05. Picture | |
</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES32><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES33>%anpriority() | |
Priority | |
</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES33><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES34>%anprogress() | |
Progress | |
</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES34><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES35>%anprogressindeterminate() | |
Progress Indeterminate | |
</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES35><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES36>%anprogressmax() | |
Progress Max | |
</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES36><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES37>%anreplyaction() | |
20. Action Reply | |
Use with AutoNotification Reply</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES37><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES38>%anshowchronometer() | |
Show Chronometer | |
</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES38><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES39>%ansortkey() | |
Sort Key | |
</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES39><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES40>%anstatus() | |
Cancelled Or Created | |
</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES40><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES41>%anstatusbaricon() | |
07. Status Bar Icon | |
</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES41><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES42>%anstatusbaricon() | |
Status Bar Icon | |
</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES42><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES43>%ansubtext() | |
08. SubText | |
</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES43><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES44>%ansummary() | |
Is Summary | |
Will be set to &lt;b&gt;1&lt;/b&gt; if it's a summary and &lt;b&gt;will not be set&lt;/b&gt; otherwise.</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES44><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES45>%ansummarytext() | |
09. Summary Text | |
</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES45><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES46>%antag() | |
Tag | |
</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES46><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES47>%antext() | |
03. Text | |
</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES47><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES48>%antextbig() | |
03. Text When Expanded | |
</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES48><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES49>%antextlines() | |
11. Text Lines | |
</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES49><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES50>%anticker() | |
03. Ticker Text | |
</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES50><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES51>%antitle() | |
02. Title | |
</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES51><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES52>%antitlebig() | |
02. Title When Expanded | |
</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES52><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES53>%antouchaction() | |
22. Action On Touch Id | |
Use with AutoNotification Actions</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES53><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES54>%anwhen() | |
Show When | |
</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES54><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES55>%anwhentime() | |
When | |
</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES55><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES56>%err | |
Error Code | |
Only available if you select &lt;b&gt;Continue Task After Error&lt;/b&gt; and the action ends in error</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES56><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES57>%errmsg | |
Error Message | |
Only available if you select &lt;b&gt;Continue Task After Error&lt;/b&gt; and the action ends in error</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES57></StringArray></net.dinglisch.android.tasker.RELEVANT_VARIABLES> | |
<net.dinglisch.android.tasker.RELEVANT_VARIABLES-type>[Ljava.lang.String;</net.dinglisch.android.tasker.RELEVANT_VARIABLES-type> | |
<net.dinglisch.android.tasker.extras.VARIABLE_REPLACE_KEYS>InterceptPersistent QueryAppPackage plugininstanceid plugintypeid </net.dinglisch.android.tasker.extras.VARIABLE_REPLACE_KEYS> | |
<net.dinglisch.android.tasker.extras.VARIABLE_REPLACE_KEYS-type>java.lang.String</net.dinglisch.android.tasker.extras.VARIABLE_REPLACE_KEYS-type> | |
<net.dinglisch.android.tasker.subbundled>true</net.dinglisch.android.tasker.subbundled> | |
<net.dinglisch.android.tasker.subbundled-type>java.lang.Boolean</net.dinglisch.android.tasker.subbundled-type> | |
<plugininstanceid>3419c804-4e6a-41a5-bb81-1208c787d617</plugininstanceid> | |
<plugininstanceid-type>java.lang.String</plugininstanceid-type> | |
<plugintypeid>com.joaomgcd.autonotification.intent.IntentNotificationQuery</plugintypeid> | |
<plugintypeid-type>java.lang.String</plugintypeid-type> | |
</Vals> | |
</Bundle> | |
<Str sr="arg1" ve="3">com.joaomgcd.autonotification</Str> | |
<Str sr="arg2" ve="3">com.joaomgcd.autonotification.activity.ActivityConfigNotificationQuery</Str> | |
<Int sr="arg3" val="20"/> | |
</Action> | |
<Action sr="act1" ve="7"> | |
<code>345</code> | |
<label>If there is not, the variable will be empty</label> | |
<Int sr="arg0" val="0"/> | |
<Str sr="arg1" ve="3">%anapp()</Str> | |
<Str sr="arg2" ve="3">%isset</Str> | |
</Action> | |
<Action sr="act2" ve="7"> | |
<code>877</code> | |
<label>No vpn connection. Open a new one</label> | |
<Str sr="arg0" ve="3">net.openvpn.openvpn.CONNECT</Str> | |
<Int sr="arg1" val="0"/> | |
<Str sr="arg2" ve="3"/> | |
<Str sr="arg3" ve="3"/> | |
<Str sr="arg4" ve="3">net.openvpn.openvpn.AUTOSTART_PROFILE_NAME:YOUR_VPN_PROFILE_NAME</Str> | |
<Str sr="arg5" ve="3">net.openvpn.openvpn.AUTOCONNECT:true</Str> | |
<Str sr="arg6" ve="3"/> | |
<Str sr="arg7" ve="3">net.openvpn.openvpn</Str> | |
<Str sr="arg8" ve="3">net.openvpn.unified.MainActivity</Str> | |
<Int sr="arg9" val="1"/> | |
<ConditionList sr="if"> | |
<Condition sr="c0" ve="3"> | |
<lhs>%isset</lhs> | |
<op>8</op> | |
<rhs>0</rhs> | |
</Condition> | |
</ConditionList> | |
</Action> | |
<Action sr="act3" ve="7"> | |
<code>877</code> | |
<label>Connection is active, so kill it</label> | |
<Str sr="arg0" ve="3">net.openvpn.openvpn.DISCONNECT</Str> | |
<Int sr="arg1" val="0"/> | |
<Str sr="arg2" ve="3"/> | |
<Str sr="arg3" ve="3"/> | |
<Str sr="arg4" ve="3">net.openvpn.openvpn.STOP:true</Str> | |
<Str sr="arg5" ve="3"/> | |
<Str sr="arg6" ve="3"/> | |
<Str sr="arg7" ve="3">net.openvpn.openvpn</Str> | |
<Str sr="arg8" ve="3">net.openvpn.unified.MainActivity</Str> | |
<Int sr="arg9" val="1"/> | |
<ConditionList sr="if"> | |
<Condition sr="c0" ve="3"> | |
<lhs>%isset</lhs> | |
<op>8</op> | |
<rhs>15</rhs> | |
</Condition> | |
</ConditionList> | |
</Action> | |
<Action sr="act4" ve="7"> | |
<code>162</code> | |
<label>Update the quick settings icon</label> | |
<Int sr="arg0" val="0"/> | |
<Str sr="arg1" ve="3">VPN</Str> | |
<Int sr="arg2" val="0"/> | |
<ConditionList sr="if"> | |
<Condition sr="c0" ve="3"> | |
<lhs>%isset</lhs> | |
<op>8</op> | |
<rhs>0</rhs> | |
</Condition> | |
</ConditionList> | |
</Action> | |
<Action sr="act5" ve="7"> | |
<code>162</code> | |
<label>Update the quick settings icon</label> | |
<Int sr="arg0" val="0"/> | |
<Str sr="arg1" ve="3">VPN</Str> | |
<Int sr="arg2" val="1"/> | |
<ConditionList sr="if"> | |
<Condition sr="c0" ve="3"> | |
<lhs>%isset</lhs> | |
<op>8</op> | |
<rhs>15</rhs> | |
</Condition> | |
</ConditionList> | |
</Action> | |
<Action sr="act6" ve="7"> | |
<code>513</code> | |
</Action> | |
<Img sr="icn" ve="2"> | |
<nme>mw_communication_vpn_key</nme> | |
</Img> | |
</Task> | |
</TaskerData> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment