This file is indexed.

/usr/bin/with-ofono-phonesim is in ofono-phonesim 1.20-1ubuntu7.

This file is owned by root:root, with mode 0o755.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
#!/bin/sh

# Set up ofono to run with the phone simulator. This uses an unshared tmpfs
# mount over /etc/ofono/ to avoid having to modify the file system.  The script
# can either be invoked without arguments and run until Control-C, or run a
# program (with arguments), in which case everything will be restored when the
# program ends.
#
# Author: Martin Pitt <martin.pitt@ubuntu.com>

set -e

# kill previous instances
pkill --signal KILL -x ofono-phonesim || true
pkill --signal KILL -f '/etc/ofono/phonesim-dbus.conf' || true

# run program under an unshared /etc/ofono/, to be able to run ofono
# with a custom configuration without having to touch the fs
if [ -z "$WITH_OFONO_PHONESIM_UNSHARED" ]; then
    export WITH_OFONO_PHONESIM_UNSHARED=1
    exec unshare -m -- "$0" "$@"
fi

PHONESIM_CONF=/etc/ofono/phonesim.conf
SCRIPTS_DIR=/usr/share/ofono/scripts

# enable to get ofono debugging log on failure
#DEBUG_OFONO=-d

if [ "$1" = "--help" ]; then
    echo "Usage: $0 [<program to run> [args..] ]" >&2
    exit 0
fi

# check our dependencies
[ -e $PHONESIM_CONF ] || { 
    echo "You need to install ofono-phonesim for this" >&2
    exit 1
}
if ! type xvfb-run >/dev/null 2>&1; then
    echo "You need to install xvfb for this" >&2
    exit 1
fi
if ! type $SCRIPTS_DIR/online-modem >/dev/null 2>&1; then
    echo "You need to install ofono-scripts for this" >&2
    exit 1
fi

# read ofono config and uncomment phonesim stanza
MYCONF=$(sed '/\[phonesim/,$ s/^#//' $PHONESIM_CONF)

# write our own config into tmpfs overlay
mount --make-rprivate / 2> /dev/null || : # reset / to private mounts (systemd changes this to shared)
mount -n -t tmpfs tmpfs /etc/ofono
echo "$MYCONF" > $PHONESIM_CONF

ofonod -P ril,rildev,stktest $DEBUG_OFONO -n >/etc/ofono/ofono.log 2>&1 &
OFONO_PID=$!
echo "$0: started ofono (pid $OFONO_PID)"

# session D-BUS config for phomesim where everyone can send messages to
cat <<EOF > /etc/ofono/phonesim-dbus.conf
<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-Bus Bus Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>
  <type>session</type>
  <listen>unix:tmpdir=/tmp</listen>
  <pidfile>/run/lock/ofono-phonesim-dbus.pid</pidfile>
  <!-- <auth>EXTERNAL</auth> -->

  <policy context="default">
    <allow user="*"/>
    <allow send_destination="*" eavesdrop="true"/>
    <allow eavesdrop="true"/>
    <allow own="*"/>
  </policy>
</busconfig>
EOF

# clean up phonesim, dbus, and restart original ofono at the end
cleanup() {
    set +e
    echo "$0: cleaning up..."
    pkill -x ofono-phonesim
    # kill the dbus session daemon
    pkill -f '/etc/ofono/phonesim-dbus.conf'
    kill $OFONO_PID 2>/dev/null
    wait
    if [ -e /run/lock/ofono-phonesim-dbus.pid ]; then
        cat /run/lock/ofono-phonesim-dbus.pid | xargs kill
        rm /run/lock/ofono-phonesim-dbus.address
    fi
    pkill telepathy-ofono
    echo "$0: finished"
}

trap cleanup 0 TERM INT QUIT HUP PIPE

# start phonesim on a publicly accessible D-BUS daemon as user nobody
su -s /bin/sh nobody > /etc/ofono/phonesim.log <<EOF 2>&1 &
  eval \`dbus-launch --config-file=/etc/ofono/phonesim-dbus.conf\`
  echo \$DBUS_SESSION_BUS_ADDRESS > /run/lock/ofono-phonesim-dbus.address
  export DBUS_SESSION_BUS_ADDRESS
  # fails with configured proxy, so ignore it
  unset http_proxy
  xvfb-run -a ofono-phonesim -p 12345 -gui /usr/share/phonesim/default.xml
EOF

echo "$0: waiting for simulated modem to appear ..."
timeout=10
while [ $timeout -gt 0 ]; do
    sleep 1 
    timeout=$((timeout-1))
    $SCRIPTS_DIR/enable-modem && break
done
[ $timeout -ge 0 ] || {
    echo "timed out waiting for phonesim modem to appear" >&2
    exit 1
}
echo "$0: started phonesim"

# force restart of telepathy-ofono against new ofonod
pkill telepathy-ofono || true

# no arguments: interactive, kill with Control-C
if [ -z "$1" ]; then
    echo "$0: run your application now, and Control-C or kill this process to stop this simulator"
    tail -f /etc/ofono/ofono.log
    echo "$0: shutting down"
    exit 0
fi

# with "quiet": don't tail logs, script can be killed
if [ "$1" = "quiet" ]; then
    echo "$0: run your application now, and kill this process ($$) to stop the simulator"
    # need to sleep within the shell to be able to catch signals, so use the builtin read
    mkfifo /etc/ofono/silent
    read x < /etc/ofono/silent || true
    exit 0
fi

# otherwise: run specified program
echo "$0: running command line specified program/test..."
$@ || {
    RC=$?
    echo "program/test failed with exit status $RC" >&2
    echo "------ ofono log -------------" >&2
    cat /etc/ofono/ofono.log >&2
    echo "------ end ofofono log -------------" >&2
    exit $RC
}