36
30
<a name="l00011"></a>00011 <span class="comment"> * General Public License for more details.</span>
37
31
<a name="l00012"></a>00012 <span class="comment"> *</span>
38
32
<a name="l00013"></a>00013 <span class="comment"> * You should have received a copy of the GNU General Public License</span>
39
<a name="l00014"></a>00014 <span class="comment"> * along with this program; if not, write to the Free Software</span>
40
<a name="l00015"></a>00015 <span class="comment"> * Foundation, Inc., 59 Temple Place, Suite 330, Boston,</span>
41
<a name="l00016"></a>00016 <span class="comment"> * MA 02111-1307 USA</span>
42
<a name="l00017"></a>00017 <span class="comment"> *</span>
43
<a name="l00018"></a>00018 <span class="comment"> *********************************************************************/</span>
44
<a name="l00019"></a>00019
45
<a name="l00020"></a>00020 <span class="preprocessor">#include <config.h></span>
46
<a name="l00021"></a>00021
47
<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="dchroot-dsa-session_8h.html">dchroot-dsa-session.h</a>"</span>
48
<a name="l00023"></a>00023
49
<a name="l00024"></a>00024 <span class="preprocessor">#include <cassert></span>
50
<a name="l00025"></a>00025 <span class="preprocessor">#include <cerrno></span>
51
<a name="l00026"></a>00026 <span class="preprocessor">#include <cstdlib></span>
52
<a name="l00027"></a>00027 <span class="preprocessor">#include <cstring></span>
53
<a name="l00028"></a>00028 <span class="preprocessor">#include <iostream></span>
54
<a name="l00029"></a>00029 <span class="preprocessor">#include <memory></span>
55
<a name="l00030"></a>00030
56
<a name="l00031"></a>00031 <span class="preprocessor">#include <unistd.h></span>
57
<a name="l00032"></a>00032
58
<a name="l00033"></a>00033 <span class="preprocessor">#include <syslog.h></span>
59
<a name="l00034"></a>00034
60
<a name="l00035"></a>00035 <span class="preprocessor">#include <boost/format.hpp></span>
61
<a name="l00036"></a>00036
62
<a name="l00037"></a>00037 <span class="preprocessor">#include <uuid/uuid.h></span>
63
<a name="l00038"></a>00038
64
<a name="l00039"></a>00039 <span class="keyword">using</span> std::cout;
65
<a name="l00040"></a>00040 <span class="keyword">using</span> std::endl;
66
<a name="l00041"></a>00041 <span class="keyword">using</span> sbuild::_;
67
<a name="l00042"></a>00042 <span class="keyword">using</span> boost::format;
68
<a name="l00043"></a>00043 <span class="keyword">using namespace </span>dchroot_dsa;
69
<a name="l00044"></a>00044
70
<a name="l00045"></a><a class="code" href="classdchroot__dsa_1_1session.html#167c9a6fb42fdc5d7c2e2b46ca152488">00045</a> session::session (std::string <span class="keyword">const</span>& service,
71
<a name="l00046"></a>00046 config_ptr& config,
72
<a name="l00047"></a>00047 <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/classsbuild_1_1session.html#3bedc4f49c2fe2c7f59c8d7ec5c1f5b7">operation</a> <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/classsbuild_1_1session.html#3bedc4f49c2fe2c7f59c8d7ec5c1f5b7">operation</a>,
73
<a name="l00048"></a>00048 <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/namespacesbuild.html#4268c3202ab4b20cbebf347a6d69393f">sbuild::string_list</a> <span class="keyword">const</span>& chroots,
74
<a name="l00049"></a>00049 <span class="keywordtype">bool</span> compat):
75
<a name="l00050"></a>00050 dchroot::session_base(service, config, operation, chroots, compat)
76
<a name="l00051"></a>00051 {
77
<a name="l00052"></a>00052 }
78
<a name="l00053"></a>00053
79
<a name="l00054"></a><a class="code" href="classdchroot__dsa_1_1session.html#25f3c561e9e7e56327809de6bb796e78">00054</a> <a class="code" href="classdchroot__dsa_1_1session.html#25f3c561e9e7e56327809de6bb796e78" title="The destructor.">session::~session</a> ()
80
<a name="l00055"></a>00055 {
81
<a name="l00056"></a>00056 }
82
<a name="l00057"></a>00057
83
<a name="l00058"></a>00058 <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/classsbuild_1_1auth.html#83fe135bdd88e81e6309519dfdcbf36e">sbuild::auth::status</a>
84
<a name="l00059"></a><a class="code" href="classdchroot__dsa_1_1session.html#ffc41685b22f545b9a9e2608a09e388a">00059</a> <a class="code" href="classdchroot__dsa_1_1session.html#ffc41685b22f545b9a9e2608a09e388a">session::get_chroot_auth_status</a> (<a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/classsbuild_1_1auth.html#83fe135bdd88e81e6309519dfdcbf36e">sbuild::auth::status</a> <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/classsbuild_1_1auth.html#83fe135bdd88e81e6309519dfdcbf36e">status</a>,
85
<a name="l00060"></a>00060 <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/classsbuild_1_1chroot.html#ef7d5b607d1a0a4a7ebe1d40e2ec9c3a">sbuild::chroot::ptr</a> <span class="keyword">const</span>& chroot)<span class="keyword"> const</span>
86
<a name="l00061"></a>00061 <span class="keyword"></span>{
87
<a name="l00062"></a>00062 <span class="comment">/* DSA dchroot checks for a valid user in the groups list, unless</span>
88
<a name="l00063"></a>00063 <span class="comment"> the groups lists is empty in which case there are no</span>
89
<a name="l00064"></a>00064 <span class="comment"> restrictions. This only applies if not switching users (dchroot</span>
90
<a name="l00065"></a>00065 <span class="comment"> does not support user switching) */</span>
91
<a name="l00066"></a>00066
92
<a name="l00067"></a>00067 <span class="keywordflow">if</span> (<a class="code" href="classdchroot_1_1session__base.html#1ad1c4752bd31f4e7af3d0f376bbd0bb" title="Get the dchroot compatibility state.">get_compat</a>() == <span class="keyword">true</span>)
93
<a name="l00068"></a>00068 {
94
<a name="l00069"></a>00069 <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/namespacesbuild.html#4268c3202ab4b20cbebf347a6d69393f">sbuild::string_list</a> <span class="keyword">const</span>& users = chroot->get_users();
95
<a name="l00070"></a>00070 <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/namespacesbuild.html#4268c3202ab4b20cbebf347a6d69393f">sbuild::string_list</a> <span class="keyword">const</span>& groups = chroot->get_groups();
96
<a name="l00071"></a>00071
97
<a name="l00072"></a>00072 <span class="keywordflow">if</span> (this->get_ruid() == this-><a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/classsbuild_1_1auth.html#99ff3ada37b93bffda2f8ab8fac6afca">get_uid</a>() &&
98
<a name="l00073"></a>00073 users.empty() && groups.empty())
99
<a name="l00074"></a>00074 status = <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/classsbuild_1_1auth.html#d0ad9a8f2244040af9df1a94d2a784f5">change_auth</a>(status, auth::STATUS_NONE);
100
<a name="l00075"></a>00075 <span class="keywordflow">else</span>
101
<a name="l00076"></a>00076 status = <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/classsbuild_1_1auth.html#d0ad9a8f2244040af9df1a94d2a784f5">change_auth</a>(status,
102
<a name="l00077"></a>00077 <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/classsbuild_1_1session.html#3cb0ad753b6307b29cd23150449637cf">sbuild::session::get_chroot_auth_status</a>(status,
103
<a name="l00078"></a>00078 chroot));
104
<a name="l00079"></a>00079 }
105
<a name="l00080"></a>00080 <span class="keywordflow">else</span> <span class="comment">// schroot compatibility</span>
106
<a name="l00081"></a>00081 {
107
<a name="l00082"></a>00082 status = <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/classsbuild_1_1auth.html#d0ad9a8f2244040af9df1a94d2a784f5">change_auth</a>(status,
108
<a name="l00083"></a>00083 <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/classsbuild_1_1session.html#3cb0ad753b6307b29cd23150449637cf">sbuild::session::get_chroot_auth_status</a>(status,
109
<a name="l00084"></a>00084 chroot));
110
<a name="l00085"></a>00085 }
111
<a name="l00086"></a>00086
112
<a name="l00087"></a>00087 <span class="keywordflow">return</span> status;
113
<a name="l00088"></a>00088 }
114
<a name="l00089"></a>00089
115
<a name="l00090"></a>00090 <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/namespacesbuild.html#4268c3202ab4b20cbebf347a6d69393f">sbuild::string_list</a>
116
<a name="l00091"></a><a class="code" href="classdchroot__dsa_1_1session.html#2e6912cc35a3d42f306988bbb8042a03">00091</a> <a class="code" href="classdchroot__dsa_1_1session.html#2e6912cc35a3d42f306988bbb8042a03">session::get_login_directories</a> ()<span class="keyword"> const</span>
117
<a name="l00092"></a>00092 <span class="keyword"></span>{
118
<a name="l00093"></a>00093 <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/namespacesbuild.html#4268c3202ab4b20cbebf347a6d69393f">sbuild::string_list</a> ret;
119
<a name="l00094"></a>00094
120
<a name="l00095"></a>00095 std::string <span class="keyword">const</span>& <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/classsbuild_1_1auth.html#53f8c0014243cea4685a32f80ff67bd8">wd</a>(<a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/classsbuild_1_1auth.html#8e4bd394ed625af978aa3b069973999e">get_wd</a>());
121
<a name="l00096"></a>00096 <span class="keywordflow">if</span> (!wd.empty())
122
<a name="l00097"></a>00097 {
123
<a name="l00098"></a>00098 <span class="comment">// Set specified working directory.</span>
124
<a name="l00099"></a>00099 ret.push_back(wd);
125
<a name="l00100"></a>00100 }
126
<a name="l00101"></a>00101 <span class="keywordflow">else</span>
127
<a name="l00102"></a>00102 {
128
<a name="l00103"></a>00103 ret.push_back(<a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/classsbuild_1_1auth.html#4577030ca02f496c3fe4a3bfcd66318a">get_home</a>());
129
<a name="l00104"></a>00104
130
<a name="l00105"></a>00105 <span class="comment">// Final fallback to root.</span>
131
<a name="l00106"></a>00106 <span class="keywordflow">if</span> (std::find(ret.begin(), ret.end(), <span class="stringliteral">"/"</span>) == ret.end())
132
<a name="l00107"></a>00107 ret.push_back(<span class="stringliteral">"/"</span>);
133
<a name="l00108"></a>00108 }
134
<a name="l00109"></a>00109
135
<a name="l00110"></a>00110 <span class="keywordflow">return</span> ret;
136
<a name="l00111"></a>00111 }
137
<a name="l00112"></a>00112
138
<a name="l00113"></a>00113 <span class="keywordtype">void</span>
139
<a name="l00114"></a><a class="code" href="classdchroot__dsa_1_1session.html#aa5c87478e6b206c1755514c3d4123b1">00114</a> <a class="code" href="classdchroot__dsa_1_1session.html#aa5c87478e6b206c1755514c3d4123b1">session::get_user_command</a> (<a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/classsbuild_1_1chroot.html#ef7d5b607d1a0a4a7ebe1d40e2ec9c3a">sbuild::chroot::ptr</a>& session_chroot,
140
<a name="l00115"></a>00115 std::string& file,
141
<a name="l00116"></a>00116 <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/namespacesbuild.html#4268c3202ab4b20cbebf347a6d69393f">sbuild::string_list</a>& <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/classsbuild_1_1auth.html#7b1ee77debeb9f6881849536eee13263">command</a>)<span class="keyword"> const</span>
142
<a name="l00117"></a>00117 <span class="keyword"></span>{
143
<a name="l00118"></a>00118 std::string programstring = command[0];
144
<a name="l00119"></a>00119 file = programstring;
145
<a name="l00120"></a>00120
146
<a name="l00121"></a>00121 <span class="keywordflow">if</span> (!<a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/namespacesbuild.html#2d0074b31e1a2644405dce0585e44117">sbuild::is_absname</a>(file))
147
<a name="l00122"></a>00122 <span class="keywordflow">throw</span> <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/classsbuild_1_1session.html#8f5788237019e9021c0107b9c93202f0">error</a>(file, <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/classsbuild_1_1session.html#557d9570f7b58c5466cc4ee22d88217871ca99d288bee2ace5a6f603c161478c">COMMAND_ABS</a>);
148
<a name="l00123"></a>00123
149
<a name="l00124"></a>00124 std::string commandstring = <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/namespacesbuild.html#56e63f2becadeda121c470befde8e76b">sbuild::string_list_to_string</a>(command, <span class="stringliteral">" "</span>);
150
<a name="l00125"></a>00125 <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/namespacesbuild.html#fb49f5f1584c85f1415926f9cb240eaf">sbuild::log_debug</a>(<a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/namespacesbuild.html#cc4d8fc120bfd21c22acd9d9ed0e754d9ab34ebefe291830445a53a1d2e18d3d">sbuild::DEBUG_NOTICE</a>)
151
<a name="l00126"></a>00126 << format(<span class="stringliteral">"Running command: %1%"</span>) % commandstring << endl;
152
<a name="l00127"></a>00127 <span class="keywordflow">if</span> (<a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/classsbuild_1_1auth.html#99ff3ada37b93bffda2f8ab8fac6afca">get_uid</a>() == 0 || <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/classsbuild_1_1auth.html#c8dfeb4f2e4343f18e3e9a770ad1408d">get_ruid</a>() != <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/classsbuild_1_1auth.html#99ff3ada37b93bffda2f8ab8fac6afca">get_uid</a>())
153
<a name="l00128"></a>00128 syslog(LOG_USER|LOG_NOTICE, <span class="stringliteral">"[%s chroot] (%s->%s) Running command: \"%s\""</span>,
154
<a name="l00129"></a>00129 session_chroot->get_name().c_str(), <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/classsbuild_1_1auth.html#ab228b307a9c10f414506113d0af9251">get_ruser</a>().c_str(), <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/classsbuild_1_1auth.html#705ab5aee77131d6411826a3e2d7b21c">get_user</a>().c_str(), commandstring.c_str());
155
<a name="l00130"></a>00130
156
<a name="l00131"></a>00131 <span class="keywordflow">if</span> (<a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/classsbuild_1_1auth.html#2301e37af37372bc7353bbfc45bf370e">get_verbosity</a>() != auth::VERBOSITY_QUIET)
157
<a name="l00132"></a>00132 {
158
<a name="l00133"></a>00133 std::string format_string;
159
<a name="l00134"></a>00134 <span class="comment">// TRANSLATORS: %1% = chroot name</span>
160
<a name="l00135"></a>00135 <span class="comment">// TRANSLATORS: %2% = command</span>
161
<a name="l00136"></a>00136 format_string = (_(<span class="stringliteral">"[%1% chroot] Running command: \"%2%\""</span>));
162
<a name="l00137"></a>00137
163
<a name="l00138"></a>00138 format fmt(format_string);
164
<a name="l00139"></a>00139 fmt % session_chroot->get_name()
165
<a name="l00140"></a>00140 % programstring;
166
<a name="l00141"></a>00141 <a class="codeRef" doxygen="sbuild.tag:/tmp/sr/schroot-1.1.5/doc/sbuild/html/" href="/tmp/sr/schroot-1.1.5/doc/sbuild/html/namespacesbuild.html#4b668d467f8c9c6063cd2c9c7aaf3086">sbuild::log_info</a>() << fmt << endl;
167
<a name="l00142"></a>00142 }
168
<a name="l00143"></a>00143 }
169
</pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Sun Jul 8 21:23:54 2007 for schroot by
33
<a name="l00014"></a>00014 <span class="comment"> * along with this program. If not, see</span>
34
<a name="l00015"></a>00015 <span class="comment"> * <http://www.gnu.org/licenses/>.</span>
35
<a name="l00016"></a>00016 <span class="comment"> *</span>
36
<a name="l00017"></a>00017 <span class="comment"> *********************************************************************/</span>
37
<a name="l00018"></a>00018
38
<a name="l00019"></a>00019 <span class="preprocessor">#include <config.h></span>
39
<a name="l00020"></a>00020
40
<a name="l00021"></a>00021 <span class="preprocessor">#include "<a class="code" href="dchroot-dsa-session_8h.html">dchroot-dsa-session.h</a>"</span>
41
<a name="l00022"></a>00022
42
<a name="l00023"></a>00023 <span class="preprocessor">#include <cassert></span>
43
<a name="l00024"></a>00024 <span class="preprocessor">#include <cerrno></span>
44
<a name="l00025"></a>00025 <span class="preprocessor">#include <cstdlib></span>
45
<a name="l00026"></a>00026 <span class="preprocessor">#include <cstring></span>
46
<a name="l00027"></a>00027 <span class="preprocessor">#include <iostream></span>
47
<a name="l00028"></a>00028 <span class="preprocessor">#include <memory></span>
48
<a name="l00029"></a>00029
49
<a name="l00030"></a>00030 <span class="preprocessor">#include <unistd.h></span>
50
<a name="l00031"></a>00031
51
<a name="l00032"></a>00032 <span class="preprocessor">#include <syslog.h></span>
52
<a name="l00033"></a>00033
53
<a name="l00034"></a>00034 <span class="preprocessor">#include <boost/format.hpp></span>
54
<a name="l00035"></a>00035
55
<a name="l00036"></a>00036 <span class="preprocessor">#include <uuid/uuid.h></span>
56
<a name="l00037"></a>00037
57
<a name="l00038"></a>00038 <span class="keyword">using</span> std::cout;
58
<a name="l00039"></a>00039 <span class="keyword">using</span> std::endl;
59
<a name="l00040"></a>00040 <span class="keyword">using</span> sbuild::_;
60
<a name="l00041"></a>00041 <span class="keyword">using</span> boost::format;
61
<a name="l00042"></a>00042 <span class="keyword">using namespace </span>dchroot_dsa;
62
<a name="l00043"></a>00043
63
<a name="l00044"></a><a class="code" href="classdchroot__dsa_1_1session.html#167c9a6fb42fdc5d7c2e2b46ca152488">00044</a> session::session (std::string <span class="keyword">const</span>& service,
64
<a name="l00045"></a>00045 <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1session.html#3bee8f07da6fb7ae900d84906eca268c">config_ptr</a>& config,
65
<a name="l00046"></a>00046 <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1session.html#3bedc4f49c2fe2c7f59c8d7ec5c1f5b7">operation</a> <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1session.html#3bedc4f49c2fe2c7f59c8d7ec5c1f5b7">operation</a>,
66
<a name="l00047"></a>00047 <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/namespacesbuild.html#4268c3202ab4b20cbebf347a6d69393f">sbuild::string_list</a> <span class="keyword">const</span>& chroots,
67
<a name="l00048"></a>00048 <span class="keywordtype">bool</span> compat):
68
<a name="l00049"></a>00049 dchroot::session_base(service, config, operation, chroots, compat)
69
<a name="l00050"></a>00050 {
70
<a name="l00051"></a>00051 }
71
<a name="l00052"></a>00052
72
<a name="l00053"></a><a class="code" href="classdchroot__dsa_1_1session.html#25f3c561e9e7e56327809de6bb796e78">00053</a> <a class="code" href="classdchroot__dsa_1_1session.html#25f3c561e9e7e56327809de6bb796e78" title="The destructor.">session::~session</a> ()
73
<a name="l00054"></a>00054 {
74
<a name="l00055"></a>00055 }
75
<a name="l00056"></a>00056
76
<a name="l00057"></a>00057 <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1auth.html#83fe135bdd88e81e6309519dfdcbf36e">sbuild::auth::status</a>
77
<a name="l00058"></a><a class="code" href="classdchroot__dsa_1_1session.html#ffc41685b22f545b9a9e2608a09e388a">00058</a> <a class="code" href="classdchroot__dsa_1_1session.html#ffc41685b22f545b9a9e2608a09e388a">session::get_chroot_auth_status</a> (<a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1auth.html#83fe135bdd88e81e6309519dfdcbf36e">sbuild::auth::status</a> <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1auth.html#83fe135bdd88e81e6309519dfdcbf36e">status</a>,
78
<a name="l00059"></a>00059 <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1chroot.html#ef7d5b607d1a0a4a7ebe1d40e2ec9c3a">sbuild::chroot::ptr</a> <span class="keyword">const</span>& chroot)<span class="keyword"> const</span>
79
<a name="l00060"></a>00060 <span class="keyword"></span>{
80
<a name="l00061"></a>00061 <span class="comment">/* DSA dchroot checks for a valid user in the groups list, unless</span>
81
<a name="l00062"></a>00062 <span class="comment"> the groups lists is empty in which case there are no</span>
82
<a name="l00063"></a>00063 <span class="comment"> restrictions. This only applies if not switching users (dchroot</span>
83
<a name="l00064"></a>00064 <span class="comment"> does not support user switching) */</span>
84
<a name="l00065"></a>00065
85
<a name="l00066"></a>00066 <span class="keywordflow">if</span> (<a class="code" href="classdchroot_1_1session__base.html#a2ef1c3b8ece875496a8a73cf7f98cf2" title="Get the dchroot compatibility state.">get_compat</a>() == <span class="keyword">true</span>)
86
<a name="l00067"></a>00067 {
87
<a name="l00068"></a>00068 <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/namespacesbuild.html#4268c3202ab4b20cbebf347a6d69393f">sbuild::string_list</a> <span class="keyword">const</span>& users = chroot->get_users();
88
<a name="l00069"></a>00069 <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/namespacesbuild.html#4268c3202ab4b20cbebf347a6d69393f">sbuild::string_list</a> <span class="keyword">const</span>& groups = chroot->get_groups();
89
<a name="l00070"></a>00070
90
<a name="l00071"></a>00071 <span class="keywordflow">if</span> (this->get_ruid() == this-><a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1auth.html#a37f4138b675a9ca61396089bd916924">get_uid</a>() &&
91
<a name="l00072"></a>00072 users.empty() && groups.empty())
92
<a name="l00073"></a>00073 status = <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1auth.html#d0ad9a8f2244040af9df1a94d2a784f5">change_auth</a>(status, auth::STATUS_NONE);
93
<a name="l00074"></a>00074 <span class="keywordflow">else</span>
94
<a name="l00075"></a>00075 status = <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1auth.html#d0ad9a8f2244040af9df1a94d2a784f5">change_auth</a>(status,
95
<a name="l00076"></a>00076 <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1session.html#3cb0ad753b6307b29cd23150449637cf">sbuild::session::get_chroot_auth_status</a>(status,
96
<a name="l00077"></a>00077 chroot));
97
<a name="l00078"></a>00078 }
98
<a name="l00079"></a>00079 <span class="keywordflow">else</span> <span class="comment">// schroot compatibility</span>
99
<a name="l00080"></a>00080 {
100
<a name="l00081"></a>00081 status = <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1auth.html#d0ad9a8f2244040af9df1a94d2a784f5">change_auth</a>(status,
101
<a name="l00082"></a>00082 <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1session.html#3cb0ad753b6307b29cd23150449637cf">sbuild::session::get_chroot_auth_status</a>(status,
102
<a name="l00083"></a>00083 chroot));
103
<a name="l00084"></a>00084 }
104
<a name="l00085"></a>00085
105
<a name="l00086"></a>00086 <span class="keywordflow">return</span> status;
106
<a name="l00087"></a>00087 }
107
<a name="l00088"></a>00088
108
<a name="l00089"></a>00089 <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/namespacesbuild.html#4268c3202ab4b20cbebf347a6d69393f">sbuild::string_list</a>
109
<a name="l00090"></a><a class="code" href="classdchroot__dsa_1_1session.html#faa63c0177552646ff0922e387364b2b">00090</a> <a class="code" href="classdchroot__dsa_1_1session.html#faa63c0177552646ff0922e387364b2b">session::get_login_directories</a> ()<span class="keyword"> const</span>
110
<a name="l00091"></a>00091 <span class="keyword"></span>{
111
<a name="l00092"></a>00092 <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/namespacesbuild.html#4268c3202ab4b20cbebf347a6d69393f">sbuild::string_list</a> ret;
112
<a name="l00093"></a>00093
113
<a name="l00094"></a>00094 std::string <span class="keyword">const</span>& <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1auth.html#53f8c0014243cea4685a32f80ff67bd8">wd</a>(<a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1auth.html#e04228548c9746f14517e992c88d6dff">get_wd</a>());
114
<a name="l00095"></a>00095 <span class="keywordflow">if</span> (!wd.empty())
115
<a name="l00096"></a>00096 {
116
<a name="l00097"></a>00097 <span class="comment">// Set specified working directory.</span>
117
<a name="l00098"></a>00098 ret.push_back(wd);
118
<a name="l00099"></a>00099 }
119
<a name="l00100"></a>00100 <span class="keywordflow">else</span>
120
<a name="l00101"></a>00101 {
121
<a name="l00102"></a>00102 ret.push_back(<a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1auth.html#7ae6c0a7250a88c09b051707bbd29c4a">get_home</a>());
122
<a name="l00103"></a>00103
123
<a name="l00104"></a>00104 <span class="comment">// Final fallback to root.</span>
124
<a name="l00105"></a>00105 <span class="keywordflow">if</span> (std::find(ret.begin(), ret.end(), <span class="stringliteral">"/"</span>) == ret.end())
125
<a name="l00106"></a>00106 ret.push_back(<span class="stringliteral">"/"</span>);
126
<a name="l00107"></a>00107 }
127
<a name="l00108"></a>00108
128
<a name="l00109"></a>00109 <span class="keywordflow">return</span> ret;
129
<a name="l00110"></a>00110 }
130
<a name="l00111"></a>00111
131
<a name="l00112"></a>00112 <span class="keywordtype">void</span>
132
<a name="l00113"></a><a class="code" href="classdchroot__dsa_1_1session.html#aa5c87478e6b206c1755514c3d4123b1">00113</a> <a class="code" href="classdchroot__dsa_1_1session.html#aa5c87478e6b206c1755514c3d4123b1">session::get_user_command</a> (<a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1chroot.html#ef7d5b607d1a0a4a7ebe1d40e2ec9c3a">sbuild::chroot::ptr</a>& session_chroot,
133
<a name="l00114"></a>00114 std::string& file,
134
<a name="l00115"></a>00115 <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/namespacesbuild.html#4268c3202ab4b20cbebf347a6d69393f">sbuild::string_list</a>& <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1auth.html#7b1ee77debeb9f6881849536eee13263">command</a>)<span class="keyword"> const</span>
135
<a name="l00116"></a>00116 <span class="keyword"></span>{
136
<a name="l00117"></a>00117 std::string programstring = command[0];
137
<a name="l00118"></a>00118 file = programstring;
138
<a name="l00119"></a>00119
139
<a name="l00120"></a>00120 <span class="keywordflow">if</span> (!<a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/namespacesbuild.html#2d0074b31e1a2644405dce0585e44117">sbuild::is_absname</a>(file))
140
<a name="l00121"></a>00121 <span class="keywordflow">throw</span> <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1session.html#8f5788237019e9021c0107b9c93202f0">error</a>(file, <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1session.html#557d9570f7b58c5466cc4ee22d88217871ca99d288bee2ace5a6f603c161478c">COMMAND_ABS</a>);
141
<a name="l00122"></a>00122
142
<a name="l00123"></a>00123 std::string commandstring = <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/namespacesbuild.html#56e63f2becadeda121c470befde8e76b">sbuild::string_list_to_string</a>(command, <span class="stringliteral">" "</span>);
143
<a name="l00124"></a>00124 <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/namespacesbuild.html#fb49f5f1584c85f1415926f9cb240eaf">sbuild::log_debug</a>(<a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/namespacesbuild.html#cc4d8fc120bfd21c22acd9d9ed0e754d9ab34ebefe291830445a53a1d2e18d3d">sbuild::DEBUG_NOTICE</a>)
144
<a name="l00125"></a>00125 << format(<span class="stringliteral">"Running command: %1%"</span>) % commandstring << endl;
145
<a name="l00126"></a>00126 <span class="keywordflow">if</span> (<a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1auth.html#a37f4138b675a9ca61396089bd916924">get_uid</a>() == 0 || <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1auth.html#7012620e8c3b8673eb571a605b194958">get_ruid</a>() != <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1auth.html#a37f4138b675a9ca61396089bd916924">get_uid</a>())
146
<a name="l00127"></a>00127 syslog(LOG_USER|LOG_NOTICE, <span class="stringliteral">"[%s chroot] (%s->%s) Running command: \"%s\""</span>,
147
<a name="l00128"></a>00128 session_chroot->get_name().c_str(), <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1auth.html#6dcd71e1ae9954f635e379e3bae8af13">get_ruser</a>().c_str(), <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1auth.html#f532921cb3562de17a1ce4407e45c0ce">get_user</a>().c_str(), commandstring.c_str());
148
<a name="l00129"></a>00129
149
<a name="l00130"></a>00130 <span class="keywordflow">if</span> (<a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/classsbuild_1_1auth.html#4b0ff102950ea2ac820f2a9b4cf48f2c">get_verbosity</a>() != auth::VERBOSITY_QUIET)
150
<a name="l00131"></a>00131 {
151
<a name="l00132"></a>00132 std::string format_string;
152
<a name="l00133"></a>00133 <span class="comment">// TRANSLATORS: %1% = chroot name</span>
153
<a name="l00134"></a>00134 <span class="comment">// TRANSLATORS: %2% = command</span>
154
<a name="l00135"></a>00135 format_string = (_(<span class="stringliteral">"[%1% chroot] Running command: \"%2%\""</span>));
155
<a name="l00136"></a>00136
156
<a name="l00137"></a>00137 format fmt(format_string);
157
<a name="l00138"></a>00138 fmt % session_chroot->get_name()
158
<a name="l00139"></a>00139 % programstring;
159
<a name="l00140"></a>00140 <a class="codeRef" doxygen="sbuild.tag:/tmp/sb/schroot/doc/sbuild/html/" href="/tmp/sb/schroot/doc/sbuild/html/namespacesbuild.html#4b668d467f8c9c6063cd2c9c7aaf3086">sbuild::log_info</a>() << fmt << endl;
160
<a name="l00141"></a>00141 }
161
<a name="l00142"></a>00142 }
162
</pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Mon Jan 21 00:38:28 2008 for schroot by
170
163
<a href="http://www.doxygen.org/index.html">
171
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
164
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.4 </small></address>