Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c6fa237d authored by Robert Greenwalt's avatar Robert Greenwalt
Browse files

Use updatable file for premium-sms filter

The data is really to big for a gservices-driven secure setting.

bug:7221402
Change-Id: Ie3d4a1a0aeb69b9ef8fad360fa7ec32e927644e8
parent a174a776
Loading
Loading
Loading
Loading
+0 −7
Original line number Diff line number Diff line
@@ -4618,13 +4618,6 @@ public final class Settings {
         */
        public static final String SMS_SHORT_CODE_RULE = "sms_short_code_rule";

       /**
        * Prefix for SMS short code regex patterns (country code is appended).
        * @see com.android.internal.telephony.SmsUsageMonitor
        * @hide
        */
       public static final String SMS_SHORT_CODES_PREFIX = "sms_short_codes_";

       /**
        * Used to disable Tethering on a device - defaults to true
        * @hide
+6 −0
Original line number Diff line number Diff line
@@ -2152,6 +2152,12 @@
            </intent-filter>
        </receiver>

        <receiver android:name="com.android.server.updates.SmsShortCodesInstallReceiver" >
            <intent-filter>
                <action android:name="android.intent.action.UPDATE_SMS_SHORT_CODES" />
            </intent-filter>
        </receiver>

        <receiver android:name="com.android.server.MasterClearReceiver"
            android:permission="android.permission.MASTER_CLEAR"
            android:priority="100" >
+0 −1
Original line number Diff line number Diff line
@@ -1088,7 +1088,6 @@
  <java-symbol type="xml" name="kg_password_kbd_numeric" />
  <java-symbol type="xml" name="power_profile" />
  <java-symbol type="xml" name="time_zones_by_country" />
  <java-symbol type="xml" name="sms_short_codes" />

  <java-symbol type="raw" name="accessibility_gestures" />
  <java-symbol type="raw" name="incognito_mode_start_page" />
+0 −189
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!--
/*
** Copyright 2012, The Android Open Source Project
**
** 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.
*/
-->

<!-- Regex patterns for SMS short codes by country. -->
<shortcodes>

    <!-- The country attribute is the ISO country code of the user's account (from SIM card or NV).
         The pattern attribute is a regex that matches all SMS short codes for the country.
         The premium attribute is a regex that matches premium rate SMS short codes.
         The free attribute matches short codes that we know will not cost the user, such as
         emergency numbers. The standard attribute matches short codes that are billed at the
         standard SMS rate. The user is warned when the destination phone number matches the
         "pattern" or "premium" regexes, and does not match the "free" or "standard" regexes. -->

    <!-- Harmonised European Short Codes are 6 digit numbers starting with 116 (free helplines).
         Premium patterns include short codes from: http://aonebill.com/coverage&tariffs
         and http://mobilcent.com/info-worldwide.asp and extracted from:
         http://smscoin.net/software/engine/WordPress/Paid+SMS-registration/ -->

    <!-- Albania: 5 digits, known short codes listed -->
    <shortcode country="al" pattern="\\d{5}" premium="15191|55[56]00" />

    <!-- Armenia: 3-4 digits, emergency numbers 10[123] -->
    <shortcode country="am" pattern="\\d{3,4}" premium="11[2456]1|3024" free="10[123]" />

    <!-- Austria: 10 digits, premium prefix 09xx, plus EU -->
    <shortcode country="at" pattern="11\\d{4}" premium="09.*" free="116\\d{3}" />

    <!-- Australia: 6 or 8 digits starting with "19" -->
    <shortcode country="au" pattern="19(?:\\d{4}|\\d{6})" premium="19998882" />

    <!-- Azerbaijan: 4-5 digits, known premium codes listed -->
    <shortcode country="az" pattern="\\d{4,5}" premium="330[12]|87744|901[234]|93(?:94|101)|9426|9525" />

    <!-- Belgium: 4 digits, plus EU: http://www.mobileweb.be/en/mobileweb/sms-numberplan.asp -->
    <shortcode country="be" premium="\\d{4}" free="8\\d{3}|116\\d{3}" />

    <!-- Bulgaria: 4-5 digits, plus EU -->
    <shortcode country="bg" pattern="\\d{4,5}" premium="18(?:16|423)|19(?:1[56]|35)" free="116\\d{3}" />

    <!-- Belarus: 4 digits -->
    <shortcode country="by" pattern="\\d{4}" premium="3336|4161|444[4689]|501[34]|7781" />

    <!-- Canada: 5-6 digits -->
    <shortcode country="ca" pattern="\\d{5,6}" premium="60999|88188" />

    <!-- Switzerland: 3-5 digits: http://www.swisscom.ch/fxres/kmu/thirdpartybusiness_code_of_conduct_en.pdf -->
    <shortcode country="ch" pattern="[2-9]\\d{2,4}" premium="543|83111" />

    <!-- China: premium shortcodes start with "1066", free shortcodes start with "1065":
         http://clients.txtnation.com/entries/197192-china-premium-sms-short-code-requirements -->
    <shortcode country="cn" premium="1066.*" free="1065.*" />

    <!-- Cyprus: 4-6 digits (not confirmed), known premium codes listed, plus EU -->
    <shortcode country="cy" pattern="\\d{4,6}" premium="7510" free="116\\d{3}" />

    <!-- Czech Republic: 7-8 digits, starting with 9, plus EU:
         http://www.o2.cz/osobni/en/services-by-alphabet/91670-premium_sms.html -->
    <shortcode country="cz" premium="9\\d{6,7}" free="116\\d{3}" />

    <!-- Germany: 4-5 digits plus 1232xxx (premium codes from http://www.vodafone.de/infofaxe/537.pdf and http://premiumdienste.eplus.de/pdf/kodex.pdf), plus EU. To keep the premium regex from being too large, it only includes payment processors that have been used by SMS malware, with the regular pattern matching the other premium short codes. -->
    <shortcode country="de" pattern="\\d{4,5}|1232\\d{3}" premium="11(?:111|833)|1232(?:013|021|060|075|286|358)|118(?:44|80|86)|20[25]00|220(?:21|22|88|99)|221(?:14|21)|223(?:44|53|77)|224[13]0|225(?:20|59|90)|226(?:06|10|20|26|30|40|56|70)|227(?:07|33|39|66|76|78|79|88|99)|228(?:08|11|66|77)|23300|30030|3[12347]000|330(?:33|55|66)|33(?:233|331|366|533)|34(?:34|567)|37000|40(?:040|123|444|[3568]00)|41(?:010|414)|44(?:000|044|344|44[24]|544)|50005|50100|50123|50555|51000|52(?:255|783)|54(?:100|2542)|55(?:077|[24]00|222|333|55|[12369]55)|56(?:789|886)|60800|6[13]000|66(?:[12348]66|566|766|777|88|999)|68888|70(?:07|123|777)|76766|77(?:007|070|222|444|[567]77)|80(?:008|123|888)|82(?:002|[378]00|323|444|472|474|488|727)|83(?:005|[169]00|333|830)|84(?:141|300|32[34]|343|488|499|777|888)|85888|86(?:188|566|640|644|650|677|868|888)|870[24]9|871(?:23|[49]9)|872(?:1[0-8]|49|99)|87499|875(?:49|55|99)|876(?:0[1367]|1[1245678]|54|99)|877(?:00|99)|878(?:15|25|3[567]|8[12])|87999|880(?:08|44|55|77|99)|88688|888(?:03|10|8|89)|8899|90(?:009|999)|99999" free="116\\d{3}" />

    <!-- Denmark: see http://iprs.webspacecommerce.com/Denmark-Premium-Rate-Numbers -->
    <shortcode country="dk" pattern="\\d{4,5}" premium="1\\d{3}" free="116\\d{3}" />

    <!-- Estonia: short codes 3-5 digits starting with 1, plus premium 7 digit numbers starting with 90, plus EU.
         http://www.tja.ee/public/documents/Elektrooniline_side/Oigusaktid/ENG/Estonian_Numbering_Plan_annex_06_09_2010.mht -->
    <shortcode country="ee" pattern="1\\d{2,4}" premium="90\\d{5}|15330|1701[0-3]" free="116\\d{3}" />

    <!-- Spain: 5-6 digits: 25xxx, 27xxx, 280xx, 35xxx, 37xxx, 795xxx, 797xxx, 995xxx, 997xxx, plus EU.
         http://www.legallink.es/?q=en/content/which-current-regulatory-status-premium-rate-services-spain -->
    <shortcode country="es" premium="[23][57]\\d{3}|280\\d{2}|[79]9[57]\\d{3}" free="116\\d{3}" />

    <!-- Finland: 5-6 digits, premium 0600, 0700: http://en.wikipedia.org/wiki/Telephone_numbers_in_Finland -->
    <shortcode country="fi" pattern="\\d{5,6}" premium="0600.*|0700.*|171(?:59|63)" free="116\\d{3}" />

    <!-- France: 5 digits, free: 3xxxx, premium [4-8]xxxx, plus EU:
         http://clients.txtnation.com/entries/161972-france-premium-sms-short-code-requirements -->
    <shortcode country="fr" premium="[4-8]\\d{4}" free="3\\d{4}|116\\d{3}" />

    <!-- United Kingdom (Great Britain): 4-6 digits, common codes [5-8]xxxx, plus EU:
         http://www.short-codes.com/media/Co-regulatoryCodeofPracticeforcommonshortcodes170206.pdf -->
    <shortcode country="gb" pattern="\\d{4,6}" premium="[5-8]\\d{4}" free="116\\d{3}" />

    <!-- Georgia: 4 digits, known premium codes listed -->
    <shortcode country="ge" pattern="\\d{4}" premium="801[234]|888[239]" />

    <!-- Greece: 5 digits (54xxx, 19yxx, x=0-9, y=0-5): http://www.cmtelecom.com/premium-sms/greece -->
    <shortcode country="gr" pattern="\\d{5}" premium="54\\d{3}|19[0-5]\\d{2}" free="116\\d{3}" />

    <!-- Hungary: 4 or 10 digits starting with 1 or 0, plus EU:
         http://clients.txtnation.com/entries/209633-hungary-premium-sms-short-code-regulations -->
    <shortcode country="hu" pattern="[01](?:\\d{3}|\\d{9})" premium="0691227910|1784" free="116\\d{3}" />

    <!-- Ireland: 5 digits, 5xxxx (50xxx=free, 5[12]xxx=standard), plus EU:
         http://www.comreg.ie/_fileupload/publications/ComReg1117.pdf -->
    <shortcode country="ie" pattern="\\d{5}" premium="5[3-9]\\d{3}" free="50\\d{3}|116\\d{3}" standard="5[12]\\d{3}" />

    <!-- Israel: 4 digits, known premium codes listed -->
    <shortcode country="il" pattern="\\d{4}" premium="4422|4545" />

    <!-- Italy: 5 digits (premium=4xxxx), plus EU:
         http://clients.txtnation.com/attachments/token/di5kfblvubttvlw/?name=Italy_CASP_EN.pdf -->
    <shortcode country="it" pattern="\\d{5}" premium="4\\d{4}" free="116\\d{3}" />

    <!-- Kyrgyzstan: 4 digits, known premium codes listed -->
    <shortcode country="kg" pattern="\\d{4}" premium="415[2367]|444[69]" />

    <!-- Kazakhstan: 4 digits, known premium codes listed: http://smscoin.net/info/pricing-kazakhstan/ -->
    <shortcode country="kz" pattern="\\d{4}" premium="335[02]|4161|444[469]|77[2359]0|8444|919[3-5]|968[2-5]" />

    <!-- Lithuania: 3-5 digits, known premium codes listed, plus EU -->
    <shortcode country="lt" pattern="\\d{3,5}" premium="13[89]1|1394|16[34]5" free="116\\d{3}" />

    <!-- Luxembourg: 5 digits, 6xxxx, plus EU:
         http://www.luxgsm.lu/assets/files/filepage/file_1253803400.pdf -->
    <shortcode country="lu" premium="6\\d{4}" free="116\\d{3}" />

    <!-- Latvia: 4 digits, known premium codes listed, plus EU -->
    <shortcode country="lv" pattern="\\d{4}" premium="18(?:19|63|7[1-4])" free="116\\d{3}" />

    <!-- Mexico: 4-5 digits (not confirmed), known premium codes listed -->
    <shortcode country="mx" pattern="\\d{4,5}" premium="53035|7766" />

    <!-- Malaysia: 5 digits: http://www.skmm.gov.my/attachment/Consumer_Regulation/Mobile_Content_Services_FAQs.pdf -->
    <shortcode country="my" pattern="\\d{5}" premium="32298|33776" />

    <!-- The Netherlands, 4 digits, known premium codes listed, plus EU -->
    <shortcode country="nl" pattern="\\d{4}" premium="4466|5040" free="116\\d{3}" />

    <!-- Norway: 4-5 digits (not confirmed), known premium codes listed -->
    <shortcode country="no" pattern="\\d{4,5}" premium="2201|222[67]" />

    <!-- New Zealand: 3-4 digits, known premium codes listed -->
    <shortcode country="nz" pattern="\\d{3,4}" premium="3903|8995" />

    <!-- Poland: 4-5 digits (not confirmed), known premium codes listed, plus EU -->
    <shortcode country="pl" pattern="\\d{4,5}" premium="74240|79(?:10|866)|92525" free="116\\d{3}" />

    <!-- Portugal: 5 digits, plus EU:
         http://clients.txtnation.com/entries/158326-portugal-premium-sms-short-code-regulations -->
    <shortcode country="pt" premium="6[1289]\\d{3}" free="116\\d{3}" />

    <!-- Romania: 4 digits, plus EU: http://www.simplus.ro/en/resources/glossary-of-terms/ -->
    <shortcode country="ro" pattern="\\d{4}" premium="12(?:63|66|88)|13(?:14|80)" free="116\\d{3}" />

    <!-- Russia: 4 digits, known premium codes listed: http://smscoin.net/info/pricing-russia/ -->
    <shortcode country="ru" pattern="\\d{4}" premium="1(?:1[56]1|899)|2(?:09[57]|322|47[46]|880|990)|3[589]33|4161|44(?:4[3-9]|81)|77(?:33|81)" />

    <!-- Sweden: 5 digits (72xxx), plus EU: http://www.viatel.se/en/premium-sms/ -->
    <shortcode country="se" premium="72\\d{3}" free="116\\d{3}" />

    <!-- Singapore: 5 digits: http://clients.txtnation.com/entries/306442-singapore-premium-sms-short-code-requirements
         Free government directory info at 74688: http://app.sgdi.gov.sg/sms_help.asp -->
    <shortcode country="sg" pattern="7\\d{4}" premium="73800" standard="74688" />

    <!-- Slovenia: 4 digits (premium=3xxx, 6xxx, 8xxx), plus EU: http://www.cmtelecom.com/premium-sms/slovenia -->
    <shortcode country="si" pattern="\\d{4}" premium="[368]\\d{3}" free="116\\d{3}" />

    <!-- Slovakia: 4 digits (premium), plus EU: http://www.cmtelecom.com/premium-sms/slovakia -->
    <shortcode country="sk" premium="\\d{4}" free="116\\d{3}" />

    <!-- Tajikistan: 4 digits, known premium codes listed -->
    <shortcode country="tj" pattern="\\d{4}" premium="11[3-7]1|4161|4333|444[689]" />

    <!-- Ukraine: 4 digits, known premium codes listed -->
    <shortcode country="ua" pattern="\\d{4}" premium="444[3-9]|70[579]4|7540" />

    <!-- USA: 5-6 digits (premium codes from https://www.premiumsmsrefunds.com/ShortCodes.htm) -->
    <shortcode country="us" pattern="\\d{5,6}" premium="20433|21(?:344|472)|22715|23(?:333|847)|24(?:15|28)0|25209|27(?:449|606|663)|28498|305(?:00|83)|32(?:340|941)|33(?:166|786|849)|34746|35(?:182|564)|37975|38(?:135|146|254)|41(?:366|463)|42335|43(?:355|500)|44(?:578|711|811)|45814|46(?:157|173|327)|46666|47553|48(?:221|277|669)|50(?:844|920)|51(?:062|368)|52944|54(?:723|892)|55928|56483|57370|59(?:182|187|252|342)|60339|61(?:266|982)|62478|64(?:219|898)|65(?:108|500)|69(?:208|388)|70877|71851|72(?:078|087|465)|73(?:288|588|882|909|997)|74(?:034|332|815)|76426|79213|81946|83177|84(?:103|685)|85797|86(?:234|236|666)|89616|90(?:715|842|938)|91(?:362|958)|94719|95297|96(?:040|666|835|969)|97(?:142|294|688)|99(?:689|796|807)" />

</shortcodes>
+3 −3
Original line number Diff line number Diff line
@@ -126,7 +126,7 @@ public class ConfigUpdateInstallReceiver extends BroadcastReceiver {
            CertificateFactory cf = CertificateFactory.getInstance("X.509");
            return (X509Certificate) cf.generateCertificate(istream);
        } catch (CertificateException e) {
            throw new IllegalStateException("Got malformed certificate from settings, ignoring", e);
            throw new IllegalStateException("Got malformed certificate from settings, ignoring");
        }
    }

@@ -167,7 +167,7 @@ public class ConfigUpdateInstallReceiver extends BroadcastReceiver {
            String strVersion = IoUtils.readFileAsString(updateVersion.getCanonicalPath()).trim();
            return Integer.parseInt(strVersion);
        } catch (IOException e) {
            Slog.i(TAG, "Couldn't find current metadata, assuming first update", e);
            Slog.i(TAG, "Couldn't find current metadata, assuming first update");
            return 0;
        }
    }
@@ -181,7 +181,7 @@ public class ConfigUpdateInstallReceiver extends BroadcastReceiver {
        try {
            return IoUtils.readFileAsString(updateContent.getCanonicalPath()).trim();
        } catch (IOException e) {
            Slog.i(TAG, "Failed to read current content, assuming first update!", e);
            Slog.i(TAG, "Failed to read current content, assuming first update!");
            return null;
        }
    }
Loading