Description:
- fix ssl, we no longer check SSL for the API call to chula
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r585:0d6ca27c4e8d - - 4 files changed: 8 inserted, 7 deleted

@@ -90,57 +90,58
90 90 begin
91 91 pop.start(login, password)
92 92 pop.finish
93 93 return true
94 94 rescue
95 95 return false
96 96 end
97 97 end
98 98
99 99 def authenticated_by_cucas?(password)
100 100 url = URI.parse('https://www.cas.chula.ac.th/cas/api/?q=studentAuthenticate')
101 101 appid = '41508763e340d5858c00f8c1a0f5a2bb'
102 102 appsecret ='d9cbb5863091dbe186fded85722a1e31'
103 103 post_args = {
104 104 'appid' => appid,
105 105 'appsecret' => appsecret,
106 106 'username' => login,
107 107 'password' => password
108 108 }
109 109
110 110 #simple call
111 111 begin
112 112 http = Net::HTTP.new('www.cas.chula.ac.th', 443)
113 113 http.use_ssl = true
114 + http.verify_mode = OpenSSL::SSL::VERIFY_NONE
114 115 result = [ ]
115 116 http.start do |http|
116 117 req = Net::HTTP::Post.new('/cas/api/?q=studentAuthenticate')
117 118 param = "appid=#{appid}&appsecret=#{appsecret}&username=#{login}&password=#{password}"
118 119 resp = http.request(req,param)
119 120 result = JSON.parse resp.body
120 121 end
121 122 return true if result["type"] == "beanStudent"
122 - rescue
123 + rescue => e
123 124 return false
124 125 end
125 126 return false
126 127 end
127 128
128 129 def admin?
129 130 self.roles.detect {|r| r.name == 'admin' }
130 131 end
131 132
132 133 def email_for_editing
133 134 if self.email==nil
134 135 "(unknown)"
135 136 elsif self.email==''
136 137 "(blank)"
137 138 else
138 139 self.email
139 140 end
140 141 end
141 142
142 143 def email_for_editing=(e)
143 144 self.email=e
144 145 end
145 146
146 147 def alias_for_editing
@@ -218,49 +219,49
218 219 return false if site==nil
219 220 return site.finished?
220 221 elsif GraderConfiguration.indv_contest_mode?
221 222 return false if self.contest_stat(true)==nil
222 223 return contest_time_left == 0
223 224 else
224 225 return false
225 226 end
226 227 end
227 228
228 229 def contest_started?
229 230 if GraderConfiguration.indv_contest_mode?
230 231 stat = self.contest_stat
231 232 return ((stat != nil) and (stat.started_at != nil))
232 233 elsif GraderConfiguration.contest_mode?
233 234 return true if site==nil
234 235 return site.started
235 236 else
236 237 return true
237 238 end
238 239 end
239 240
240 241 def update_start_time
241 242 stat = self.contest_stat
242 - if (stat.nil?) or (stat.started_at.nil?)
243 + if stat.nil? or stat.started_at.nil?
243 244 stat ||= UserContestStat.new(:user => self)
244 245 stat.started_at = Time.now.gmtime
245 246 stat.save
246 247 end
247 248 end
248 249
249 250 def problem_in_user_contests?(problem)
250 251 problem_contests = problem.contests.all
251 252
252 253 if problem_contests.length == 0 # this is public contest
253 254 return true
254 255 end
255 256
256 257 contests.each do |contest|
257 258 if problem_contests.find {|c| c.id == contest.id }
258 259 return true
259 260 end
260 261 end
261 262 return false
262 263 end
263 264
264 265 def available_problems_group_by_contests
265 266 contest_problems = []
266 267 pin = {}
@@ -1,11 +1,11
1 1
2 2 %td= grader.host
3 3 %td= grader.pid
4 4 %td= grader.mode
5 - %td= grader.updated_at.strftime("%H:%M:%S") unless grader.updated_at.nil?
5 + %td= grader.updated_at.strftime("%H:%M:%S") if grader.updated_at
6 6 %td= grader.task_type
7 7 %td
8 - - if grader.task_id.nil?
8 + - unless grader.task_id
9 9 idle
10 10 - else
11 11 = link_to "#{grader.task_id}", :action => 'view', :id => grader.task_id, :type => grader.task_type
@@ -1,26 +1,26
1 1
2 2 - if submission.nil?
3 3 = "-"
4 4 - else
5 5 - if submission.graded_at.nil?
6 6 =t 'main.submitted_at'
7 7 = format_short_time(submission.submitted_at.localtime)
8 8 - else
9 9 = t 'main.graded_at'
10 10 = "#{format_short_time(submission.graded_at.localtime)}, "
11 11 - if GraderConfiguration['ui.show_score']
12 12 = t 'main.score'
13 13 = "#{(submission.points*100/submission.problem.full_score).to_i} "
14 14 = " ["
15 15 %tt
16 16 = submission.grader_comment
17 17 = "]"
18 18 - if GraderConfiguration.show_grading_result
19 19 = " | "
20 20 = link_to '[detailed result]', :action => 'result', :id => submission.id
21 21 = " | "
22 22 = link_to("[#{t 'main.cmp_msg'}]", {:action => 'compiler_msg', :id => submission.id}, {:popup => true})
23 23 = " | "
24 24 = link_to("[#{t 'main.src_link'}]",{:action => 'source', :id => submission.id})
25 - //= " | "
26 - //= link_to "[#{t 'main.submissions_link'}]", main_submission_path(submission.problem.id)
25 + = " | "
26 + = link_to "[#{t 'main.submissions_link'}]", :action => 'submission', :id => problem_name
@@ -27,35 +27,35
27 27 = link_to '[download csv with all problems]', controller: :user_admin, action: :user_stat_max, commit: 'download csv'
28 28
29 29 %table.table.sortable.table-striped.table-bordered
30 30 %thead
31 31 %tr
32 32 %th Login
33 33 %th Name
34 34 %th Activated?
35 35 %th Logged_in
36 36 %th Contest(s)
37 37 %th Remark
38 38 - @problems.each do |p|
39 39 %th.text-right= p.name
40 40 %th.text-right Total
41 41 %th.text-right Passed
42 42 %tbody
43 43 - @scorearray.each do |sc|
44 44 %tr
45 45 - total,num_passed = 0,0
46 46 - sc.each_index do |i|
47 47 - if i == 0
48 48 %td= link_to sc[i].login, controller: 'users', action: 'profile', id: sc[i]
49 49 %td= sc[i].full_name
50 50 %td= sc[i].activated
51 - %td= sc[i].try(:contest_stat).try(:started_at)!=nil ? 'yes' : 'no'
51 + %td= sc[i].try(:contest_stat).try(:started_at) ? 'yes' : 'no'
52 52 %td= sc[i].contests.collect {|c| c.name}.join(', ')
53 53 %td= sc[i].remark
54 54 - else
55 55 %td.text-right= sc[i][0]
56 56 - total += sc[i][0]
57 57 - num_passed += 1 if sc[i][1]
58 58 %td.text-right= total
59 59 %td.text-right= num_passed
60 60 :javascript
61 61 $.bootstrapSortable(true,'reversed')
You need to be logged in to leave comments. Login now