diff options
35 files changed, 2191 insertions, 207 deletions
diff --git a/.gitattributes b/.gitattributes index eb8672e0..2408b4c9 100644 --- a/.gitattributes +++ b/.gitattributes @@ -12,8 +12,6 @@ docs/covhtml export-ignore include/ export-ignore lib/ export-ignore local/ export-ignore -man/ export-ignore share/ export-ignore src/leap.egg-info/ export-ignore src/leap_client.egg-info export-ignore -src/leap/_version.py export-subst @@ -4,8 +4,7 @@ # TODO move to setup scripts # and implement it in python # http://die-offenbachs.homelinux.org:48888/hg/eric5/file/5072605ad4dd/compileUiFiles.py -###### EDIT ###################### - +###### EDIT ###################### #Directory with ui and resource files RESOURCE_DIR = data/resources UI_DIR = src/leap/bitmask/gui/ui diff --git a/changes/bug_3450-fix-up-script b/changes/bug_3450-fix-up-script new file mode 100644 index 00000000..39b3638e --- /dev/null +++ b/changes/bug_3450-fix-up-script @@ -0,0 +1 @@ + o Fix up script in non-bundle linuces. Closes: #3450 diff --git a/changes/feature-5880_add-fingerprint-gui-polkit-support b/changes/feature-5880_add-fingerprint-gui-polkit-support new file mode 100644 index 00000000..c71093d5 --- /dev/null +++ b/changes/feature-5880_add-fingerprint-gui-polkit-support @@ -0,0 +1 @@ +- Add support for fingerprint-gui's polkit agent. Closes #5880. diff --git a/changes/feature-reroute_dns_packets b/changes/feature-reroute_dns_packets new file mode 100644 index 00000000..beef3a1f --- /dev/null +++ b/changes/feature-reroute_dns_packets @@ -0,0 +1 @@ +- reroute DNS packets instead of blocking them, eliminating need to muck around with resolv.conf. Closes #4633, #5655, #5738, #4823
\ No newline at end of file diff --git a/changes/feature_4315-freeze-debianver-command b/changes/feature_4315-freeze-debianver-command new file mode 100644 index 00000000..0ae8ad97 --- /dev/null +++ b/changes/feature_4315-freeze-debianver-command @@ -0,0 +1 @@ +- Add a command to setup.py to freeze the versions reported under debian branches. Closes: #4315 diff --git a/deb_release.sh b/deb_release.sh new file mode 100755 index 00000000..acb0e229 --- /dev/null +++ b/deb_release.sh @@ -0,0 +1,8 @@ +#!/bin/zsh + +VERSION_FILE="src/leap/bitmask/_version.py" +rm ${VERSION_FILE} +python setup.py freeze_debianver +sed -i 's/-dirty//g' ${VERSION_FILE} +git add ${VERSION_FILE} +git ci -m "freeze debian version" diff --git a/debian/bitmask.desktop b/debian/bitmask.desktop new file mode 100644 index 00000000..2fb9f10a --- /dev/null +++ b/debian/bitmask.desktop @@ -0,0 +1,14 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Name=Bitmask +Comment=Secure Communication +Comment[es]=Secure Communication +Comment[de]=Secure Communication +Exec=bitmask %U +Terminal=false +Icon=bitmask +Categories=Network;Application; +StartupNotify=true +X-AppInstall-Package=bitmask +Keywords=email;messaging;encryption;vpn;leap diff --git a/debian/bitmask.install b/debian/bitmask.install new file mode 100644 index 00000000..f72dc8c6 --- /dev/null +++ b/debian/bitmask.install @@ -0,0 +1,5 @@ +pkg/linux/bitmask-root usr/sbin/ +pkg/linux/polkit/se.leap.bitmask.policy usr/share/polkit-1/actions/ +debian/bitmask.xpm usr/share/pixmaps +debian/bitmask.desktop usr/share/applications +debian/icons/hicolor usr/share/icons diff --git a/debian/bitmask.pyremove b/debian/bitmask.pyremove new file mode 100644 index 00000000..702c93f5 --- /dev/null +++ b/debian/bitmask.pyremove @@ -0,0 +1 @@ +usr/etc/leap diff --git a/debian/bitmask.xpm b/debian/bitmask.xpm new file mode 100644 index 00000000..aa160d49 --- /dev/null +++ b/debian/bitmask.xpm @@ -0,0 +1,872 @@ +/* XPM */ +static char * mask_icon_xpm[] = { +"32 32 837 2", +" c None", +". c #B72F2F", +"+ c #B83434", +"@ c #BA3838", +"# c #E89499", +"$ c #FFC0C9", +"% c #FFC1CA", +"& c #FFC2CB", +"* c #FFC3CC", +"= c #FFC4CD", +"- c #EA9EB5", +"; c #E28EA9", +"> c #E38FAA", +", c #E390AB", +"' c #E392AC", +") c #D44CA2", +"! c #DE7BC6", +"~ c #E391DF", +"{ c #E290DF", +"] c #E28FDF", +"^ c #E38FE0", +"/ c #AA41AA", +"( c #A130A1", +"_ c #9F2D9F", +": c #9E2A9E", +"< c #9C269C", +"[ c #9C269D", +"} c #9F7ADA", +"| c #9E7FDF", +"1 c #9B7BDE", +"2 c #BB3C3C", +"3 c #BD4040", +"4 c #C04848", +"5 c #F5B1B9", +"6 c #FFC5CE", +"7 c #FFC6CF", +"8 c #FFC7CF", +"9 c #FBC4CF", +"0 c #E494AF", +"a c #E496AF", +"b c #E597B0", +"c c #E597B1", +"d c #DA61AB", +"e c #D757A7", +"f c #E18CD2", +"g c #E497E1", +"h c #E496E1", +"i c #DC90DA", +"j c #A73EA7", +"k c #A63BA6", +"l c #A438A4", +"m c #A335A3", +"n c #A132A1", +"o c #A779D5", +"p c #A486E1", +"q c #A284E0", +"r c #A081DF", +"s c #BE4545", +"t c #C04949", +"u c #C14D4D", +"v c #C85D5D", +"w c #FDC3CB", +"x c #FFC8D0", +"y c #FFC9D1", +"z c #FFCAD2", +"A c #FFCBD2", +"B c #E8A2B8", +"C c #E69CB4", +"D c #E69DB5", +"E c #E79EB6", +"F c #DF7CB4", +"G c #D962AD", +"H c #E59ADE", +"I c #E69EE3", +"J c #E69DE3", +"K c #E59CE3", +"L c #C26EC2", +"M c #AC49AC", +"N c #AB46AB", +"O c #A943A9", +"P c #A83FA8", +"Q c #AF6CC6", +"R c #AA8FE3", +"S c #A88CE2", +"T c #A689E1", +"U c #BF4848", +"V c #C14C4C", +"W c #C35252", +"X c #C45656", +"Y c #C65A5A", +"Z c #D27B7C", +"` c #FFCBD3", +" . c #FFCCD4", +".. c #FFCDD5", +"+. c #FFCED5", +"@. c #F8C6D2", +"#. c #E8A2B9", +"$. c #E8A4BA", +"%. c #E593BD", +"&. c #DC6CB2", +"*. c #DC6EB3", +"=. c #E8A5E4", +"-. c #E7A4E5", +";. c #E7A5E5", +">. c #B357B3", +",. c #B154B1", +"'. c #B051B0", +"). c #AE4DAE", +"!. c #B465BC", +"~. c #B097E5", +"{. c #AE94E4", +"]. c #AC92E3", +"^. c #AA8EE3", +"/. c #A88BE2", +"(. c #C45151", +"_. c #C45454", +":. c #C55959", +"<. c #C75E5E", +"[. c #C86262", +"}. c #CA6666", +"|. c #E8A6AB", +"1. c #FFCFD6", +"2. c #FFD0D7", +"3. c #FFD1D8", +"4. c #FED3DA", +"5. c #EAABBF", +"6. c #EAAABF", +"7. c #E9A6C6", +"8. c #DE77B8", +"9. c #E181BD", +"0. c #E9ABE7", +"a. c #E9AAE7", +"b. c #D999D8", +"c. c #B862B8", +"d. c #B65FB6", +"e. c #B55CB5", +"f. c #B863B9", +"g. c #B69CE4", +"h. c #B49CE6", +"i. c #B299E5", +"j. c #AC91E3", +"k. c #FA8C79", +"l. c #CE6563", +"m. c #C86161", +"n. c #CB6B6B", +"o. c #CD6F6F", +"p. c #CE7575", +"q. c #F4C0C5", +"r. c #FFD3DA", +"s. c #FFD4DB", +"t. c #FFD5DC", +"u. c #F5C6D3", +"v. c #EBB0C4", +"w. c #EBB1C4", +"x. c #EDB5CC", +"y. c #E182BE", +"z. c #E494C8", +"A. c #EBB2E9", +"B. c #EBB1E9", +"C. c #ECB1E8", +"D. c #C278C2", +"E. c #BD6DBD", +"F. c #BB6ABB", +"G. c #BA68BA", +"H. c #C0A1E1", +"I. c #BAA4E8", +"J. c #B9A2E8", +"K. c #B69FE7", +"L. c #B399E6", +"M. c #9F8ECD", +"N. c #FF8D79", +"O. c #FE9280", +"P. c #DF817A", +"Q. c #CC6D6D", +"R. c #CE7373", +"S. c #D07777", +"T. c #D17C7C", +"U. c #D68687", +"V. c #FCD1D6", +"W. c #FFD7DD", +"X. c #FFD8DE", +"Y. c #FEDAE1", +"Z. c #EDB7C8", +"`. c #EDB8C9", +" + c #EFBCCF", +".+ c #E48CC3", +"++ c #E48DC4", +"@+ c #E9A4D3", +"#+ c #EDB8EB", +"$+ c #E8B7E7", +"%+ c #C37BC3", +"&+ c #C074C0", +"*+ c #C89FDB", +"=+ c #C1ADEA", +"-+ c #BFAAEA", +";+ c #BDA7E9", +">+ c #BAA5E7", +",+ c #948AC0", +"'+ c #7E76AD", +")+ c #FF927F", +"!+ c #FF9683", +"~+ c #FF9A88", +"{+ c #F09C91", +"]+ c #D27B7B", +"^+ c #D38080", +"/+ c #D48484", +"(+ c #D68888", +"_+ c #DF9F9F", +":+ c #FFDAE0", +"<+ c #FFDCE1", +"[+ c #FFDCE2", +"}+ c #F2C8D5", +"|+ c #EFBECE", +"1+ c #EEC1D1", +"2+ c #E697C9", +"3+ c #EDB4DD", +"4+ c #EEBFED", +"5+ c #EEBEEC", +"6+ c #D6A0D6", +"7+ c #C886C8", +"8+ c #C783C7", +"9+ c #CE9BD4", +"0+ c #C7B4EC", +"a+ c #C5B2EC", +"b+ c #C2AFEB", +"c+ c #C0ACEA", +"d+ c #BEAEE6", +"e+ c #9189BA", +"f+ c #8881B3", +"g+ c #837BB0", +"h+ c #FF9684", +"i+ c #FF9B89", +"j+ c #FF9E8D", +"k+ c #FFA392", +"l+ c #FCAC9E", +"m+ c #DA8E8D", +"n+ c #D78C8C", +"o+ c #D99191", +"p+ c #DA9595", +"q+ c #ECBCBE", +"r+ c #FFDFE4", +"s+ c #FFE0E4", +"t+ c #FCE0E5", +"u+ c #F0C5D3", +"v+ c #F1C6D4", +"w+ c #EAA7D0", +"x+ c #E9A2CF", +"y+ c #F1C1E6", +"z+ c #F0C5EE", +"A+ c #F0C8EF", +"B+ c #CE94CE", +"C+ c #CD91CD", +"D+ c #D09AD2", +"E+ c #CEBDEE", +"F+ c #CBBAEE", +"G+ c #C9B7ED", +"H+ c #C7B4ED", +"I+ c #BCB2DE", +"J+ c #9891BD", +"K+ c #928BBA", +"L+ c #8E87B7", +"M+ c #8981B4", +"N+ c #FF9F8E", +"O+ c #FFA393", +"P+ c #FFA898", +"Q+ c #E1978A", +"R+ c #90655D", +"S+ c #6D4D4C", +"T+ c #946868", +"U+ c #D89999", +"V+ c #DFA2A2", +"W+ c #F5D3D6", +"X+ c #FFE3E7", +"Y+ c #FEE4E8", +"Z+ c #F3CED9", +"`+ c #F2CCD8", +" @ c #EEBBD9", +".@ c #EBADD4", +"+@ c #F1CBEC", +"@@ c #F2CCF0", +"#@ c #E8C3E7", +"$@ c #D39FD3", +"%@ c #D39ED3", +"&@ c #D6C2ED", +"*@ c #D1C2F0", +"=@ c #9D91B5", +"-@ c #706881", +";@ c #625E73", +">@ c #77728F", +",@ c #9C96C0", +"'@ c #938CBA", +")@ c #FCA495", +"!@ c #9A685F", +"~@ c #11100F", +"{@ c #222222", +"]@ c #2A2A2A", +"^@ c #181515", +"/@ c #735757", +"(@ c #D7A8A8", +"_@ c #FCE1E4", +":@ c #FFE7EA", +"<@ c #FBE4E9", +"[@ c #F4D3DE", +"}@ c #F3CDE1", +"|@ c #EEB7DA", +"1@ c #F4D3F1", +"2@ c #F4D4F3", +"3@ c #DCB0DC", +"4@ c #D8AAD8", +"5@ c #DBC3E7", +"6@ c #877F99", +"7@ c #232228", +"8@ c #1D1D1D", +"9@ c #2B2B2B", +"0@ c #252525", +"a@ c #141414", +"b@ c #3B3948", +"c@ c #9791BD", +"d@ c #9791C0", +"e@ c #C69781", +"f@ c #D6A491", +"g@ c #CF9A8E", +"h@ c #0E0D0C", +"i@ c #343434", +"j@ c #3D3D3D", +"k@ c #454545", +"l@ c #4D4D4D", +"m@ c #535353", +"n@ c #373737", +"o@ c #1B1818", +"p@ c #776364", +"q@ c #F1DDDF", +"r@ c #FEECEF", +"s@ c #F5D9E2", +"t@ c #F5DAE6", +"u@ c #F1C4E1", +"v@ c #F5D9F4", +"w@ c #F3DBF2", +"x@ c #DCB6DC", +"y@ c #8E7E91", +"z@ c #28272B", +"A@ c #2E2E2E", +"B@ c #525252", +"C@ c #505050", +"D@ c #484848", +"E@ c #404040", +"F@ c #383838", +"G@ c #676582", +"H@ c #8887DE", +"I@ c #6C6CE2", +"J@ c #C89B85", +"K@ c #CBA08C", +"L@ c #5E4B42", +"M@ c #202020", +"N@ c #3A3A3A", +"O@ c #424242", +"P@ c #4A4A4A", +"Q@ c #5A5A5A", +"R@ c #626262", +"S@ c #6A6A6A", +"T@ c #4E4E4E", +"U@ c #302F2F", +"V@ c #777070", +"W@ c #D0C1C5", +"X@ c #F2DEE8", +"Y@ c #F4D3E8", +"Z@ c #DCC7DB", +"`@ c #827482", +" # c #373337", +".# c #6A696A", +"+# c #646464", +"@# c #5D5D5D", +"## c #545454", +"$# c #2F2F2F", +"%# c #1A1A2E", +"&# c #7979E5", +"*# c #7171E3", +"=# c #C99D88", +"-# c #CCA38F", +";# c #2C241F", +"># c #333232", +",# c #3F3F3F", +"'# c #474747", +")# c #4F4F4F", +"!# c #575757", +"~# c #5F5F5F", +"{# c #676767", +"]# c #717171", +"^# c #797979", +"/# c #656565", +"(# c #414141", +"_# c #606060", +":# c #7B7B7B", +"<# c #757575", +"[# c #6D6D6D", +"}# c #696969", +"|# c #616161", +"1# c #595959", +"2# c #0D0D0F", +"3# c #7B7BE1", +"4# c #7575E4", +"5# c #CA9F8B", +"6# c #CDA591", +"7# c #191514", +"8# c #3B3B3B", +"9# c #444444", +"0# c #313131", +"a# c #5E5E5E", +"b# c #6E6E6E", +"c# c #7C7C7C", +"d# c #818181", +"e# c #858585", +"f# c #868686", +"g# c #838383", +"h# c #7F7F7F", +"i# c #787878", +"j# c #464646", +"k# c #3E3E3E", +"l# c #131313", +"m# c #7171CC", +"n# c #7878E5", +"o# c #FCCF83", +"p# c #F8D191", +"q# c #1B1813", +"r# c #3C3C3C", +"s# c #12100F", +"t# c #786963", +"u# c #A7948C", +"v# c #80746E", +"w# c #3D3836", +"x# c #1E1E1E", +"y# c #747474", +"z# c #7A7A7A", +"A# c #777777", +"B# c #727272", +"C# c #25252D", +"D# c #5F5F79", +"E# c #7C7CA4", +"F# c #72729B", +"G# c #181820", +"H# c #434343", +"I# c #151515", +"J# c #8585B6", +"K# c #8D8DC2", +"L# c #FFCE75", +"M# c #FFD17E", +"N# c #3A301F", +"O# c #414140", +"P# c #4C4C4C", +"Q# c #151412", +"R# c #DCC292", +"S# c #FFE6B6", +"T# c #FEE9C4", +"U# c #FCEBCF", +"V# c #C6BBAC", +"W# c #363431", +"X# c #686868", +"Y# c #6F6F6F", +"Z# c #1D1D1F", +"`# c #9191A0", +" $ c #D4D4EC", +".$ c #CCCCE5", +"+$ c #C1C1DA", +"@$ c #B2B2CC", +"#$ c #1C1C21", +"$$ c #101011", +"%$ c #8E8EB8", +"&$ c #8888B5", +"*$ c #FFCF76", +"=$ c #705E3B", +"-$ c #333333", +";$ c #342F24", +">$ c #E9D0A3", +",$ c #FFE7BB", +"'$ c #FFEAC4", +")$ c #FFEDCC", +"!$ c #E4D9C4", +"~$ c #1D1D1B", +"{$ c #0C0C0C", +"]$ c #A9AAB3", +"^$ c #D9D9E8", +"/$ c #CECEE1", +"($ c #C7C7DC", +"_$ c #BBBBD2", +":$ c #43434D", +"<$ c #353535", +"[$ c #1E1E26", +"}$ c #9090BA", +"|$ c #C5A468", +"1$ c #1C1C1C", +"2$ c #565656", +"3$ c #1A1A18", +"4$ c #6C6B62", +"5$ c #969588", +"6$ c #6D6C64", +"7$ c #181818", +"8$ c #7E7E7E", +"9$ c #5C5C5D", +"0$ c #1A1B1B", +"a$ c #55585F", +"b$ c #818893", +"c$ c #696F79", +"d$ c #212225", +"e$ c #303030", +"f$ c #4F4F63", +"g$ c #8787B4", +"h$ c #F9EDBA", +"i$ c #F8F1C4", +"j$ c #F9F3C9", +"k$ c #302F28", +"l$ c #50504F", +"m$ c #636363", +"n$ c #686767", +"o$ c #494949", +"p$ c #737373", +"q$ c #515151", +"r$ c #666666", +"s$ c #141416", +"t$ c #A9BFE5", +"u$ c #B1C8F3", +"v$ c #ACBFEA", +"w$ c #F7F1BF", +"x$ c #F7F2C3", +"y$ c #F8F3C6", +"z$ c #BBB798", +"A$ c #1A1A1A", +"B$ c #383939", +"C$ c #434545", +"D$ c #323232", +"E$ c #606B80", +"F$ c #B5CDF6", +"G$ c #B0C9F6", +"H$ c #ABC6F5", +"I$ c #F6F1BD", +"J$ c #F7F1C1", +"K$ c #F7F2C4", +"L$ c #F8F3C8", +"M$ c #73715E", +"N$ c #2C2C2C", +"O$ c #414743", +"P$ c #AEBCB6", +"Q$ c #DFF5F0", +"R$ c #D8EBEB", +"S$ c #D3DCDD", +"T$ c #63686B", +"U$ c #5F6060", +"V$ c #2D3239", +"W$ c #B5CCF4", +"X$ c #B2CBF6", +"Y$ c #AEC7F6", +"Z$ c #A9C4F5", +"`$ c #F6F0BB", +" % c #F4F1C1", +".% c #E1EEB5", +"+% c #D0E8A5", +"@% c #545D42", +"#% c #282828", +"$% c #666665", +"%% c #191A19", +"&% c #7C8E84", +"*% c #CEEDDB", +"=% c #E0FEF4", +"-% c #D8F1ED", +";% c #C4E2E2", +">% c #EBF7F8", +",% c #E8F5FB", +"'% c #ACBBC1", +")% c #1E1F20", +"!% c #4B4B4B", +"~% c #242F39", +"{% c #8FC0EF", +"]% c #A3CEFD", +"^% c #B3CFF8", +"/% c #A6C2F5", +"(% c #E9EDB1", +"_% c #D1E89B", +":% c #C8E48F", +"<% c #CAE594", +"[% c #CDE69A", +"}% c #D0E89F", +"|% c #818F65", +"1% c #1C1E19", +"2% c #242B24", +"3% c #A2BCAA", +"4% c #C1E7D2", +"5% c #D4F3E5", +"6% c #D9FFF2", +"7% c #CAE8E6", +"8% c #B4DADA", +"9% c #E8F6F7", +"0% c #E7F6F8", +"a% c #DAF0F9", +"b% c #C8DCE7", +"c% c #40464B", +"d% c #1B1B1B", +"e% c #161719", +"f% c #4C637A", +"g% c #94C7F7", +"h% c #92C9FF", +"i% c #8CC6FF", +"j% c #86C3FF", +"k% c #88C3FD", +"l% c #A0C7F8", +"m% c #BFE07D", +"n% c #C2E183", +"o% c #C5E289", +"p% c #C8E48E", +"q% c #CDE699", +"r% c #C3E0A6", +"s% c #9ECC9E", +"t% c #8BB18B", +"u% c #8AAE8A", +"v% c #B8DDBE", +"w% c #B6E2CA", +"x% c #B9E4CC", +"y% c #D6FDF0", +"z% c #D3FFF0", +"A% c #BADFDE", +"B% c #A9D4D4", +"C% c #E3F3F5", +"D% c #E3F4F6", +"E% c #DBF1F9", +"F% c #D3EDF8", +"G% c #D1E9F5", +"H% c #A7BDCE", +"I% c #92A7B8", +"J% c #A9C2D7", +"K% c #AECEE9", +"L% c #98CCFF", +"M% c #80C0FF", +"N% c #7ABDFF", +"O% c #74BAFF", +"P% c #BCDE78", +"Q% c #BFDF7E", +"R% c #C4E288", +"S% c #C7E38F", +"T% c #ABD39B", +"U% c #90C590", +"V% c #94C794", +"W% c #98C998", +"X% c #A4D1A8", +"Y% c #ADDFC4", +"Z% c #AEDFC4", +"`% c #BCE9D2", +" & c #CCFFEE", +".& c #CDFFEE", +"+& c #A9D5D5", +"@& c #9DCECE", +"#& c #DBF0F1", +"$& c #E0F3F5", +"%& c #DEF3F7", +"&& c #CEEBF7", +"*& c #CCEAF7", +"=& c #C6E0EE", +"-& c #AAC6DD", +";& c #A6C3DB", +">& c #A3C1DA", +",& c #A0C1DD", +"'& c #93C8FC", +")& c #7FC0FF", +"!& c #6DB7FF", +"~& c #BADD72", +"{& c #BFDF7D", +"]& c #BDDE84", +"^& c #91C58A", +"/& c #82BD82", +"(& c #87C087", +"_& c #8CC28C", +":& c #92C693", +"<& c #A7DBBD", +"[& c #A3DBBC", +"}& c #A6DCBE", +"|& c #C8F8E5", +"1& c #C7FFEC", +"2& c #94CBCB", +"3& c #91C8C8", +"4& c #CEE9EA", +"5& c #DCF1F4", +"6& c #DCF1F3", +"7& c #CDEBF7", +"8& c #C7E8F6", +"9& c #C5E7F5", +"0& c #B6D1E5", +"a& c #A0BFD8", +"b& c #9CBCD7", +"c& c #98B9D5", +"d& c #94B7D5", +"e& c #8EC1F2", +"f& c #73BAFF", +"g& c #67B4FF", +"h& c #B7DB6D", +"i& c #B9DC72", +"j& c #ADD57D", +"k& c #78B877", +"l& c #76B776", +"m& c #7AB97A", +"n& c #7FBC7F", +"o& c #83BE83", +"p& c #9FD7B3", +"q& c #98D7B4", +"r& c #9BD8B6", +"s& c #A1DCBB", +"t& c #C1FFE9", +"u& c #C1FFEA", +"v& c #C0FBE8", +"w& c #85C2C2", +"x& c #B7DDDE", +"y& c #D9F0F3", +"z& c #D8F0F3", +"A& c #D3EDF5", +"B& c #C2E6F5", +"C& c #C0E5F5", +"D& c #BEE5F4", +"E& c #A4C2DA", +"F& c #95B7D4", +"G& c #91B5D3", +"H& c #8EB3D1", +"I& c #89B0CF", +"J& c #86B6E3", +"K& c #69B6FF", +"L& c #60B1FF", +"M& c #B4DA66", +"N& c #92C770", +"O& c #66AF66", +"P& c #69B069", +"Q& c #6EB36E", +"R& c #73B573", +"S& c #77B877", +"T& c #90CB9C", +"U& c #8DD3AC", +"V& c #90D4AE", +"W& c #92D5B0", +"X& c #B2EDD3", +"Y& c #BAFFE8", +"Z& c #BBFFE8", +"`& c #B3F1E1", +" * c #7ABDBD", +".* c #9BCFCF", +"+* c #D5EFF2", +"@* c #D5EEF2", +"#* c #D4EEF2", +"$* c #BDE4F4", +"%* c #BBE3F4", +"&* c #B9E3F3", +"** c #B6DEF0", +"=* c #91B5D2", +"-* c #8BB1D0", +";* c #87AECE", +">* c #83ABCD", +",* c #7FA9CB", +"'* c #7BAAD3", +")* c #63B0FC", +"!* c #73B661", +"~* c #58A758", +"{* c #5DAA5D", +"]* c #61AC61", +"^* c #66AE66", +"/* c #6AB16A", +"(* c #77BB7E", +"_* c #83CEA5", +":* c #85D0A6", +"<* c #88D1A8", +"[* c #8AD1AA", +"}* c #B8FEE6", +"|* c #B5FFE6", +"1* c #A2E4D7", +"2* c #6EB7B7", +"3* c #7CBEBE", +"4* c #D2EDF1", +"5* c #D1EDF0", +"6* c #C5E7F3", +"7* c #B6E1F3", +"8* c #B5E1F3", +"9* c #B3E0F2", +"0* c #ABD3E8", +"a* c #84ACCD", +"b* c #80A9CC", +"c* c #7CA7CA", +"d* c #79A4C9", +"e* c #74A1C7", +"f* c #71A0C8", +"g* c #4CA14C", +"h* c #50A350", +"i* c #55A655", +"j* c #59A859", +"k* c #5EAA5E", +"l* c #65AE66", +"m* c #7DCC9F", +"n* c #7ACB9E", +"o* c #7DCCA0", +"p* c #7FCDA2", +"q* c #93DBB8", +"r* c #AEFFE4", +"s* c #AFFFE4", +"t* c #B0FFE4", +"u* c #8FD6CB", +"v* c #62B1B1", +"w* c #CEEBEF", +"x* c #CEECEF", +"y* c #CDEBEF", +"z* c #CAEAF0", +"A* c #B1DFF2", +"B* c #AFDFF2", +"C* c #AEDEF1", +"D* c #ACDDF1", +"E* c #97C1DC", +"F* c #75A2C7", +"G* c #729FC6", +"H* c #6E9DC4", +"I* c #6A9AC2", +"J* c #419B41", +"K* c #489F48", +"L* c #51A451", +"M* c #73C693", +"N* c #6FC796", +"O* c #72C899", +"P* c #75C99A", +"Q* c #77CA9C", +"R* c #A6F5D7", +"S* c #A8FFE2", +"T* c #A9FFE2", +"U* c #AAFFE2", +"V* c #78C5BF", +"W* c #57ABAB", +"X* c #56ABAB", +"Y* c #C9E9EC", +"Z* c #CAEAEE", +"`* c #C9EAEE", +" = c #B2DFF1", +".= c #AADCF1", +"+= c #A9DCF1", +"@= c #A7DBF0", +"#= c #A5DBF0", +"$= c #81ADCF", +"%= c #6B9BC3", +"&= c #6799C2", +"*= c #6194BF", +". + @ # $ % & * = - ; > , ' ) ) ) ) ! ~ { ] ^ / ( _ : < [ } | 1 ", +"@ 2 3 4 5 = 6 7 8 9 0 a b c d e e e f g g h i j k l m n o p q r ", +"3 s t u v w x y z A B C D E F G G G H I J K L M N O P Q R S T p ", +"U V W X Y Z ` ...+.@.#.$.$.%.&.&.*.=.-.-.;.>.,.'.).!.~.{.].^./.", +"(._.:.<.[.}.|.1.2.3.4.5.6.5.7.8.8.9.0.0.a.b.c.d.e.f.g.h.i.~.{.j.", +"k.l.m.}.n.o.p.q.r.s.t.u.v.w.x.y.y.z.A.B.C.D.E.F.G.H.I.J.K.h.L.M.", +"N.O.P.Q.R.S.T.U.V.W.X.Y.Z.`. +.+++@+#+#+$+%+D.&+*+=+-+;+I.>+,+'+", +")+!+~+{+]+^+/+(+_+:+<+[+}+|+1+2+2+3+4+5+6+7+8+9+0+a+b+c+d+e+f+g+", +"h+i+j+k+l+m+n+o+p+q+r+s+t+u+v+w+x+y+z+A+B+C+D+E+F+G+H+I+J+K+L+M+", +"i+N+O+P+Q+R+S+T+U+V+W+X+Y+Z+`+ @.@+@@@#@$@%@&@*@=@-@;@>@,@J+'@L+", +")@k+P+!@~@{@]@{@^@/@(@_@:@<@[@}@|@1@2@3@4@5@6@7@8@9@0@a@b@,@c@d@", +"e@f@g@h@i@j@k@l@m@n@o@p@q@r@s@t@u@v@w@x@y@z@A@B@C@D@E@F@a@G@H@I@", +"J@K@L@M@N@O@P@B@Q@R@S@T@U@V@W@X@Y@Z@`@ #D@.#+#@###l@k@j@$#%#&#*#", +"=#-#;#>#,#'#)#!#~#{#S@]#^#/#P@,#(#'#_#:#<#[#}#|#1#B@P@(#N@2#3#4#", +"5#6#7#8#9#D@0#9@j@a#}#b#<#c#d#e#f#g#h#i#]#S@+#9#$#9@k@j#k#l#m#n#", +"o#p#q#E@r#s#t#u#v#w#x###b#y#i#:#c#z#A#B#R@]@C#D#E#F#G#0#H#I#J#K#", +"L#M#N#O#P#Q#R#S#T#U#V#W#9@X#Y#y#<#]#b#r#Z#`# $.$+$@$#$k@D@$$%$&$", +"*$M#=$-$B@'#;$>$,$'$)$!$~$,#b#y#<#]###{$]$^$/$($_$:$<$##'#[$}$&$", +"L#M#|$1$2$~#P#3$4$5$6$7$T@S@y#c#8$i#b#9$0$a$b$c$d$r#|#1#e$f$}$g$", +"h$i$j$k$l$m$}#n$P#,#o$X#}#b#:#g#e#8$p$}#}#q$E@'#+#}#r$@#s$t$u$v$", +"w$x$y$z$A${#}#}#}#}#}#}#}#a#,#B$C$j@!#}#}#}#}#}#}#}#}#D$E$F$G$H$", +"I$J$K$L$M$$#}#}#}#}#}#{#N$O$P$Q$R$S$T$x#U$}#}#}#}#}#D@V$W$X$Y$Z$", +"`$w$ %.%+%@%#%$%}#}#Q@%%&%*%=%-%;%>%,%'%)%!%}#}#X#r#~%{%]%^%H$/%", +"(%_%:%<%[%}%|%1%0@{@2%3%4%5%6%7%8%9%0%a%b%c%d%#%e%f%g%h%i%j%k%l%", +"m%n%o%p%<%q%r%s%t%u%v%w%x%y%z%A%B%C%D%E%F%G%H%I%J%K%L%i%j%M%N%O%", +"P%Q%n%R%S%T%U%V%W%X%Y%Z%`% &.&+&@&#&$&%&&&*&=&-&;&>&,&'&)&N%O%!&", +"~&P%{&]&^&/&(&_&:&<&[&}&|&1&1&2&3&4&5&6&7&8&9&0&a&b&c&d&e&f&!&g&", +"h&i&j&k&l&m&n&o&p&q&r&s&t&u&v&w&w&x&y&z&A&B&C&D&E&F&G&H&I&J&K&L&", +"M&N&O&P&Q&R&S&T&U&V&W&X&Y&Z&`& * *.*+*@*#*$*%*&***=*-*;*>*,*'*)*", +"!*~*{*]*^*/*(*_*:*<*[*}*|*|*1*2*2*3*4*5*5*6*7*8*9*0*a*b*c*d*e*f*", +"g*h*i*j*k*l*m*n*o*p*q*r*s*t*u*v*v*v*w*x*y*z*A*B*C*D*E*d*F*G*H*I*", +"J*K*g*L*i*M*N*O*P*Q*R*S*T*U*V*W*W*X*Y*Z*`*`* =.=+=@=#=$=H*%=&=*="}; diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 00000000..2c8211ff --- /dev/null +++ b/debian/changelog @@ -0,0 +1,245 @@ +bitmask (0.9.0~rc2) unstable; urgency=medium + + * Update to 0.9.0rc2 release. + * Update debian/control Description + * Remove deprecated Encoding key in debian/bitmask.desktop + * Add Keywords entry to debian/bitmask.desktop + * Add explicit dependency on python-txzmq + * Add versioned dependency on python-logbook + + -- Micah Anderson <micah@debian.org> Tue, 01 Sep 2015 14:57:24 -0400 + +bitmask (0.8.1) unstable; urgency=medium + + * Update to 0.8.1 release. + + -- Ben Carrillo <ben@futeisha.org> Fri, 27 Feb 2015 10:48:29 -0400 + +bitmask (0.8.0) unstable; urgency=medium + + * Update to 0.8.0 release. + * Change build-depends on python-requests to not build on -1 revision + * Update debian/copyright to fix space-in-std-shortname + * Update debian/copyright to fix dep5 copyright short name + * Update standards version to 3.9.6 - no changes + + -- Ben Carrillo <ben@futeisha.org> Thu, 05 Feb 2015 15:23:14 -0400 + +bitmask (0.7.0.1) unstable; urgency=medium + + * Add missing dependency on python-daemon (github #796) + + -- Micah Anderson <micah@debian.org> Fri, 26 Dec 2014 02:06:38 -0500 + +bitmask (0.7.0) unstable; urgency=medium + + * Update to 0.7.0 release + * Workarounds for #6219 and #6133 + * Bump python-zmq package requirement to use leap + provided build against libsodium + + -- Ben Carrillo <ben@futeisha.org> Mon, 24 Nov 2014 17:17:17 +0100 + +bitmask (0.6.1.2) unstable; urgency=medium + + * add versioned depend on leap's python-zmq until libsodium is in debian + + -- Micah Anderson <micah@debian.org> Tue, 26 Aug 2014 09:38:36 -0700 + +bitmask (0.6.1) unstable; urgency=medium + + * Cherry-pick ced7ebf and c23f2be, fixing three bugs related to + provider change (#5995, #5996, #5997) + * Remove saucy required pydist-overrides for pyopenssl + * Cherry-pick fix for missing openvpn.pem not being re-downloaded + * Cherry-pick fix for 2.6 syntax error with dict comprenhension + * Update to 0.6.1 release + + -- Micah Anderson <micah@debian.org> Tue, 19 Aug 2014 13:45:05 -0400 + +bitmask (0.5.4) unstable; urgency=medium + + * Update to 0.5.4 release + * Remove dependency on resolvconf and pep8 + + -- Ben Carrillo <ben@futeisha.org> Fri, 25 Jul 2014 11:38:14 -0500 + +bitmask (0.5.3.5) unstable; urgency=medium + + * Neglected to set python-requests dependency for Depends + + -- Micah Anderson <micah@debian.org> Sun, 06 Jul 2014 19:07:56 -0400 + +bitmask (0.5.3.4) unstable; urgency=medium + + * Add hint to pydist-overrides for python-openssl, seems this might be + needed for saucy (#676) + + -- Micah Anderson <micah@debian.org> Thu, 03 Jul 2014 21:45:37 -0400 + +bitmask (0.5.3.3) unstable; urgency=medium + + * Cherry-pick fix for syntax error on install for some suites + + -- Micah Anderson <micah@debian.org> Wed, 02 Jul 2014 11:37:42 -0400 + +bitmask (0.5.3.2) unstable; urgency=medium + + * Lower version dependency on python requests so + that other suites can still install + + -- Micah Anderson <micah@debian.org> Tue, 01 Jul 2014 21:19:27 -0400 + +bitmask (0.5.3.1) unstable; urgency=medium + + * Add version dependency for python-requests + + -- Micah Anderson <micah@debian.org> Tue, 01 Jul 2014 21:00:49 -0400 + +bitmask (0.5.3) unstable; urgency=medium + + * Update to 0.5.3 release + + -- Ben Carrillo <ben@futeisha.org> Tue, 01 Jul 2014 01:49:02 -0500 + +bitmask (0.5.2) unstable; urgency=medium + + * Update to 0.5.2 release + + -- Ben Carrillo <ben@futeisha.org> Tue, 10 Jun 2014 09:29:25 -0500 + +bitmask (0.5.1) unstable; urgency=medium + + * Update to 0.5.1 release. + * Block ipv6 traffic (leap #5693) + + -- Ben Carrillo <ben@futeisha.org> Mon, 19 May 2014 16:06:57 -0500 + +bitmask (0.5.0) unstable; urgency=low + + * Update to 0.5.0 release (first unified release, together with + soledad and mx). + + -- Ben Carrillo <ben@futeisha.org> Wed, 09 Apr 2014 16:24:40 -0500 + +bitmask (0.3.8.4) unstable; urgency=medium + + * Remove bitmask.trigger and bitmask.postinst, I misunderstood how + the triggers worked + + -- Micah Anderson <micah@debian.org> Mon, 16 Dec 2013 10:04:32 -0500 + +bitmask (0.3.8.3) unstable; urgency=low + + * Fix postinst trigger + + -- Micah Anderson <micah@debian.org> Sun, 15 Dec 2013 15:13:34 -0500 + +bitmask (0.3.8.2) unstable; urgency=medium + + * Update icons to get rendered versions with the right names + + -- Micah Anderson <micah@debian.org> Thu, 12 Dec 2013 15:07:53 -0500 + +bitmask (0.3.8.1) unstable; urgency=medium + + * Add desktop file + * Add icons and triggers for rebuilding icon cache + + -- Micah Anderson <micah@debian.org> Wed, 11 Dec 2013 10:29:26 -0500 + +bitmask (0.3.8) unstable; urgency=low + + * Update to 0.3.8 release, "The three-week child" + + -- Ben Carrillo <ben@futeisha.org> Tue, 10 Dec 2013 18:14:26 -0400 + +bitmask (0.3.7) unstable; urgency=low + + * Update to 0.3.7 release, "The Big Lewosky" + + -- Ben Carrillo <ben@futeisha.org> Fri, 15 Nov 2013 23:43:35 -0200 + +bitmask (0.3.6) unstable; urgency=low + + * Update to 0.3.6 release. + * Install CHANGELOG.rst after it was renamed. + + -- Ben Carrillo <ben@futeisha.org> Tue, 05 Nov 2013 11:41:39 -0200 + +bitmask (0.3.5) unstable; urgency=low + + * Update to 0.3.5 release. + * Freeze reported version to 0.3.5 using freeze_debianver + + -- Ben Carrillo <ben@futeisha.org> Wed, 30 Oct 2013 16:35:10 -0200 + +bitmask (0.3.4) unstable; urgency=low + + * Update to 0.3.4 release. + * Removed explicit gnupg dependency; now we indirectly depend on + python-gnupg-ng. + + -- Ben Carrillo <ben@futeisha.org> Mon, 14 Oct 2013 17:34:43 -0300 + +bitmask (0.3.3) unstable; urgency=low + + * Update to 0.3.3 release. + + -- Micah Anderson <micah@debian.org> Tue, 24 Sep 2013 17:07:42 -0400 + +bitmask (0.3.2) unstable; urgency=low + + * Merge master for 0.3.2 release. + + -- Ben Carrillo <ben@futeisha.org> Thu, 12 Sep 2013 14:30:01 +0200 + +bitmask (0.3.1) unstable; urgency=low + + [ Ben Carrillo ] + * Merge master for new release + * Cherrypick fix for updown script. + * Add data files to install /etc/leap/resolv-update + * Add leap.mail and leap.soledad.client dependencies explicitly. + * Install CHANGELOG. + * Update path to icon and menu entry to new package name. + + [ Micah Anderson ] + * Update debian/copyright for new license + * Reformat extended description to fit properly + * Add leap-keymanager to pydist-overrides + + -- Ben Carrillo <ben@futeisha.org> Mon, 26 Aug 2013 14:21:06 +0200 + +bitmask (0.3.0) unstable; urgency=low + + * Upgrade to 0.3.0 + * Add python-pyside dependencies + * Remove versioned dependency on python-requests + * Rename manpage for bitmask rename + * Remove no longer existing NEWS file installation + * Disable running of tests on package build + * Add man pages back in + * Rename to bitmask + + -- Micah Anderson <micah@debian.org> Thu, 15 Aug 2013 20:22:18 -0400 + +leap-client (0.2.0) unstable; urgency=low + [ Kali ] + * add python-jsonschema dependency >= 0.8 + * generate manpage from .rst file + * fixes to sphinxdoc install + * merged release/v0.2.0 branch + * updated dependency list + + [ Micah Anderson ] + * updated build-dependencies to have necessary packages to pass tests + * removed unused comments from control file + * move build-depends to source package section of control file + * switch source/format to 3.0 (native) + * fix build-dependency on python-mock + + [ Kali ] + * Initial release (Closes: #111111111111) + + -- Ben Carrillo <ben@futeisha.org> Fri, 01 Feb 2013 02:40:00 -0900 diff --git a/debian/clean b/debian/clean new file mode 100644 index 00000000..698f87e3 --- /dev/null +++ b/debian/clean @@ -0,0 +1,3 @@ +docs/man/leap-client.1 +MANIFEST +src/leap.bitmask.egg-info/* diff --git a/debian/compat b/debian/compat new file mode 100644 index 00000000..45a4fb75 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +8 diff --git a/debian/control b/debian/control new file mode 100644 index 00000000..ce3e9e8e --- /dev/null +++ b/debian/control @@ -0,0 +1,67 @@ +Source: bitmask +Section: misc +Priority: extra +Maintainer: Ben Carrillo <ben@futeisha.org> +Standards-Version: 3.9.6 +Uploaders: Micah Anderson <micah@debian.org> +Homepage: https://leap.se +Build-Depends: debhelper (>= 8.0.0), dh-python, python (>=2.6), python-setuptools, + pep8, + python-sphinx (>= 1.0.7+dfsg), docutils-common, python-nose, python-mock, + python-requests (>= 1.2.3), python-srp, python-crypto, python-keyring, python-xdg, + python-jsonschema (>= 0.7.0), python-psutil, python-openssl, + python-dateutil, python-argparse, pyside-tools, + xvfb, xauth +X-Python-Version: >= 2.6 + +Package: bitmask +Architecture: all +Depends: + ${misc:Depends}, ${python:Depends}, + python-openssl, + python-crypto, + python-keyring (>= 0.9.2), + python-srp, + python-dateutil, + python-daemon, + python-argparse, + python-logbook (>= 0.7.0-1), + python-psutil, + python-requests (>= 1.2.3-1), + python-jsonschema (>= 0.7.0), +# temporal pinning until libsodium is in debian + python-zmq (>= 14.4.1-1.1), + python-txzmq (>= 0.7.3), + python-setuptools, + python-zope.proxy, + openvpn, + python-pyside.qtcore, + python-pyside.qtgui, + python-pyside.qtsvg, + python-twisted-core, + python-leap-common, + leap-mail (>= 0.3.99), + soledad-client +# Let's skip the Thunderbird Extension, which is installed by default, until we do a public +# mail release. +# Recommends: xul-ext-bitmask +Suggests: policykit-1-gnome +Enhances: openvpn, gnupg +Description: Provides the desktop client for LEAP + The LEAP project aims to secure everyday communication. + . + This client is necessary for users to run on their local machines for: + . + * The LEAP VPN service which provides circumvention, location anonymization, + and traffic encryption in a hassle-free, automatically self-configuring + fashion, and has an enhanced level of security. + . + * The LEAP email service which provides full end-to-end client-encrypted email, + quietly handling the complexities of public key encryption and allowing for + backward compatibility with legacy email when necessary. Email is encrypted and + stored so only the recipient can read it, both locally and when synchronized + with the server; all message relay among service providers is required to be + encrypted when possible; and public keys are automatically discovered and + validated. + + diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 00000000..694346b6 --- /dev/null +++ b/debian/copyright @@ -0,0 +1,40 @@ +Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: bitmask +Upstream-Contact: info@leap.se +Source: <http://github.com/leapcode/leap_client/> + +Files: * +Copyright: 2012,2013 The LEAP Encryption Access Project +License: GPL-3+ with OpenSSL exception + This package is released under the GNU GPL, version 3 or a later revision. + For further details see the COPYING file. + . + On Debian systems, the full text of the GNU General Public + License version 3 can be found in the file + `/usr/share/common-licenses/GPL-3'. + . + In addition, as a special exception, the copyright holders give + permission to link the code of portions of this program with the + OpenSSL library under certain conditions as described in each + individual source file, and distribute linked combinations including + the two. + . + You must obey the GNU General Public License in all respects for all + of the code used other than OpenSSL. If you modify file(s) with this + exception, you may extend this exception to your version of the + file(s), but you are not obligated to do so. If you do not wish to do + so, delete this exception statement from your version. If you delete + this exception statement from all source files in the program, then + also delete it here. + +Files: debian/* +Copyright: 2013 Ben Carrillo <ben@futeisha.org> +License: GPL-3+ + This file is released under the GNU GPL, version 3 or a later revision. + For further details see the COPYING file. + . + On Debian systems, the full text of the GNU General Public + License version 3 can be found in the file + `/usr/share/common-licenses/GPL-3'. + +# REVIEW-ME This needs a licensecheck -r run !!! -- kali diff --git a/debian/docs b/debian/docs new file mode 100644 index 00000000..b78b98ec --- /dev/null +++ b/debian/docs @@ -0,0 +1,2 @@ +relnotes.txt +README.rst diff --git a/debian/icons/hicolor/128x128/apps/bitmask.png b/debian/icons/hicolor/128x128/apps/bitmask.png Binary files differnew file mode 100644 index 00000000..6ff2dbae --- /dev/null +++ b/debian/icons/hicolor/128x128/apps/bitmask.png diff --git a/debian/icons/hicolor/24x24/apps/bitmask.png b/debian/icons/hicolor/24x24/apps/bitmask.png Binary files differnew file mode 100644 index 00000000..6c2b20d6 --- /dev/null +++ b/debian/icons/hicolor/24x24/apps/bitmask.png diff --git a/debian/icons/hicolor/256x256/apps/bitmask.png b/debian/icons/hicolor/256x256/apps/bitmask.png Binary files differnew file mode 100644 index 00000000..6478c274 --- /dev/null +++ b/debian/icons/hicolor/256x256/apps/bitmask.png diff --git a/debian/icons/hicolor/32x32/apps/bitmask.png b/debian/icons/hicolor/32x32/apps/bitmask.png Binary files differnew file mode 100644 index 00000000..25abc93e --- /dev/null +++ b/debian/icons/hicolor/32x32/apps/bitmask.png diff --git a/debian/icons/hicolor/48x48/apps/bitmask.png b/debian/icons/hicolor/48x48/apps/bitmask.png Binary files differnew file mode 100644 index 00000000..468314c6 --- /dev/null +++ b/debian/icons/hicolor/48x48/apps/bitmask.png diff --git a/debian/icons/hicolor/64x64/apps/bitmask.png b/debian/icons/hicolor/64x64/apps/bitmask.png Binary files differnew file mode 100644 index 00000000..b9aa421d --- /dev/null +++ b/debian/icons/hicolor/64x64/apps/bitmask.png diff --git a/debian/icons/hicolor/scalable/apps/bitmask.svg b/debian/icons/hicolor/scalable/apps/bitmask.svg new file mode 100644 index 00000000..94134569 --- /dev/null +++ b/debian/icons/hicolor/scalable/apps/bitmask.svg @@ -0,0 +1,526 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="256" + height="256" + id="svg3088" + version="1.1" + inkscape:version="0.48.3.1 r9886" + sodipodi:docname="mask-icon.svg" + inkscape:export-filename="/home/elijah/dev/leap/leap_assets/svg/masks/rainbow-masthead.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs3090"> + <linearGradient + id="linearGradient4212"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop4214" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop4216" /> + </linearGradient> + <linearGradient + id="linearGradient4192"> + <stop + style="stop-color:#000000;stop-opacity:1;" + offset="0" + id="stop4194" /> + <stop + style="stop-color:#000000;stop-opacity:0;" + offset="1" + id="stop4196" /> + </linearGradient> + <linearGradient + id="linearGradient4184"> + <stop + style="stop-color:#008080;stop-opacity:1;" + offset="0" + id="stop4186" /> + <stop + style="stop-color:#008080;stop-opacity:0;" + offset="1" + id="stop4188" /> + </linearGradient> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4212" + id="radialGradient4218" + cx="838.203" + cy="202.05379" + fx="838.203" + fy="202.05379" + r="1000" + gradientTransform="matrix(0.22560237,0.00158871,-0.00124421,0.17667741,-58.273195,-92.03)" + gradientUnits="userSpaceOnUse" /> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath3159"> + <g + style="fill:none;stroke:#006082;stroke-width:31.77269936;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" + id="g3161" + transform="matrix(0.6987131,0,0,0.6987131,-78.646361,-52.805193)"> + <path + style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#006082;fill-opacity:1;stroke:none;stroke-width:22.20000076;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" + d="m 278.28751,285.55576 -11.21875,0.125 c -16.33799,0.18876 -35.43079,3.64775 -48.84375,17.25 -26.364,26.73607 -32.91414,67.45937 -31.40625,101.9375 2.03445,46.51772 21.53824,93.17387 51.28125,128.53125 20.69424,24.60055 50.34517,51.04821 86.53125,52.21875 28.80499,0.93178 49.7747,-20.70739 66.84375,-34 14.22825,-11.08034 33.86145,-24.04072 51.59375,-31.4375 17.0467,-7.1108 34.85246,-7.21617 34.21875,-7.21875 l 0.0312,0 0.0625,0 0.0312,0 c -0.16965,5.1e-4 17.2016,0.10729 34.25,7.21875 17.72836,7.39514 37.32827,20.3525 51.5625,31.4375 17.07402,13.29649 38.06968,34.93179 66.875,34 36.18608,-1.17054 65.83701,-27.6182 86.53125,-52.21875 29.74301,-35.35738 49.2468,-82.01353 51.28125,-128.53125 1.50789,-34.47813 -5.04224,-75.20143 -31.40625,-101.9375 -14.31952,-14.52161 -35.00767,-17.52645 -52.09375,-17.21875 -30.44885,0.54835 -54.3266,17.12605 -78.40625,27.34375 -35.97307,15.26442 -58.60927,33.089 -90.875,42.9375 -15.59991,4.76158 -25.34249,3.77253 -37.15625,3.96875 -0.48134,-0.0127 -0.42021,-0.003 -0.5,0 -0.0399,0.002 -0.3107,-0.002 -0.25,0 -0.0108,-2.1e-4 -0.0204,2.1e-4 -0.0312,0 -12.03376,-0.23364 -21.77727,0.85894 -37.59375,-3.96875 -32.26573,-9.8485 -54.90193,-27.67308 -90.875,-42.9375 -21.91783,-9.30038 -43.75001,-23.72976 -70.4375,-26.6875 l 0,-0.8125 z m 12.125,109.15625 c 17.37009,-0.31472 36.71128,6.52981 55.875,13.53125 14.81121,5.41127 29.02735,15.65317 45.09375,25.09375 5.88038,3.4553 11.12945,6.87537 18,11.21875 -3.34103,2.83649 -6.57004,5.62753 -10.96875,9 -12.59562,9.65701 -28.90684,19.70424 -39,22.0625 -29.76308,6.95412 -52.56809,2.47169 -79.75,-19.25 -5.78601,-4.62373 -15.92397,-18.36952 -23.34375,-30.375 -3.24397,-5.24887 -5.84449,-9.82258 -8.03125,-13.71875 2.542,-1.66751 5.0341,-3.34504 8.34375,-5.3125 9.27056,-5.51099 21.18825,-10.95207 26.46875,-11.6875 2.38753,-0.33252 4.80103,-0.517 7.3125,-0.5625 z m 372,0 c 3.16744,-0.0296 6.24552,0.14841 9.21875,0.5625 5.2805,0.73543 17.19819,6.17651 26.46875,11.6875 3.30965,1.96746 5.80175,3.64499 8.34375,5.3125 -2.18676,3.89617 -4.78728,8.46988 -8.03125,13.71875 -7.41978,12.00548 -17.55774,25.75127 -23.34375,30.375 -27.17889,21.71928 -50.01971,26.20376 -79.78125,19.25 -10.09225,-2.35805 -26.38134,-12.40603 -38.96875,-22.0625 -4.40014,-3.37558 -7.62824,-6.16178 -10.96875,-9 6.87055,-4.34338 12.11962,-7.76345 18,-11.21875 16.0664,-9.44058 30.28254,-19.68248 45.09375,-25.09375 18.47767,-6.7508 37.09414,-13.37374 53.96875,-13.53125 z" + id="path3163" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccssssssccccsssssssssccccsscccssscsssscssscsscsssscssc" /> + </g> + </clipPath> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4055-4" + id="linearGradient3799" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1,0,0,1,512,0)" + x1="456" + y1="160" + x2="360" + y2="216" /> + <linearGradient + id="linearGradient4055-4"> + <stop + id="stop4057-6" + offset="0" + style="stop-color:#000000;stop-opacity:1;" /> + <stop + id="stop4059-2" + offset="1" + style="stop-color:#000000;stop-opacity:0" /> + </linearGradient> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4141-7" + id="radialGradient3801" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3716765,0.0039729,-0.00294998,1.1635062,-93.675296,-62.76795)" + cx="256" + cy="211.69231" + fx="256" + fy="211.69231" + r="64" /> + <linearGradient + id="linearGradient4141-7"> + <stop + id="stop4143-9" + offset="0" + style="stop-color:#ffffff;stop-opacity:1;" /> + <stop + id="stop4145-7" + offset="1" + style="stop-color:#ffffff;stop-opacity:0" /> + </linearGradient> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4038-5" + id="radialGradient3803" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.7777373,0,-6.9715088e-8,1.4057042,56.899268,-12.013064)" + cx="256" + cy="241.88095" + fx="256" + fy="241.88095" + r="64" /> + <linearGradient + id="linearGradient4038-5"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop4040-2" /> + <stop + style="stop-color:#ffffff;stop-opacity:0" + offset="1" + id="stop4042-4" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4020-4" + id="linearGradient3805" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.0139304,0,0,1,-6.4637045,0)" + x1="456" + y1="160" + x2="360" + y2="216" /> + <linearGradient + id="linearGradient4020-4"> + <stop + style="stop-color:#000000;stop-opacity:1;" + offset="0" + id="stop4022-5" /> + <stop + style="stop-color:#000000;stop-opacity:0" + offset="1" + id="stop4024-2" /> + </linearGradient> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath3842"> + <rect + ry="13.697647" + y="-175.50618" + x="16.493958" + height="223.01208" + width="223.01207" + id="rect3844" + style="fill:#505050;fill-opacity:1;stroke:none" /> + </clipPath> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="2" + inkscape:cx="71.146708" + inkscape:cy="211.85249" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:document-units="px" + inkscape:grid-bbox="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:snap-global="false" + objecttolerance="20" + inkscape:snap-bbox="true" + inkscape:bbox-paths="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + inkscape:object-paths="true" + inkscape:snap-intersection-paths="true" + inkscape:object-nodes="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:snap-object-midpoints="true" + inkscape:snap-center="true" + borderlayer="true" + inkscape:window-width="1920" + inkscape:window-height="1032" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1"> + <inkscape:grid + type="xygrid" + id="grid3096" + empspacing="5" + visible="true" + enabled="true" + snapvisiblegridlinesonly="true" /> + <sodipodi:guide + orientation="1,0" + position="1500,0" + id="guide3104" /> + </sodipodi:namedview> + <metadata + id="metadata3093"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + id="layer1" + inkscape:label="rainbow" + inkscape:groupmode="layer" + transform="translate(0,192)"> + <g + id="g3058" + clip-path="url(#clipPath3842)" + style="opacity:1"> + <path + inkscape:transform-center-y="-241.80464" + inkscape:transform-center-x="210.6289" + sodipodi:nodetypes="cccc" + inkscape:connector-curvature="0" + id="path4133" + d="m -964.91593,-192.97479 73.30951,-278.62259 1021.51963,417.731775 z" + style="fill:#a0522d;fill-opacity:1;stroke:none" /> + <path + style="fill:#ffa500;fill-opacity:1;stroke:none" + d="M -963.61466,95.127875 -964.91593,-192.97479 129.91321,-53.865605 z" + id="path4135" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" + inkscape:transform-center-x="233.21481" + inkscape:transform-center-y="-93.716909" /> + <path + inkscape:transform-center-y="55.815345" + inkscape:transform-center-x="276.5623" + sodipodi:nodetypes="cccc" + inkscape:connector-curvature="0" + id="path4137" + d="M -887.79122,373.07686 -963.61466,95.127875 129.91321,-53.865605 z" + style="fill:#f0e68c;fill-opacity:1;stroke:none" /> + <path + style="fill:#9acd32;fill-opacity:1;stroke:none" + d="M -742.61295,621.93046 -887.79122,373.07686 129.91321,-53.865605 z" + id="path4139" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" + inkscape:transform-center-x="301.06247" + inkscape:transform-center-y="131.98928" /> + <path + inkscape:transform-center-y="146.03113" + inkscape:transform-center-x="357.26285" + sodipodi:nodetypes="cccc" + inkscape:connector-curvature="0" + id="path4141" + d="M -537.97345,824.72965 -742.61295,621.93046 129.91321,-53.865605 z" + style="fill:#228b22;fill-opacity:1;stroke:none" /> + <path + style="fill:#3cb371;fill-opacity:1;stroke:none" + d="M -287.81858,967.65403 -537.97345,824.72965 129.91321,-53.865605 z" + id="path4143" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" + inkscape:transform-center-x="359.70291" + inkscape:transform-center-y="127.69701" /> + <path + inkscape:transform-center-y="210.6289" + inkscape:transform-center-x="241.80464" + sodipodi:nodetypes="cccc" + inkscape:connector-curvature="0" + id="path4145" + d="M -9.19599,1040.9635 -287.81858,967.65403 129.91321,-53.865605 z" + style="fill:#7fffd4;fill-opacity:1;stroke:none" /> + <path + style="fill:#008080;fill-opacity:1;stroke:none" + d="M 278.90669,1039.6622 -9.19599,1040.9635 129.91321,-53.865605 z" + id="path4147" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" + inkscape:transform-center-x="93.716896" + inkscape:transform-center-y="233.21482" /> + <path + inkscape:transform-center-y="276.56228" + inkscape:transform-center-x="-55.815333" + sodipodi:nodetypes="cccc" + inkscape:connector-curvature="0" + id="path4149" + d="M 556.8557,963.83882 278.90669,1039.6622 129.91321,-53.865605 z" + style="fill:#b0e0e6;fill-opacity:1;stroke:none" /> + <path + style="fill:#87ceeb;fill-opacity:1;stroke:none" + d="M 805.7092,818.66051 556.8557,963.83882 129.91321,-53.865605 z" + id="path4151" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" + inkscape:transform-center-x="-131.98925" + inkscape:transform-center-y="301.0625" /> + <path + inkscape:transform-center-y="357.26284" + inkscape:transform-center-x="-146.03116" + sodipodi:nodetypes="cccc" + inkscape:connector-curvature="0" + id="path4153" + d="M 1008.5085,614.02109 805.7092,818.66051 129.91321,-53.865605 z" + style="fill:#4682b4;fill-opacity:1;stroke:none" /> + <path + style="fill:#1e90ff;fill-opacity:1;stroke:none" + d="M 1151.4329,363.86618 1008.5085,614.02109 129.91321,-53.865605 z" + id="path4155" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" + inkscape:transform-center-x="-127.697" + inkscape:transform-center-y="359.70291" /> + <path + inkscape:transform-center-y="241.80463" + inkscape:transform-center-x="-210.62887" + sodipodi:nodetypes="cccc" + inkscape:connector-curvature="0" + id="path4157" + d="M 1224.7423,85.243635 1151.4329,363.86618 129.91321,-53.865605 z" + style="fill:#6495ed;fill-opacity:1;stroke:none" /> + <path + style="fill:#191970;fill-opacity:1;stroke:none" + d="m 1223.441,-202.85902 244.4737,5.86844 -7.479,283.365984 -235.6934,-1.131769 -1094.82909,-139.10924 z" + id="path4159" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccc" + inkscape:transform-center-x="-233.21479" + inkscape:transform-center-y="93.71695" /> + <path + inkscape:transform-center-y="-55.815319" + inkscape:transform-center-x="-276.56225" + sodipodi:nodetypes="cccc" + inkscape:connector-curvature="0" + id="path4161" + d="M 1147.6176,-480.80801 1223.441,-202.85902 129.91321,-53.865605 z" + style="fill:#0000cd;fill-opacity:1;stroke:none" /> + <path + style="fill:#483d8b;fill-opacity:1;stroke:none" + d="m 1002.4393,-729.66161 145.1783,248.8536 -1017.70439,426.942405 z" + id="path4163" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" + inkscape:transform-center-x="-301.06245" + inkscape:transform-center-y="-131.98927" /> + <path + inkscape:transform-center-y="-146.03113" + inkscape:transform-center-x="-357.2628" + sodipodi:nodetypes="cccc" + inkscape:connector-curvature="0" + id="path4165" + d="m 797.7998,-932.46081 204.6395,202.7992 -872.52609,675.796005 z" + style="fill:#9370db;fill-opacity:1;stroke:none" /> + <path + style="fill:#8b008b;fill-opacity:1;stroke:none" + d="M 547.645,-1075.3852 797.7998,-932.46081 129.91321,-53.865605 z" + id="path4167" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" + inkscape:transform-center-x="-359.70285" + inkscape:transform-center-y="-127.69701" /> + <path + inkscape:transform-center-y="-210.62891" + inkscape:transform-center-x="-241.80464" + sodipodi:nodetypes="cccc" + inkscape:connector-curvature="0" + id="path4169" + d="M 269.02235,-1148.6947 547.645,-1075.3852 129.91321,-53.865605 z" + style="fill:#da70d6;fill-opacity:1;stroke:none" /> + <path + style="fill:#c71585;fill-opacity:1;stroke:none" + d="m -19.08024,-1147.3933 288.10259,-1.3014 -139.10914,1094.829095 z" + id="path4171" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" + inkscape:transform-center-x="-93.716909" + inkscape:transform-center-y="-233.21482" /> + <path + inkscape:transform-center-y="-276.56224" + inkscape:transform-center-x="55.815318" + sodipodi:nodetypes="cccc" + inkscape:connector-curvature="0" + id="path4173" + d="m -297.02929,-1071.5701 277.94905,-75.8232 148.99345,1093.527695 z" + style="fill:#db7093;fill-opacity:1;stroke:none" /> + <path + style="fill:#ffb6c1;fill-opacity:1;stroke:none" + d="m -545.88285,-926.39171 248.85356,-145.17839 426.9425,1017.704495 z" + id="path4175" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" + inkscape:transform-center-x="131.98927" + inkscape:transform-center-y="-301.06252" /> + <path + inkscape:transform-center-y="-357.26284" + inkscape:transform-center-x="146.03112" + sodipodi:nodetypes="cccc" + inkscape:connector-curvature="0" + id="path4177" + d="m -748.68207,-721.7523 202.79922,-204.63941 675.79606,872.526105 z" + style="fill:#b22222;fill-opacity:1;stroke:none" /> + <path + style="fill:#ff6347;fill-opacity:1;stroke:none" + d="M -891.60642,-471.59738 -748.68207,-721.7523 129.91321,-53.865605 z" + id="path4179" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" + inkscape:transform-center-x="127.697" + inkscape:transform-center-y="-359.70292" /> + <rect + ry="3.7803428" + y="-192" + x="0" + height="256" + width="256" + id="rect4182" + style="fill:url(#radialGradient4218);fill-opacity:1;stroke:none;display:inline" /> + </g> + </g> + <g + inkscape:groupmode="layer" + id="layer3" + inkscape:label="mask" + style="display:inline" + sodipodi:insensitive="true"> + <g + style="display:inline" + id="mask_group" + transform="matrix(3.364306,0,0,3.364306,21.129468,23.283381)"> + <g + style="fill:none;stroke:none;display:inline" + id="eyes" + transform="matrix(0.09628644,0,0,0.09628644,-13.900612,-8.2957126)"> + <path + inkscape:connector-curvature="0" + id="path3911" + d="m 290.22501,383.61826 c 20.26573,-0.36718 40.73803,7.19583 59.875,14.1875 16.78643,6.13291 31.49775,16.91475 46.90625,25.96875 10.4842,6.16049 30.96875,19.28125 30.96875,19.28125 0,0 -38.82581,37.01847 -66.03125,43.375 -32.32466,7.55263 -60.041,1.91037 -89.21875,-21.40625 -16.83219,-13.45099 -39.0625,-56.3125 -39.0625,-56.3125 0,0 30.15123,-21.96471 47.90625,-24.4375 2.88277,-0.40149 5.76115,-0.6038 8.65625,-0.65625 z" + style="fill:none;stroke:none" /> + <path + inkscape:connector-curvature="0" + id="path3905" + d="m 662.31876,383.61826 c 3.62101,-0.0338 7.24028,0.15439 10.84375,0.65625 17.75502,2.47279 47.90625,24.4375 47.90625,24.4375 0,0 -22.23031,42.86151 -39.0625,56.3125 -29.17775,23.31662 -56.92534,28.95888 -89.25,21.40625 -27.20544,-6.35653 -66,-43.375 -66,-43.375 0,0 20.48455,-13.12076 30.96875,-19.28125 15.4085,-9.054 30.11982,-19.83584 46.90625,-25.96875 18.4535,-6.74197 38.13407,-14.00499 57.6875,-14.1875 z" + style="fill:none;stroke:none" /> + </g> + <g + transform="matrix(0.09628644,0,0,0.09628644,-13.900612,-8.2957126)" + id="outline" + style="fill:none;stroke:#000000;stroke-width:34.52383041;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"> + <path + inkscape:connector-curvature="0" + id="path3871" + transform="translate(97.225014,196.27451)" + d="m 169.96875,100.5 c -14.66639,0.16945 -30.93901,3.67114 -41.0625,13.9375 -22.89313,23.21621 -29.64336,61.08236 -28.21875,93.65625 1.91143,43.70495 20.52619,88.39789 48.6875,121.875 19.75254,23.48109 47.70677,47.2892 78.375,48.28125 22.51282,0.72824 41.91608,-17.81666 59.6875,-31.65625 14.782,-11.51158 34.87713,-24.90852 54.125,-32.9375 19.40436,-8.09426 38.18432,-8.06391 38.53125,-8.0625 0,0 0.0595,10e-6 0.0625,0 0.33473,-10e-4 19.15169,-0.0344 38.5625,8.0625 19.24787,8.02898 39.31175,21.42592 54.09375,32.9375 17.77142,13.83959 37.20593,32.38449 59.71875,31.65625 30.66823,-0.99205 58.62246,-24.80016 78.375,-48.28125 28.16131,-33.47711 46.77607,-78.17005 48.6875,-121.875 1.42461,-32.57389 -5.32562,-70.44004 -28.21875,-93.65625 -10.79839,-10.95078 -28.62313,-14.18317 -44,-13.90625 -26.27537,0.47319 -48.88701,15.70649 -74.25,26.46875 -34.56835,14.66836 -57.60153,32.85381 -91.96875,43.34375 -17.59464,5.37044 -29.55939,4.21929 -40.6875,4.4375 -0.22725,-0.006 -0.4596,0.004 -0.6875,0 -11.12811,-0.21821 -23.06161,0.93294 -40.65625,-4.4375 C 304.75778,159.85381 281.7246,141.66836 247.15625,127 221.79326,116.23774 199.15037,101.00444 172.875,100.53125 c -0.96105,-0.0173 -1.92849,-0.0426 -2.90625,-0.0312 z M 193,187.34375 c 20.26573,-0.36718 40.73803,7.19583 59.875,14.1875 16.78643,6.13291 31.49775,16.91475 46.90625,25.96875 10.4842,6.16049 30.96875,19.28125 30.96875,19.28125 0,0 -38.82581,37.01847 -66.03125,43.375 -32.32466,7.55263 -60.041,1.91037 -89.21875,-21.40625 -16.83219,-13.45099 -39.0625,-56.3125 -39.0625,-56.3125 0,0 30.15123,-21.96471 47.90625,-24.4375 2.88277,-0.40149 5.76115,-0.6038 8.65625,-0.65625 z m 372.09375,0 c 3.62101,-0.0338 7.24028,0.15439 10.84375,0.65625 17.75502,2.47279 47.90625,24.4375 47.90625,24.4375 0,0 -22.23031,42.86151 -39.0625,56.3125 -29.17775,23.31662 -56.92534,28.95888 -89.25,21.40625 -27.20544,-6.35653 -66,-43.375 -66,-43.375 0,0 20.48455,-13.12076 30.96875,-19.28125 15.4085,-9.054 30.11982,-19.83584 46.90625,-25.96875 18.4535,-6.74197 38.13407,-14.00499 57.6875,-14.1875 z" + style="fill:none;stroke:#000000;stroke-width:34.52383041;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <path + inkscape:connector-curvature="0" + id="mask" + d="m 12.102284,20.301441 c -1.480584,-0.02666 -3.1790105,0.289339 -4.2187498,1.34375 -2.2042975,2.235407 -2.8559206,5.863576 -2.71875,9 0.1840448,4.208194 1.975948,8.526608 4.6875004,11.75 1.9019014,2.260911 4.5783144,4.529479 7.5312494,4.625 2.167679,0.07012 4.038854,-1.698685 5.75,-3.03125 1.423307,-1.108409 3.365441,-2.414418 5.21875,-3.1875 1.885814,-0.786641 3.71875,-0.75 3.71875,-0.75 0,0 1.832936,-0.03664 3.71875,0.75 1.853309,0.773082 3.764193,2.079091 5.1875,3.1875 1.711146,1.332565 3.582321,3.10137 5.75,3.03125 2.952935,-0.09552 5.660598,-2.364089 7.5625,-4.625 2.711552,-3.223392 4.503455,-7.541806 4.6875,-11.75 0.13717,-3.136424 -0.514452,-6.764593 -2.71875,-9 -1.039739,-1.054411 -2.769416,-1.37041 -4.25,-1.34375 -2.529962,0.04556 -4.714138,1.49499 -7.15625,2.53125 -3.328463,1.412364 -5.534652,3.177461 -8.84375,4.1875 -1.697948,0.518262 -2.832701,0.375 -3.9375,0.375 -1.104799,0 -2.270802,0.143262 -3.96875,-0.375 -3.309098,-1.010039 -5.515287,-2.775136 -8.84375,-4.1875 -2.442112,-1.03626 -4.626288,-2.485688 -7.15625,-2.53125 z m 1.9375,8.34375 c 1.951314,-0.03535 3.938619,0.701798 5.78125,1.375 1.616305,0.590516 3.01637,1.628222 4.5,2.5 1.009486,0.593172 3,1.84375 3,1.84375 0,0 -3.755485,3.575452 -6.375,4.1875 -3.112427,0.727216 -5.784328,0.182574 -8.59375,-2.0625 -1.620711,-1.295148 -3.7499996,-5.4375 -3.7499996,-5.4375 0,0 2.9154316,-2.105654 4.6249996,-2.34375 0.277572,-0.03866 0.533741,-0.05745 0.8125,-0.0625 z m 36.03125,0 c 0.278759,0.0051 0.566178,0.02384 0.84375,0.0625 1.709568,0.238096 4.625,2.34375 4.625,2.34375 0,0 -2.160539,4.142352 -3.78125,5.4375 -2.809422,2.245074 -5.481323,2.789716 -8.59375,2.0625 -2.619515,-0.612048 -6.34375,-4.1875 -6.34375,-4.1875 0,0 1.959264,-1.250578 2.96875,-1.84375 1.48363,-0.871778 2.914945,-1.909484 4.53125,-2.5 1.842631,-0.673202 3.798686,-1.410354 5.75,-1.375 z" + style="fill:#696969;fill-opacity:1;stroke:none" /> + <g + style="opacity:0.67181468;display:inline" + id="lighting" + transform="matrix(0.13780541,0,0,0.13780541,-3.079568,-1.0127332)" + clip-path="url(#clipPath3159)"> + <path + style="fill:url(#linearGradient3799);fill-opacity:1;stroke:none" + d="M 48,144 200,144 96,360 56,296 z" + id="path4032" + inkscape:connector-curvature="0" /> + <rect + y="124.25651" + x="117.88771" + height="174.15863" + width="274.72458" + id="rect4036" + style="opacity:0.50193092;fill:url(#radialGradient3801);fill-opacity:1;stroke:none" /> + <rect + style="opacity:0.49420848;fill:url(#radialGradient3803);fill-opacity:1;stroke:none" + id="rect4048" + width="176" + height="150.58582" + x="168" + y="225.41418" /> + <path + inkscape:connector-curvature="0" + id="path4018" + d="m 464,144 -154.11742,0 105.44876,216 40.55722,-64 z" + style="fill:url(#linearGradient3805);fill-opacity:1;stroke:none" /> + </g> + </g> + </g> +</svg> diff --git a/debian/manpages b/debian/manpages new file mode 100644 index 00000000..d73f5926 --- /dev/null +++ b/debian/manpages @@ -0,0 +1,2 @@ +docs/man/bitmask.1 +docs/man/bitmask-root.1 diff --git a/debian/menu b/debian/menu new file mode 100644 index 00000000..b80028ed --- /dev/null +++ b/debian/menu @@ -0,0 +1,7 @@ +?package(bitmask):needs="X11"\ + hints="LEAP,Routing,Network Routing,Anonymous,openvpn"\ + section="Applications/System/Security"\ + title="Bitmask, the Internet Encryption Toolkit"\ + command="/usr/bin/bitmask"\ + icon="/usr/share/pixmaps/bitmask.xpm" + diff --git a/debian/pydist-overrides b/debian/pydist-overrides new file mode 100644 index 00000000..8380915c --- /dev/null +++ b/debian/pydist-overrides @@ -0,0 +1,4 @@ +leap.soledad.client soledad-client ; PEP386 +leap.common python-leap-common ; PEP386 +leap.mail leap-mail ; PEP386 +leap.keymanager leap-keymanager diff --git a/debian/rules b/debian/rules new file mode 100755 index 00000000..d82b9451 --- /dev/null +++ b/debian/rules @@ -0,0 +1,76 @@ +#!/usr/bin/make -f +# -*- makefile -*- +# Sample debian/rules that uses debhelper. +# This file was originally written by Joey Hess and Craig Small. +# As a special exception, when this file is copied by dh-make into a +# dh-make output file, you may use that output file without restriction. +# This special exception was added by Craig Small in version 0.37 of dh-make. +# +# Uncomment this to turn on verbose mode. +#DH_VERBOSE=1 +DEB_BUILD_OPTIONS=nocheck +package=bitmask + +PYTHON2=$(shell pyversions -vr) + +%: + dh $@ --with python2 --buildsystem=python_distutils +#dh $@ --with python2,sphinxdoc --buildsystem=python_distutils + +override_dh_prep: + rst2man docs/man/bitmask.1.rst docs/man/bitmask.1 + rst2man docs/man/bitmask-root.1.rst docs/man/bitmask-root.1 + + dh_prep + # this will re-generate the resource files and locales. + make -f ./Makefile + +ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS))) + +# run tests! +# + +test-python%: + xvfb-run ./run_tests.sh -x -N + +override_dh_auto_test: $(PYTHON2:%=test-python%) $(PYTHON3:%=test-python%) +endif + +#dh_auto_build should be enough to build the python2 version + +build-python%: + python$* setup.py build + +#override_dh_auto_build: $(PYTHON3:%=build-python%) +# dh_auto_build + +install-python%: + python$* setup.py install --root=$(CURDIR)/debian/tmp --install-layout=deb + +#override_dh_auto_install: $(PYTHON3:%=install-python%) +# dh_auto_install + +# build and install sphinx docs +# +override_dh_installdocs: +# python setup.py build_sphinx + dh_installdocs + +#COMMENTING OUT TO WORKAROUND THIS ERROR: +#dh_sphinxdoc: error: unknown JavaScript code: debian/bitmask/usr/share/doc/bitmask/html/_static/jquery.js +#dh_installdocs build/sphinx/html + +override_dh_installchangelogs: + dh_installchangelogs CHANGELOG.rst + +override_dh_auto_clean: + dh_auto_clean + rm -rf .tox + rm -rf bin + rm -rf build + rm -rf lib/ + rm -rf docs/_build + rm -rf *.egg-info + rm -f docs/man/bitmask.1 + rm -f docs/man/bitmask-root.1 + rm -rf docs/covhtml diff --git a/debian/source/format b/debian/source/format new file mode 100644 index 00000000..89ae9db8 --- /dev/null +++ b/debian/source/format @@ -0,0 +1 @@ +3.0 (native) diff --git a/debian/source/include-binaries b/debian/source/include-binaries new file mode 100644 index 00000000..9868b8e2 --- /dev/null +++ b/debian/source/include-binaries @@ -0,0 +1 @@ +dist/leap_client-0.1dev-py2.7.egg diff --git a/docs/man/bitmask-root.1.rst b/docs/man/bitmask-root.1.rst index b2f955a8..4a3859ba 100644 --- a/docs/man/bitmask-root.1.rst +++ b/docs/man/bitmask-root.1.rst @@ -9,14 +9,14 @@ privileged helper for bitmask, the encrypted internet access toolkit. :Author: LEAP Encryption Access Project https://leap.se :Date: 2014-06-05 :Copyright: GPLv3+ -:Version: 0.5.2 +:Version: 0.7.0 :Manual section: 1 :Manual group: General Commands Manual SYNOPSIS ======== -bitmask-root [openvpn | firewall | version] [start | stop | isup] [ARGS] +bitmask-root [openvpn | firewall | isup ] [start | stop] [ARGS] DESCRIPTION =========== @@ -63,7 +63,7 @@ fw-email **isup** Check if the email firewall is up. version --------- +------- **version** Prints the `bitmask-root` version string. diff --git a/pkg/linux/bitmask-root b/pkg/linux/bitmask-root index 80ac12e8..80ac12e8 100755..100644 --- a/pkg/linux/bitmask-root +++ b/pkg/linux/bitmask-root diff --git a/pkg/requirements.pip b/pkg/requirements.pip index a5d9f2a0..b86346d0 100644 --- a/pkg/requirements.pip +++ b/pkg/requirements.pip @@ -9,13 +9,13 @@ argparse requests>=1.1.0 srp>=1.0.2 pyopenssl -coloredlogs +#coloredlogs psutil ipaddr -twisted -python-daemon==1.6.1 # this should not be needed for Windows. +#twisted # removed for debian package +python-daemon # this should not be needed for Windows. keyring zope.proxy diff --git a/src/leap/bitmask/_version.py b/src/leap/bitmask/_version.py index 412b0c9e..8e2b1c8c 100644 --- a/src/leap/bitmask/_version.py +++ b/src/leap/bitmask/_version.py @@ -1,201 +1,13 @@ -IN_LONG_VERSION_PY = True -# This file helps to compute a version number in source trees obtained from -# git-archive tarball (such as those provided by githubs download-from-tag -# feature). Distribution tarballs (build by setup.py sdist) and build -# directories (produced by setup.py build) will contain a much shorter file -# that just contains the computed version number. +# This file was generated by the `freeze_debianver` command in setup.py +# Using 'versioneer.py' (0.7+) from +# revision-control system data, or from the parent directory name of an +# unpacked source archive. Distribution tarballs contain a pre-generated copy +# of this file. -# This file is released into the public domain. Generated by -# versioneer-0.7+ (https://github.com/warner/python-versioneer) +version_version = '0.9.0rc2' +version_full = 'f4547479fc050f338845f4f546d8dd7c0e4512eb' -# these strings will be replaced by git during git-archive -git_refnames = "$Format:%d$" -git_full = "$Format:%H$" - -import subprocess -import sys -import re -import os.path - - -def run_command(args, cwd=None, verbose=False): - try: - # remember shell=False, so use git.cmd on windows, not just git - p = subprocess.Popen(args, stdout=subprocess.PIPE, cwd=cwd) - except EnvironmentError: - e = sys.exc_info()[1] - if verbose: - print("unable to run %s" % args[0]) - print(e) - return None - stdout = p.communicate()[0].strip() - if sys.version >= '3': - stdout = stdout.decode() - if p.returncode != 0: - if verbose: - print("unable to run %s (error)" % args[0]) - return None - return stdout - - -def get_expanded_variables(versionfile_source): - # the code embedded in _version.py can just fetch the value of these - # variables. When used from setup.py, we don't want to import - # _version.py, so we do it with a regexp instead. This function is not - # used from _version.py. - variables = {} - try: - for line in open(versionfile_source, "r").readlines(): - if line.strip().startswith("git_refnames ="): - mo = re.search(r'=\s*"(.*)"', line) - if mo: - variables["refnames"] = mo.group(1) - if line.strip().startswith("git_full ="): - mo = re.search(r'=\s*"(.*)"', line) - if mo: - variables["full"] = mo.group(1) - except EnvironmentError: - pass - return variables - - -def versions_from_expanded_variables(variables, tag_prefix, verbose=False): - refnames = variables["refnames"].strip() - if refnames.startswith("$Format"): - if verbose: - print("variables are unexpanded, not using") - return {} # unexpanded, so not in an unpacked git-archive tarball - refs = set([r.strip() for r in refnames.strip("()").split(",")]) - for ref in list(refs): - if not re.search(r'\d', ref): - if verbose: - print("discarding '%s', no digits" % ref) - refs.discard(ref) - # Assume all version tags have a digit. git's %d expansion - # behaves like git log --decorate=short and strips out the - # refs/heads/ and refs/tags/ prefixes that would let us - # distinguish between branches and tags. By ignoring refnames - # without digits, we filter out many common branch names like - # "release" and "stabilization", as well as "HEAD" and "master". - if verbose: - print("remaining refs: %s" % ",".join(sorted(refs))) - for ref in sorted(refs): - # sorting will prefer e.g. "2.0" over "2.0rc1" - if ref.startswith(tag_prefix): - r = ref[len(tag_prefix):] - if verbose: - print("picking %s" % r) - return {"version": r, - "full": variables["full"].strip()} - # no suitable tags, so we use the full revision id - if verbose: - print("no suitable tags, using full revision id") - return {"version": variables["full"].strip(), - "full": variables["full"].strip()} - - -def versions_from_vcs(tag_prefix, versionfile_source, verbose=False): - # this runs 'git' from the root of the source tree. That either means - # someone ran a setup.py command (and this code is in versioneer.py, so - # IN_LONG_VERSION_PY=False, thus the containing directory is the root of - # the source tree), or someone ran a project-specific entry point (and - # this code is in _version.py, so IN_LONG_VERSION_PY=True, thus the - # containing directory is somewhere deeper in the source tree). This only - # gets called if the git-archive 'subst' variables were *not* expanded, - # and _version.py hasn't already been rewritten with a short version - # string, meaning we're inside a checked out source tree. - - try: - here = os.path.abspath(__file__) - except NameError: - # some py2exe/bbfreeze/non-CPython implementations don't do __file__ - return {} # not always correct - - # versionfile_source is the relative path from the top of the source tree - # (where the .git directory might live) to this file. Invert this to find - # the root from __file__. - root = here - if IN_LONG_VERSION_PY: - for i in range(len(versionfile_source.split("/"))): - root = os.path.dirname(root) - else: - root = os.path.dirname(here) - if not os.path.exists(os.path.join(root, ".git")): - if verbose: - print("no .git in %s" % root) - return {} - - GIT = "git" - if sys.platform == "win32": - GIT = "git.cmd" - stdout = run_command([GIT, "describe", "--tags", "--dirty", "--always"], - cwd=root) - if stdout is None: - return {} - if not stdout.startswith(tag_prefix): - if verbose: - print("tag '%s' doesn't start with prefix '%s'" % ( - stdout, tag_prefix)) - return {} - tag = stdout[len(tag_prefix):] - stdout = run_command([GIT, "rev-parse", "HEAD"], cwd=root) - if stdout is None: - return {} - full = stdout.strip() - if tag.endswith("-dirty"): - full += "-dirty" - return {"version": tag, "full": full} - - -def versions_from_parentdir(parentdir_prefix, versionfile_source, - verbose=False): - if IN_LONG_VERSION_PY: - # We're running from _version.py. If it's from a source tree - # (execute-in-place), we can work upwards to find the root of the - # tree, and then check the parent directory for a version string. If - # it's in an installed application, there's no hope. - try: - here = os.path.abspath(__file__) - except NameError: - # py2exe/bbfreeze/non-CPython don't have __file__ - return {} # without __file__, we have no hope - # versionfile_source is the relative path from the top of the source - # tree to _version.py. Invert this to find the root from __file__. - root = here - for i in range(len(versionfile_source.split("/"))): - root = os.path.dirname(root) - else: - # we're running from versioneer.py, which means we're running from - # the setup.py in a source tree. sys.argv[0] is setup.py in the root. - here = os.path.abspath(sys.argv[0]) - root = os.path.dirname(here) - - # Source tarballs conventionally unpack into a directory that includes - # both the project name and a version string. - dirname = os.path.basename(root) - if not dirname.startswith(parentdir_prefix): - if verbose: - print("guessing rootdir is '%s', but '%s' " - "doesn't start with prefix '%s'" % - (root, dirname, parentdir_prefix)) - return None - return {"version": dirname[len(parentdir_prefix):], "full": ""} - -tag_prefix = "" -parentdir_prefix = "bitmask-" -versionfile_source = "src/leap/bitmask/_version.py" - - -def get_versions(default={"version": "unknown", "full": ""}, verbose=False): - variables = {"refnames": git_refnames, "full": git_full} - ver = versions_from_expanded_variables(variables, tag_prefix, verbose) - if not ver: - ver = versions_from_vcs(tag_prefix, versionfile_source, verbose) - if not ver: - ver = versions_from_parentdir(parentdir_prefix, versionfile_source, - verbose) - if not ver: - ver = default - return ver +def get_versions(default={}, verbose=False): + return {'version': version_version, 'full': version_full} diff --git a/src/leap/bitmask/backend/taskthread.py b/src/leap/bitmask/backend/taskthread.py new file mode 100644 index 00000000..a734a829 --- /dev/null +++ b/src/leap/bitmask/backend/taskthread.py @@ -0,0 +1,296 @@ +# Copyright 2013 Hewlett-Packard Development Company, L.P. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +import logging +import threading + +__version__ = '1.4' + + +logger = logging.getLogger(__name__) + + +class TaskInProcessException(BaseException): + pass + + +class TaskThread(threading.Thread): + """ + A thread object that repeats a task. + + Usage example:: + + from taskthread import TaskThread + + import time + + def my_task(*args, **kwargs): + print args, kwargs + + task_thread = TaskThread(my_task) + task_thread.start() + for i in xrange(10): + task_thread.run_task() + task_thread.join_task() + task_thread.join() + + .. note:: If :py:meth:`~TaskThread.run_task` is + invoked while run_task is in progress, + :py:class:`~.TaskInProcessException` will + be raised. + + :param task: + A ``function``. This param is the task to execute when + run_task is called. + :param event: + A ``threading.Event``. This event will be set when run_task + is called. The default value is a new event, but may be + specified for testing purposes. + """ + + daemon = True + ''' + Threads marked as daemon will be terminated. + ''' + def __init__(self, task, event=threading.Event(), + *args, **kwargs): + super(TaskThread, self).__init__() + self.task = task + self.task_event = event + self.running = True + self.running_lock = threading.Lock() + self.in_task = False + self.task_complete = threading.Event() + self.args = args + self.kwargs = kwargs + + def run(self): + """ + Called by threading.Thread, this runs in the new thread. + """ + while True: + self.task_event.wait() + if not self.running: + logger.debug("TaskThread exiting") + return + logger.debug("TaskThread starting task") + with self.running_lock: + self.task_event.clear() + self.task_complete.clear() + self.task(*self.args, **self.kwargs) + with self.running_lock: + self.in_task = False + self.task_complete.set() + + def run_task(self, *args, **kwargs): + """ + Run an instance of the task. + + :param args: + The arguments to pass to the task. + + :param kwargs: + The keyword arguments to pass to the task. + """ + # Don't allow this call if the thread is currently + # in a task. + with self.running_lock: + if self.in_task: + raise TaskInProcessException() + self.in_task = True + logger.debug("Waking up the thread") + self.args = args + self.kwargs = kwargs + # Wake up the thread to do it's thing + self.task_event.set() + + def join_task(self, time_out): + """ + Wait for the currently running task to complete. + + :param time_out: + An ``int``. The amount of time to wait for the + task to finish. + """ + with self.running_lock: + if not self.in_task: + return + + success = self.task_complete.wait(time_out) + if success: + self.task_complete.clear() + return success + + def join(self, timeout=None): + """ + Wait for the task to finish + """ + self.running = False + self.task_event.set() + super(TaskThread, self).join(timeout=timeout) + + +class TimerTask(object): + """ + An object that executes a commit function at a given interval. + This class is driven by a TaskThread. A new TaskThread will be + created the first time :py:meth:`.~start` is called. All + subsequent calls to start will reuse the same thread. + + Usage example:: + + from taskthread import TimerTask + import time + + count = 0 + def get_count(): + return count + def execute(): + print "Count: %d" % count + + task = TimerTask(execute, + timeout=10, + count_fcn=get_count, + threshold=1) + + task.start() + + for i in xrange(100000): + count += 1 + time.sleep(1) + task.stop() + count = 0 + task.start() + for i in xrange(100000): + count += 1 + time.sleep(1) + task.shutdown() + + :param execute_fcn: + A `function`. This function will be executed on each time interval. + + :param delay: + An `int`. The delay in **seconds** invocations of + `execute_fcn`. Default: `10`. + + :param count_fcn: + A `function`. This function returns a current count. If the count + has not changed more the `threshold` since the last invocation of + `execute_fcn`, `execute_fcn` will not be called again. If not + specified, `execute_fcn` will be called each time the timer fires. + **Optional**. If count_fcn is specified, ``threshold`` is required. + + :param threshold: + An `int`. Specifies the minimum delta in `count_fcn` that must be + met for `execute_fcn` to be invoked. **Optional**. Must be + specified in conjunction with `count_fcn`. + + """ + def __init__(self, execute_fcn, delay=10, count_fcn=None, threshold=None): + self.running = True + self.execute_fcn = execute_fcn + self.last_count = 0 + self.event = threading.Event() + self.delay = delay + self.thread = None + self.running_lock = threading.RLock() + if bool(threshold) != bool(count_fcn): + raise ValueError("Must specify threshold " + "and count_fcn, or neither") + + self.count_fcn = count_fcn + self.threshold = threshold + + def start(self): + """ + Start the task. This starts a :py:class:`.~TaskThread`, and starts + running run_threshold_timer on the thread. + + """ + if not self.thread: + logger.debug('Starting up the taskthread') + self.thread = TaskThread(self._run_threshold_timer) + self.thread.start() + + if self.threshold: + self.last_count = 0 + + logger.debug('Running the task') + self.running = True + self.thread.run_task() + + def stop(self): + """ + Stop the task, leaving the :py:class:`.~TaskThread` running + so start can be called again. + + """ + logger.debug('Stopping the task') + wait = False + with self.running_lock: + if self.running: + wait = True + self.running = False + if wait: + self.event.set() + self.thread.join_task(2) + + def shutdown(self): + """ + Close down the task thread and stop the task if it is running. + + """ + logger.debug('Shutting down the task') + self.stop() + self.thread.join(2) + + def _exec_if_threshold_met(self): + new_count = self.count_fcn() + logger.debug('new_count: %d' % new_count) + if new_count >= self.last_count + self.threshold: + self.execute_fcn() + self.last_count = new_count + + def _exec(self): + if self.count_fcn: + self._exec_if_threshold_met() + else: + self.execute_fcn() + + def _wait(self): + self.event.wait(timeout=self.delay) + self.event.clear() + logger.debug('Task woken up') + + def _exit_loop(self): + """ + If self.running is false, it means the task should shut down. + """ + exit_loop = False + with self.running_lock: + if not self.running: + exit_loop = True + logger.debug('Task shutting down') + return exit_loop + + def _run_threshold_timer(self): + """ + Main loop of the timer task + + """ + logger.debug('In Task') + while True: + self._wait() + if self._exit_loop(): + return + self._exec() |