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